Merged
Merge Request #1021
·
created by
Aia develop
merge user session changes to QA
From
AIA_Develop
into
AIA_QA
Showing
32 changed files
400-SOURCECODE/AIAHTML5.ADMIN.API/Constants/AdminConstant.cs
@@ -15,5 +15,6 @@ namespace AIAHTML5.Server.Constants | @@ -15,5 +15,6 @@ namespace AIAHTML5.Server.Constants | ||
15 | 15 | ||
16 | public const string SUCCESS = "Success"; | 16 | public const string SUCCESS = "Success"; |
17 | public const string FAILED = "Failed"; | 17 | public const string FAILED = "Failed"; |
18 | + public const string SQL_CONNECTION_ERROR = "We are unable to connect with database. Please contact customer support."; | ||
18 | } | 19 | } |
19 | } | 20 | } |
20 | \ No newline at end of file | 21 | \ No newline at end of file |
400-SOURCECODE/AIAHTML5.ADMIN.API/Controllers/UserController.cs
@@ -111,6 +111,28 @@ namespace AIAHTML5.ADMIN.API.Controllers | @@ -111,6 +111,28 @@ namespace AIAHTML5.ADMIN.API.Controllers | ||
111 | return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message); | 111 | return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message); |
112 | } | 112 | } |
113 | } | 113 | } |
114 | + | ||
115 | + [Route("ManageUserLoginStatus")] | ||
116 | + [HttpPost] | ||
117 | + public HttpResponseMessage ManageUserLoginStatus(JObject jsonData) | ||
118 | + { | ||
119 | + bool Status = false; | ||
120 | + int userId = jsonData["userId"].Value<Int32>(); | ||
121 | + string tagName = jsonData["tagName"].Value<string>(); | ||
122 | + bool isAlreadyLoggedIn = jsonData["isAlreadyLoggedIn"].Value<bool>(); | ||
123 | + try | ||
124 | + { | ||
125 | + Status = UserModel.ManageUserLoginStatus(dbContext, userId, tagName, isAlreadyLoggedIn); | ||
126 | + | ||
127 | + return Request.CreateResponse(HttpStatusCode.OK, Status.ToString()); | ||
128 | + } | ||
129 | + catch (Exception ex) | ||
130 | + { | ||
131 | + // Log exception code goes here | ||
132 | + return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, AdminConstant.SQL_CONNECTION_ERROR); | ||
133 | + } | ||
134 | + } | ||
135 | + | ||
114 | [Route("UpdateUserId")] | 136 | [Route("UpdateUserId")] |
115 | [HttpPost] | 137 | [HttpPost] |
116 | public HttpResponseMessage UpdateUserId(UserModel userInfo) | 138 | public HttpResponseMessage UpdateUserId(UserModel userInfo) |
@@ -162,19 +184,20 @@ namespace AIAHTML5.ADMIN.API.Controllers | @@ -162,19 +184,20 @@ namespace AIAHTML5.ADMIN.API.Controllers | ||
162 | 184 | ||
163 | [Route("Users")] | 185 | [Route("Users")] |
164 | [HttpGet] | 186 | [HttpGet] |
165 | - public IHttpActionResult UserList(string firstname, string lastname, string emailid, string accountnumber, string usertypeid, string accounttypeid, | 187 | + public IHttpActionResult UserList(string firstname, string lastname, string emailid, string accountnumber, string usertypeid, string accounttypeid, string userLoginStatus, |
166 | int pageNo, int pageLength, int iLoginUserType,string loggedIn="") | 188 | int pageNo, int pageLength, int iLoginUserType,string loggedIn="") |
167 | { | 189 | { |
168 | try | 190 | try |
169 | { | 191 | { |
170 | int UserTypeId = (!string.IsNullOrEmpty(usertypeid) ? Convert.ToInt32(usertypeid) : 0); | 192 | int UserTypeId = (!string.IsNullOrEmpty(usertypeid) ? Convert.ToInt32(usertypeid) : 0); |
171 | int AccountTypeId = (!string.IsNullOrEmpty(accounttypeid) ? Convert.ToInt32(accounttypeid) : 0); | 193 | int AccountTypeId = (!string.IsNullOrEmpty(accounttypeid) ? Convert.ToInt32(accounttypeid) : 0); |
194 | + bool loginStatus = Convert.ToBoolean(userLoginStatus); | ||
172 | int recordCount = 0; | 195 | int recordCount = 0; |
173 | dbContext.Configuration.ProxyCreationEnabled = false; | 196 | dbContext.Configuration.ProxyCreationEnabled = false; |
174 | //var spStatus = new System.Data.Objects.ObjectParameter("Status", 0); | 197 | //var spStatus = new System.Data.Objects.ObjectParameter("Status", 0); |
175 | var spRecordCount = new System.Data.Objects.ObjectParameter("recordCount", 0); | 198 | var spRecordCount = new System.Data.Objects.ObjectParameter("recordCount", 0); |
176 | //recordCount = (int)spRecordCount.Value; | 199 | //recordCount = (int)spRecordCount.Value; |
177 | - List<usp_GetUsersList_Result> Users = dbContext.usp_GetUsersList(firstname, lastname, emailid, accountnumber, UserTypeId, AccountTypeId, iLoginUserType, pageNo, pageLength, spRecordCount).ToList(); | 200 | + List<usp_GetUsersList_Result> Users = dbContext.usp_GetUsersList(firstname, lastname, emailid, accountnumber, UserTypeId, AccountTypeId, iLoginUserType, loginStatus, pageNo, pageLength, spRecordCount).ToList(); |
178 | if (!string.IsNullOrEmpty(loggedIn)) | 201 | if (!string.IsNullOrEmpty(loggedIn)) |
179 | { | 202 | { |
180 | if (Users.Where(s => s.LoginId == loggedIn).Count() > 0) | 203 | if (Users.Where(s => s.LoginId == loggedIn).Count() > 0) |
400-SOURCECODE/AIAHTML5.ADMIN.API/Entity/AIADBEntity.Context.cs
@@ -4399,7 +4399,7 @@ namespace AIAHTML5.ADMIN.API.Entity | @@ -4399,7 +4399,7 @@ namespace AIAHTML5.ADMIN.API.Entity | ||
4399 | return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<string>("usp_GetUserList", sFirstNameParameter, sLastNameParameter, sEmailIdParameter, sAccoutNumberParameter, iUserTypeIdParameter, iAccountTypeIdParameter, iLoginUserTypeParameter, pageNoParameter, pageLengthParameter, recordCount); | 4399 | return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<string>("usp_GetUserList", sFirstNameParameter, sLastNameParameter, sEmailIdParameter, sAccoutNumberParameter, iUserTypeIdParameter, iAccountTypeIdParameter, iLoginUserTypeParameter, pageNoParameter, pageLengthParameter, recordCount); |
4400 | } | 4400 | } |
4401 | 4401 | ||
4402 | - public virtual ObjectResult<usp_GetUsersList_Result> usp_GetUsersList(string sFirstName, string sLastName, string sEmailId, string sAccoutNumber, Nullable<int> iUserTypeId, Nullable<int> iAccountTypeId, Nullable<int> iLoginUserType, Nullable<int> pageNo, Nullable<int> pageLength, ObjectParameter recordCount) | 4402 | + public virtual ObjectResult<usp_GetUsersList_Result> usp_GetUsersList(string sFirstName, string sLastName, string sEmailId, string sAccoutNumber, Nullable<int> iUserTypeId, Nullable<int> iAccountTypeId, Nullable<int> iLoginUserType, Nullable<bool> iLoginStatus, Nullable<int> pageNo, Nullable<int> pageLength, ObjectParameter recordCount) |
4403 | { | 4403 | { |
4404 | var sFirstNameParameter = sFirstName != null ? | 4404 | var sFirstNameParameter = sFirstName != null ? |
4405 | new ObjectParameter("sFirstName", sFirstName) : | 4405 | new ObjectParameter("sFirstName", sFirstName) : |
@@ -4429,6 +4429,10 @@ namespace AIAHTML5.ADMIN.API.Entity | @@ -4429,6 +4429,10 @@ namespace AIAHTML5.ADMIN.API.Entity | ||
4429 | new ObjectParameter("iLoginUserType", iLoginUserType) : | 4429 | new ObjectParameter("iLoginUserType", iLoginUserType) : |
4430 | new ObjectParameter("iLoginUserType", typeof(int)); | 4430 | new ObjectParameter("iLoginUserType", typeof(int)); |
4431 | 4431 | ||
4432 | + var iLoginStatusParameter = iLoginStatus.HasValue ? | ||
4433 | + new ObjectParameter("iLoginStatus", iLoginStatus) : | ||
4434 | + new ObjectParameter("iLoginStatus", typeof(bool)); | ||
4435 | + | ||
4432 | var pageNoParameter = pageNo.HasValue ? | 4436 | var pageNoParameter = pageNo.HasValue ? |
4433 | new ObjectParameter("pageNo", pageNo) : | 4437 | new ObjectParameter("pageNo", pageNo) : |
4434 | new ObjectParameter("pageNo", typeof(int)); | 4438 | new ObjectParameter("pageNo", typeof(int)); |
@@ -4437,7 +4441,7 @@ namespace AIAHTML5.ADMIN.API.Entity | @@ -4437,7 +4441,7 @@ namespace AIAHTML5.ADMIN.API.Entity | ||
4437 | new ObjectParameter("pageLength", pageLength) : | 4441 | new ObjectParameter("pageLength", pageLength) : |
4438 | new ObjectParameter("pageLength", typeof(int)); | 4442 | new ObjectParameter("pageLength", typeof(int)); |
4439 | 4443 | ||
4440 | - return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<usp_GetUsersList_Result>("usp_GetUsersList", sFirstNameParameter, sLastNameParameter, sEmailIdParameter, sAccoutNumberParameter, iUserTypeIdParameter, iAccountTypeIdParameter, iLoginUserTypeParameter, pageNoParameter, pageLengthParameter, recordCount); | 4444 | + return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<usp_GetUsersList_Result>("usp_GetUsersList", sFirstNameParameter, sLastNameParameter, sEmailIdParameter, sAccoutNumberParameter, iUserTypeIdParameter, iAccountTypeIdParameter, iLoginUserTypeParameter, iLoginStatusParameter, pageNoParameter, pageLengthParameter, recordCount); |
4441 | } | 4445 | } |
4442 | 4446 | ||
4443 | public virtual ObjectResult<usp_GetUserTyeByAccountNumber_Result> usp_GetUserTyeByAccountNumber(Nullable<byte> iUserTypeId, Nullable<int> iLicenseId) | 4447 | public virtual ObjectResult<usp_GetUserTyeByAccountNumber_Result> usp_GetUserTyeByAccountNumber(Nullable<byte> iUserTypeId, Nullable<int> iLicenseId) |
@@ -4990,5 +4994,22 @@ namespace AIAHTML5.ADMIN.API.Entity | @@ -4990,5 +4994,22 @@ namespace AIAHTML5.ADMIN.API.Entity | ||
4990 | 4994 | ||
4991 | return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("usp_InsertAIAUser", sLoginIdParameter, sPasswordParameter, sFirstnameParameter, sLastnameParameter, iUserTypeIdParameter, sEmailIdParameter, iSecurityQuesIdParameter, sSecurityAnswerParameter, iCreatorIdParameter, iLicenseIdParameter, iEditionIdParameter, status); | 4995 | return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("usp_InsertAIAUser", sLoginIdParameter, sPasswordParameter, sFirstnameParameter, sLastnameParameter, iUserTypeIdParameter, sEmailIdParameter, iSecurityQuesIdParameter, sSecurityAnswerParameter, iCreatorIdParameter, iLicenseIdParameter, iEditionIdParameter, status); |
4992 | } | 4996 | } |
4997 | + | ||
4998 | + public virtual ObjectResult<Nullable<bool>> usp_ManageUserLoginStatus(Nullable<int> userId, string tag, Nullable<bool> isAlreadyLogin) | ||
4999 | + { | ||
5000 | + var userIdParameter = userId.HasValue ? | ||
5001 | + new ObjectParameter("userId", userId) : | ||
5002 | + new ObjectParameter("userId", typeof(int)); | ||
5003 | + | ||
5004 | + var tagParameter = tag != null ? | ||
5005 | + new ObjectParameter("tag", tag) : | ||
5006 | + new ObjectParameter("tag", typeof(string)); | ||
5007 | + | ||
5008 | + var isAlreadyLoginParameter = isAlreadyLogin.HasValue ? | ||
5009 | + new ObjectParameter("isAlreadyLogin", isAlreadyLogin) : | ||
5010 | + new ObjectParameter("isAlreadyLogin", typeof(bool)); | ||
5011 | + | ||
5012 | + return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Nullable<bool>>("usp_ManageUserLoginStatus", userIdParameter, tagParameter, isAlreadyLoginParameter); | ||
5013 | + } | ||
4993 | } | 5014 | } |
4994 | } | 5015 | } |
400-SOURCECODE/AIAHTML5.ADMIN.API/Entity/AIADBEntity.Designer.cs
1 | -// T4 code generation is enabled for model 'E:\AIAProject00-SOURCECODE\AIAHTML5.ADMIN.API\Entity\AIADBEntity.edmx'. | 1 | +// T4 code generation is enabled for model 'F:\AIAProject00-SOURCECODE\AIAHTML5.ADMIN.API\Entity\AIADBEntity.edmx'. |
2 | // To enable legacy code generation, change the value of the 'Code Generation Strategy' designer | 2 | // To enable legacy code generation, change the value of the 'Code Generation Strategy' designer |
3 | // property to 'Legacy ObjectContext'. This property is available in the Properties Window when the model | 3 | // property to 'Legacy ObjectContext'. This property is available in the Properties Window when the model |
4 | // is open in the designer. | 4 | // is open in the designer. |
400-SOURCECODE/AIAHTML5.ADMIN.API/Entity/AIADBEntity.edmx
@@ -1228,6 +1228,7 @@ | @@ -1228,6 +1228,7 @@ | ||
1228 | <Parameter Name="iUserTypeId" Type="int" Mode="In" /> | 1228 | <Parameter Name="iUserTypeId" Type="int" Mode="In" /> |
1229 | <Parameter Name="iAccountTypeId" Type="int" Mode="In" /> | 1229 | <Parameter Name="iAccountTypeId" Type="int" Mode="In" /> |
1230 | <Parameter Name="iLoginUserType" Type="int" Mode="In" /> | 1230 | <Parameter Name="iLoginUserType" Type="int" Mode="In" /> |
1231 | + <Parameter Name="iLoginStatus" Type="bit" Mode="In" /> | ||
1231 | <Parameter Name="pageNo" Type="int" Mode="In" /> | 1232 | <Parameter Name="pageNo" Type="int" Mode="In" /> |
1232 | <Parameter Name="pageLength" Type="int" Mode="In" /> | 1233 | <Parameter Name="pageLength" Type="int" Mode="In" /> |
1233 | <Parameter Name="recordCount" Type="int" Mode="InOut" /> | 1234 | <Parameter Name="recordCount" Type="int" Mode="InOut" /> |
@@ -1406,6 +1407,11 @@ | @@ -1406,6 +1407,11 @@ | ||
1406 | <Parameter Name="SiteEditionIds" Type="varchar" Mode="In" /> | 1407 | <Parameter Name="SiteEditionIds" Type="varchar" Mode="In" /> |
1407 | <Parameter Name="Status" Type="int" Mode="InOut" /> | 1408 | <Parameter Name="Status" Type="int" Mode="InOut" /> |
1408 | </Function> | 1409 | </Function> |
1410 | + <Function Name="usp_ManageUserLoginStatus" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo"> | ||
1411 | + <Parameter Name="userId" Type="int" Mode="In" /> | ||
1412 | + <Parameter Name="tag" Type="varchar" Mode="In" /> | ||
1413 | + <Parameter Name="isAlreadyLogin" Type="bit" Mode="In" /> | ||
1414 | + </Function> | ||
1409 | <Function Name="usp_SaveLabExerciseAttempts" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo"> | 1415 | <Function Name="usp_SaveLabExerciseAttempts" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo"> |
1410 | <Parameter Name="UserId" Type="int" Mode="In" /> | 1416 | <Parameter Name="UserId" Type="int" Mode="In" /> |
1411 | <Parameter Name="LabExerciseIdentifier" Type="nchar" Mode="In" /> | 1417 | <Parameter Name="LabExerciseIdentifier" Type="nchar" Mode="In" /> |
@@ -2843,6 +2849,7 @@ | @@ -2843,6 +2849,7 @@ | ||
2843 | <Parameter Name="iUserTypeId" Mode="In" Type="Int32" /> | 2849 | <Parameter Name="iUserTypeId" Mode="In" Type="Int32" /> |
2844 | <Parameter Name="iAccountTypeId" Mode="In" Type="Int32" /> | 2850 | <Parameter Name="iAccountTypeId" Mode="In" Type="Int32" /> |
2845 | <Parameter Name="iLoginUserType" Mode="In" Type="Int32" /> | 2851 | <Parameter Name="iLoginUserType" Mode="In" Type="Int32" /> |
2852 | + <Parameter Name="iLoginStatus" Mode="In" Type="Boolean" /> | ||
2846 | <Parameter Name="pageNo" Mode="In" Type="Int32" /> | 2853 | <Parameter Name="pageNo" Mode="In" Type="Int32" /> |
2847 | <Parameter Name="pageLength" Mode="In" Type="Int32" /> | 2854 | <Parameter Name="pageLength" Mode="In" Type="Int32" /> |
2848 | <Parameter Name="recordCount" Mode="InOut" Type="Int32" /> | 2855 | <Parameter Name="recordCount" Mode="InOut" Type="Int32" /> |
@@ -2996,6 +3003,11 @@ | @@ -2996,6 +3003,11 @@ | ||
2996 | <Parameter Name="iEditionId" Mode="In" Type="Byte" /> | 3003 | <Parameter Name="iEditionId" Mode="In" Type="Byte" /> |
2997 | <Parameter Name="Status" Mode="InOut" Type="Int32" /> | 3004 | <Parameter Name="Status" Mode="InOut" Type="Int32" /> |
2998 | </FunctionImport> | 3005 | </FunctionImport> |
3006 | + <FunctionImport Name="usp_ManageUserLoginStatus" ReturnType="Collection(Boolean)"> | ||
3007 | + <Parameter Name="userId" Mode="In" Type="Int32" /> | ||
3008 | + <Parameter Name="tag" Mode="In" Type="String" /> | ||
3009 | + <Parameter Name="isAlreadyLogin" Mode="In" Type="Boolean" /> | ||
3010 | + </FunctionImport> | ||
2999 | </EntityContainer> | 3011 | </EntityContainer> |
3000 | <ComplexType Name="DA_GetBaseLayer_Result"> | 3012 | <ComplexType Name="DA_GetBaseLayer_Result"> |
3001 | <Property Type="Int32" Name="Id" Nullable="false" /> | 3013 | <Property Type="Int32" Name="Id" Nullable="false" /> |
@@ -4318,6 +4330,8 @@ | @@ -4318,6 +4330,8 @@ | ||
4318 | <Property Type="String" Name="UserStatus" Nullable="true" MaxLength="8" /> | 4330 | <Property Type="String" Name="UserStatus" Nullable="true" MaxLength="8" /> |
4319 | <Property Type="Int32" Name="UserTypeId" Nullable="true" /> | 4331 | <Property Type="Int32" Name="UserTypeId" Nullable="true" /> |
4320 | <Property Type="Int32" Name="EditionTypeId" Nullable="true" /> | 4332 | <Property Type="Int32" Name="EditionTypeId" Nullable="true" /> |
4333 | + <Property Type="Boolean" Name="LoginStatus" Nullable="true" /> | ||
4334 | + <Property Type="String" Name="TotalLogin" Nullable="true" MaxLength="50" /> | ||
4321 | </ComplexType> | 4335 | </ComplexType> |
4322 | <ComplexType Name="usp_GetUserTyeByAccountNumber_Result"> | 4336 | <ComplexType Name="usp_GetUserTyeByAccountNumber_Result"> |
4323 | <Property Type="Byte" Name="Id" Nullable="true" /> | 4337 | <Property Type="Byte" Name="Id" Nullable="true" /> |
@@ -6284,6 +6298,8 @@ | @@ -6284,6 +6298,8 @@ | ||
6284 | <ScalarProperty Name="UserStatus" ColumnName="UserStatus" /> | 6298 | <ScalarProperty Name="UserStatus" ColumnName="UserStatus" /> |
6285 | <ScalarProperty Name="UserTypeId" ColumnName="UserTypeId" /> | 6299 | <ScalarProperty Name="UserTypeId" ColumnName="UserTypeId" /> |
6286 | <ScalarProperty Name="EditionTypeId" ColumnName="EditionTypeId" /> | 6300 | <ScalarProperty Name="EditionTypeId" ColumnName="EditionTypeId" /> |
6301 | + <ScalarProperty Name="LoginStatus" ColumnName="LoginStatus" /> | ||
6302 | + <ScalarProperty Name="TotalLogin" ColumnName="TotalLogin" /> | ||
6287 | </ComplexTypeMapping> | 6303 | </ComplexTypeMapping> |
6288 | </ResultMapping> | 6304 | </ResultMapping> |
6289 | </FunctionImportMapping> | 6305 | </FunctionImportMapping> |
@@ -6305,6 +6321,7 @@ | @@ -6305,6 +6321,7 @@ | ||
6305 | <FunctionImportMapping FunctionImportName="usp_UpdateLicenseAccount" FunctionName="AIADatabaseV5Model.Store.usp_UpdateLicenseAccount" /> | 6321 | <FunctionImportMapping FunctionImportName="usp_UpdateLicenseAccount" FunctionName="AIADatabaseV5Model.Store.usp_UpdateLicenseAccount" /> |
6306 | <FunctionImportMapping FunctionImportName="usp_UpdateUserProfile" FunctionName="AIADatabaseV5Model.Store.usp_UpdateUserProfile" /> | 6322 | <FunctionImportMapping FunctionImportName="usp_UpdateUserProfile" FunctionName="AIADatabaseV5Model.Store.usp_UpdateUserProfile" /> |
6307 | <FunctionImportMapping FunctionImportName="usp_InsertAIAUser" FunctionName="AIADatabaseV5Model.Store.usp_InsertAIAUser" /> | 6323 | <FunctionImportMapping FunctionImportName="usp_InsertAIAUser" FunctionName="AIADatabaseV5Model.Store.usp_InsertAIAUser" /> |
6324 | + <FunctionImportMapping FunctionImportName="usp_ManageUserLoginStatus" FunctionName="AIADatabaseV5Model.Store.usp_ManageUserLoginStatus" /> | ||
6308 | </EntityContainerMapping> | 6325 | </EntityContainerMapping> |
6309 | </Mapping> | 6326 | </Mapping> |
6310 | </edmx:Mappings> | 6327 | </edmx:Mappings> |
400-SOURCECODE/AIAHTML5.ADMIN.API/Entity/usp_GetUsersList_Result.cs
@@ -29,5 +29,7 @@ namespace AIAHTML5.ADMIN.API.Entity | @@ -29,5 +29,7 @@ namespace AIAHTML5.ADMIN.API.Entity | ||
29 | public string UserStatus { get; set; } | 29 | public string UserStatus { get; set; } |
30 | public Nullable<int> UserTypeId { get; set; } | 30 | public Nullable<int> UserTypeId { get; set; } |
31 | public Nullable<int> EditionTypeId { get; set; } | 31 | public Nullable<int> EditionTypeId { get; set; } |
32 | + public Nullable<bool> LoginStatus { get; set; } | ||
33 | + public string TotalLogin { get; set; } | ||
32 | } | 34 | } |
33 | } | 35 | } |
400-SOURCECODE/AIAHTML5.ADMIN.API/Models/UserModel.cs
@@ -65,6 +65,21 @@ namespace AIAHTML5.ADMIN.API.Models | @@ -65,6 +65,21 @@ namespace AIAHTML5.ADMIN.API.Models | ||
65 | return false; | 65 | return false; |
66 | } | 66 | } |
67 | } | 67 | } |
68 | + public static bool ManageUserLoginStatus(AIADatabaseV5Entities dbContext, int userId, string tagName, bool isAlreadyLoggedIn) | ||
69 | + { | ||
70 | + bool loginStatus = false; | ||
71 | + try | ||
72 | + { | ||
73 | + loginStatus = Convert.ToBoolean(dbContext.usp_ManageUserLoginStatus(userId, tagName, isAlreadyLoggedIn).FirstOrDefault()); | ||
74 | + | ||
75 | + return loginStatus; | ||
76 | + } | ||
77 | + catch (Exception ex) | ||
78 | + { | ||
79 | + throw new Exception(); | ||
80 | + } | ||
81 | + } | ||
82 | + | ||
68 | public static string UpdateUserId(AIADatabaseV5Entities dbContext, int id, string userId, string oldUserId) | 83 | public static string UpdateUserId(AIADatabaseV5Entities dbContext, int id, string userId, string oldUserId) |
69 | { | 84 | { |
70 | var spStatus = new System.Data.Objects.ObjectParameter("Status", 0); | 85 | var spStatus = new System.Data.Objects.ObjectParameter("Status", 0); |
400-SOURCECODE/AIAHTML5.API/Constants/DBConstants.cs
@@ -41,5 +41,6 @@ namespace AIAHTML5.API.Constants | @@ -41,5 +41,6 @@ namespace AIAHTML5.API.Constants | ||
41 | public const string GET_COUNT_EXPORTED_IMAGE = "usp_GetCountExportedImage"; | 41 | public const string GET_COUNT_EXPORTED_IMAGE = "usp_GetCountExportedImage"; |
42 | public const string INSERT_EXPORTED_IMAGE = "usp_InsertExportedImage"; | 42 | public const string INSERT_EXPORTED_IMAGE = "usp_InsertExportedImage"; |
43 | public const string GET_USER_DETAIL_BYLOGIN_AND_ACCOUNT = "usp_GetUserDetailsByLoginIdandAccount"; | 43 | public const string GET_USER_DETAIL_BYLOGIN_AND_ACCOUNT = "usp_GetUserDetailsByLoginIdandAccount"; |
44 | + public const string GET_USER_LOGIN_STATUS = "usp_ManageUserLoginStatus"; | ||
44 | } | 45 | } |
45 | } | 46 | } |
46 | \ No newline at end of file | 47 | \ No newline at end of file |
400-SOURCECODE/AIAHTML5.API/Controllers/AuthenticateController.cs
@@ -502,6 +502,28 @@ namespace AIAHTML5.API.Controllers | @@ -502,6 +502,28 @@ namespace AIAHTML5.API.Controllers | ||
502 | return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message); | 502 | return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message); |
503 | } | 503 | } |
504 | } | 504 | } |
505 | + | ||
506 | + [HttpPost] | ||
507 | + [Route("api/ManageUserLoginStatus")] | ||
508 | + public HttpResponseMessage ManageUserLoginStatus([FromBody]JObject jsonData) | ||
509 | + { | ||
510 | + string loginStatus = string.Empty; | ||
511 | + try | ||
512 | + { | ||
513 | + int userId = jsonData["userId"].Value<int>(); | ||
514 | + string tagName = jsonData["tagName"].Value<string>(); | ||
515 | + bool isAlreadyLoggedIn = jsonData["isAlreadyLoggedIn"].Value<bool>(); | ||
516 | + | ||
517 | + loginStatus = AIAHTML5.API.Models.Users.GetUserLoginStatus(userId, tagName, isAlreadyLoggedIn); | ||
518 | + | ||
519 | + return new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(loginStatus) }; | ||
520 | + } | ||
521 | + catch (Exception ex) | ||
522 | + { | ||
523 | + return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message); | ||
524 | + } | ||
525 | + } | ||
526 | + | ||
505 | // PUT api/authenticate/5 | 527 | // PUT api/authenticate/5 |
506 | public void Put(int id, [FromBody]string value) | 528 | public void Put(int id, [FromBody]string value) |
507 | { | 529 | { |
400-SOURCECODE/AIAHTML5.API/Controllers/ConfigurationController.cs
@@ -18,6 +18,9 @@ namespace AIAHTML5.API.Controllers | @@ -18,6 +18,9 @@ namespace AIAHTML5.API.Controllers | ||
18 | dynamic responseData; | 18 | dynamic responseData; |
19 | MyConfig mconfig = new MyConfig(); | 19 | MyConfig mconfig = new MyConfig(); |
20 | mconfig.current_year= DateTime.Now.Year; | 20 | mconfig.current_year= DateTime.Now.Year; |
21 | + mconfig.idleTime = Int32.Parse(ConfigurationManager.AppSettings["IDLE_TIME"]); | ||
22 | + mconfig.idelTimeOut = Int32.Parse(ConfigurationManager.AppSettings["IDLE_TIME_OUT"]); | ||
23 | + mconfig.pingInterval = Int32.Parse(ConfigurationManager.AppSettings["PING_INTERVAL"]); | ||
21 | mconfig.serverPath = ConfigurationManager.AppSettings["ANIMATION_HOSTING_SERVER"]; | 24 | mconfig.serverPath = ConfigurationManager.AppSettings["ANIMATION_HOSTING_SERVER"]; |
22 | mconfig.fileSize = Int32.Parse(ConfigurationManager.AppSettings["UploadMaxFileSize"]); | 25 | mconfig.fileSize = Int32.Parse(ConfigurationManager.AppSettings["UploadMaxFileSize"]); |
23 | 26 | ||
@@ -30,6 +33,9 @@ namespace AIAHTML5.API.Controllers | @@ -30,6 +33,9 @@ namespace AIAHTML5.API.Controllers | ||
30 | public class MyConfig | 33 | public class MyConfig |
31 | { | 34 | { |
32 | public int current_year { get; set; } | 35 | public int current_year { get; set; } |
36 | + public int idleTime { get; set; } | ||
37 | + public int idelTimeOut { get; set; } | ||
38 | + public int pingInterval { get; set; } | ||
33 | public string serverPath { get; set; } | 39 | public string serverPath { get; set; } |
34 | public int fileSize { get; set; } | 40 | public int fileSize { get; set; } |
35 | } | 41 | } |
36 | \ No newline at end of file | 42 | \ No newline at end of file |
400-SOURCECODE/AIAHTML5.API/Models/DBModel.cs
@@ -348,6 +348,42 @@ namespace AIAHTML5.API.Models | @@ -348,6 +348,42 @@ namespace AIAHTML5.API.Models | ||
348 | return objUser; | 348 | return objUser; |
349 | } | 349 | } |
350 | 350 | ||
351 | + internal static string GetUserLoginStatus(int userId,string tagName,bool isAlreadyLoggedIn) | ||
352 | + { | ||
353 | + string status=string.Empty; | ||
354 | + DBModel objModel = new DBModel(); | ||
355 | + | ||
356 | + SqlConnection conn = new SqlConnection(dbConnectionString); | ||
357 | + SqlCommand cmd = new SqlCommand(); | ||
358 | + SqlDataAdapter adapter; | ||
359 | + DataSet ds = new DataSet(); | ||
360 | + | ||
361 | + cmd.Connection = conn; | ||
362 | + cmd.CommandText = DBConstants.GET_USER_LOGIN_STATUS; | ||
363 | + cmd.CommandType = CommandType.StoredProcedure; | ||
364 | + cmd.Parameters.AddWithValue("@userId", userId); | ||
365 | + cmd.Parameters.AddWithValue("@tag", tagName); | ||
366 | + cmd.Parameters.AddWithValue("@isAlreadyLogin", isAlreadyLoggedIn); | ||
367 | + adapter = new SqlDataAdapter(cmd); | ||
368 | + adapter.Fill(ds); | ||
369 | + | ||
370 | + if (ds != null && ds.Tables.Count > 0) | ||
371 | + { | ||
372 | + DataTable dt = ds.Tables[0]; | ||
373 | + | ||
374 | + if (dt.Rows.Count > 0) | ||
375 | + { | ||
376 | + foreach (DataRow dr in dt.Rows) | ||
377 | + { | ||
378 | + status = dr["loginStatus"].ToString(); | ||
379 | + | ||
380 | + } | ||
381 | + } | ||
382 | + } | ||
383 | + | ||
384 | + return status; | ||
385 | + } | ||
386 | + | ||
351 | internal User GetSelectedSettings(int userId) | 387 | internal User GetSelectedSettings(int userId) |
352 | { | 388 | { |
353 | logger.Debug(" Inside GetSelectedSettings for userId = " + userId); | 389 | logger.Debug(" Inside GetSelectedSettings for userId = " + userId); |
400-SOURCECODE/AIAHTML5.API/Models/Users.cs
@@ -315,6 +315,14 @@ namespace AIAHTML5.API.Models | @@ -315,6 +315,14 @@ namespace AIAHTML5.API.Models | ||
315 | return objUser; | 315 | return objUser; |
316 | } | 316 | } |
317 | 317 | ||
318 | + internal static string GetUserLoginStatus(int userId, string tagName,bool isAlreadyLoggedIn) | ||
319 | + { | ||
320 | + string status = null; | ||
321 | + status = DBModel.GetUserLoginStatus(userId, tagName, isAlreadyLoggedIn); | ||
322 | + | ||
323 | + return status; | ||
324 | + } | ||
325 | + | ||
318 | internal static int SaveUserSelectedSettings(User selectedSettings) | 326 | internal static int SaveUserSelectedSettings(User selectedSettings) |
319 | { | 327 | { |
320 | logger.Debug("inside SaveUserSelectedSettings for Image =" + selectedSettings.Id); | 328 | logger.Debug("inside SaveUserSelectedSettings for Image =" + selectedSettings.Id); |
400-SOURCECODE/AIAHTML5.API/Web.config
@@ -31,9 +31,16 @@ | @@ -31,9 +31,16 @@ | ||
31 | </log4net> | 31 | </log4net> |
32 | 32 | ||
33 | <appSettings> | 33 | <appSettings> |
34 | + <!-- set Idel time 20 minute --> | ||
35 | + <add key="IDLE_TIME" value="1200" /> | ||
36 | + <!-- set idle timeout 30 seconds --> | ||
37 | + <add key="IDLE_TIME_OUT" value="30" /> | ||
38 | + <!-- set ping time interval 30 seconds --> | ||
39 | + <add key="PING_INTERVAL" value="10" /> | ||
40 | + | ||
34 | <add key="ANIMATION_HOSTING_SERVER" value="~/../content/data/AnimationMp4/" /> | 41 | <add key="ANIMATION_HOSTING_SERVER" value="~/../content/data/AnimationMp4/" /> |
35 | - <!-- set to 10mb upload file size for single file at a time --> | ||
36 | - <add key="UploadMaxFileSize" value="10485760" /> | 42 | + <!-- set to 10mb upload file size for single file at a time --> |
43 | + <add key="UploadMaxFileSize" value="10485760" /> | ||
37 | 44 | ||
38 | <add key="SenderEmailAddress" value="support@interactiveanatomy.com" /> | 45 | <add key="SenderEmailAddress" value="support@interactiveanatomy.com" /> |
39 | <!--<add key="SenderEmailAddress" value="support@interactiveanatomy.com" />--> | 46 | <!--<add key="SenderEmailAddress" value="support@interactiveanatomy.com" />--> |
400-SOURCECODE/AIAHTML5.Web/app/controllers/3dAController.js
@@ -179,7 +179,6 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location | @@ -179,7 +179,6 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location | ||
179 | var promise = DataService.getJson('~/../content/data/json/3da/3da_dat_contentlist.json') | 179 | var promise = DataService.getJson('~/../content/data/json/3da/3da_dat_contentlist.json') |
180 | promise.then( | 180 | promise.then( |
181 | function (result) { | 181 | function (result) { |
182 | - | ||
183 | var threeDAnatomyData = new jinqJs() | 182 | var threeDAnatomyData = new jinqJs() |
184 | .from(result.root.ThreeDAData) | 183 | .from(result.root.ThreeDAData) |
185 | .orderBy([{ field: '_Title', sort: 'asc' }]) | 184 | .orderBy([{ field: '_Title', sort: 'asc' }]) |
@@ -493,7 +492,7 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location | @@ -493,7 +492,7 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location | ||
493 | $rootScope.ThreeDWindowLoadComplete = true; | 492 | $rootScope.ThreeDWindowLoadComplete = true; |
494 | } | 493 | } |
495 | $scope.JsPanelMouseEnter(windowviewid); | 494 | $scope.JsPanelMouseEnter(windowviewid); |
496 | - | 495 | + |
497 | } | 496 | } |
498 | 497 | ||
499 | $scope.JsPanelMouseEnter = function (windowviewid) { | 498 | $scope.JsPanelMouseEnter = function (windowviewid) { |
@@ -502,6 +501,36 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location | @@ -502,6 +501,36 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location | ||
502 | //call when module loaded | 501 | //call when module loaded |
503 | $rootScope.resetMenuOption(); | 502 | $rootScope.resetMenuOption(); |
504 | 503 | ||
504 | + var timeintval = null; | ||
505 | + timeintval = $interval(PointerEventEnableDisable, 5000); | ||
506 | + | ||
507 | + function PointerEventEnableDisable() { | ||
508 | + var pointevents = $("#threedImage_" + windowviewid).css('pointer-events'); | ||
509 | + if (pointevents=='auto') { | ||
510 | + $scope.stop3drefresh(timeintval); | ||
511 | + timeintval = $interval(PointerEventEnableDisable, 500); | ||
512 | + $("#threedImage_" + windowviewid).css('pointer-events', 'none'); | ||
513 | + } | ||
514 | + else if(pointevents=='none') | ||
515 | + { | ||
516 | + $("#threedImage_" + windowviewid).css('pointer-events', 'auto'); | ||
517 | + $scope.stop3drefresh(timeintval); | ||
518 | + timeintval = $interval(PointerEventEnableDisable, 5000); | ||
519 | + } | ||
520 | + else | ||
521 | + { | ||
522 | + //auto clode interval when panel close | ||
523 | + $scope.stop3drefresh(timeintval); | ||
524 | + } | ||
525 | + } | ||
526 | + | ||
527 | + $scope.stop3drefresh = function (timeintval) { | ||
528 | + if (angular.isDefined(timeintval)) { | ||
529 | + $interval.cancel(timeintval); | ||
530 | + timeintval = undefined; | ||
531 | + } | ||
532 | + }; | ||
533 | + | ||
505 | // call from while open module in CB | 534 | // call from while open module in CB |
506 | 535 | ||
507 | //click event not work on object-tag document | 536 | //click event not work on object-tag document |
@@ -514,7 +543,7 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location | @@ -514,7 +543,7 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location | ||
514 | 543 | ||
515 | }); | 544 | }); |
516 | 545 | ||
517 | - } | 546 | + } |
518 | 547 | ||
519 | $scope.RemoveJSPanel = function (panelid) { | 548 | $scope.RemoveJSPanel = function (panelid) { |
520 | 549 |
400-SOURCECODE/AIAHTML5.Web/app/controllers/HomeController.js
1 | 'use strict'; | 1 | 'use strict'; |
2 | 2 | ||
3 | -AIA.controller("HomeController", ["$rootScope", "$scope", "Modules", "$log", "$location", "$compile", "$timeout", "DataService", "AuthenticationService", "ConfigurationService", "LoginConstants", "UserModules", "LoginMessageConstants", "AdminService", "$http", "AdminConstants", "UserTypeConstants", "AIAConstants","ModuleService","$window", | ||
4 | -function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, DataService, AuthenticationService, ConfigurationService, LoginConstants, UserModules, LoginMessageConstants, AdminService, $http, AdminConstants, UserTypeConstants, AIAConstants, ModuleService,$window) { | 3 | +AIA.controller("HomeController", ["$rootScope", "$scope", "Modules", "$log", "$location", "$compile", "$timeout", "DataService", "AuthenticationService", "ConfigurationService", "LoginConstants", "UserModules", "LoginMessageConstants", "AdminService", "$http", "AdminConstants", "UserTypeConstants", "AIAConstants","ModuleService","$window","Idle", "Keepalive", |
4 | +function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, DataService, AuthenticationService, ConfigurationService, LoginConstants, UserModules, LoginMessageConstants, AdminService, $http, AdminConstants, UserTypeConstants, AIAConstants, ModuleService,$window,Idle, Keepalive) { | ||
5 | 5 | ||
6 | //$scope.pageToOpen = { | 6 | //$scope.pageToOpen = { |
7 | // name: 'MainMenu' | 7 | // name: 'MainMenu' |
8 | //}; | 8 | //}; |
9 | 9 | ||
10 | $rootScope.MULTI_VIEW_ID = 401; | 10 | $rootScope.MULTI_VIEW_ID = 401; |
11 | - | ||
12 | $rootScope.pageToOpen = 'app/widget/MainMenu.html'; | 11 | $rootScope.pageToOpen = 'app/widget/MainMenu.html'; |
13 | $rootScope.currentBodyViewId; | 12 | $rootScope.currentBodyViewId; |
14 | $rootScope.currentActiveModuleTitle = 'Welcome to A.D.A.M. Interactive Anatomy';//Modules[0].Name; | 13 | $rootScope.currentActiveModuleTitle = 'Welcome to A.D.A.M. Interactive Anatomy';//Modules[0].Name; |
@@ -667,8 +666,8 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -667,8 +666,8 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
667 | if (navigator.cookieEnabled) { | 666 | if (navigator.cookieEnabled) { |
668 | 667 | ||
669 | $rootScope.isLoading = false; | 668 | $rootScope.isLoading = false; |
670 | - | ||
671 | - | 669 | + $rootScope.isLoginLoading = false; |
670 | + | ||
672 | //unblock user | 671 | //unblock user |
673 | if (url.indexOf('?unb:') != -1) { | 672 | if (url.indexOf('?unb:') != -1) { |
674 | 673 | ||
@@ -688,8 +687,56 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -688,8 +687,56 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
688 | //get user is already loggedin or not | 687 | //get user is already loggedin or not |
689 | $scope.currentUserDetails = $rootScope.getLocalStorageValue('loggedInUserDetails'); | 688 | $scope.currentUserDetails = $rootScope.getLocalStorageValue('loggedInUserDetails'); |
690 | if ($scope.currentUserDetails != undefined) { | 689 | if ($scope.currentUserDetails != undefined) { |
691 | - AuthenticateAlreadyLoggedInUser(); | 690 | + $rootScope.isVisibleLogin = false; |
691 | + ConfigurationService.getCofigValue() | ||
692 | + .then( | ||
693 | + function (configresult) { | ||
694 | + $rootScope.current_year = configresult.current_year; | ||
695 | + $rootScope.aiaIdleTime = configresult.idleTime; | ||
696 | + $rootScope.aiaIdleTimeOut = configresult.idelTimeOut; | ||
697 | + $rootScope.aiaPingInterval = configresult.pingInterval; | ||
698 | + $rootScope.aiaAnimationPath = configresult.serverPath; | ||
699 | + $rootScope.MaxOneFileSize = configresult.fileSize; | ||
700 | + var loggedInUser = JSON.parse($scope.currentUserDetails); | ||
701 | + //incase site user login userid is 0 so then using license id | ||
702 | + //logout site user while reload url without parameter | ||
703 | + var userId=loggedInUser.Id==0?loggedInUser.LicenseId:loggedInUser.Id; | ||
704 | + $scope.checkuserstatus = { | ||
705 | + userId: userId, | ||
706 | + tagName: loggedInUser.Id==0?'logout':'update', | ||
707 | + isAlreadyLoggedIn:true | ||
708 | + } | ||
709 | + | ||
710 | + // this case found when browser closed by user after login. after long time (after 20 min) open site again | ||
711 | + // loggedInUserDetails contain user detail so user auto login but it is logout by | ||
712 | + // 1.by agent job 2. or by admin section from db | ||
713 | + // so check user session again before auto login | ||
714 | + AuthenticationService.ManageUserLoginStatus($scope.checkuserstatus) | ||
715 | + .then( | ||
716 | + function (loginStatus) { | ||
717 | + if(loginStatus!=null) | ||
718 | + { | ||
719 | + if(loginStatus=='False') | ||
720 | + { | ||
721 | + $rootScope.LogoutUserSession(); | ||
722 | + } | ||
723 | + else | ||
724 | + { | ||
725 | + AuthenticateAlreadyLoggedInUser(); | ||
726 | + } | ||
727 | + } | ||
728 | + | ||
729 | + }), | ||
730 | + function (error) { | ||
731 | + console.log(' Error in user login status = ' + error.statusText); | ||
732 | + $rootScope.errorMessage = error; | ||
733 | + $("#messageModal").modal('show'); | ||
734 | + } | ||
735 | + | ||
736 | + }); | ||
737 | + | ||
692 | } | 738 | } |
739 | + | ||
693 | var isRememberChecked = $rootScope.getLocalStorageValue('isRememberMeChecked'); | 740 | var isRememberChecked = $rootScope.getLocalStorageValue('isRememberMeChecked'); |
694 | 741 | ||
695 | if ($rootScope.getLocalStorageValue('isRememberMeChecked') != "" && sessionStorage.getItem("loginSession") == null) { | 742 | if ($rootScope.getLocalStorageValue('isRememberMeChecked') != "" && sessionStorage.getItem("loginSession") == null) { |
@@ -703,7 +750,6 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -703,7 +750,6 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
703 | } | 750 | } |
704 | } | 751 | } |
705 | } | 752 | } |
706 | - | ||
707 | else { | 753 | else { |
708 | 754 | ||
709 | $rootScope.isVisibleLogin = true; | 755 | $rootScope.isVisibleLogin = true; |
@@ -711,26 +757,45 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -711,26 +757,45 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
711 | $rootScope.promptUserForCookies(); | 757 | $rootScope.promptUserForCookies(); |
712 | } | 758 | } |
713 | 759 | ||
760 | + $scope.currentUserDetails = $rootScope.getLocalStorageValue('loggedInUserDetails'); | ||
761 | + if ($scope.currentUserDetails == undefined) { | ||
714 | $rootScope.getConfigurationValues(); | 762 | $rootScope.getConfigurationValues(); |
763 | + } | ||
715 | } | 764 | } |
716 | 765 | ||
717 | $timeout(function () { | 766 | $timeout(function () { |
718 | $scope.helpTopicLink(); | 767 | $scope.helpTopicLink(); |
719 | }, 2000); | 768 | }, 2000); |
720 | 769 | ||
721 | - | ||
722 | } | 770 | } |
723 | $rootScope.getConfigurationValues = function () { | 771 | $rootScope.getConfigurationValues = function () { |
724 | ConfigurationService.getCofigValue() | 772 | ConfigurationService.getCofigValue() |
725 | .then( | 773 | .then( |
726 | function (configresult) { | 774 | function (configresult) { |
727 | $rootScope.current_year = configresult.current_year; | 775 | $rootScope.current_year = configresult.current_year; |
776 | + $rootScope.aiaIdleTime = configresult.idleTime; | ||
777 | + $rootScope.aiaIdleTimeOut = configresult.idelTimeOut; | ||
778 | + $rootScope.aiaPingInterval = configresult.pingInterval; | ||
728 | $rootScope.aiaAnimationPath = configresult.serverPath; | 779 | $rootScope.aiaAnimationPath = configresult.serverPath; |
729 | $rootScope.MaxOneFileSize = configresult.fileSize; | 780 | $rootScope.MaxOneFileSize = configresult.fileSize; |
730 | 781 | ||
731 | }); | 782 | }); |
732 | } | 783 | } |
733 | - $rootScope.AuthenticateUser = function (userInfo) { | 784 | + $rootScope.LoginEnableUI=function() |
785 | + { | ||
786 | + $rootScope.isLoginLoading = false; | ||
787 | + $('#spinnerLogin').css('visibility', 'hidden'); | ||
788 | + $('.loginPanel').css('pointer-events', 'auto'); | ||
789 | + $('.loginPanel').css('opacity', '1'); | ||
790 | + } | ||
791 | + $rootScope.LoginDisableUI=function() | ||
792 | + { | ||
793 | + $rootScope.isLoginLoading = true; | ||
794 | + $('#spinnerLogin').css('visibility', 'visible'); | ||
795 | + $('.loginPanel').css('pointer-events', 'none'); | ||
796 | + $('.loginPanel').css('opacity', '0.7'); | ||
797 | + } | ||
798 | + $rootScope.AuthenticateUser = function (userInfo,isAlreadyLoggedIn) { | ||
734 | if (navigator.cookieEnabled) { | 799 | if (navigator.cookieEnabled) { |
735 | $rootScope.errorMessage = ""; | 800 | $rootScope.errorMessage = ""; |
736 | if (userInfo.username == "" || userInfo.username == null || userInfo.username == undefined || userInfo.password == "" || userInfo.password == null || userInfo.password == undefined) { | 801 | if (userInfo.username == "" || userInfo.username == null || userInfo.username == undefined || userInfo.password == "" || userInfo.password == null || userInfo.password == undefined) { |
@@ -741,13 +806,14 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -741,13 +806,14 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
741 | } | 806 | } |
742 | else { | 807 | else { |
743 | 808 | ||
744 | - | 809 | + $rootScope.LoginDisableUI(); |
745 | AuthenticationService.authenticateUser(userInfo) | 810 | AuthenticationService.authenticateUser(userInfo) |
746 | .then( | 811 | .then( |
747 | 812 | ||
748 | function (result) { | 813 | function (result) { |
749 | - | ||
750 | - if (result == LoginConstants.USER_NOT_FOUND) { | 814 | + |
815 | + if (result == LoginConstants.USER_NOT_FOUND) { | ||
816 | + $rootScope.LoginEnableUI(); | ||
751 | $rootScope.isVisibleLogin = true; | 817 | $rootScope.isVisibleLogin = true; |
752 | // alert(LoginMessageConstants.USER_OR_PASSWORD_INCORRECT); | 818 | // alert(LoginMessageConstants.USER_OR_PASSWORD_INCORRECT); |
753 | $rootScope.errorMessage = LoginMessageConstants.INVALID_USER; | 819 | $rootScope.errorMessage = LoginMessageConstants.INVALID_USER; |
@@ -757,6 +823,14 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -757,6 +823,14 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
757 | 823 | ||
758 | // birendra// initialize exp img detail object | 824 | // birendra// initialize exp img detail object |
759 | $rootScope.initializeUserForExportImage(result.Id); | 825 | $rootScope.initializeUserForExportImage(result.Id); |
826 | + // update result with session detail | ||
827 | + result.aiaIdleTime=$rootScope.aiaIdleTime; | ||
828 | + result.aiaIdleTimeOut=$rootScope.aiaIdleTimeOut; | ||
829 | + result.aiaPingInterval=$rootScope.aiaPingInterval; | ||
830 | + $rootScope.isAlreadyLoggedIn=isAlreadyLoggedIn==undefined?false:isAlreadyLoggedIn; | ||
831 | + //display user name | ||
832 | + $rootScope.userName=result.FirstName+" "+result.LastName; | ||
833 | + | ||
760 | 834 | ||
761 | //code for modesty setting | 835 | //code for modesty setting |
762 | if (result.LicenseInfo != null) { | 836 | if (result.LicenseInfo != null) { |
@@ -830,61 +904,70 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -830,61 +904,70 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
830 | } | 904 | } |
831 | if (result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_PASSWORD_NOT_MATCH) { | 905 | if (result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_PASSWORD_NOT_MATCH) { |
832 | $rootScope.isVisibleLogin = true; | 906 | $rootScope.isVisibleLogin = true; |
907 | + $rootScope.LoginEnableUI(); | ||
833 | $rootScope.errorMessage = LoginMessageConstants.INVALID_PASSWORD; | 908 | $rootScope.errorMessage = LoginMessageConstants.INVALID_PASSWORD; |
834 | $("#messageModal").modal('show'); | 909 | $("#messageModal").modal('show'); |
835 | } | 910 | } |
836 | else if (result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_USER_ID_BLOCKED_24_HRS) { | 911 | else if (result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_USER_ID_BLOCKED_24_HRS) { |
837 | $rootScope.isVisibleLogin = true; | 912 | $rootScope.isVisibleLogin = true; |
913 | + $rootScope.LoginEnableUI(); | ||
838 | $rootScope.errorMessage = LoginMessageConstants.USER_BLOCKED; | 914 | $rootScope.errorMessage = LoginMessageConstants.USER_BLOCKED; |
839 | $("#messageModal").modal('show'); | 915 | $("#messageModal").modal('show'); |
840 | } | 916 | } |
841 | else if ((result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_USER_NOT_ACTIVE) && (result.LicenseInfo != null) && (result.LicenseInfo != undefined) && (result.LicenseInfo.IsActive) && result.IsSubscriptionExpired) { | 917 | else if ((result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_USER_NOT_ACTIVE) && (result.LicenseInfo != null) && (result.LicenseInfo != undefined) && (result.LicenseInfo.IsActive) && result.IsSubscriptionExpired) { |
842 | $rootScope.isVisibleLogin = true; | 918 | $rootScope.isVisibleLogin = true; |
919 | + $rootScope.LoginEnableUI(); | ||
843 | $rootScope.errorMessage = LoginMessageConstants.SUBSCRIPTION_EXPIRATION_MESSAGE + result.SubscriptionExpirationDate + '.'; | 920 | $rootScope.errorMessage = LoginMessageConstants.SUBSCRIPTION_EXPIRATION_MESSAGE + result.SubscriptionExpirationDate + '.'; |
844 | $rootScope.errorMessage = $rootScope.errorMessage + ' ' + LoginMessageConstants.USER_INACTIVE_MESSAGE; | 921 | $rootScope.errorMessage = $rootScope.errorMessage + ' ' + LoginMessageConstants.USER_INACTIVE_MESSAGE; |
845 | $("#messageModal").modal('show'); | 922 | $("#messageModal").modal('show'); |
846 | } | 923 | } |
847 | else if ((result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_USER_NOT_ACTIVE) && (result.LicenseInfo != null) && (result.LicenseInfo != undefined) && (!result.LicenseInfo.IsActive) && result.IsSubscriptionExpired) { | 924 | else if ((result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_USER_NOT_ACTIVE) && (result.LicenseInfo != null) && (result.LicenseInfo != undefined) && (!result.LicenseInfo.IsActive) && result.IsSubscriptionExpired) { |
848 | $rootScope.isVisibleLogin = true; | 925 | $rootScope.isVisibleLogin = true; |
926 | + $rootScope.LoginEnableUI(); | ||
849 | $rootScope.errorMessage = LoginMessageConstants.SUBSCRIPTION_EXPIRATION_MESSAGE + result.SubscriptionExpirationDate + '.'; | 927 | $rootScope.errorMessage = LoginMessageConstants.SUBSCRIPTION_EXPIRATION_MESSAGE + result.SubscriptionExpirationDate + '.'; |
850 | $rootScope.errorMessage = $rootScope.errorMessage + ' ' + LoginMessageConstants.LICENSE_INACTIVE_MESSAGE + ' ' + LoginMessageConstants.USER_INACTIVE_MESSAGE; | 928 | $rootScope.errorMessage = $rootScope.errorMessage + ' ' + LoginMessageConstants.LICENSE_INACTIVE_MESSAGE + ' ' + LoginMessageConstants.USER_INACTIVE_MESSAGE; |
851 | $("#messageModal").modal('show'); | 929 | $("#messageModal").modal('show'); |
852 | } | 930 | } |
853 | else if ((result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_USER_NOT_ACTIVE) && (result.LicenseInfo != null) && (result.LicenseInfo != undefined) && (!result.LicenseInfo.IsActive) && result.IsSubscriptionExpired) { | 931 | else if ((result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_USER_NOT_ACTIVE) && (result.LicenseInfo != null) && (result.LicenseInfo != undefined) && (!result.LicenseInfo.IsActive) && result.IsSubscriptionExpired) { |
854 | $rootScope.isVisibleLogin = true; | 932 | $rootScope.isVisibleLogin = true; |
933 | + $rootScope.LoginEnableUI(); | ||
855 | $rootScope.errorMessage = LoginMessageConstants.SUBSCRIPTION_EXPIRATION_MESSAGE + result.SubscriptionExpirationDate + '.'; | 934 | $rootScope.errorMessage = LoginMessageConstants.SUBSCRIPTION_EXPIRATION_MESSAGE + result.SubscriptionExpirationDate + '.'; |
856 | $rootScope.errorMessage = $rootScope.errorMessage + ' ' + LoginMessageConstants.LICENSE_INACTIVE_MESSAGE + ' ' + LoginMessageConstants.USER_INACTIVE_MESSAGE; | 935 | $rootScope.errorMessage = $rootScope.errorMessage + ' ' + LoginMessageConstants.LICENSE_INACTIVE_MESSAGE + ' ' + LoginMessageConstants.USER_INACTIVE_MESSAGE; |
857 | $("#messageModal").modal('show'); | 936 | $("#messageModal").modal('show'); |
858 | } | 937 | } |
859 | else if ((result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_USER_NOT_ACTIVE) && (result.LicenseInfo != null) && (result.LicenseInfo != undefined) && (!result.LicenseInfo.IsActive) && (!result.IsSubscriptionExpired)) { | 938 | else if ((result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_USER_NOT_ACTIVE) && (result.LicenseInfo != null) && (result.LicenseInfo != undefined) && (!result.LicenseInfo.IsActive) && (!result.IsSubscriptionExpired)) { |
860 | $rootScope.isVisibleLogin = true; | 939 | $rootScope.isVisibleLogin = true; |
940 | + $rootScope.LoginEnableUI(); | ||
861 | $rootScope.errorMessage = LoginMessageConstants.LICENSE_INACTIVE_MESSAGE + ' ' + LoginMessageConstants.USER_INACTIVE_MESSAGE; | 941 | $rootScope.errorMessage = LoginMessageConstants.LICENSE_INACTIVE_MESSAGE + ' ' + LoginMessageConstants.USER_INACTIVE_MESSAGE; |
862 | $("#messageModal").modal('show'); | 942 | $("#messageModal").modal('show'); |
863 | } | 943 | } |
864 | else if (result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_USER_NOT_ACTIVE) { | 944 | else if (result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_USER_NOT_ACTIVE) { |
865 | $rootScope.isVisibleLogin = true; | 945 | $rootScope.isVisibleLogin = true; |
946 | + $rootScope.LoginEnableUI(); | ||
866 | $rootScope.errorMessage = LoginMessageConstants.USER_INACTIVE_MESSAGE; | 947 | $rootScope.errorMessage = LoginMessageConstants.USER_INACTIVE_MESSAGE; |
867 | $("#messageModal").modal('show'); | 948 | $("#messageModal").modal('show'); |
868 | } | 949 | } |
869 | else if ((result.LicenseInfo != null) && (result.LicenseInfo != undefined) && (!result.LicenseInfo.IsActive) && (result.IsSubscriptionExpired)) { | 950 | else if ((result.LicenseInfo != null) && (result.LicenseInfo != undefined) && (!result.LicenseInfo.IsActive) && (result.IsSubscriptionExpired)) { |
870 | $rootScope.isVisibleLogin = true; | 951 | $rootScope.isVisibleLogin = true; |
952 | + $rootScope.LoginEnableUI(); | ||
871 | $rootScope.errorMessage = LoginMessageConstants.SUBSCRIPTION_EXPIRATION_MESSAGE + result.SubscriptionExpirationDate + '.'; | 953 | $rootScope.errorMessage = LoginMessageConstants.SUBSCRIPTION_EXPIRATION_MESSAGE + result.SubscriptionExpirationDate + '.'; |
872 | $rootScope.errorMessage = $rootScope.errorMessage + ' ' + LoginMessageConstants.LICENSE_INACTIVE_MESSAGE; | 954 | $rootScope.errorMessage = $rootScope.errorMessage + ' ' + LoginMessageConstants.LICENSE_INACTIVE_MESSAGE; |
873 | $("#messageModal").modal('show'); | 955 | $("#messageModal").modal('show'); |
874 | } | 956 | } |
875 | else if ((result.LicenseInfo != null) && (result.LicenseInfo != undefined) && (result.LicenseInfo.IsActive) && (result.IsSubscriptionExpired)) { | 957 | else if ((result.LicenseInfo != null) && (result.LicenseInfo != undefined) && (result.LicenseInfo.IsActive) && (result.IsSubscriptionExpired)) { |
876 | $rootScope.isVisibleLogin = true; | 958 | $rootScope.isVisibleLogin = true; |
959 | + $rootScope.LoginEnableUI(); | ||
877 | $rootScope.errorMessage = LoginMessageConstants.SUBSCRIPTION_EXPIRATION_MESSAGE + result.SubscriptionExpirationDate + '.'; | 960 | $rootScope.errorMessage = LoginMessageConstants.SUBSCRIPTION_EXPIRATION_MESSAGE + result.SubscriptionExpirationDate + '.'; |
878 | $("#messageModal").modal('show'); | 961 | $("#messageModal").modal('show'); |
879 | } | 962 | } |
880 | else if ((result.LicenseInfo != null) && (result.LicenseInfo != undefined) && (!result.LicenseInfo.IsActive) && (!result.IsSubscriptionExpired)) { | 963 | else if ((result.LicenseInfo != null) && (result.LicenseInfo != undefined) && (!result.LicenseInfo.IsActive) && (!result.IsSubscriptionExpired)) { |
881 | $rootScope.isVisibleLogin = true; | 964 | $rootScope.isVisibleLogin = true; |
965 | + $rootScope.LoginEnableUI(); | ||
882 | $rootScope.errorMessage = LoginMessageConstants.LICENSE_INACTIVE_MESSAGE; | 966 | $rootScope.errorMessage = LoginMessageConstants.LICENSE_INACTIVE_MESSAGE; |
883 | $("#messageModal").modal('show'); | 967 | $("#messageModal").modal('show'); |
884 | } | 968 | } |
885 | else { | 969 | else { |
886 | 970 | ||
887 | - | ||
888 | //LicenseId would be zero for admin that is why we set the haveRoleAdmin = true | 971 | //LicenseId would be zero for admin that is why we set the haveRoleAdmin = true |
889 | if (result.LicenseId == 0 && result.IsActive) { | 972 | if (result.LicenseId == 0 && result.IsActive) { |
890 | 973 | ||
@@ -899,10 +982,8 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -899,10 +982,8 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
899 | $rootScope.userData = result; | 982 | $rootScope.userData = result; |
900 | $rootScope.userModules = result.Modules; | 983 | $rootScope.userModules = result.Modules; |
901 | 984 | ||
902 | - if ($scope.currentUserDetails == null || $scope.currentUserDetails == undefined || $scope.currentUserDetails == "") { | ||
903 | - localStorage.setItem('loggedInUserDetails', JSON.stringify(result)); | ||
904 | - } | ||
905 | - | 985 | + localStorage.setItem('loggedInUserDetails', JSON.stringify(result)); |
986 | + | ||
906 | if (isCommingSoonModel == true) { | 987 | if (isCommingSoonModel == true) { |
907 | 988 | ||
908 | // ShowAssignedModulesPopup(result.Modules); | 989 | // ShowAssignedModulesPopup(result.Modules); |
@@ -922,6 +1003,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -922,6 +1003,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
922 | $location.path('/'); | 1003 | $location.path('/'); |
923 | 1004 | ||
924 | $timeout(function () { | 1005 | $timeout(function () { |
1006 | + $rootScope.LoginEnableUI(); | ||
925 | $scope.RedirectToModule(); | 1007 | $scope.RedirectToModule(); |
926 | }, 100); | 1008 | }, 100); |
927 | 1009 | ||
@@ -938,19 +1020,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -938,19 +1020,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
938 | if (result.UserTypeId == 8) { | 1020 | if (result.UserTypeId == 8) { |
939 | 1021 | ||
940 | $rootScope.haveRoleAdmin = false; | 1022 | $rootScope.haveRoleAdmin = false; |
941 | - } | ||
942 | - | ||
943 | - // Remove Admin Link for LicenseEditionId 3/4 of student | ||
944 | - if (result.EditionId == 3 || result.EditionId == 4) { | ||
945 | - $rootScope.haveRoleAdmin = false; | ||
946 | - | ||
947 | - } | ||
948 | - | ||
949 | - if (result.UserTypeId == 6) { | ||
950 | - $('#modestyDiv').css('pointerEvent', 'none'); | ||
951 | - $('#modestyDiv').css('opacity', 0.4); | ||
952 | - $("#modestyDiv").find("*").prop('disabled', true); | ||
953 | - } | 1023 | + } |
954 | 1024 | ||
955 | if (result.LicenseInfo != null) { | 1025 | if (result.LicenseInfo != null) { |
956 | 1026 | ||
@@ -973,19 +1043,21 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -973,19 +1043,21 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
973 | 1043 | ||
974 | 1044 | ||
975 | if (result.LicenseInfo.IsTermAccepted) { | 1045 | if (result.LicenseInfo.IsTermAccepted) { |
976 | - | ||
977 | //0. | 1046 | //0. |
978 | $rootScope.userData = result; | 1047 | $rootScope.userData = result; |
979 | $rootScope.userModules = result.Modules; | 1048 | $rootScope.userModules = result.Modules; |
980 | 1049 | ||
981 | - $("#modestyDiv").css("pointer-events", "none"); | ||
982 | - $("#modestyDiv").css("opacity", 0.5); | ||
983 | - //2. | ||
984 | - if ($scope.currentUserDetails == null || $scope.currentUserDetails == undefined || $scope.currentUserDetails == "") { | ||
985 | - | ||
986 | - localStorage.setItem('loggedInUserDetails', JSON.stringify(result)); | ||
987 | - } | ||
988 | - | 1050 | + //only instructor allowed to change modesty |
1051 | + //concurrent user of non-instructor | ||
1052 | + if( result.UserTypeId == 6 && result.EditionId!=1 && result.EditionId!=2) | ||
1053 | + { | ||
1054 | + $("#modestyDiv").css("pointer-events", "none"); | ||
1055 | + $("#modestyDiv").css("opacity", 0.5); | ||
1056 | + $("#modestyDiv").find("*").prop('disabled', true); | ||
1057 | + } | ||
1058 | + | ||
1059 | + localStorage.setItem('loggedInUserDetails', JSON.stringify(result)); | ||
1060 | + | ||
989 | // 3.ShowAssignedModulesPopup | 1061 | // 3.ShowAssignedModulesPopup |
990 | //isCommingSoonModel =true only when user comes first time on application and login | 1062 | //isCommingSoonModel =true only when user comes first time on application and login |
991 | if (isCommingSoonModel == true) { | 1063 | if (isCommingSoonModel == true) { |
@@ -1006,10 +1078,9 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -1006,10 +1078,9 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
1006 | //6. reset the isCommingSoonModel to false in local storage so that upcomming module pop up would not show again to the user after firts time | 1078 | //6. reset the isCommingSoonModel to false in local storage so that upcomming module pop up would not show again to the user after firts time |
1007 | localStorage.setItem('isCommingSoonModel', false); | 1079 | localStorage.setItem('isCommingSoonModel', false); |
1008 | 1080 | ||
1009 | - // for reseller type user first need to update profile | ||
1010 | - // only instructor ,not student | ||
1011 | - if (result.UserTypeId == 7 && result.EditionId == 1 && (result.FirstName == "" || result.EmailId == "" || result.LastName == "")) { | ||
1012 | - | 1081 | + // for reseller type user first need to update profile |
1082 | + if (result.UserTypeId == 7 && (result.FirstName == "" || result.EmailId == "" || result.LastName == "")) { | ||
1083 | + $rootScope.LoginEnableUI(); | ||
1013 | $('#updateprofile').html(LoginMessageConstants.USER_UPDATE_PROFILE); | 1084 | $('#updateprofile').html(LoginMessageConstants.USER_UPDATE_PROFILE); |
1014 | 1085 | ||
1015 | $("#profileUpdateModal").modal('show'); | 1086 | $("#profileUpdateModal").modal('show'); |
@@ -1020,6 +1091,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -1020,6 +1091,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
1020 | else { | 1091 | else { |
1021 | $location.path('/'); | 1092 | $location.path('/'); |
1022 | $timeout(function () { | 1093 | $timeout(function () { |
1094 | + $rootScope.LoginEnableUI(); | ||
1023 | $scope.RedirectToModule(); | 1095 | $scope.RedirectToModule(); |
1024 | 1096 | ||
1025 | }, 100); | 1097 | }, 100); |
@@ -1030,6 +1102,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -1030,6 +1102,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
1030 | $('#dvTerms').html(result.TermsAndConditionsText); | 1102 | $('#dvTerms').html(result.TermsAndConditionsText); |
1031 | } | 1103 | } |
1032 | $rootScope.isVisibleLogin = true; | 1104 | $rootScope.isVisibleLogin = true; |
1105 | + $rootScope.LoginEnableUI(); | ||
1033 | $('#dvTermCondition').fadeIn(); | 1106 | $('#dvTermCondition').fadeIn(); |
1034 | $rootScope.userData = result; | 1107 | $rootScope.userData = result; |
1035 | localStorage.setItem('loggedInUserDetails', JSON.stringify(result)); | 1108 | localStorage.setItem('loggedInUserDetails', JSON.stringify(result)); |
@@ -1040,6 +1113,9 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -1040,6 +1113,9 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
1040 | 1113 | ||
1041 | } | 1114 | } |
1042 | 1115 | ||
1116 | + // set user session time | ||
1117 | + $rootScope.loadUserSession(); | ||
1118 | + $rootScope.LoginEnableUI(); | ||
1043 | } | 1119 | } |
1044 | 1120 | ||
1045 | } | 1121 | } |
@@ -1049,6 +1125,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -1049,6 +1125,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
1049 | function (error) { | 1125 | function (error) { |
1050 | console.log(' Error in authentication = ' + error.statusText); | 1126 | console.log(' Error in authentication = ' + error.statusText); |
1051 | // alert(LoginMessageConstants.ERROR_IN_FECTHING_DETAILS); | 1127 | // alert(LoginMessageConstants.ERROR_IN_FECTHING_DETAILS); |
1128 | + $rootScope.LoginEnableUI(); | ||
1052 | $rootScope.isVisibleLogin = true; | 1129 | $rootScope.isVisibleLogin = true; |
1053 | $rootScope.errorMessage = error; | 1130 | $rootScope.errorMessage = error; |
1054 | $("#messageModal").modal('show'); | 1131 | $("#messageModal").modal('show'); |
@@ -1169,19 +1246,43 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -1169,19 +1246,43 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
1169 | if (isCalsCredantialForSIte == "True") { | 1246 | if (isCalsCredantialForSIte == "True") { |
1170 | if($rootScope.siteUrlInfo.mtype!=null && $rootScope.siteUrlInfo.mtype.toLowerCase()=='ca' && $rootScope.siteUrlInfo.userId!=null && $rootScope.siteUrlInfo.accountNumber!=null) | 1247 | if($rootScope.siteUrlInfo.mtype!=null && $rootScope.siteUrlInfo.mtype.toLowerCase()=='ca' && $rootScope.siteUrlInfo.userId!=null && $rootScope.siteUrlInfo.accountNumber!=null) |
1171 | { | 1248 | { |
1249 | + $rootScope.LoginDisableUI(); | ||
1172 | AuthenticationService.ByPassLoginToOpenModule($rootScope.siteUrlInfo) | 1250 | AuthenticationService.ByPassLoginToOpenModule($rootScope.siteUrlInfo) |
1173 | .then( | 1251 | .then( |
1174 | function (result) { | 1252 | function (result) { |
1175 | if(result!=null) | 1253 | if(result!=null) |
1176 | - { | ||
1177 | - $rootScope.userInfo.username = result.LoginId; | ||
1178 | - $rootScope.userInfo.password = result.Password; | ||
1179 | - $rootScope.AuthenticateUser($rootScope.userInfo); | 1254 | + { |
1255 | + $scope.currentUserDetails = $rootScope.getLocalStorageValue('loggedInUserDetails'); | ||
1256 | + ConfigurationService.getCofigValue() | ||
1257 | + .then( | ||
1258 | + function (configresult) { | ||
1259 | + $rootScope.current_year = configresult.current_year; | ||
1260 | + $rootScope.aiaIdleTime = configresult.idleTime; | ||
1261 | + $rootScope.aiaIdleTimeOut = configresult.idelTimeOut; | ||
1262 | + $rootScope.aiaPingInterval = configresult.pingInterval; | ||
1263 | + $rootScope.aiaAnimationPath = configresult.serverPath; | ||
1264 | + $rootScope.MaxOneFileSize = configresult.fileSize; | ||
1265 | + | ||
1266 | + $rootScope.userInfo.username = result.LoginId; | ||
1267 | + $rootScope.userInfo.password = result.Password; | ||
1268 | + var loggedInUser = JSON.parse($scope.currentUserDetails); | ||
1269 | + if(loggedInUser!==null && loggedInUser.LoginId==result.LoginId) | ||
1270 | + { | ||
1271 | + $rootScope.AuthenticateUser($rootScope.userInfo,true); | ||
1272 | + } | ||
1273 | + else | ||
1274 | + { | ||
1275 | + $rootScope.AuthenticateUser($rootScope.userInfo,false); | ||
1276 | + } | ||
1277 | + }); | ||
1278 | + | ||
1180 | } | 1279 | } |
1181 | 1280 | ||
1182 | }), | 1281 | }), |
1183 | function (error) { | 1282 | function (error) { |
1184 | console.log(' Error in bypass login = ' + error.statusText); | 1283 | console.log(' Error in bypass login = ' + error.statusText); |
1284 | + $rootScope.isVisibleLogin = true; | ||
1285 | + $rootScope.LoginEnableUI(); | ||
1185 | $rootScope.errorMessage = error; | 1286 | $rootScope.errorMessage = error; |
1186 | $("#messageModal").modal('show'); | 1287 | $("#messageModal").modal('show'); |
1187 | } | 1288 | } |
@@ -1190,59 +1291,98 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -1190,59 +1291,98 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
1190 | else | 1291 | else |
1191 | { | 1292 | { |
1192 | console.log(' invalid detail in bypass login'); | 1293 | console.log(' invalid detail in bypass login'); |
1294 | + $rootScope.isVisibleLogin = true; | ||
1193 | $rootScope.errorMessage = "authentication is not allowed due to invalid details format .\nPlease pass the correct details again!"; | 1295 | $rootScope.errorMessage = "authentication is not allowed due to invalid details format .\nPlease pass the correct details again!"; |
1194 | $("#messageModal").modal('show'); | 1296 | $("#messageModal").modal('show'); |
1195 | } | 1297 | } |
1196 | 1298 | ||
1197 | } | 1299 | } |
1198 | else { | 1300 | else { |
1301 | + | ||
1302 | + console.log($rootScope.siteUrlInfo); | ||
1303 | + | ||
1304 | + $rootScope.LoginDisableUI(); | ||
1305 | + $scope.currentUserDetails = $rootScope.getLocalStorageValue('loggedInUserDetails'); | ||
1306 | + var sitedetail=$rootScope.siteUrlInfo; | ||
1307 | + ConfigurationService.getCofigValue() | ||
1308 | + .then( | ||
1309 | + function (configresult) { | ||
1310 | + $rootScope.current_year = configresult.current_year; | ||
1311 | + $rootScope.aiaIdleTime = configresult.idleTime; | ||
1312 | + $rootScope.aiaIdleTimeOut = configresult.idelTimeOut; | ||
1313 | + $rootScope.aiaPingInterval = configresult.pingInterval; | ||
1314 | + $rootScope.aiaAnimationPath = configresult.serverPath; | ||
1315 | + $rootScope.MaxOneFileSize = configresult.fileSize; | ||
1316 | + | ||
1317 | + var loggedInUser = JSON.parse($scope.currentUserDetails); | ||
1318 | + //check already login by account number bcz no login id for site login | ||
1319 | + //maintain user session by licenseid of site login | ||
1320 | + if(loggedInUser!==null && loggedInUser.AccountNumber==sitedetail.accountNumber) | ||
1321 | + { | ||
1322 | + $rootScope.AuthenticateClientSiteUser(sitedetail,true); | ||
1323 | + } | ||
1324 | + else | ||
1325 | + { | ||
1326 | + $rootScope.AuthenticateClientSiteUser(sitedetail,false); | ||
1327 | + } | ||
1328 | + }); | ||
1329 | + } | ||
1330 | + } | ||
1199 | 1331 | ||
1200 | - console.log($rootScope.siteUrlInfo); | ||
1201 | - | ||
1202 | - AuthenticationService.validateClientSite($rootScope.siteUrlInfo) | 1332 | + $rootScope.AuthenticateClientSiteUser = function (siteInfo,isAlreadyLoggedIn) { |
1333 | + AuthenticationService.validateClientSite(siteInfo) | ||
1203 | .then( | 1334 | .then( |
1204 | - | ||
1205 | function (result) { | 1335 | function (result) { |
1206 | - | ||
1207 | - console.log(result); | 1336 | + console.log(result); |
1208 | if (result != null) { | 1337 | if (result != null) { |
1209 | - | ||
1210 | - | ||
1211 | console.log(result); | 1338 | console.log(result); |
1212 | if (result == LoginConstants.INVALID_CLIENT) { | 1339 | if (result == LoginConstants.INVALID_CLIENT) { |
1213 | $rootScope.isVisibleLogin = true; | 1340 | $rootScope.isVisibleLogin = true; |
1341 | + $rootScope.LoginEnableUI(); | ||
1214 | $rootScope.errorMessage = LoginConstants.INVALID_CLIENT; | 1342 | $rootScope.errorMessage = LoginConstants.INVALID_CLIENT; |
1215 | $("#messageModal").modal('show'); | 1343 | $("#messageModal").modal('show'); |
1216 | } | 1344 | } |
1217 | else if (result == LoginConstants.MSG_NOT_AUTHORIZE_SITE_USER) { | 1345 | else if (result == LoginConstants.MSG_NOT_AUTHORIZE_SITE_USER) { |
1218 | $rootScope.isVisibleLogin = true; | 1346 | $rootScope.isVisibleLogin = true; |
1347 | + $rootScope.LoginEnableUI(); | ||
1219 | $rootScope.errorMessage = LoginConstants.MSG_NOT_AUTHORIZE_SITE_USER; | 1348 | $rootScope.errorMessage = LoginConstants.MSG_NOT_AUTHORIZE_SITE_USER; |
1220 | $("#messageModal").modal('show'); | 1349 | $("#messageModal").modal('show'); |
1221 | } | 1350 | } |
1222 | 1351 | ||
1223 | else if (result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_ACCOUNT_NUMBER_NOT_NULL) { | 1352 | else if (result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_ACCOUNT_NUMBER_NOT_NULL) { |
1224 | $rootScope.isVisibleLogin = true; | 1353 | $rootScope.isVisibleLogin = true; |
1354 | + $rootScope.LoginEnableUI(); | ||
1225 | $rootScope.errorMessage = LoginMessageConstants.E_ACCOUNT_NUMBER_NOT_NULL; | 1355 | $rootScope.errorMessage = LoginMessageConstants.E_ACCOUNT_NUMBER_NOT_NULL; |
1226 | $("#messageModal").modal('show'); | 1356 | $("#messageModal").modal('show'); |
1227 | } | 1357 | } |
1228 | else if (result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_EDITION_ID_NOT_NULL) { | 1358 | else if (result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_EDITION_ID_NOT_NULL) { |
1229 | $rootScope.isVisibleLogin = true; | 1359 | $rootScope.isVisibleLogin = true; |
1360 | + $rootScope.LoginEnableUI(); | ||
1230 | $rootScope.errorMessage = LoginMessageConstants.E_EDITION_ID_NOT_NULL; | 1361 | $rootScope.errorMessage = LoginMessageConstants.E_EDITION_ID_NOT_NULL; |
1231 | $("#messageModal").modal('show'); | 1362 | $("#messageModal").modal('show'); |
1232 | } | 1363 | } |
1233 | else if (result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_EDITION_NOT_LINKED_WITH_SITE) { | 1364 | else if (result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_EDITION_NOT_LINKED_WITH_SITE) { |
1234 | $rootScope.isVisibleLogin = true; | 1365 | $rootScope.isVisibleLogin = true; |
1366 | + $rootScope.LoginEnableUI(); | ||
1235 | $rootScope.errorMessage = LoginMessageConstants.E_EDITION_NOT_LINKED_WITH_SITE; | 1367 | $rootScope.errorMessage = LoginMessageConstants.E_EDITION_NOT_LINKED_WITH_SITE; |
1236 | $("#messageModal").modal('show'); | 1368 | $("#messageModal").modal('show'); |
1237 | } | 1369 | } |
1238 | else if (result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.LICENSE_INACTIVE) { | 1370 | else if (result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.LICENSE_INACTIVE) { |
1239 | $rootScope.isVisibleLogin = true; | 1371 | $rootScope.isVisibleLogin = true; |
1372 | + $rootScope.LoginEnableUI(); | ||
1240 | $rootScope.errorMessage = LoginMessageConstants.LICENSE_INACTIVE_MESSAGE; | 1373 | $rootScope.errorMessage = LoginMessageConstants.LICENSE_INACTIVE_MESSAGE; |
1241 | $("#messageModal").modal('show'); | 1374 | $("#messageModal").modal('show'); |
1242 | } | 1375 | } |
1243 | 1376 | ||
1244 | 1377 | ||
1245 | else { | 1378 | else { |
1379 | + // update result with session detail | ||
1380 | + result.aiaIdleTime=$rootScope.aiaIdleTime; | ||
1381 | + result.aiaIdleTimeOut=$rootScope.aiaIdleTimeOut; | ||
1382 | + result.aiaPingInterval=$rootScope.aiaPingInterval; | ||
1383 | + $rootScope.isAlreadyLoggedIn=isAlreadyLoggedIn==undefined?false:isAlreadyLoggedIn; | ||
1384 | + //display user name | ||
1385 | + $rootScope.userName=result.FirstName+" "+result.LastName; | ||
1246 | if (typeof result.FirstName != undefined || result.FirstName != "" || result.FirstName != null) { | 1386 | if (typeof result.FirstName != undefined || result.FirstName != "" || result.FirstName != null) { |
1247 | //code for modesty setting | 1387 | //code for modesty setting |
1248 | if (result.LicenseInfo != null) { | 1388 | if (result.LicenseInfo != null) { |
@@ -1298,10 +1438,8 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -1298,10 +1438,8 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
1298 | $rootScope.userData = result; | 1438 | $rootScope.userData = result; |
1299 | $rootScope.userModules = result.Modules; | 1439 | $rootScope.userModules = result.Modules; |
1300 | 1440 | ||
1301 | - if ($scope.currentUserDetails == null || $scope.currentUserDetails == undefined || $scope.currentUserDetails == "") { | ||
1302 | - localStorage.setItem('loggedInUserDetails', JSON.stringify(result)); | ||
1303 | - } | ||
1304 | - | 1441 | + localStorage.setItem('loggedInUserDetails', JSON.stringify(result)); |
1442 | + | ||
1305 | if (isCommingSoonModel == true) { | 1443 | if (isCommingSoonModel == true) { |
1306 | 1444 | ||
1307 | ShowAssignedModulesPopup(result.Modules); | 1445 | ShowAssignedModulesPopup(result.Modules); |
@@ -1320,6 +1458,14 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -1320,6 +1458,14 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
1320 | else { | 1458 | else { |
1321 | if (result.LicenseInfo != null ) { | 1459 | if (result.LicenseInfo != null ) { |
1322 | 1460 | ||
1461 | + //only site instructor allowed to change modesty | ||
1462 | + if(result.EditionId!=1 && result.EditionId!=2) | ||
1463 | + { | ||
1464 | + $("#modestyDiv").css("pointer-events", "none"); | ||
1465 | + $("#modestyDiv").css("opacity", 0.5); | ||
1466 | + $("#modestyDiv").find("*").prop('disabled', true); | ||
1467 | + } | ||
1468 | + | ||
1323 | // set license id | 1469 | // set license id |
1324 | $scope.UpdateUserExportImageData(result.Id, 'LicenseId', result.LicenseId) | 1470 | $scope.UpdateUserExportImageData(result.Id, 'LicenseId', result.LicenseId) |
1325 | 1471 | ||
@@ -1346,11 +1492,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -1346,11 +1492,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
1346 | $rootScope.haveRoleAdmin = false; | 1492 | $rootScope.haveRoleAdmin = false; |
1347 | 1493 | ||
1348 | //2. | 1494 | //2. |
1349 | - if ($scope.currentUserDetails == null || $scope.currentUserDetails == undefined || $scope.currentUserDetails == "") { | ||
1350 | - | ||
1351 | - localStorage.setItem('loggedInUserDetails', JSON.stringify(result)); | ||
1352 | - } | ||
1353 | - | 1495 | + localStorage.setItem('loggedInUserDetails', JSON.stringify(result)); |
1354 | 1496 | ||
1355 | //5. | 1497 | //5. |
1356 | sessionStorage.setItem("loginSession", "true"); | 1498 | sessionStorage.setItem("loginSession", "true"); |
@@ -1367,6 +1509,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -1367,6 +1509,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
1367 | $('#dvTerms').html(result.TermsAndConditionsText); | 1509 | $('#dvTerms').html(result.TermsAndConditionsText); |
1368 | } | 1510 | } |
1369 | $rootScope.isVisibleLogin = true; | 1511 | $rootScope.isVisibleLogin = true; |
1512 | + $rootScope.LoginEnableUI(); | ||
1370 | $('#dvTermCondition').fadeIn(); | 1513 | $('#dvTermCondition').fadeIn(); |
1371 | $rootScope.userData = result; | 1514 | $rootScope.userData = result; |
1372 | $rootScope.haveRoleAdmin = false; | 1515 | $rootScope.haveRoleAdmin = false; |
@@ -1374,30 +1517,30 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -1374,30 +1517,30 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
1374 | $location.path('/'); | 1517 | $location.path('/'); |
1375 | } | 1518 | } |
1376 | } | 1519 | } |
1520 | + $rootScope.LoginEnableUI(); | ||
1521 | + // set user session time | ||
1522 | + $rootScope.loadUserSession(); | ||
1523 | + | ||
1377 | } | 1524 | } |
1378 | 1525 | ||
1379 | 1526 | ||
1380 | } | 1527 | } |
1381 | } | 1528 | } |
1382 | 1529 | ||
1383 | - | ||
1384 | - | ||
1385 | }, | 1530 | }, |
1386 | 1531 | ||
1387 | - function (error) { | 1532 | + function (error) { |
1388 | 1533 | ||
1389 | - console.log(' Error in authentication = ' + error.statusText); | ||
1390 | - // alert(LoginMessageConstants.ERROR_IN_FECTHING_DETAILS); | ||
1391 | - $rootScope.isVisibleLogin = true; | ||
1392 | - $rootScope.errorMessage = error; | ||
1393 | - $("#messageModal").modal('show'); | 1534 | + console.log(' Error in authentication = ' + error.statusText); |
1535 | + // alert(LoginMessageConstants.ERROR_IN_FECTHING_DETAILS); | ||
1536 | + $rootScope.LoginEnableUI(); | ||
1537 | + $rootScope.isVisibleLogin = true; | ||
1538 | + $rootScope.errorMessage = error; | ||
1539 | + $("#messageModal").modal('show'); | ||
1394 | 1540 | ||
1395 | - } | 1541 | + } |
1396 | ) | 1542 | ) |
1397 | 1543 | ||
1398 | - } | ||
1399 | - | ||
1400 | - | ||
1401 | } | 1544 | } |
1402 | 1545 | ||
1403 | $scope.saveRemeberMeDetails = function (result, userInfo) { | 1546 | $scope.saveRemeberMeDetails = function (result, userInfo) { |
@@ -1469,8 +1612,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -1469,8 +1612,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
1469 | $rootScope.userModules = userInfo.Modules; | 1612 | $rootScope.userModules = userInfo.Modules; |
1470 | // ShowAssignedModulesPopup(userInfo.Modules);; | 1613 | // ShowAssignedModulesPopup(userInfo.Modules);; |
1471 | // for reseller type user first need to update profile | 1614 | // for reseller type user first need to update profile |
1472 | - // allow popup for instructor ,not for student. | ||
1473 | - if (userInfo.UserTypeId == 7 && userInfo.EditionId == 1 && (userInfo.FirstName == "" || userInfo.EmailId == "" || userInfo.LastName == "")) { | 1615 | + if (userInfo.UserTypeId == 7 && (userInfo.FirstName == "" || userInfo.EmailId == "" || userInfo.LastName == "")) { |
1474 | 1616 | ||
1475 | $('#updateprofile').html(LoginMessageConstants.USER_UPDATE_PROFILE); | 1617 | $('#updateprofile').html(LoginMessageConstants.USER_UPDATE_PROFILE); |
1476 | 1618 | ||
@@ -1517,14 +1659,118 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -1517,14 +1659,118 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
1517 | 1659 | ||
1518 | } | 1660 | } |
1519 | 1661 | ||
1662 | + $rootScope.loadUserSession = function () { | ||
1663 | + //update session config from API | ||
1664 | + Idle.setIdle($rootScope.aiaIdleTime); | ||
1665 | + Idle.setTimeout($rootScope.aiaIdleTimeOut); | ||
1666 | + Keepalive.setInterval($rootScope.aiaPingInterval); | ||
1667 | + | ||
1668 | + Idle.watch();// start the session | ||
1669 | + $rootScope.isSessionTimeout=false; | ||
1670 | + $rootScope.isRedirectToAdmin=false; | ||
1671 | + $rootScope.userStatus = { | ||
1672 | + userId: null, | ||
1673 | + tagName: null, | ||
1674 | + loginStatus: null, | ||
1675 | + isAlreadyLoggedIn:null | ||
1676 | + } | ||
1677 | + console.log('user session start'); | ||
1678 | + $rootScope.CheckUserSession('insert',$rootScope.isAlreadyLoggedIn); | ||
1679 | + | ||
1680 | + $rootScope.$on('IdleStart', function() { | ||
1681 | + // this event fire when idle time finish and time out start | ||
1682 | + // config set in AIA.js -:IdleProvider.idle(1*30);; | ||
1683 | + //alert('start'); | ||
1684 | + }); | ||
1685 | + $rootScope.$on('IdleEnd', function() { | ||
1686 | + // this event fires by user activity during timeout period | ||
1687 | + // it reset idle time and timeout | ||
1688 | + // config set in AIA.js -:IdleProvider.interrupt('keydown wheel mousedown touchstart touchmove scroll'); | ||
1689 | + // alert('end'); | ||
1690 | + }); | ||
1691 | + $rootScope.$on('IdleTimeout', function() { | ||
1692 | + // this event fire when idle time finished and time out also finished | ||
1693 | + // config set in AIA.js -:IdleProvider.timeout(15); | ||
1694 | + $rootScope.isSessionTimeout=true; | ||
1695 | + console.log('session is timeout'); | ||
1696 | + $rootScope.CheckUserSession('logout',true); | ||
1697 | + }); | ||
1698 | + $rootScope.$on('Keepalive', function() { | ||
1699 | + // it watch the session on perticular time interval during idle time period | ||
1700 | + // config set in AIA.js -: KeepaliveProvider.interval(10); | ||
1701 | + //we will use it to recieve request from databse if user logout from admin activity | ||
1702 | + console.log('ping user session'); | ||
1703 | + $rootScope.CheckUserSession('update',true); | ||
1704 | + }); | ||
1705 | + | ||
1706 | + | ||
1707 | + $window.onbeforeunload = function (e) { | ||
1708 | + var confirmation = {}; | ||
1709 | + // if($location.url()!= "/") { | ||
1710 | + if ($rootScope.isSessionTimeout==false && $rootScope.isRedirectToAdmin==false) { | ||
1711 | + var event = $rootScope.$broadcast('onBeforeUnload', confirmation); | ||
1712 | + if (event.defaultPrevented) { | ||
1713 | + return confirmation.message; | ||
1714 | + } | ||
1715 | + } | ||
1716 | + // } | ||
1717 | + | ||
1718 | + }; | ||
1719 | + } | ||
1720 | + | ||
1721 | + $rootScope.$on('onBeforeUnload', function (e, confirmation) { | ||
1722 | + confirmation.message = "All data willl be lost."; | ||
1723 | + e.preventDefault(); | ||
1724 | + }); | ||
1520 | 1725 | ||
1521 | $rootScope.LogoutUser = function () { | 1726 | $rootScope.LogoutUser = function () { |
1727 | + $rootScope.isSessionTimeout=true; | ||
1728 | + localStorage.removeItem('loggedInUserDetails'); | ||
1729 | + localStorage.clear(); | ||
1730 | + $rootScope.CheckUserSession('logout',true); | ||
1731 | + $timeout(function(){ | ||
1732 | + document.location = '/'; | ||
1733 | + $rootScope.isVisibleLogin = true; | ||
1734 | + },50); | ||
1735 | + | ||
1736 | + } | ||
1737 | + $rootScope.LogoutUserSession = function () { | ||
1738 | + $rootScope.isSessionTimeout=true; | ||
1522 | localStorage.removeItem('loggedInUserDetails'); | 1739 | localStorage.removeItem('loggedInUserDetails'); |
1523 | localStorage.clear(); | 1740 | localStorage.clear(); |
1524 | document.location = '/'; | 1741 | document.location = '/'; |
1525 | $rootScope.isVisibleLogin = true; | 1742 | $rootScope.isVisibleLogin = true; |
1526 | } | 1743 | } |
1527 | 1744 | ||
1745 | + $rootScope.CheckUserSession = function (tagName,isAlreadyLoggedIn) { | ||
1746 | + //console.log('user login id: '+$rootScope.userData.Id); | ||
1747 | + //console.log('user login activity tag: '+tagName); | ||
1748 | + if($rootScope.userData==undefined) return; | ||
1749 | + //incase site user login userid is 0 so then using license id | ||
1750 | + $rootScope.userStatus.userId=$rootScope.userData.Id==0?$rootScope.userData.LicenseId:$rootScope.userData.Id; | ||
1751 | + $rootScope.userStatus.tagName=tagName; | ||
1752 | + $rootScope.userStatus.isAlreadyLoggedIn=isAlreadyLoggedIn; | ||
1753 | + $rootScope.isAlreadyLoggedIn=true; | ||
1754 | + AuthenticationService.ManageUserLoginStatus($rootScope.userStatus) | ||
1755 | + .then( | ||
1756 | + function (loginStatus) { | ||
1757 | + if(loginStatus!=null) | ||
1758 | + { | ||
1759 | + if(loginStatus=='False') | ||
1760 | + { | ||
1761 | + $rootScope.LogoutUserSession(); | ||
1762 | + } | ||
1763 | + } | ||
1764 | + | ||
1765 | + }), | ||
1766 | + function (error) { | ||
1767 | + console.log(' Error in user login status = ' + error.statusText); | ||
1768 | + $rootScope.errorMessage = error; | ||
1769 | + $("#messageModal").modal('show'); | ||
1770 | + } | ||
1771 | + | ||
1772 | + } | ||
1773 | + | ||
1528 | function AuthenticateAlreadyLoggedInUser() { | 1774 | function AuthenticateAlreadyLoggedInUser() { |
1529 | 1775 | ||
1530 | isCommingSoonModel = $rootScope.getLocalStorageValue('isCommingSoonModel'); | 1776 | isCommingSoonModel = $rootScope.getLocalStorageValue('isCommingSoonModel'); |
@@ -1538,7 +1784,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -1538,7 +1784,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
1538 | userInfo["password"] = userInfo.Password; | 1784 | userInfo["password"] = userInfo.Password; |
1539 | 1785 | ||
1540 | 1786 | ||
1541 | - $rootScope.AuthenticateUser(userInfo); | 1787 | + $rootScope.AuthenticateUser(userInfo,true); |
1542 | 1788 | ||
1543 | if ($rootScope.refreshcheck == null) { | 1789 | if ($rootScope.refreshcheck == null) { |
1544 | 1790 | ||
@@ -1919,25 +2165,9 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -1919,25 +2165,9 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
1919 | }); | 2165 | }); |
1920 | 2166 | ||
1921 | $("#font-color .minicolors .minicolors-swatch .minicolors-swatch-color").css({ "background-color": "#000000" }); | 2167 | $("#font-color .minicolors .minicolors-swatch .minicolors-swatch-color").css({ "background-color": "#000000" }); |
1922 | - $("#drawTextBGColorpicker .minicolors .minicolors-swatch .minicolors-swatch-color").css({ "background-color": "#ffffff" }); | ||
1923 | - | ||
1924 | - $window.onbeforeunload = function (e) { | ||
1925 | - var confirmation = {}; | ||
1926 | - if($location.url()!= "/") { | ||
1927 | - var event = $rootScope.$broadcast('onBeforeUnload', confirmation); | ||
1928 | - if (event.defaultPrevented) { | ||
1929 | - return confirmation.message; | ||
1930 | - } | ||
1931 | - } | ||
1932 | - | ||
1933 | - }; | 2168 | + $("#drawTextBGColorpicker .minicolors .minicolors-swatch .minicolors-swatch-color").css({ "background-color": "#ffffff" }); |
1934 | }); | 2169 | }); |
1935 | 2170 | ||
1936 | - $scope.$on('onBeforeUnload', function (e, confirmation) { | ||
1937 | - confirmation.message = "All data willl be lost."; | ||
1938 | - e.preventDefault(); | ||
1939 | - }); | ||
1940 | - | ||
1941 | $rootScope.$on("$locationChangeSuccess", function () { | 2171 | $rootScope.$on("$locationChangeSuccess", function () { |
1942 | 2172 | ||
1943 | $rootScope.HightLightModuleSelection = function (moduleUrl) { | 2173 | $rootScope.HightLightModuleSelection = function (moduleUrl) { |
@@ -7314,6 +7544,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -7314,6 +7544,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
7314 | $rootScope.reDirectURLToAdmin = function () { | 7544 | $rootScope.reDirectURLToAdmin = function () { |
7315 | $("#profileUpdateModal").modal('hide'); | 7545 | $("#profileUpdateModal").modal('hide'); |
7316 | $timeout(function () { | 7546 | $timeout(function () { |
7547 | + $rootScope.isRedirectToAdmin=true; | ||
7317 | window.location.href = "Admin"; | 7548 | window.location.href = "Admin"; |
7318 | }, 300) | 7549 | }, 300) |
7319 | 7550 | ||
@@ -7450,6 +7681,10 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -7450,6 +7681,10 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
7450 | 7681 | ||
7451 | $rootScope.StoreModuleName = function (moduleName) { | 7682 | $rootScope.StoreModuleName = function (moduleName) { |
7452 | 7683 | ||
7684 | + // clear UI of external module like encyclopedia,aod | ||
7685 | + if ($('#siteloader').html() != undefined) { | ||
7686 | + $('#siteloader').remove(); | ||
7687 | + } | ||
7453 | var userid = $rootScope.userData.Id; | 7688 | var userid = $rootScope.userData.Id; |
7454 | $scope.UpdateUserExportImageData(userid,'ModuleName',moduleName); | 7689 | $scope.UpdateUserExportImageData(userid,'ModuleName',moduleName); |
7455 | 7690 | ||
@@ -7603,7 +7838,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | @@ -7603,7 +7838,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data | ||
7603 | }; | 7838 | }; |
7604 | 7839 | ||
7605 | }] | 7840 | }] |
7606 | -); | 7841 | +) |
7607 | function printImagePreview(event) { | 7842 | function printImagePreview(event) { |
7608 | var scope = angular.element(document.querySelector('[ng-controller="HomeController"]')).scope(); | 7843 | var scope = angular.element(document.querySelector('[ng-controller="HomeController"]')).scope(); |
7609 | 7844 |
400-SOURCECODE/AIAHTML5.Web/app/controllers/LinkController.js
1 | 'use strict'; | 1 | 'use strict'; |
2 | 2 | ||
3 | -AIA.controller("LinkController", ["$scope", "$rootScope", "$log", "$location", "pages", "$routeParams", "$window", | ||
4 | -function ($scope, $rootScope, log, $location, pages, $routeParams, $window) { | 3 | +AIA.controller("LinkController", ["$scope", "$rootScope", "$log", "$location", "pages", "$routeParams", "$window","$interval", |
4 | +function ($scope, $rootScope, log, $location, pages, $routeParams, $window,$interval) { | ||
5 | 5 | ||
6 | //$rootScope.currentActiveModuleTitle = Modules[10].Name; | 6 | //$rootScope.currentActiveModuleTitle = Modules[10].Name; |
7 | //$rootScope.currentActiveModuleTitle = $routeParams.modname; | 7 | //$rootScope.currentActiveModuleTitle = $routeParams.modname; |
@@ -59,11 +59,43 @@ function ($scope, $rootScope, log, $location, pages, $routeParams, $window) { | @@ -59,11 +59,43 @@ function ($scope, $rootScope, log, $location, pages, $routeParams, $window) { | ||
59 | } | 59 | } |
60 | 60 | ||
61 | } | 61 | } |
62 | + $scope.refreshIdleTime(); | ||
62 | } | 63 | } |
63 | } | 64 | } |
64 | } | 65 | } |
65 | }); | 66 | }); |
66 | 67 | ||
68 | + $scope.refreshIdleTime = function () { | ||
69 | + var timeintval = null; | ||
70 | + timeintval = $interval(PointerEventEnableDisable, 5000); | ||
71 | + | ||
72 | + function PointerEventEnableDisable() { | ||
73 | + var pointevents = $("#externalLink").css('pointer-events'); | ||
74 | + if (pointevents=='auto') { | ||
75 | + $scope.stopLinkRefresh(timeintval); | ||
76 | + timeintval = $interval(PointerEventEnableDisable, 500); | ||
77 | + $("#externalLink").css('pointer-events', 'none'); | ||
78 | + } | ||
79 | + else if(pointevents=='none') | ||
80 | + { | ||
81 | + $("#externalLink").css('pointer-events', 'auto'); | ||
82 | + $scope.stopLinkRefresh(timeintval); | ||
83 | + timeintval = $interval(PointerEventEnableDisable, 5000); | ||
84 | + } | ||
85 | + else | ||
86 | + { | ||
87 | + //auto clode interval when panel close | ||
88 | + $scope.stopLinkRefresh(timeintval); | ||
89 | + } | ||
90 | + } | ||
91 | + | ||
92 | + $scope.stopLinkRefresh = function (timeintval) { | ||
93 | + if (angular.isDefined(timeintval)) { | ||
94 | + $interval.cancel(timeintval); | ||
95 | + timeintval = undefined; | ||
96 | + } | ||
97 | + }; | ||
98 | + } | ||
67 | $scope.showTabButton = false; | 99 | $scope.showTabButton = false; |
68 | $scope.IsVisible = function () { | 100 | $scope.IsVisible = function () { |
69 | $scope.scroll(); | 101 | $scope.scroll(); |
400-SOURCECODE/AIAHTML5.Web/app/main/AIA.js
1 | 'use strict'; | 1 | 'use strict'; |
2 | 2 | ||
3 | -var AIA = angular.module('AIA', ['ngSanitize', 'ngRoute', 'ngStorage', 'ui.bootstrap']); | 3 | +var AIA = angular.module('AIA', ['ngSanitize', 'ngRoute', 'ngStorage', 'ui.bootstrap','ngIdle']); |
4 | 4 | ||
5 | 5 | ||
6 | 6 | ||
@@ -403,7 +403,7 @@ AIA.constant("LoginConstants", { | @@ -403,7 +403,7 @@ AIA.constant("LoginConstants", { | ||
403 | }); | 403 | }); |
404 | 404 | ||
405 | AIA.constant("LoginMessageConstants", { | 405 | AIA.constant("LoginMessageConstants", { |
406 | - "USER_UPDATE_PROFILE":"Please update your profile first", | 406 | + "USER_UPDATE_PROFILE":"Please update your profile first.", |
407 | "USER_OR_PASSWORD_INCORRECT": "UserId or Password is incorrect.", | 407 | "USER_OR_PASSWORD_INCORRECT": "UserId or Password is incorrect.", |
408 | "RESET_PASSWORD": "Please check you email and reset your password.", | 408 | "RESET_PASSWORD": "Please check you email and reset your password.", |
409 | "USERID_SENT_IN_EMAIL": "We have sent you userId in email.", | 409 | "USERID_SENT_IN_EMAIL": "We have sent you userId in email.", |
@@ -571,4 +571,12 @@ AIA.config(function ($routeProvider, pages, $locationProvider) { | @@ -571,4 +571,12 @@ AIA.config(function ($routeProvider, pages, $locationProvider) { | ||
571 | 571 | ||
572 | } | 572 | } |
573 | } | 573 | } |
574 | -}); | ||
575 | \ No newline at end of file | 574 | \ No newline at end of file |
575 | +}); | ||
576 | +AIA.config(function(IdleProvider, KeepaliveProvider) { | ||
577 | + | ||
578 | + //default configuration | ||
579 | + IdleProvider.idle(20*60); // 20 minutes idle | ||
580 | + IdleProvider.timeout(30); // after 30 seconds idle, time the user out | ||
581 | + KeepaliveProvider.interval(10); // 10 seconds keep-alive ping | ||
582 | + IdleProvider.interrupt('keydown mousemove wheel mousedown touchstart touchmove scroll'); | ||
583 | +}) | ||
576 | \ No newline at end of file | 584 | \ No newline at end of file |
400-SOURCECODE/AIAHTML5.Web/app/services/AuthenticationService.js
@@ -15,6 +15,7 @@ | @@ -15,6 +15,7 @@ | ||
15 | console.log('error') | 15 | console.log('error') |
16 | deferred.reject(data); | 16 | deferred.reject(data); |
17 | $rootScope.isVisibleLogin = true; | 17 | $rootScope.isVisibleLogin = true; |
18 | + $rootScope.LoginEnableUI(); | ||
18 | $rootScope.errorMessage = data; | 19 | $rootScope.errorMessage = data; |
19 | $("#messageModal").modal('show'); | 20 | $("#messageModal").modal('show'); |
20 | 21 | ||
@@ -55,6 +56,29 @@ | @@ -55,6 +56,29 @@ | ||
55 | deferred.resolve(data); | 56 | deferred.resolve(data); |
56 | }).error(function (data, status, headers, config) { | 57 | }).error(function (data, status, headers, config) { |
57 | console.log('error') | 58 | console.log('error') |
59 | + $rootScope.isVisibleLogin = true; | ||
60 | + $rootScope.LoginEnableUI(); | ||
61 | + deferred.reject(data); | ||
62 | + $rootScope.errorMessage = data; | ||
63 | + $("#messageModal").modal('show'); | ||
64 | + | ||
65 | + }); | ||
66 | + return deferred.promise; | ||
67 | + }, | ||
68 | + | ||
69 | + ManageUserLoginStatus: function (logindata) { | ||
70 | + var deferred = $q.defer();//userId tagName | ||
71 | + | ||
72 | + $http.post('/API/api/ManageUserLoginStatus', JSON.stringify(logindata), { | ||
73 | + headers: { | ||
74 | + 'Content-Type': 'application/json' | ||
75 | + } | ||
76 | + }) | ||
77 | + .success(function (data, status, headers, config) { | ||
78 | + console.log('success') | ||
79 | + deferred.resolve(data); | ||
80 | + }).error(function (data, status, headers, config) { | ||
81 | + console.log('error') | ||
58 | deferred.reject(data); | 82 | deferred.reject(data); |
59 | $rootScope.errorMessage = data; | 83 | $rootScope.errorMessage = data; |
60 | $("#messageModal").modal('show'); | 84 | $("#messageModal").modal('show'); |
@@ -120,6 +144,7 @@ | @@ -120,6 +144,7 @@ | ||
120 | console.log('error') | 144 | console.log('error') |
121 | deferred.reject(data); | 145 | deferred.reject(data); |
122 | $rootScope.isVisibleLogin = true; | 146 | $rootScope.isVisibleLogin = true; |
147 | + $rootScope.LoginEnableUI(); | ||
123 | $rootScope.errorMessage = data; | 148 | $rootScope.errorMessage = data; |
124 | $("#messageModal").modal('show'); | 149 | $("#messageModal").modal('show'); |
125 | 150 |
400-SOURCECODE/AIAHTML5.Web/app/widget/TopMenu.html
@@ -48,7 +48,7 @@ | @@ -48,7 +48,7 @@ | ||
48 | <li class="navbarItem"><a ng-click="reDirectURLToAdmin()" ng-show="haveRoleAdmin" style="cursor: pointer;">Admin</a></li> | 48 | <li class="navbarItem"><a ng-click="reDirectURLToAdmin()" ng-show="haveRoleAdmin" style="cursor: pointer;">Admin</a></li> |
49 | </ul> | 49 | </ul> |
50 | <ul class="nav navbar-nav navbar-right"> | 50 | <ul class="nav navbar-nav navbar-right"> |
51 | - <li class="visible-xs"><a href="" ng-click="LogoutUser()">Logout</a></li> | 51 | + <li class="navbarItem" style="pointer-events:none ;"><a href="#">{{userName}}</a></li> |
52 | <li class="hidden-xs marginR5 logOut" data-toggle="tooltip" data-placement="top" title="Logout"><a href="" ng-click="LogoutUser()"><i class="fa fa-power-off"></i></a></li> | 52 | <li class="hidden-xs marginR5 logOut" data-toggle="tooltip" data-placement="top" title="Logout"><a href="" ng-click="LogoutUser()"><i class="fa fa-power-off"></i></a></li> |
53 | </ul> | 53 | </ul> |
54 | <div id="imaginary_container" style="visibility:hidden"> | 54 | <div id="imaginary_container" style="visibility:hidden"> |
400-SOURCECODE/AIAHTML5.Web/index.aspx
@@ -221,6 +221,9 @@ | @@ -221,6 +221,9 @@ | ||
221 | <div class="form-group"> | 221 | <div class="form-group"> |
222 | <button class="btn btn-primary pull-right" ng-click="AuthenticateUser(userInfo)">Log In</button> | 222 | <button class="btn btn-primary pull-right" ng-click="AuthenticateUser(userInfo)">Log In</button> |
223 | </div> | 223 | </div> |
224 | + <div id="spinnerLogin" class="spinner" ng-show="isLoginLoading" style="visibility:hidden"> | ||
225 | + <img id="img-spinner" src="content/images/common/loading.gif" alt="Loading" /> | ||
226 | + </div> | ||
224 | </form> | 227 | </form> |
225 | </div> | 228 | </div> |
226 | </div> | 229 | </div> |
@@ -1515,6 +1518,7 @@ | @@ -1515,6 +1518,7 @@ | ||
1515 | <script src="libs/angular/1.4.9/angular-sanitize.min.js"></script> | 1518 | <script src="libs/angular/1.4.9/angular-sanitize.min.js"></script> |
1516 | <script src="themes/default/scripts/bootstrap/3.3.5/ui-bootstrap-tpls-0.3.0.min.js"></script> | 1519 | <script src="themes/default/scripts/bootstrap/3.3.5/ui-bootstrap-tpls-0.3.0.min.js"></script> |
1517 | <script src="libs/angular/1.4.9/ngStorage.js"></script> | 1520 | <script src="libs/angular/1.4.9/ngStorage.js"></script> |
1521 | + <script src="libs/angular/1.4.9/angular-idle.min.js"></script> | ||
1518 | <script src="content/js/custom/custom.js"></script> | 1522 | <script src="content/js/custom/custom.js"></script> |
1519 | <!--Annotation Toolbar : jcanvas Library--> | 1523 | <!--Annotation Toolbar : jcanvas Library--> |
1520 | 1524 |
400-SOURCECODE/AIAHTML5.Web/libs/angular/1.4.9/angular-idle.min.js
0 → 100644
1 | +/*** Directives and services for responding to idle users in AngularJS | ||
2 | +* @author Mike Grabski <me@mikegrabski.com> | ||
3 | +* @version v1.3.2 | ||
4 | +* @link https://github.com/HackedByChinese/ng-idle.git | ||
5 | +* @license MIT | ||
6 | +*/ | ||
7 | + | ||
8 | +!function(a,b,c){"use strict";b.module("ngIdle",["ngIdle.keepalive","ngIdle.idle","ngIdle.countdown","ngIdle.title","ngIdle.localStorage"]),b.module("ngIdle.keepalive",[]).provider("Keepalive",function(){var a={http:null,interval:600};this.http=function(c){if(!c)throw new Error("Argument must be a string containing a URL, or an object containing the HTTP request configuration.");b.isString(c)&&(c={url:c,method:"GET"}),c.cache=!1,a.http=c};var c=this.interval=function(b){if(b=parseInt(b),isNaN(b)||0>=b)throw new Error("Interval must be expressed in seconds and be greater than 0.");a.interval=b};this.$get=["$rootScope","$log","$interval","$http",function(d,e,f,g){function h(a){d.$broadcast("KeepaliveResponse",a.data,a.status)}function i(){d.$broadcast("Keepalive"),b.isObject(a.http)&&g(a.http).then(h)["catch"](h)}var j={ping:null};return{_options:function(){return a},setInterval:c,start:function(){return f.cancel(j.ping),j.ping=f(i,1e3*a.interval),j.ping},stop:function(){f.cancel(j.ping)},ping:function(){i()}}}]}),b.module("ngIdle.idle",["ngIdle.keepalive","ngIdle.localStorage"]).provider("Idle",function(){var a={idle:1200,timeout:30,autoResume:"idle",interrupt:"mousemove keydown DOMMouseScroll mousewheel mousedown touchstart touchmove scroll",windowInterrupt:null,keepalive:!0},c=this.timeout=function(c){if(c===!1)a.timeout=0;else{if(!(b.isNumber(c)&&c>=0))throw new Error("Timeout must be zero or false to disable the feature, or a positive integer (in seconds) to enable it.");a.timeout=c}};this.interrupt=function(b){a.interrupt=b},this.windowInterrupt=function(b){a.windowInterrupt=b};var d=this.idle=function(b){if(0>=b)throw new Error("Idle must be a value in seconds, greater than 0.");a.idle=b};this.autoResume=function(b){b===!0?a.autoResume="idle":b===!1?a.autoResume="off":a.autoResume=b},this.keepalive=function(b){a.keepalive=b===!0},this.$get=["$interval","$log","$rootScope","$document","Keepalive","IdleLocalStorage","$window",function(e,f,g,h,i,j,k){function l(){a.keepalive&&(u.running&&i.ping(),i.start())}function m(){a.keepalive&&i.stop()}function n(){u.idling=!u.idling;var b=u.idling?"IdleStart":"IdleEnd";u.idling?(g.$broadcast(b),m(),a.timeout&&(u.countdown=a.timeout,o(),u.timeout=e(o,1e3,a.timeout,!1))):(l(),g.$broadcast(b)),e.cancel(u.idle)}function o(){if(u.idling){if(u.countdown<=0)return void q();g.$broadcast("IdleWarn",u.countdown),u.countdown--}}function p(a){g.$broadcast("IdleInterrupt",a)}function q(){m(),e.cancel(u.idle),e.cancel(u.timeout),u.idling=!0,u.running=!1,u.countdown=0,g.$broadcast("IdleTimeout")}function r(a,b,c){var d=a.running();a.unwatch(),b(c),d&&a.watch()}function s(){var a=j.get("expiry");return a&&a.time?new Date(a.time):null}function t(a){a?j.set("expiry",{id:v,time:a}):j.remove("expiry")}var u={idle:null,timeout:null,idling:!1,running:!1,countdown:null},v=(new Date).getTime(),w={_options:function(){return a},_getNow:function(){return new Date},getIdle:function(){return a.idle},getTimeout:function(){return a.timeout},setIdle:function(a){r(this,d,a)},setTimeout:function(a){r(this,c,a)},isExpired:function(){var a=s();return null!==a&&a<=this._getNow()},running:function(){return u.running},idling:function(){return u.idling},watch:function(b){e.cancel(u.idle),e.cancel(u.timeout);var c=a.timeout?a.timeout:0;b||t(new Date((new Date).getTime()+1e3*(a.idle+c))),u.idling?n():u.running||l(),u.running=!0,u.idle=e(n,1e3*a.idle,0,!1)},unwatch:function(){e.cancel(u.idle),e.cancel(u.timeout),u.idling=!1,u.running=!1,t(null),m()},interrupt:function(b){if(u.running){if(a.timeout&&this.isExpired())return void q();p(b),(b||"idle"===a.autoResume||"notIdle"===a.autoResume&&!u.idling)&&this.watch(b)}}},x={clientX:null,clientY:null,swap:function(a){var b={clientX:this.clientX,clientY:this.clientY};return this.clientX=a.clientX,this.clientY=a.clientY,b},hasMoved:function(a){var b=this.swap(a);return null===this.clientX||a.movementX||a.movementY?!0:b.clientX!=a.clientX||b.clientY!=a.clientY?!0:!1}};if(h.find("html").on(a.interrupt,function(a){"mousemove"===a.type&&a.originalEvent&&0===a.originalEvent.movementX&&0===a.originalEvent.movementY||("mousemove"!==a.type||x.hasMoved(a))&&w.interrupt()}),a.windowInterrupt)for(var y=a.windowInterrupt.split(" "),z=function(){w.interrupt()},A=0;A<y.length;A++)k.addEventListener?(k.addEventListener(y[A],z,!1),g.$on("$destroy",function(){k.removeEventListener(y[A],z,!1)})):(k.attachEvent(y[A],z),g.$on("$destroy",function(){k.detachEvent(y[A],z)}));var B=function(a){if("ngIdle.expiry"===a.key&&a.newValue&&a.newValue!==a.oldValue){var c=b.fromJson(a.newValue);if(c.id===v)return;w.interrupt(!0)}};return k.addEventListener?(k.addEventListener("storage",B,!1),g.$on("$destroy",function(){k.removeEventListener("storage",B,!1)})):k.attachEvent&&(k.attachEvent("onstorage",B),g.$on("$destroy",function(){k.detachEvent("onstorage",B)})),w}]}),b.module("ngIdle.countdown",["ngIdle.idle"]).directive("idleCountdown",["Idle",function(a){return{restrict:"A",scope:{value:"=idleCountdown"},link:function(b){b.value=a.getTimeout(),b.$on("IdleWarn",function(a,c){b.$evalAsync(function(){b.value=c})}),b.$on("IdleTimeout",function(){b.$evalAsync(function(){b.value=0})})}}}]),b.module("ngIdle.title",[]).provider("Title",function(){function a(a,b,c){return new Array(b-String(a).length+1).join(c||"0")+a}var c={enabled:!0},d=this.enabled=function(a){c.enabled=a===!0};this.$get=["$document","$interpolate",function(e,f){var g={original:null,idle:"{{minutes}}:{{seconds}} until your session times out!",timedout:"Your session has expired."};return{setEnabled:d,isEnabled:function(){return c.enabled},original:function(a){return b.isUndefined(a)?g.original:void(g.original=a)},store:function(a){(a||!g.original)&&(g.original=this.value())},value:function(a){return b.isUndefined(a)?e[0].title:void(e[0].title=a)},idleMessage:function(a){return b.isUndefined(a)?g.idle:void(g.idle=a)},timedOutMessage:function(a){return b.isUndefined(a)?g.timedout:void(g.timedout=a)},setAsIdle:function(b){this.store();var c={totalSeconds:b};c.minutes=Math.floor(b/60),c.seconds=a(b-60*c.minutes,2),this.value(f(this.idleMessage())(c))},setAsTimedOut:function(){this.store(),this.value(this.timedOutMessage())},restore:function(){this.original()&&this.value(this.original())}}}]}).directive("title",["Title",function(a){return{restrict:"E",link:function(b,c,d){a.isEnabled()&&!d.idleDisabled&&(a.store(!0),b.$on("IdleStart",function(){a.original(c[0].innerText)}),b.$on("IdleWarn",function(b,c){a.setAsIdle(c)}),b.$on("IdleEnd",function(){a.restore()}),b.$on("IdleTimeout",function(){a.setAsTimedOut()}))}}}]),b.module("ngIdle.localStorage",[]).service("IdleStorageAccessor",["$window",function(a){return{get:function(){return a.localStorage}}}]).service("IdleLocalStorage",["IdleStorageAccessor",function(a){function d(){var a={};this.setItem=function(b,c){a[b]=c},this.getItem=function(b){return"undefined"!=typeof a[b]?a[b]:null},this.removeItem=function(b){a[b]=c}}function e(){try{var b=a.get();return b.setItem("ngIdleStorage",""),b.removeItem("ngIdleStorage"),b}catch(c){return new d}}var f=e();return{set:function(a,c){f.setItem("ngIdle."+a,b.toJson(c))},get:function(a){return b.fromJson(f.getItem("ngIdle."+a))},remove:function(a){f.removeItem("ngIdle."+a)},_wrapped:function(){return f}}}])}(window,window.angular); | ||
9 | +//# sourceMappingURL=angular-idle.map | ||
0 | \ No newline at end of file | 10 | \ No newline at end of file |
400-SOURCECODE/Admin/package-lock.json
@@ -276,6 +276,16 @@ | @@ -276,6 +276,16 @@ | ||
276 | "tsickle": "^0.21.0" | 276 | "tsickle": "^0.21.0" |
277 | } | 277 | } |
278 | }, | 278 | }, |
279 | + "@ng-idle/core": { | ||
280 | + "version": "2.0.0-beta.9", | ||
281 | + "resolved": "https://registry.npmjs.org/@ng-idle/core/-/core-2.0.0-beta.9.tgz", | ||
282 | + "integrity": "sha1-+ZsIF0kc2lTAh9bNhs7SMQ//5qQ=" | ||
283 | + }, | ||
284 | + "@ng-idle/keepalive": { | ||
285 | + "version": "2.0.0-beta.9", | ||
286 | + "resolved": "https://registry.npmjs.org/@ng-idle/keepalive/-/keepalive-2.0.0-beta.9.tgz", | ||
287 | + "integrity": "sha1-f3HkrIcG042pZl04JWDPv72IEh8=" | ||
288 | + }, | ||
279 | "@ng-select/ng-select": { | 289 | "@ng-select/ng-select": { |
280 | "version": "2.20.5", | 290 | "version": "2.20.5", |
281 | "resolved": "https://registry.npmjs.org/@ng-select/ng-select/-/ng-select-2.20.5.tgz", | 291 | "resolved": "https://registry.npmjs.org/@ng-select/ng-select/-/ng-select-2.20.5.tgz", |
@@ -485,6 +495,14 @@ | @@ -485,6 +495,14 @@ | ||
485 | "resolved": "https://registry.npmjs.org/angular2-json2csv/-/angular2-json2csv-1.1.2.tgz", | 495 | "resolved": "https://registry.npmjs.org/angular2-json2csv/-/angular2-json2csv-1.1.2.tgz", |
486 | "integrity": "sha1-ETRWynbEyZiLU44jAUHCwT4DxpI=" | 496 | "integrity": "sha1-ETRWynbEyZiLU44jAUHCwT4DxpI=" |
487 | }, | 497 | }, |
498 | + "angular2-moment": { | ||
499 | + "version": "1.9.0", | ||
500 | + "resolved": "https://registry.npmjs.org/angular2-moment/-/angular2-moment-1.9.0.tgz", | ||
501 | + "integrity": "sha512-ybPjYizpKVWAI2Z4AqxAS6s3FMkF3+zRpfvxX1wIdSJUFjl83XxQ5f2yn7retX68NSYZZ/JTK9KGnvOzZfrIZw==", | ||
502 | + "requires": { | ||
503 | + "moment": "^2.19.3" | ||
504 | + } | ||
505 | + }, | ||
488 | "angular4-slimscroll": { | 506 | "angular4-slimscroll": { |
489 | "version": "1.0.5", | 507 | "version": "1.0.5", |
490 | "resolved": "https://registry.npmjs.org/angular4-slimscroll/-/angular4-slimscroll-1.0.5.tgz", | 508 | "resolved": "https://registry.npmjs.org/angular4-slimscroll/-/angular4-slimscroll-1.0.5.tgz", |
@@ -7001,6 +7019,11 @@ | @@ -7001,6 +7019,11 @@ | ||
7001 | "minimist": "0.0.8" | 7019 | "minimist": "0.0.8" |
7002 | } | 7020 | } |
7003 | }, | 7021 | }, |
7022 | + "moment": { | ||
7023 | + "version": "2.28.0", | ||
7024 | + "resolved": "https://registry.npmjs.org/moment/-/moment-2.28.0.tgz", | ||
7025 | + "integrity": "sha512-Z5KOjYmnHyd/ukynmFd/WwyXHd7L4J9vTI/nn5Ap9AVUgaAE15VvQ9MOGmJJygEUklupqIrFnor/tjTwRU+tQw==" | ||
7026 | + }, | ||
7004 | "move-concurrently": { | 7027 | "move-concurrently": { |
7005 | "version": "1.0.1", | 7028 | "version": "1.0.1", |
7006 | "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", | 7029 | "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", |
400-SOURCECODE/Admin/package.json
@@ -23,9 +23,12 @@ | @@ -23,9 +23,12 @@ | ||
23 | "@angular/platform-browser": "^4.2.4", | 23 | "@angular/platform-browser": "^4.2.4", |
24 | "@angular/platform-browser-dynamic": "^4.2.4", | 24 | "@angular/platform-browser-dynamic": "^4.2.4", |
25 | "@angular/router": "^4.2.4", | 25 | "@angular/router": "^4.2.4", |
26 | + "@ng-idle/core": "^2.0.0-beta.9", | ||
27 | + "@ng-idle/keepalive": "^2.0.0-beta.9", | ||
26 | "@ng-select/ng-select": "^2.1.2", | 28 | "@ng-select/ng-select": "^2.1.2", |
27 | "@types/node": "^6.0.102", | 29 | "@types/node": "^6.0.102", |
28 | "angular2-json2csv": "^1.1.2", | 30 | "angular2-json2csv": "^1.1.2", |
31 | + "angular2-moment": "^1.9.0", | ||
29 | "angular4-slimscroll": "^1.0.5", | 32 | "angular4-slimscroll": "^1.0.5", |
30 | "classlist.js": "1.1.20150312", | 33 | "classlist.js": "1.1.20150312", |
31 | "core-js": "^2.5.3", | 34 | "core-js": "^2.5.3", |
400-SOURCECODE/Admin/src/app/app.component.html
@@ -106,7 +106,7 @@ | @@ -106,7 +106,7 @@ | ||
106 | <div class="wel-brog"> | 106 | <div class="wel-brog"> |
107 | <div class="btn-group pull-right mob1"> | 107 | <div class="btn-group pull-right mob1"> |
108 | <ul class="nav navbar-nav navbar-right hidden-sm"> | 108 | <ul class="nav navbar-nav navbar-right hidden-sm"> |
109 | - <li class="marginR5" data-toggle="tooltip" data-placement="top" title="Logout"><a (click)="logout()"><i class="fa fa-power-off"></i></a></li> | 109 | + <li class="marginR5" data-toggle="tooltip" data-placement="top" title="Logout"><a (click)="logout()"><i class="fa fa-power-off" style="cursor:pointer"></i></a></li> |
110 | </ul> | 110 | </ul> |
111 | </div> | 111 | </div> |
112 | <div class="btn-group pull-right hidden-sm mar-top17 mob2"> | 112 | <div class="btn-group pull-right hidden-sm mar-top17 mob2"> |
400-SOURCECODE/Admin/src/app/app.component.ts
@@ -8,6 +8,12 @@ import { UserManageRightsModel } from './components/userentity/datamodel'; | @@ -8,6 +8,12 @@ import { UserManageRightsModel } from './components/userentity/datamodel'; | ||
8 | //import { MyAuthService } from './shared/my-auth.service'; | 8 | //import { MyAuthService } from './shared/my-auth.service'; |
9 | import { GlobalService } from './shared/global'; | 9 | import { GlobalService } from './shared/global'; |
10 | import { Router, NavigationEnd } from '@angular/router'; | 10 | import { Router, NavigationEnd } from '@angular/router'; |
11 | +import { LoadingService } from './shared/loading.service'; | ||
12 | +import {Idle, DEFAULT_INTERRUPTSOURCES} from '@ng-idle/core'; | ||
13 | +import {Keepalive} from '@ng-idle/keepalive'; | ||
14 | +import { Title } from '@angular/platform-browser'; | ||
15 | +import { ConfirmService } from './shared/confirm/confirm.service'; | ||
16 | +import { timeout } from 'rxjs/operator/timeout'; | ||
11 | 17 | ||
12 | //import { HttpClient } from '@angular/common/http'; | 18 | //import { HttpClient } from '@angular/common/http'; |
13 | //import { HttpErrorResponse } from '@angular/common/http'; | 19 | //import { HttpErrorResponse } from '@angular/common/http'; |
@@ -28,8 +34,57 @@ export class AppComponent implements OnInit { | @@ -28,8 +34,57 @@ export class AppComponent implements OnInit { | ||
28 | public UpdateProfileVisible: boolean; | 34 | public UpdateProfileVisible: boolean; |
29 | public UserManageRightsList: Array<UserManageRightsModel>; | 35 | public UserManageRightsList: Array<UserManageRightsModel>; |
30 | 36 | ||
31 | - constructor(private userservice: UserService, public global: GlobalService, private router: Router, | ||
32 | - ) { } | 37 | + constructor(private idle: Idle, private keepalive: Keepalive,private titleService: Title,private _confirmService: ConfirmService,private userservice: UserService,private _loadingService: LoadingService, public global: GlobalService, private router: Router,) { |
38 | + const projectTitle= this.titleService.getTitle(); | ||
39 | + | ||
40 | + console.log("idleTime: "+this.global.aiaIdleTime+" aiaIdleTimeOut: "+this.global.aiaIdleTimeOut+" Interval: "+this.global.aiaPingInterval); | ||
41 | + // sets an idle timeout of 20 minutes. | ||
42 | + this.idle.setIdle(this.global.aiaIdleTime); | ||
43 | + | ||
44 | + // sets a timeout period of 30 seconds. after 30 seconds of inactivity, the user will be considered timed out. | ||
45 | + this.idle.setTimeout(this.global.aiaIdleTimeOut); | ||
46 | + | ||
47 | + // sets the ping interval to 10 seconds | ||
48 | + this.keepalive.interval(this.global.aiaPingInterval); | ||
49 | + | ||
50 | + // sets the default interrupts, in this case, things like clicks, scrolls,mousemove touches to the document | ||
51 | + this.idle.setInterrupts(DEFAULT_INTERRUPTSOURCES); | ||
52 | + | ||
53 | + this.idle.onInterrupt.subscribe(() => { | ||
54 | + this.titleService.setTitle(projectTitle); | ||
55 | + }) | ||
56 | + | ||
57 | + this.idle.onTimeout.subscribe(() => { | ||
58 | + //console.log("Timed out!"); | ||
59 | + this.titleService.setTitle('Your session has expired!'); | ||
60 | + this._loadingService.ShowLoading("global-loading"); | ||
61 | + this.loginManageStatus('logout'); | ||
62 | + }); | ||
63 | + | ||
64 | + this.idle.onTimeoutWarning.subscribe((countdown) => { | ||
65 | + // console.log("You will time out in "+countdown); | ||
66 | + var minute=Math.floor(countdown/60); | ||
67 | + var remaining = minute+':'+(("00" + (countdown - minute * 60)).slice(-2) ); | ||
68 | + this.titleService.setTitle(remaining+' until your session times out!'); | ||
69 | + }); | ||
70 | + | ||
71 | + this.keepalive.onPing.subscribe(() =>{ | ||
72 | + // this.lastPing = new Date(); | ||
73 | + // console.log("last ping: "+this.lastPing); | ||
74 | + this.loginManageStatus('update'); | ||
75 | + }); | ||
76 | + | ||
77 | + // this.idle.onIdleEnd.subscribe(() => { | ||
78 | + // console.log("No longer idle. "); | ||
79 | + // }); | ||
80 | + // this.idle.onIdleStart.subscribe(() =>{ | ||
81 | + // console.log("You\'ve gone idle!"); | ||
82 | + // }); | ||
83 | + | ||
84 | + this.idle.watch(); | ||
85 | + | ||
86 | + } | ||
87 | + | ||
33 | ngOnInit(): void { | 88 | ngOnInit(): void { |
34 | this.menustaus = "True"; | 89 | this.menustaus = "True"; |
35 | this.global.getJSON().subscribe(data => { | 90 | this.global.getJSON().subscribe(data => { |
@@ -69,17 +124,50 @@ export class AppComponent implements OnInit { | @@ -69,17 +124,50 @@ export class AppComponent implements OnInit { | ||
69 | } | 124 | } |
70 | } | 125 | } |
71 | }, error => console.log(error)); | 126 | }, error => console.log(error)); |
72 | - | ||
73 | - | ||
74 | } | 127 | } |
128 | + | ||
75 | logout() { | 129 | logout() { |
76 | - localStorage.removeItem('loggedInUserDetails'); | ||
77 | - //window.location.href = this.global.LiveURL; | ||
78 | - window.location.href = window.location.origin; | 130 | + this._loadingService.ShowLoading("global-loading"); |
131 | + this.loginManageStatus('logout'); | ||
79 | } | 132 | } |
133 | + loginManageStatus(tagname:string) { | ||
134 | + this.userservice.ManageUserLoginStatus({ | ||
135 | + userId: this.global.UserId, | ||
136 | + tagName: tagname, | ||
137 | + isAlreadyLoggedIn:true | ||
138 | + }).subscribe(status => { | ||
139 | + console.log(status); | ||
140 | + if(status=='False') | ||
141 | + { | ||
142 | + if(tagname=='logout') | ||
143 | + { | ||
144 | + this._loadingService.HideLoading("global-loading"); | ||
145 | + } | ||
146 | + | ||
147 | + if(window.location.hostname!="localhost") | ||
148 | + { | ||
149 | + localStorage.removeItem('loggedInUserDetails'); | ||
150 | + window.location.href = window.location.origin; | ||
151 | + | ||
152 | + } | ||
153 | + | ||
154 | + } | ||
155 | + | ||
156 | + },error =>{ | ||
157 | + console.log(error); | ||
158 | + this.idle.stop(); | ||
159 | + this._confirmService.activate(error, "alertMsg"); | ||
160 | + this._loadingService.HideLoading("global-loading"); | ||
161 | + setTimeout(function(){ | ||
162 | + window.location.href = window.location.origin; | ||
163 | + },5000); | ||
164 | + }) | ||
165 | + } | ||
166 | + | ||
80 | Product() { | 167 | Product() { |
81 | //window.location.href = this.global.LiveURL; | 168 | //window.location.href = this.global.LiveURL; |
82 | window.location.href = window.location.origin; | 169 | window.location.href = window.location.origin; |
83 | //this.router.navigate([this.global.LiveURL]); | 170 | //this.router.navigate([this.global.LiveURL]); |
84 | } | 171 | } |
172 | + | ||
85 | } | 173 | } |
400-SOURCECODE/Admin/src/app/app.module.ts
1 | import { FormsModule, ReactiveFormsModule } from '@angular/forms'; | 1 | import { FormsModule, ReactiveFormsModule } from '@angular/forms'; |
2 | -import { BrowserModule } from '@angular/platform-browser'; | 2 | +import { BrowserModule,Title } from '@angular/platform-browser'; |
3 | import { NgModule } from '@angular/core'; | 3 | import { NgModule } from '@angular/core'; |
4 | import { RouterModule, Routes } from '@angular/router'; | 4 | import { RouterModule, Routes } from '@angular/router'; |
5 | import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; | 5 | import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; |
@@ -8,6 +8,10 @@ import { HttpModule } from '@angular/http'; | @@ -8,6 +8,10 @@ import { HttpModule } from '@angular/http'; | ||
8 | //import { Ng2SmartTableModule } from 'ng2-smart-table'; | 8 | //import { Ng2SmartTableModule } from 'ng2-smart-table'; |
9 | import { Ng2Bs3ModalModule } from 'ng2-bs3-modal/ng2-bs3-modal'; | 9 | import { Ng2Bs3ModalModule } from 'ng2-bs3-modal/ng2-bs3-modal'; |
10 | import { CsvService } from "angular2-json2csv"; | 10 | import { CsvService } from "angular2-json2csv"; |
11 | + | ||
12 | +import { NgIdleKeepaliveModule } from '@ng-idle/keepalive'; | ||
13 | +import { MomentModule } from 'angular2-moment'; | ||
14 | + | ||
11 | import { BsDatepickerModule, ModalModule } from 'ngx-bootstrap'; | 15 | import { BsDatepickerModule, ModalModule } from 'ngx-bootstrap'; |
12 | import { BsModalService } from 'ngx-bootstrap/modal'; | 16 | import { BsModalService } from 'ngx-bootstrap/modal'; |
13 | import { BsDropdownModule } from 'ngx-bootstrap'; | 17 | import { BsDropdownModule } from 'ngx-bootstrap'; |
@@ -83,11 +87,11 @@ import { MyFilterPipe } from './shared/my-filter.pipe'; | @@ -83,11 +87,11 @@ import { MyFilterPipe } from './shared/my-filter.pipe'; | ||
83 | ], | 87 | ], |
84 | imports: [ | 88 | imports: [ |
85 | BrowserModule, AppRoutingModule, HttpClientModule, FormsModule, ReactiveFormsModule, HttpModule, Ng2Bs3ModalModule, | 89 | BrowserModule, AppRoutingModule, HttpClientModule, FormsModule, ReactiveFormsModule, HttpModule, Ng2Bs3ModalModule, |
86 | - BsDatepickerModule.forRoot(), ModalModule.forRoot(), BsDropdownModule.forRoot(), Ng2OrderModule | 90 | + BsDatepickerModule.forRoot(), ModalModule.forRoot(), BsDropdownModule.forRoot(), Ng2OrderModule,MomentModule,NgIdleKeepaliveModule.forRoot() |
87 | //ModalModule.forRoot() | 91 | //ModalModule.forRoot() |
88 | // , AngularFireModule.initializeApp(firebaseConfig), | 92 | // , AngularFireModule.initializeApp(firebaseConfig), |
89 | ], | 93 | ], |
90 | - providers: [GlobalService, ConfirmService, BsModalService, LoadingService, CsvService, | 94 | + providers: [GlobalService, ConfirmService, BsModalService, LoadingService, CsvService,Title, |
91 | // MyAuthService, AngularFireAuth, FirebaseApp, AngularFireModule, | 95 | // MyAuthService, AngularFireAuth, FirebaseApp, AngularFireModule, |
92 | 96 | ||
93 | //AuthService, | 97 | //AuthService, |
400-SOURCECODE/Admin/src/app/components/UserEntity/updateuserprofile.component.ts
@@ -91,7 +91,6 @@ export class UpdateUserProfile implements OnInit { | @@ -91,7 +91,6 @@ export class UpdateUserProfile implements OnInit { | ||
91 | 91 | ||
92 | this.userservice.GetUserById() | 92 | this.userservice.GetUserById() |
93 | .subscribe(x => { console.log(x); this.bindUsers(x) }, error => this.error = <any>error); | 93 | .subscribe(x => { console.log(x); this.bindUsers(x) }, error => this.error = <any>error); |
94 | - this._loadingService.HideLoading("global-loading"); | ||
95 | } | 94 | } |
96 | UpdateUserProfile() { | 95 | UpdateUserProfile() { |
97 | this.alerts = ''; | 96 | this.alerts = ''; |
@@ -114,7 +113,7 @@ export class UpdateUserProfile implements OnInit { | @@ -114,7 +113,7 @@ export class UpdateUserProfile implements OnInit { | ||
114 | 113 | ||
115 | if (this.userFrm.valid && this.alerts == '') { | 114 | if (this.userFrm.valid && this.alerts == '') { |
116 | var obj = this.userFrm.value; | 115 | var obj = this.userFrm.value; |
117 | - | 116 | + this._loadingService.ShowLoading("global-loading"); |
118 | return this.userservice.UpdateUserProfileById(obj) | 117 | return this.userservice.UpdateUserProfileById(obj) |
119 | .subscribe( | 118 | .subscribe( |
120 | n => (this.AfterInsertData(n)), | 119 | n => (this.AfterInsertData(n)), |
@@ -122,7 +121,8 @@ export class UpdateUserProfile implements OnInit { | @@ -122,7 +121,8 @@ export class UpdateUserProfile implements OnInit { | ||
122 | } | 121 | } |
123 | } | 122 | } |
124 | AfterInsertData(data) { | 123 | AfterInsertData(data) { |
125 | - if (data.Status == "False") { | 124 | + if (data.Status == "False") { |
125 | + this._loadingService.HideLoading("global-loading"); | ||
126 | return false; | 126 | return false; |
127 | } else { | 127 | } else { |
128 | this.status = true; | 128 | this.status = true; |
@@ -132,6 +132,7 @@ export class UpdateUserProfile implements OnInit { | @@ -132,6 +132,7 @@ export class UpdateUserProfile implements OnInit { | ||
132 | loggedInUser.LastName = this.userFrm.value.lastName; | 132 | loggedInUser.LastName = this.userFrm.value.lastName; |
133 | localStorage.setItem("loggedInUserDetails", JSON.stringify(loggedInUser)); | 133 | localStorage.setItem("loggedInUserDetails", JSON.stringify(loggedInUser)); |
134 | this.global.DisplayName = loggedInUser.FirstName + " " + loggedInUser.LastName; | 134 | this.global.DisplayName = loggedInUser.FirstName + " " + loggedInUser.LastName; |
135 | + this._loadingService.HideLoading("global-loading"); | ||
135 | this._confirmService.activate("User Profile Updated Successfully.", "alertMsg"); | 136 | this._confirmService.activate("User Profile Updated Successfully.", "alertMsg"); |
136 | 137 | ||
137 | } | 138 | } |
@@ -147,7 +148,8 @@ export class UpdateUserProfile implements OnInit { | @@ -147,7 +148,8 @@ export class UpdateUserProfile implements OnInit { | ||
147 | this.userFrm.controls['id'].setValue(this.user.Id) | 148 | this.userFrm.controls['id'].setValue(this.user.Id) |
148 | this.userFrm.controls['firstName'].setValue(this.user.FirstName) | 149 | this.userFrm.controls['firstName'].setValue(this.user.FirstName) |
149 | this.userFrm.controls['lastName'].setValue(this.user.LastName) | 150 | this.userFrm.controls['lastName'].setValue(this.user.LastName) |
150 | - this.userFrm.controls['emailId'].setValue(this.user.EmailId) | 151 | + this.userFrm.controls['emailId'].setValue(this.user.EmailId); |
152 | + this._loadingService.HideLoading("global-loading"); | ||
151 | } | 153 | } |
152 | 154 | ||
153 | validationMessages = { | 155 | validationMessages = { |
400-SOURCECODE/Admin/src/app/components/UserEntity/user.service.ts
@@ -54,6 +54,20 @@ export class UserService { | @@ -54,6 +54,20 @@ export class UserService { | ||
54 | } | 54 | } |
55 | //////////// End ///////////////////// | 55 | //////////// End ///////////////////// |
56 | 56 | ||
57 | + //////////Manage UserLogin Status/////////// | ||
58 | + ManageUserLoginStatus(obj: any) { | ||
59 | + var jsonData = { 'userId': obj.userId, 'tagName': obj.tagName,'isAlreadyLoggedIn': obj.isAlreadyLoggedIn }; | ||
60 | + console.log(obj); | ||
61 | + var headers = new Headers({ | ||
62 | + 'Content-Type': 'application/json' | ||
63 | + }); | ||
64 | + return this.http.post(this.commonService.resourceBaseUrl + "User/ManageUserLoginStatus", | ||
65 | + JSON.stringify(jsonData), { headers: headers }) | ||
66 | + .map(this.extractData) | ||
67 | + .catch((res: Response) => this.handleError(res)); | ||
68 | + } | ||
69 | + //////////// End ///////////////////// | ||
70 | + | ||
57 | 71 | ||
58 | 72 | ||
59 | //////////Update User Userid/////////////// | 73 | //////////Update User Userid/////////////// |
@@ -86,6 +100,7 @@ export class UserService { | @@ -86,6 +100,7 @@ export class UserService { | ||
86 | "&accountnumber=" + obj.AccountNumber + | 100 | "&accountnumber=" + obj.AccountNumber + |
87 | "&usertypeid=" + obj.UserTypeId + | 101 | "&usertypeid=" + obj.UserTypeId + |
88 | "&accounttypeid=" + obj.AccountTypeId + | 102 | "&accounttypeid=" + obj.AccountTypeId + |
103 | + "&userLoginStatus=" + obj.LoginStatus + | ||
89 | "&pageNo=" + pageNo + | 104 | "&pageNo=" + pageNo + |
90 | "&pageLength=" + pageLength + | 105 | "&pageLength=" + pageLength + |
91 | "&iLoginUserType=" + this.commonService.UserType + | 106 | "&iLoginUserType=" + this.commonService.UserType + |
400-SOURCECODE/Admin/src/app/components/UserEntity/users.component.html
@@ -28,7 +28,7 @@ | @@ -28,7 +28,7 @@ | ||
28 | <input type="text" class="form-control input-sm" id="LastNames" placeholder="Last Name" formControlName="LastName"> | 28 | <input type="text" class="form-control input-sm" id="LastNames" placeholder="Last Name" formControlName="LastName"> |
29 | </div> | 29 | </div> |
30 | </div> | 30 | </div> |
31 | - </div> | 31 | + </div> |
32 | </div> | 32 | </div> |
33 | </div> | 33 | </div> |
34 | <div class="col-lg-3 col-sm-3"> | 34 | <div class="col-lg-3 col-sm-3"> |
@@ -80,6 +80,15 @@ | @@ -80,6 +80,15 @@ | ||
80 | </div> | 80 | </div> |
81 | </div> | 81 | </div> |
82 | </div> | 82 | </div> |
83 | + | ||
84 | + <div class="col-sm-12"> | ||
85 | + <div class="form-group marginTop5"> | ||
86 | + <label for="LoginStatus" class="col-sm-12 col-lg-6 control-label text-right-lg paddTop7 padd-left0">Logged-In Status :</label> | ||
87 | + <div> | ||
88 | + <input type="checkbox" class="radio-inline" style="height: 25px;width: 20px" id="LoginStatus" formControlName="LoginStatus"> | ||
89 | + </div> | ||
90 | + </div> | ||
91 | + </div> | ||
83 | </div> | 92 | </div> |
84 | </div> | 93 | </div> |
85 | 94 | ||
@@ -119,6 +128,7 @@ | @@ -119,6 +128,7 @@ | ||
119 | <th>Account Number</th> | 128 | <th>Account Number</th> |
120 | <th>Product Edition</th> | 129 | <th>Product Edition</th> |
121 | <th>Status</th> | 130 | <th>Status</th> |
131 | + <th>Login Status</th> | ||
122 | </tr> | 132 | </tr> |
123 | </thead> | 133 | </thead> |
124 | 134 | ||
@@ -143,6 +153,10 @@ | @@ -143,6 +153,10 @@ | ||
143 | <span *ngIf="UserEntity.UserStatus=='Active'" class="label label-success">Active</span> | 153 | <span *ngIf="UserEntity.UserStatus=='Active'" class="label label-success">Active</span> |
144 | <span *ngIf="UserEntity.UserStatus!='Active'" class="label label-default">Inactive</span> | 154 | <span *ngIf="UserEntity.UserStatus!='Active'" class="label label-default">Inactive</span> |
145 | </td> | 155 | </td> |
156 | + <td> | ||
157 | + <span *ngIf="UserEntity.LoginStatus==true" class="label label-success">Logged-In (Active Session: {{UserEntity.TotalLogin}})</span> | ||
158 | + <span *ngIf="UserEntity.LoginStatus==false" class="label label-default">Logged-Out</span> | ||
159 | + </td> | ||
146 | </tr> | 160 | </tr> |
147 | 161 | ||
148 | 162 | ||
@@ -156,9 +170,11 @@ | @@ -156,9 +170,11 @@ | ||
156 | <div [style.display]="(global.UserTypeName=='Super Admin') ? 'block' : 'none'"> | 170 | <div [style.display]="(global.UserTypeName=='Super Admin') ? 'block' : 'none'"> |
157 | <button class="btn btn-primary btn-sm" (click)="EditManageUserRights()" [ngClass]="{disabled : !buttonStatus}"><i class="fa fa-thumbs-up"></i> Manage Rights</button> | 171 | <button class="btn btn-primary btn-sm" (click)="EditManageUserRights()" [ngClass]="{disabled : !buttonStatus}"><i class="fa fa-thumbs-up"></i> Manage Rights</button> |
158 | <button class="btn btn-primary btn-sm" (click)="EditUser()" [ngClass]="{disabled : !EditbuttonStatus}"><i class="fa fa-edit"></i> Edit</button> | 172 | <button class="btn btn-primary btn-sm" (click)="EditUser()" [ngClass]="{disabled : !EditbuttonStatus}"><i class="fa fa-edit"></i> Edit</button> |
173 | + <button class="btn btn-primary btn-sm" (click)="ForceLogoutUser()" [ngClass]="{disabled : !logoutUserSession}"><i class="fa fa-power-off"></i> Logout User</button> | ||
159 | </div> | 174 | </div> |
160 | <div [style.display]="(global.UserTypeName!='Super Admin') ? 'block' : 'none'"> | 175 | <div [style.display]="(global.UserTypeName!='Super Admin') ? 'block' : 'none'"> |
161 | <button class="btn btn-primary btn-sm" (click)="EditUser()" [ngClass]="{disabled : !EditbuttonStatus}"><i class="fa fa-edit"></i> Edit</button> | 176 | <button class="btn btn-primary btn-sm" (click)="EditUser()" [ngClass]="{disabled : !EditbuttonStatus}"><i class="fa fa-edit"></i> Edit</button> |
177 | + <button class="btn btn-primary btn-sm" (click)="ForceLogoutUser()" [ngClass]="{disabled : !logoutUserSession}"><i class="fa fa-power-off"></i> Logout User</button> | ||
162 | </div> | 178 | </div> |
163 | </div> | 179 | </div> |
164 | </div> | 180 | </div> |
400-SOURCECODE/Admin/src/app/components/UserEntity/users.component.ts
@@ -58,6 +58,7 @@ export class UsersList implements OnInit, AfterViewChecked { | @@ -58,6 +58,7 @@ export class UsersList implements OnInit, AfterViewChecked { | ||
58 | UncheckedRecords: Array<number>; | 58 | UncheckedRecords: Array<number>; |
59 | buttonStatus: boolean; | 59 | buttonStatus: boolean; |
60 | EditbuttonStatus: boolean; | 60 | EditbuttonStatus: boolean; |
61 | + logoutUserSession: boolean; | ||
61 | //@ViewChild("profileModal") | 62 | //@ViewChild("profileModal") |
62 | //profileModal: ModalComponent; | 63 | //profileModal: ModalComponent; |
63 | //errorMessage: any; | 64 | //errorMessage: any; |
@@ -81,7 +82,8 @@ export class UsersList implements OnInit, AfterViewChecked { | @@ -81,7 +82,8 @@ export class UsersList implements OnInit, AfterViewChecked { | ||
81 | EmailId: [''], | 82 | EmailId: [''], |
82 | AccountNumber: [''], | 83 | AccountNumber: [''], |
83 | UserTypeId: [0], | 84 | UserTypeId: [0], |
84 | - AccountTypeId:[0] | 85 | + AccountTypeId:[0], |
86 | + LoginStatus:[false] | ||
85 | // Gender: ['', Validators.required], | 87 | // Gender: ['', Validators.required], |
86 | // Email: [''] | 88 | // Email: [''] |
87 | 89 | ||
@@ -127,7 +129,6 @@ export class UsersList implements OnInit, AfterViewChecked { | @@ -127,7 +129,6 @@ export class UsersList implements OnInit, AfterViewChecked { | ||
127 | this._loadingService.ShowLoading("global-loading"); | 129 | this._loadingService.ShowLoading("global-loading"); |
128 | this.GetUserType(); | 130 | this.GetUserType(); |
129 | this.GetAccountType(); | 131 | this.GetAccountType(); |
130 | - this._loadingService.HideLoading("global-loading"); | ||
131 | this.recordCount = 0; | 132 | this.recordCount = 0; |
132 | this.pageNo = 1; | 133 | this.pageNo = 1; |
133 | this.pageLength = 10; | 134 | this.pageLength = 10; |
@@ -168,8 +169,6 @@ export class UsersList implements OnInit, AfterViewChecked { | @@ -168,8 +169,6 @@ export class UsersList implements OnInit, AfterViewChecked { | ||
168 | testScript.setAttribute("type", "text/javascript"); | 169 | testScript.setAttribute("type", "text/javascript"); |
169 | document.body.appendChild(testScript); | 170 | document.body.appendChild(testScript); |
170 | } | 171 | } |
171 | - | ||
172 | - this._loadingService.HideLoading("global-loading"); | ||
173 | 172 | ||
174 | //this.GetUserList(); | 173 | //this.GetUserList(); |
175 | } | 174 | } |
@@ -234,6 +233,14 @@ export class UsersList implements OnInit, AfterViewChecked { | @@ -234,6 +233,14 @@ export class UsersList implements OnInit, AfterViewChecked { | ||
234 | else { | 233 | else { |
235 | this.buttonStatus = null; | 234 | this.buttonStatus = null; |
236 | } | 235 | } |
236 | + if (item['LoginStatus'] == true) { | ||
237 | + this.logoutUserSession=true; | ||
238 | + } | ||
239 | + else{ | ||
240 | + this.logoutUserSession = null; | ||
241 | + } | ||
242 | + | ||
243 | + | ||
237 | } | 244 | } |
238 | public SetClickedRowManageRight(j: number, item: any) { | 245 | public SetClickedRowManageRight(j: number, item: any) { |
239 | 246 | ||
@@ -275,7 +282,6 @@ export class UsersList implements OnInit, AfterViewChecked { | @@ -275,7 +282,6 @@ export class UsersList implements OnInit, AfterViewChecked { | ||
275 | var tempArr = evt.split(','); | 282 | var tempArr = evt.split(','); |
276 | this.pageNo = parseInt(tempArr[0]); | 283 | this.pageNo = parseInt(tempArr[0]); |
277 | this.pageLength = parseInt(tempArr[1]); | 284 | this.pageLength = parseInt(tempArr[1]); |
278 | - this._loadingService.ShowLoading("global-loading"); | ||
279 | var UserFilterControl = this.Users.value; | 285 | var UserFilterControl = this.Users.value; |
280 | 286 | ||
281 | this.userservice.GetUserList( | 287 | this.userservice.GetUserList( |
@@ -285,13 +291,16 @@ export class UsersList implements OnInit, AfterViewChecked { | @@ -285,13 +291,16 @@ export class UsersList implements OnInit, AfterViewChecked { | ||
285 | EmailId: this.Users.controls['EmailId'].value, | 291 | EmailId: this.Users.controls['EmailId'].value, |
286 | AccountNumber: this.Users.controls['AccountNumber'].value, | 292 | AccountNumber: this.Users.controls['AccountNumber'].value, |
287 | UserTypeId: (this.Users.controls['UserTypeId'].value != null && this.Users.controls['UserTypeId'].value !='' ? this.Users.controls['UserTypeId'].value:0), | 293 | UserTypeId: (this.Users.controls['UserTypeId'].value != null && this.Users.controls['UserTypeId'].value !='' ? this.Users.controls['UserTypeId'].value:0), |
288 | - AccountTypeId: (this.Users.controls['AccountTypeId'].value != null && this.Users.controls['AccountTypeId'].value != ''? this.Users.controls['AccountTypeId'].value : 0), | 294 | + AccountTypeId: (this.Users.controls['AccountTypeId'].value != null && this.Users.controls['AccountTypeId'].value != ''? this.Users.controls['AccountTypeId'].value : 0), |
295 | + LoginStatus: this.Users.controls['LoginStatus'].value, | ||
289 | },this.pageNo, this.pageLength | 296 | },this.pageNo, this.pageLength |
290 | ) | 297 | ) |
291 | .subscribe(x => { this.BindFormFields(x) }, error => this.error = <any>error); | 298 | .subscribe(x => { this.BindFormFields(x) }, error => this.error = <any>error); |
292 | 299 | ||
293 | } | 300 | } |
294 | SearchRecords() { | 301 | SearchRecords() { |
302 | + this.EditbuttonStatus=undefined; | ||
303 | + this.logoutUserSession=undefined; | ||
295 | this.buttonStatus = null; | 304 | this.buttonStatus = null; |
296 | this.selectedRow = -1; | 305 | this.selectedRow = -1; |
297 | this.SearchUserList('1, ' + this.pageLength); | 306 | this.SearchUserList('1, ' + this.pageLength); |
@@ -309,12 +318,15 @@ export class UsersList implements OnInit, AfterViewChecked { | @@ -309,12 +318,15 @@ export class UsersList implements OnInit, AfterViewChecked { | ||
309 | } | 318 | } |
310 | } | 319 | } |
311 | CancelEditUser() { | 320 | CancelEditUser() { |
312 | - this.SearchUserList('1, ' + this.pageLength); | 321 | + this.SearchUserList(this.pageNo +','+ this.pageLength); |
313 | this.Mode = 'Manage'; | 322 | this.Mode = 'Manage'; |
314 | this.modalTitle = 'LIST USER'; | 323 | this.modalTitle = 'LIST USER'; |
315 | this.topPos = '2000px'; | 324 | this.topPos = '2000px'; |
316 | this.divClass = 'col-sm-12'; | 325 | this.divClass = 'col-sm-12'; |
317 | this.selectedRow = -1; | 326 | this.selectedRow = -1; |
327 | + this.EditbuttonStatus=undefined; | ||
328 | + this.buttonStatus=undefined; | ||
329 | + this.logoutUserSession=undefined; | ||
318 | } | 330 | } |
319 | EditUser() { | 331 | EditUser() { |
320 | if (this.EditbuttonStatus) { | 332 | if (this.EditbuttonStatus) { |
@@ -375,7 +387,24 @@ export class UsersList implements OnInit, AfterViewChecked { | @@ -375,7 +387,24 @@ export class UsersList implements OnInit, AfterViewChecked { | ||
375 | //this.managerightFrm.contains['UserId'].setValue(this.UserEntity.Id); | 387 | //this.managerightFrm.contains['UserId'].setValue(this.UserEntity.Id); |
376 | 388 | ||
377 | } | 389 | } |
378 | - | 390 | + ForceLogoutUser(){ |
391 | + if (this.logoutUserSession) { | ||
392 | + this._loadingService.ShowLoading("global-loading"); | ||
393 | + this.userservice.ManageUserLoginStatus({ | ||
394 | + userId: this.selectedId, | ||
395 | + tagName: 'logout', | ||
396 | + isAlreadyLoggedIn:true | ||
397 | + }).subscribe(x => { | ||
398 | + console.log(x); | ||
399 | + this.EditbuttonStatus=undefined; | ||
400 | + this.logoutUserSession=undefined; | ||
401 | + this.buttonStatus = null; | ||
402 | + this.selectedRow = -1; | ||
403 | + this.SearchUserList(this.pageNo +','+ this.pageLength); | ||
404 | + | ||
405 | + },error => console.log(error)); | ||
406 | + } | ||
407 | + } | ||
379 | 408 | ||
380 | public UpdateUser() { | 409 | public UpdateUser() { |
381 | this.alerts = ''; | 410 | this.alerts = ''; |
400-SOURCECODE/Admin/src/app/shared/global.ts
@@ -24,6 +24,9 @@ export class GlobalService { | @@ -24,6 +24,9 @@ export class GlobalService { | ||
24 | AccLicId: number = 0; | 24 | AccLicId: number = 0; |
25 | LoginId:string=""; | 25 | LoginId:string=""; |
26 | ProtocolType:string=""; | 26 | ProtocolType:string=""; |
27 | + aiaIdleTime:number=0; | ||
28 | + aiaIdleTimeOut:number=0; | ||
29 | + aiaPingInterval:number=0; | ||
27 | RemoveColumns: Array<string> = ["Serial_No", "LicenseId","RowNum"] | 30 | RemoveColumns: Array<string> = ["Serial_No", "LicenseId","RowNum"] |
28 | error; | 31 | error; |
29 | public href: string = ""; | 32 | public href: string = ""; |
@@ -35,11 +38,15 @@ export class GlobalService { | @@ -35,11 +38,15 @@ export class GlobalService { | ||
35 | this.UserTypeName = this.loggedInUser.UserType; | 38 | this.UserTypeName = this.loggedInUser.UserType; |
36 | this.DisplayName = this.loggedInUser.FirstName + " " + this.loggedInUser.LastName; | 39 | this.DisplayName = this.loggedInUser.FirstName + " " + this.loggedInUser.LastName; |
37 | this.LoginId=this.loggedInUser.LoginId; | 40 | this.LoginId=this.loggedInUser.LoginId; |
41 | + this.aiaIdleTime=this.loggedInUser.aiaIdleTime; | ||
42 | + this.aiaIdleTimeOut=this.loggedInUser.aiaIdleTimeOut; | ||
43 | + this.aiaPingInterval=this.loggedInUser.aiaPingInterval; | ||
44 | + | ||
38 | } | 45 | } |
39 | 46 | ||
40 | this.NoRecords = 'No Record Found.'; | 47 | this.NoRecords = 'No Record Found.'; |
41 | 48 | ||
42 | - this.hostURL = "http://192.168.81.63:92/API/Adminapi/";//Birendra Machine IP | 49 | + this.hostURL = "http://192.168.43.9/API/Adminapi/";//Birendra Machine IP |
43 | this.LiveAPIURL = "http://interactiveanatomy.com/API/Adminapi/"; | 50 | this.LiveAPIURL = "http://interactiveanatomy.com/API/Adminapi/"; |
44 | this.QAAPIURL = "http://qa.beta.interactiveanatomy.com/API/Adminapi/"; | 51 | this.QAAPIURL = "http://qa.beta.interactiveanatomy.com/API/Adminapi/"; |
45 | this.LocalURL = "http://localhost:4200"; | 52 | this.LocalURL = "http://localhost:4200"; |
@@ -49,6 +56,7 @@ export class GlobalService { | @@ -49,6 +56,7 @@ export class GlobalService { | ||
49 | 56 | ||
50 | if(window.location.hostname=="localhost") | 57 | if(window.location.hostname=="localhost") |
51 | { | 58 | { |
59 | + // for 'ng serve --open' command | ||
52 | //**** for localhost:4200 *****// | 60 | //**** for localhost:4200 *****// |
53 | this.resourceBaseUrl = this.hostURL; | 61 | this.resourceBaseUrl = this.hostURL; |
54 | } | 62 | } |
@@ -59,13 +67,14 @@ export class GlobalService { | @@ -59,13 +67,14 @@ export class GlobalService { | ||
59 | 67 | ||
60 | } | 68 | } |
61 | 69 | ||
62 | - if (this.resourceBaseUrl == this.ProtocolType+"192.168.81.63:92/API/Adminapi/") { | 70 | + if (this.resourceBaseUrl == this.ProtocolType+"192.168.43.9/API/Adminapi/") { |
63 | if(window.location.hostname=="localhost") | 71 | if(window.location.hostname=="localhost") |
64 | { | 72 | { |
73 | + // for 'ng serve --open' command | ||
65 | //**** for localhost:4200 *****// | 74 | //**** for localhost:4200 *****// |
66 | localStorage.setItem('loggedInUserDetails', JSON.stringify( | 75 | localStorage.setItem('loggedInUserDetails', JSON.stringify( |
67 | { | 76 | { |
68 | - "Id": 1, "FirstName": "Maribel", "LastName": "sfsfsfsfsfsfs", "EmailId": "ravi.vishwakarma@ebix.com", "LoginId": "superadmin", "Password": "ebix@2016", "SecurityQuestionId": 1, "SecurityAnswer": "boxer", "CreatorId": 1, "CreationDate": "2009-03-02T00:00:00", "DeactivationDate": null, "ModifierId": 1, "ModifiedDate": "2017-01-24T02:03:19", "UserType": "Super Admin", "UserTypeId": 1, "IsActive": true, "IsCorrectPassword": false, "IncorrectLoginAttemptCount": 0, "IsBlocked": false, "LicenseId": 0, "EditionId": 0, "LoginFailureCauseId": 0, "Modules": [{ "slug": "da-view-list", "name": "Dissectible Anatomy", "id": 1 }, { "slug": "tile-view-list", "name": "Atlas Anatomy", "id": 2 }, { "slug": "3d-anatomy-list", "name": "3D Anatomy", "id": 3 }, { "slug": "clinical-illustrations", "name": "Clinical Illustrations", "id": 4 }, { "slug": "clinical-animations", "name": "Clinical Animations", "id": 5 }, { "slug": "Link/encyclopedia", "name": "Encyclopedia", "id": 6 }, { "slug": "curriculum-builder", "name": "Curriculum Builder", "id": 7 }, { "slug": "anatomy-test", "name": "Anatomy Test", "id": 8 }, { "slug": "Link/IP-10", "name": "IP 10", "id": 9 }, { "slug": "lab-exercises", "name": "Lab Exercises", "id": 10 }, { "slug": "Link/indepth-reports", "name": "In-Depth Reports", "id": 11 }, { "slug": "Link/complementary-and-alternate-medicine", "name": "CAM", "id": 12 }, { "slug": "ADAM-images", "name": "A.D.A.M. Images", "id": 13 }, { "slug": "Link/bodyguide", "name": "Body Guide", "id": 14 }, { "slug": "Link/health-navigator", "name": "Symptom Navigator", "id": 15 }, { "slug": "Link/wellness-tools", "name": "The Wellness Tools", "id": 16 }, { "slug": "Link/aod", "name": "A.D.A.M. OnDemand", "id": 1017 }], "LicenseInfo": { "Id": 0, "AccountNumber": "AIAS000319" }, "LicenseSubscriptions": null, "IsSubscriptionExpired": false, "SubscriptionExpirationDate": null, "TermsAndConditionsTitle": null, "TermsAndConditionsText": null | 77 | + "Id": 1, "FirstName": "Maribel", "LastName": "sfsfsfsfsfsfs", "EmailId": "ravi.vishwakarma@ebix.com", "LoginId": "superadmin", "Password": "ebix@2016","aiaIdleTime": 300,"aiaIdleTimeOut": 30,"aiaPingInterval": 10, "SecurityQuestionId": 1, "SecurityAnswer": "boxer", "CreatorId": 1, "CreationDate": "2009-03-02T00:00:00", "DeactivationDate": null, "ModifierId": 1, "ModifiedDate": "2017-01-24T02:03:19", "UserType": "Super Admin", "UserTypeId": 1, "IsActive": true, "IsCorrectPassword": false, "IncorrectLoginAttemptCount": 0, "IsBlocked": false, "LicenseId": 0, "EditionId": 0, "LoginFailureCauseId": 0, "Modules": [{ "slug": "da-view-list", "name": "Dissectible Anatomy", "id": 1 }, { "slug": "tile-view-list", "name": "Atlas Anatomy", "id": 2 }, { "slug": "3d-anatomy-list", "name": "3D Anatomy", "id": 3 }, { "slug": "clinical-illustrations", "name": "Clinical Illustrations", "id": 4 }, { "slug": "clinical-animations", "name": "Clinical Animations", "id": 5 }, { "slug": "Link/encyclopedia", "name": "Encyclopedia", "id": 6 }, { "slug": "curriculum-builder", "name": "Curriculum Builder", "id": 7 }, { "slug": "anatomy-test", "name": "Anatomy Test", "id": 8 }, { "slug": "Link/IP-10", "name": "IP 10", "id": 9 }, { "slug": "lab-exercises", "name": "Lab Exercises", "id": 10 }, { "slug": "Link/indepth-reports", "name": "In-Depth Reports", "id": 11 }, { "slug": "Link/complementary-and-alternate-medicine", "name": "CAM", "id": 12 }, { "slug": "ADAM-images", "name": "A.D.A.M. Images", "id": 13 }, { "slug": "Link/bodyguide", "name": "Body Guide", "id": 14 }, { "slug": "Link/health-navigator", "name": "Symptom Navigator", "id": 15 }, { "slug": "Link/wellness-tools", "name": "The Wellness Tools", "id": 16 }, { "slug": "Link/aod", "name": "A.D.A.M. OnDemand", "id": 1017 }], "LicenseInfo": { "Id": 0, "AccountNumber": "AIAS000319" }, "LicenseSubscriptions": null, "IsSubscriptionExpired": false, "SubscriptionExpirationDate": null, "TermsAndConditionsTitle": null, "TermsAndConditionsText": null |
69 | })); | 78 | })); |
70 | } | 79 | } |
71 | 80 |
400-SOURCECODE/Admin/src/assets/styles/bootstrap.css
@@ -1325,13 +1325,13 @@ pre code { | @@ -1325,13 +1325,13 @@ pre code { | ||
1325 | width: 50%; | 1325 | width: 50%; |
1326 | } | 1326 | } |
1327 | .col-lg-5 { | 1327 | .col-lg-5 { |
1328 | - width: 41.66666667%; | 1328 | + width: 50.66666667%; |
1329 | } | 1329 | } |
1330 | .col-lg-4 { | 1330 | .col-lg-4 { |
1331 | width: 33.33333333%; | 1331 | width: 33.33333333%; |
1332 | } | 1332 | } |
1333 | .col-lg-3 { | 1333 | .col-lg-3 { |
1334 | - width: 25%; | 1334 | + width: 27%; |
1335 | } | 1335 | } |
1336 | .col-lg-2 { | 1336 | .col-lg-2 { |
1337 | width: 16.66666667%; | 1337 | width: 16.66666667%; |