Commit 53b7f1aa4118e790e1b81617ccb319747be0a74f

Authored by Birendra
1 parent 8316d5ef

aod course list allowed by license

Showing 40 changed files with 1307 additions and 161 deletions
400-SOURCECODE/AIAHTML5.ADMIN.API/AIAHTML5.ADMIN.API.csproj
@@ -21,6 +21,7 @@ @@ -21,6 +21,7 @@
21 <IISExpressWindowsAuthentication /> 21 <IISExpressWindowsAuthentication />
22 <IISExpressUseClassicPipelineMode /> 22 <IISExpressUseClassicPipelineMode />
23 <WebGreaseLibPath>..\packages\WebGrease.1.5.2\lib</WebGreaseLibPath> 23 <WebGreaseLibPath>..\packages\WebGrease.1.5.2\lib</WebGreaseLibPath>
  24 + <UseGlobalApplicationHostFile />
24 </PropertyGroup> 25 </PropertyGroup>
25 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 26 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
26 <DebugSymbols>true</DebugSymbols> 27 <DebugSymbols>true</DebugSymbols>
@@ -320,6 +321,9 @@ @@ -320,6 +321,9 @@
320 <Compile Include="Entity\GetCancelledLicenses_Result.cs"> 321 <Compile Include="Entity\GetCancelledLicenses_Result.cs">
321 <DependentUpon>AIADBEntity.tt</DependentUpon> 322 <DependentUpon>AIADBEntity.tt</DependentUpon>
322 </Compile> 323 </Compile>
  324 + <Compile Include="Entity\GetCoursesToLicense_Result.cs">
  325 + <DependentUpon>AIADBEntity.tt</DependentUpon>
  326 + </Compile>
323 <Compile Include="Entity\GetCustomerSummary_Result.cs"> 327 <Compile Include="Entity\GetCustomerSummary_Result.cs">
324 <DependentUpon>AIADBEntity.tt</DependentUpon> 328 <DependentUpon>AIADBEntity.tt</DependentUpon>
325 </Compile> 329 </Compile>
@@ -729,7 +733,7 @@ @@ -729,7 +733,7 @@
729 <VisualStudio> 733 <VisualStudio>
730 <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}"> 734 <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
731 <WebProjectProperties> 735 <WebProjectProperties>
732 - <UseIIS>True</UseIIS> 736 + <UseIIS>False</UseIIS>
733 <AutoAssignPort>True</AutoAssignPort> 737 <AutoAssignPort>True</AutoAssignPort>
734 <DevelopmentServerPort>65397</DevelopmentServerPort> 738 <DevelopmentServerPort>65397</DevelopmentServerPort>
735 <DevelopmentServerVPath>/</DevelopmentServerVPath> 739 <DevelopmentServerVPath>/</DevelopmentServerVPath>
400-SOURCECODE/AIAHTML5.ADMIN.API/Controllers/LicenseController.cs
@@ -365,9 +365,11 @@ namespace AIAHTML5.ADMIN.API.Controllers @@ -365,9 +365,11 @@ namespace AIAHTML5.ADMIN.API.Controllers
365 public HttpResponseMessage UpdateLicenseModulesStatus(JObject jsonData) 365 public HttpResponseMessage UpdateLicenseModulesStatus(JObject jsonData)
366 { 366 {
367 bool Status = false; 367 bool Status = false;
368 - Tuple<int, string> LicenseModuleStatus = new Tuple<int, string>( 368 + Tuple<int, string,bool, string> LicenseModuleStatus = new Tuple<int, string,bool, string>(
369 jsonData["licenseId"].Value<int>(), 369 jsonData["licenseId"].Value<int>(),
370 - jsonData["moduleStatusText"].Value<string>()); 370 + jsonData["moduleStatusText"].Value<string>(),
  371 + jsonData["isAodOn"].Value<bool>(),
  372 + jsonData["CourseListText"].Value<string>());
371 try 373 try
372 { 374 {
373 Status = LicenseModel.UpdateLicenseModulesStatus(dbContext, LicenseModuleStatus); 375 Status = LicenseModel.UpdateLicenseModulesStatus(dbContext, LicenseModuleStatus);
@@ -387,6 +389,23 @@ namespace AIAHTML5.ADMIN.API.Controllers @@ -387,6 +389,23 @@ namespace AIAHTML5.ADMIN.API.Controllers
387 } 389 }
388 } 390 }
389 391
  392 + [Route("GetLicenseAodCourse")]
  393 + [HttpGet]
  394 + public HttpResponseMessage GetLicenseAodCourse(int LicenseId)
  395 + {
  396 + List<GetCoursesToLicense_Result> courseList;
  397 + try
  398 + {
  399 + courseList = LicenseModel.GetLicenseAodCourse(dbContext, LicenseId);
  400 + return Request.CreateResponse(HttpStatusCode.OK, courseList);
  401 + }
  402 + catch (Exception ex)
  403 + {
  404 + // Log exception code goes here
  405 + return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message);
  406 + }
  407 + }
  408 +
390 409
391 [Route("CheckAccountNumber")] 410 [Route("CheckAccountNumber")]
392 [HttpGet] 411 [HttpGet]
@@ -423,4 +442,5 @@ namespace AIAHTML5.ADMIN.API.Controllers @@ -423,4 +442,5 @@ namespace AIAHTML5.ADMIN.API.Controllers
423 } 442 }
424 443
425 } 444 }
  445 +
426 } 446 }
400-SOURCECODE/AIAHTML5.ADMIN.API/Controllers/UserController.cs
@@ -121,9 +121,10 @@ namespace AIAHTML5.ADMIN.API.Controllers @@ -121,9 +121,10 @@ namespace AIAHTML5.ADMIN.API.Controllers
121 string tagName = jsonData["tagName"].Value<string>(); 121 string tagName = jsonData["tagName"].Value<string>();
122 long SessionId = jsonData["SessionId"].Value<long>(); 122 long SessionId = jsonData["SessionId"].Value<long>();
123 bool isSiteUser = jsonData["isSiteUser"].Value<bool>(); 123 bool isSiteUser = jsonData["isSiteUser"].Value<bool>();
  124 + bool isAdmin = jsonData["isAdmin"].Value<bool>();
124 try 125 try
125 { 126 {
126 - Status = UserModel.ManageUserLoginStatus(dbContext, userId, tagName, SessionId, isSiteUser); 127 + Status = UserModel.ManageUserLoginStatus(dbContext, userId, tagName, SessionId, isSiteUser, isAdmin);
127 128
128 return Request.CreateResponse(HttpStatusCode.OK, Status.ToString()); 129 return Request.CreateResponse(HttpStatusCode.OK, Status.ToString());
129 } 130 }
400-SOURCECODE/AIAHTML5.ADMIN.API/Entity/AIADBEntity.Context.cs
@@ -3553,7 +3553,7 @@ namespace AIAHTML5.ADMIN.API.Entity @@ -3553,7 +3553,7 @@ namespace AIAHTML5.ADMIN.API.Entity
3553 return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("usp_UpdateLicenseModestySettings", licenseEditionIdParameter, siteIdParameter, isModestyParameter, isSiteUserParameter, status); 3553 return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("usp_UpdateLicenseModestySettings", licenseEditionIdParameter, siteIdParameter, isModestyParameter, isSiteUserParameter, status);
3554 } 3554 }
3555 3555
3556 - public virtual int usp_UpdateLicenseModuleStatus(Nullable<int> licenseId, string moduleStatusText, ObjectParameter status) 3556 + public virtual int usp_UpdateLicenseModuleStatus(Nullable<int> licenseId, string moduleStatusText, Nullable<bool> isAodOn, string courseListText, ObjectParameter status)
3557 { 3557 {
3558 var licenseIdParameter = licenseId.HasValue ? 3558 var licenseIdParameter = licenseId.HasValue ?
3559 new ObjectParameter("LicenseId", licenseId) : 3559 new ObjectParameter("LicenseId", licenseId) :
@@ -3563,7 +3563,15 @@ namespace AIAHTML5.ADMIN.API.Entity @@ -3563,7 +3563,15 @@ namespace AIAHTML5.ADMIN.API.Entity
3563 new ObjectParameter("ModuleStatusText", moduleStatusText) : 3563 new ObjectParameter("ModuleStatusText", moduleStatusText) :
3564 new ObjectParameter("ModuleStatusText", typeof(string)); 3564 new ObjectParameter("ModuleStatusText", typeof(string));
3565 3565
3566 - return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("usp_UpdateLicenseModuleStatus", licenseIdParameter, moduleStatusTextParameter, status); 3566 + var isAodOnParameter = isAodOn.HasValue ?
  3567 + new ObjectParameter("isAodOn", isAodOn) :
  3568 + new ObjectParameter("isAodOn", typeof(bool));
  3569 +
  3570 + var courseListTextParameter = courseListText != null ?
  3571 + new ObjectParameter("CourseListText", courseListText) :
  3572 + new ObjectParameter("CourseListText", typeof(string));
  3573 +
  3574 + return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("usp_UpdateLicenseModuleStatus", licenseIdParameter, moduleStatusTextParameter, isAodOnParameter, courseListTextParameter, status);
3567 } 3575 }
3568 3576
3569 public virtual int usp_UpdateLicenseUserGroupUsers(Nullable<int> userGroupId, string userIds, ObjectParameter status) 3577 public virtual int usp_UpdateLicenseUserGroupUsers(Nullable<int> userGroupId, string userIds, ObjectParameter status)
@@ -5003,7 +5011,7 @@ namespace AIAHTML5.ADMIN.API.Entity @@ -5003,7 +5011,7 @@ namespace AIAHTML5.ADMIN.API.Entity
5003 return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("usp_InsertAIAUser", sLoginIdParameter, sPasswordParameter, sFirstnameParameter, sLastnameParameter, iUserTypeIdParameter, sEmailIdParameter, iSecurityQuesIdParameter, sSecurityAnswerParameter, iCreatorIdParameter, iLicenseIdParameter, iEditionIdParameter, status); 5011 return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("usp_InsertAIAUser", sLoginIdParameter, sPasswordParameter, sFirstnameParameter, sLastnameParameter, iUserTypeIdParameter, sEmailIdParameter, iSecurityQuesIdParameter, sSecurityAnswerParameter, iCreatorIdParameter, iLicenseIdParameter, iEditionIdParameter, status);
5004 } 5012 }
5005 5013
5006 - public virtual ObjectResult<Nullable<bool>> usp_ManageUserLoginStatus(Nullable<int> userId, string tag, Nullable<long> sessionId, Nullable<bool> isSiteUser) 5014 + public virtual ObjectResult<Nullable<bool>> usp_ManageUserLoginStatus(Nullable<int> userId, string tag, Nullable<long> sessionId, Nullable<bool> isSiteUser, Nullable<bool> isAdmin)
5007 { 5015 {
5008 var userIdParameter = userId.HasValue ? 5016 var userIdParameter = userId.HasValue ?
5009 new ObjectParameter("userId", userId) : 5017 new ObjectParameter("userId", userId) :
@@ -5021,7 +5029,20 @@ namespace AIAHTML5.ADMIN.API.Entity @@ -5021,7 +5029,20 @@ namespace AIAHTML5.ADMIN.API.Entity
5021 new ObjectParameter("isSiteUser", isSiteUser) : 5029 new ObjectParameter("isSiteUser", isSiteUser) :
5022 new ObjectParameter("isSiteUser", typeof(bool)); 5030 new ObjectParameter("isSiteUser", typeof(bool));
5023 5031
5024 - return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Nullable<bool>>("usp_ManageUserLoginStatus", userIdParameter, tagParameter, sessionIdParameter, isSiteUserParameter); 5032 + var isAdminParameter = isAdmin.HasValue ?
  5033 + new ObjectParameter("isAdmin", isAdmin) :
  5034 + new ObjectParameter("isAdmin", typeof(bool));
  5035 +
  5036 + return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Nullable<bool>>("usp_ManageUserLoginStatus", userIdParameter, tagParameter, sessionIdParameter, isSiteUserParameter, isAdminParameter);
  5037 + }
  5038 +
  5039 + public virtual ObjectResult<GetCoursesToLicense_Result> GetCoursesToLicense(Nullable<int> licenseId)
  5040 + {
  5041 + var licenseIdParameter = licenseId.HasValue ?
  5042 + new ObjectParameter("licenseId", licenseId) :
  5043 + new ObjectParameter("licenseId", typeof(int));
  5044 +
  5045 + return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<GetCoursesToLicense_Result>("GetCoursesToLicense", licenseIdParameter);
5025 } 5046 }
5026 } 5047 }
5027 } 5048 }
400-SOURCECODE/AIAHTML5.ADMIN.API/Entity/AIADBEntity.edmx
@@ -339,6 +339,9 @@ @@ -339,6 +339,9 @@
339 <Function Name="GetContentList" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo"> 339 <Function Name="GetContentList" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
340 <Parameter Name="iContentTypeId" Type="int" Mode="In" /> 340 <Parameter Name="iContentTypeId" Type="int" Mode="In" />
341 </Function> 341 </Function>
  342 + <Function Name="GetCoursesToLicense" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
  343 + <Parameter Name="licenseId" Type="int" Mode="In" />
  344 + </Function>
342 <Function Name="GetCustomerSummary" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo"> 345 <Function Name="GetCustomerSummary" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
343 <Parameter Name="sAccoutNumber" Type="varchar" Mode="In" /> 346 <Parameter Name="sAccoutNumber" Type="varchar" Mode="In" />
344 <Parameter Name="sLicenseeFullName" Type="varchar" Mode="In" /> 347 <Parameter Name="sLicenseeFullName" Type="varchar" Mode="In" />
@@ -1413,6 +1416,7 @@ @@ -1413,6 +1416,7 @@
1413 <Parameter Name="tag" Type="varchar" Mode="In" /> 1416 <Parameter Name="tag" Type="varchar" Mode="In" />
1414 <Parameter Name="sessionId" Type="bigint" Mode="In" /> 1417 <Parameter Name="sessionId" Type="bigint" Mode="In" />
1415 <Parameter Name="isSiteUser" Type="bit" Mode="In" /> 1418 <Parameter Name="isSiteUser" Type="bit" Mode="In" />
  1419 + <Parameter Name="isAdmin" Type="bit" Mode="In" />
1416 </Function> 1420 </Function>
1417 <Function Name="usp_SaveLabExerciseAttempts" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo"> 1421 <Function Name="usp_SaveLabExerciseAttempts" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
1418 <Parameter Name="UserId" Type="int" Mode="In" /> 1422 <Parameter Name="UserId" Type="int" Mode="In" />
@@ -1503,6 +1507,8 @@ @@ -1503,6 +1507,8 @@
1503 <Function Name="usp_UpdateLicenseModuleStatus" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo"> 1507 <Function Name="usp_UpdateLicenseModuleStatus" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
1504 <Parameter Name="LicenseId" Type="int" Mode="In" /> 1508 <Parameter Name="LicenseId" Type="int" Mode="In" />
1505 <Parameter Name="ModuleStatusText" Type="varchar" Mode="In" /> 1509 <Parameter Name="ModuleStatusText" Type="varchar" Mode="In" />
  1510 + <Parameter Name="isAodOn" Type="bit" Mode="In" />
  1511 + <Parameter Name="CourseListText" Type="varchar" Mode="In" />
1506 <Parameter Name="Status" Type="bit" Mode="InOut" /> 1512 <Parameter Name="Status" Type="bit" Mode="InOut" />
1507 </Function> 1513 </Function>
1508 <Function Name="usp_UpdateLicenseUserGroupUsers" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo"> 1514 <Function Name="usp_UpdateLicenseUserGroupUsers" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
@@ -1912,7 +1918,7 @@ @@ -1912,7 +1918,7 @@
1912 <Parameter Name="iEditionId" Mode="In" Type="Byte" /> 1918 <Parameter Name="iEditionId" Mode="In" Type="Byte" />
1913 </FunctionImport> 1919 </FunctionImport>
1914 <FunctionImport Name="GetLicenseBySiteId" ReturnType="Collection(AIADatabaseV5Model.GetLicenseBySiteId_Result)"> 1920 <FunctionImport Name="GetLicenseBySiteId" ReturnType="Collection(AIADatabaseV5Model.GetLicenseBySiteId_Result)">
1915 - <Parameter Name="sSiteId" Mode="In" Type="Int32" /> 1921 + <Parameter Name="sSiteId" Mode="In" Type="Int32" />
1916 <Parameter Name="sEditionId" Mode="In" Type="Int32" /> 1922 <Parameter Name="sEditionId" Mode="In" Type="Int32" />
1917 </FunctionImport> 1923 </FunctionImport>
1918 <FunctionImport Name="GetLicenseDetailByUserId" ReturnType="Collection(AIADatabaseV5Model.GetLicenseDetailByUserId_Result)"> 1924 <FunctionImport Name="GetLicenseDetailByUserId" ReturnType="Collection(AIADatabaseV5Model.GetLicenseDetailByUserId_Result)">
@@ -2582,6 +2588,8 @@ @@ -2582,6 +2588,8 @@
2582 <FunctionImport Name="usp_UpdateLicenseModuleStatus"> 2588 <FunctionImport Name="usp_UpdateLicenseModuleStatus">
2583 <Parameter Name="LicenseId" Mode="In" Type="Int32" /> 2589 <Parameter Name="LicenseId" Mode="In" Type="Int32" />
2584 <Parameter Name="ModuleStatusText" Mode="In" Type="String" /> 2590 <Parameter Name="ModuleStatusText" Mode="In" Type="String" />
  2591 + <Parameter Name="isAodOn" Mode="In" Type="Boolean" />
  2592 + <Parameter Name="CourseListText" Mode="In" Type="String" />
2585 <Parameter Name="Status" Mode="InOut" Type="Boolean" /> 2593 <Parameter Name="Status" Mode="InOut" Type="Boolean" />
2586 </FunctionImport> 2594 </FunctionImport>
2587 <FunctionImport Name="usp_UpdateLicenseUserGroupUsers"> 2595 <FunctionImport Name="usp_UpdateLicenseUserGroupUsers">
@@ -3013,6 +3021,10 @@ @@ -3013,6 +3021,10 @@
3013 <Parameter Name="tag" Mode="In" Type="String" /> 3021 <Parameter Name="tag" Mode="In" Type="String" />
3014 <Parameter Name="sessionId" Mode="In" Type="Int64" /> 3022 <Parameter Name="sessionId" Mode="In" Type="Int64" />
3015 <Parameter Name="isSiteUser" Mode="In" Type="Boolean" /> 3023 <Parameter Name="isSiteUser" Mode="In" Type="Boolean" />
  3024 + <Parameter Name="isAdmin" Mode="In" Type="Boolean" />
  3025 + </FunctionImport>
  3026 + <FunctionImport Name="GetCoursesToLicense" ReturnType="Collection(AIADatabaseV5Model.GetCoursesToLicense_Result)">
  3027 + <Parameter Name="licenseId" Mode="In" Type="Int32" />
3016 </FunctionImport> 3028 </FunctionImport>
3017 </EntityContainer> 3029 </EntityContainer>
3018 <ComplexType Name="DA_GetBaseLayer_Result"> 3030 <ComplexType Name="DA_GetBaseLayer_Result">
@@ -4343,6 +4355,11 @@ @@ -4343,6 +4355,11 @@
4343 <Property Type="Byte" Name="Id" Nullable="true" /> 4355 <Property Type="Byte" Name="Id" Nullable="true" />
4344 <Property Type="String" Name="Title" Nullable="true" MaxLength="50" /> 4356 <Property Type="String" Name="Title" Nullable="true" MaxLength="50" />
4345 </ComplexType> 4357 </ComplexType>
  4358 + <ComplexType Name="GetCoursesToLicense_Result">
  4359 + <Property Type="String" Name="CourseId" Nullable="false" MaxLength="20" />
  4360 + <Property Type="String" Name="CourseName" Nullable="false" MaxLength="150" />
  4361 + <Property Type="Boolean" Name="Status" Nullable="false" />
  4362 + </ComplexType>
4346 </Schema> 4363 </Schema>
4347 </edmx:ConceptualModels> 4364 </edmx:ConceptualModels>
4348 <!-- C-S mapping content --> 4365 <!-- C-S mapping content -->
@@ -6328,6 +6345,15 @@ @@ -6328,6 +6345,15 @@
6328 <FunctionImportMapping FunctionImportName="usp_UpdateUserProfile" FunctionName="AIADatabaseV5Model.Store.usp_UpdateUserProfile" /> 6345 <FunctionImportMapping FunctionImportName="usp_UpdateUserProfile" FunctionName="AIADatabaseV5Model.Store.usp_UpdateUserProfile" />
6329 <FunctionImportMapping FunctionImportName="usp_InsertAIAUser" FunctionName="AIADatabaseV5Model.Store.usp_InsertAIAUser" /> 6346 <FunctionImportMapping FunctionImportName="usp_InsertAIAUser" FunctionName="AIADatabaseV5Model.Store.usp_InsertAIAUser" />
6330 <FunctionImportMapping FunctionImportName="usp_ManageUserLoginStatus" FunctionName="AIADatabaseV5Model.Store.usp_ManageUserLoginStatus" /> 6347 <FunctionImportMapping FunctionImportName="usp_ManageUserLoginStatus" FunctionName="AIADatabaseV5Model.Store.usp_ManageUserLoginStatus" />
  6348 + <FunctionImportMapping FunctionImportName="GetCoursesToLicense" FunctionName="AIADatabaseV5Model.Store.GetCoursesToLicense">
  6349 + <ResultMapping>
  6350 + <ComplexTypeMapping TypeName="AIADatabaseV5Model.GetCoursesToLicense_Result">
  6351 + <ScalarProperty Name="CourseId" ColumnName="CourseId" />
  6352 + <ScalarProperty Name="CourseName" ColumnName="CourseName" />
  6353 + <ScalarProperty Name="Status" ColumnName="Status" />
  6354 + </ComplexTypeMapping>
  6355 + </ResultMapping>
  6356 + </FunctionImportMapping>
6331 </EntityContainerMapping> 6357 </EntityContainerMapping>
6332 </Mapping> 6358 </Mapping>
6333 </edmx:Mappings> 6359 </edmx:Mappings>
400-SOURCECODE/AIAHTML5.ADMIN.API/Entity/GetCoursesToLicense_Result.cs 0 โ†’ 100644
  1 +//------------------------------------------------------------------------------
  2 +// <auto-generated>
  3 +// This code was generated from a template.
  4 +//
  5 +// Manual changes to this file may cause unexpected behavior in your application.
  6 +// Manual changes to this file will be overwritten if the code is regenerated.
  7 +// </auto-generated>
  8 +//------------------------------------------------------------------------------
  9 +
  10 +namespace AIAHTML5.ADMIN.API.Entity
  11 +{
  12 + using System;
  13 +
  14 + public partial class GetCoursesToLicense_Result
  15 + {
  16 + public string CourseId { get; set; }
  17 + public string CourseName { get; set; }
  18 + public bool Status { get; set; }
  19 + }
  20 +}
400-SOURCECODE/AIAHTML5.ADMIN.API/Models/LicenseModel.cs
@@ -433,12 +433,12 @@ namespace AIAHTML5.ADMIN.API.Models @@ -433,12 +433,12 @@ namespace AIAHTML5.ADMIN.API.Models
433 return LicenseModulesStatusList; 433 return LicenseModulesStatusList;
434 } 434 }
435 435
436 - public static bool UpdateLicenseModulesStatus(AIADatabaseV5Entities dbContext, Tuple<int, string> LicenseModuleStatus) 436 + public static bool UpdateLicenseModulesStatus(AIADatabaseV5Entities dbContext, Tuple<int, string,bool,string> LicenseModuleStatus)
437 { 437 {
438 var spStatus = new System.Data.Objects.ObjectParameter("Status", 0); 438 var spStatus = new System.Data.Objects.ObjectParameter("Status", 0);
439 try 439 try
440 { 440 {
441 - dbContext.usp_UpdateLicenseModuleStatus(LicenseModuleStatus.Item1, LicenseModuleStatus.Item2, spStatus); 441 + dbContext.usp_UpdateLicenseModuleStatus(LicenseModuleStatus.Item1, LicenseModuleStatus.Item2, LicenseModuleStatus.Item3, LicenseModuleStatus.Item4, spStatus);
442 return (bool)spStatus.Value; 442 return (bool)spStatus.Value;
443 } 443 }
444 catch (Exception ex) 444 catch (Exception ex)
@@ -447,6 +447,17 @@ namespace AIAHTML5.ADMIN.API.Models @@ -447,6 +447,17 @@ namespace AIAHTML5.ADMIN.API.Models
447 } 447 }
448 } 448 }
449 449
  450 + public static List<GetCoursesToLicense_Result> GetLicenseAodCourse(AIADatabaseV5Entities dbContext, int LicenseId)
  451 + {
  452 + List<GetCoursesToLicense_Result> result = new List<GetCoursesToLicense_Result>();
  453 + try
  454 + {
  455 + result = dbContext.GetCoursesToLicense(LicenseId).ToList();
  456 + }
  457 + catch (Exception ex) { }
  458 + return result;
  459 + }
  460 +
450 public static bool CheckAccountNumber(AIADatabaseV5Entities dbContext, string AccountNo) 461 public static bool CheckAccountNumber(AIADatabaseV5Entities dbContext, string AccountNo)
451 { 462 {
452 var spStatus = new System.Data.Objects.ObjectParameter("Status", 0); 463 var spStatus = new System.Data.Objects.ObjectParameter("Status", 0);
400-SOURCECODE/AIAHTML5.ADMIN.API/Models/UserModel.cs
@@ -65,12 +65,12 @@ namespace AIAHTML5.ADMIN.API.Models @@ -65,12 +65,12 @@ 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, long SessionId, bool isSiteUser) 68 + public static bool ManageUserLoginStatus(AIADatabaseV5Entities dbContext, int userId, string tagName, long SessionId, bool isSiteUser,bool isAdmin)
69 { 69 {
70 bool loginStatus = false; 70 bool loginStatus = false;
71 try 71 try
72 { 72 {
73 - loginStatus = Convert.ToBoolean(dbContext.usp_ManageUserLoginStatus(userId, tagName, SessionId, isSiteUser).FirstOrDefault()); 73 + loginStatus = Convert.ToBoolean(dbContext.usp_ManageUserLoginStatus(userId, tagName, SessionId, isSiteUser, isAdmin).FirstOrDefault());
74 74
75 return loginStatus; 75 return loginStatus;
76 } 76 }
400-SOURCECODE/AIAHTML5.API/Constants/AIAConstants.cs
@@ -46,6 +46,7 @@ namespace AIAHTML5.API.Constants @@ -46,6 +46,7 @@ namespace AIAHTML5.API.Constants
46 public const string LAB_EXERCISE_SAVE_SUCCESS = "Your lab exercise attempt is saved."; 46 public const string LAB_EXERCISE_SAVE_SUCCESS = "Your lab exercise attempt is saved.";
47 public const string LAB_EXERCISE_SAVE_FAILURE = "We are unable to save your lab exercise attempt, please try again."; 47 public const string LAB_EXERCISE_SAVE_FAILURE = "We are unable to save your lab exercise attempt, please try again.";
48 public const string SAVED_LAB_EXERCISE_NOT_FOUND = "Saved Lab Exercise not found."; 48 public const string SAVED_LAB_EXERCISE_NOT_FOUND = "Saved Lab Exercise not found.";
  49 + public const string NO_COURSE_FOUND = "NO COURSE FOUND";
49 public const string VALIDATED_CLIENT = "Valid Client."; 50 public const string VALIDATED_CLIENT = "Valid Client.";
50 public const string INVALID_CLIENT = "InValid Client."; 51 public const string INVALID_CLIENT = "InValid Client.";
51 public const string MSG_NOT_AUTHORIZE_SITE_USER = "User is not authorized."; 52 public const string MSG_NOT_AUTHORIZE_SITE_USER = "User is not authorized.";
400-SOURCECODE/AIAHTML5.API/Constants/DBConstants.cs
@@ -44,5 +44,6 @@ namespace AIAHTML5.API.Constants @@ -44,5 +44,6 @@ namespace AIAHTML5.API.Constants
44 public const string GET_USER_LOGIN_STATUS = "usp_ManageUserLoginStatus"; 44 public const string GET_USER_LOGIN_STATUS = "usp_ManageUserLoginStatus";
45 public const string GET_AOD_AUTHENTICATION_STATUS = "usp_AodAuthenticationStatus"; 45 public const string GET_AOD_AUTHENTICATION_STATUS = "usp_AodAuthenticationStatus";
46 public const string INSERT_SITE_LOGIN_LOG = "usp_InsertSiteLoginLog"; 46 public const string INSERT_SITE_LOGIN_LOG = "usp_InsertSiteLoginLog";
  47 + public const string GET_AOD_COURSE_ITEMS = "GetSelectedCoursesToLicense";
47 } 48 }
48 } 49 }
49 \ No newline at end of file 50 \ No newline at end of file
400-SOURCECODE/AIAHTML5.API/Controllers/AuthenticateController.cs
@@ -535,8 +535,9 @@ namespace AIAHTML5.API.Controllers @@ -535,8 +535,9 @@ namespace AIAHTML5.API.Controllers
535 string tagName = jsonData["tagName"].Value<string>(); 535 string tagName = jsonData["tagName"].Value<string>();
536 long SessionId = jsonData["SessionId"].Value<long>(); 536 long SessionId = jsonData["SessionId"].Value<long>();
537 bool isSiteUser = jsonData["isSiteUser"].Value<bool>(); 537 bool isSiteUser = jsonData["isSiteUser"].Value<bool>();
  538 + bool isAdmin = jsonData["isAdmin"].Value<bool>();
538 539
539 - loginStatus = AIAHTML5.API.Models.Users.GetUserLoginStatus(userId, tagName, SessionId, isSiteUser); 540 + loginStatus = AIAHTML5.API.Models.Users.GetUserLoginStatus(userId, tagName, SessionId, isSiteUser, isAdmin);
540 541
541 return new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(loginStatus) }; 542 return new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(loginStatus) };
542 } 543 }
@@ -591,6 +592,28 @@ namespace AIAHTML5.API.Controllers @@ -591,6 +592,28 @@ namespace AIAHTML5.API.Controllers
591 } 592 }
592 } 593 }
593 594
  595 + [HttpGet]
  596 + [Route("api/GetAodCoursesList")]
  597 + public HttpResponseMessage GetAodCoursesList([FromUri] int LicenseId)
  598 + {
  599 + try
  600 + {
  601 + DBModel db = new DBModel();
  602 + List<AodCourse> courselist = db.GetSelectedCourseList(LicenseId);
  603 +
  604 + if (courselist.Count>0)
  605 + return new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(JsonConvert.SerializeObject(courselist)) };
  606 + else
  607 + return new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(AIAConstants.NO_COURSE_FOUND) };
  608 +
  609 + }
  610 + catch (Exception e)
  611 + {
  612 + return new HttpResponseMessage { StatusCode = HttpStatusCode.InternalServerError, Content = new StringContent(AIAConstants.ERROR_IN_FECTHING_DETAILS) };
  613 +
  614 + }
  615 +
  616 + }
594 // PUT api/authenticate/5 617 // PUT api/authenticate/5
595 public void Put(int id, [FromBody]string value) 618 public void Put(int id, [FromBody]string value)
596 { 619 {
400-SOURCECODE/AIAHTML5.API/Models/DBModel.cs
@@ -350,7 +350,7 @@ namespace AIAHTML5.API.Models @@ -350,7 +350,7 @@ namespace AIAHTML5.API.Models
350 return objUser; 350 return objUser;
351 } 351 }
352 352
353 - internal static string GetUserLoginStatus(int userId,string tagName, long SessionId, bool isSiteUser) 353 + internal static string GetUserLoginStatus(int userId,string tagName, long SessionId, bool isSiteUser,bool isAdmin)
354 { 354 {
355 string status=string.Empty; 355 string status=string.Empty;
356 DBModel objModel = new DBModel(); 356 DBModel objModel = new DBModel();
@@ -367,6 +367,7 @@ namespace AIAHTML5.API.Models @@ -367,6 +367,7 @@ namespace AIAHTML5.API.Models
367 cmd.Parameters.AddWithValue("@tag", tagName); 367 cmd.Parameters.AddWithValue("@tag", tagName);
368 cmd.Parameters.AddWithValue("@sessionId", SessionId); 368 cmd.Parameters.AddWithValue("@sessionId", SessionId);
369 cmd.Parameters.AddWithValue("@isSiteUser", isSiteUser); 369 cmd.Parameters.AddWithValue("@isSiteUser", isSiteUser);
  370 + cmd.Parameters.AddWithValue("@isAdmin", isAdmin);
370 adapter = new SqlDataAdapter(cmd); 371 adapter = new SqlDataAdapter(cmd);
371 adapter.Fill(ds); 372 adapter.Fill(ds);
372 373
@@ -425,6 +426,47 @@ namespace AIAHTML5.API.Models @@ -425,6 +426,47 @@ namespace AIAHTML5.API.Models
425 return status; 426 return status;
426 } 427 }
427 428
  429 + internal List<AodCourse> GetSelectedCourseList(int licenseId)
  430 + {
  431 + AodCourse course = null;
  432 + List<AodCourse> courselist = new List<AodCourse>();
  433 +
  434 + SqlConnection conn = new SqlConnection(dbConnectionString);
  435 + SqlCommand cmd = new SqlCommand();
  436 + SqlDataAdapter adapter;
  437 +
  438 + DataSet ds = new DataSet();
  439 +
  440 + cmd.Connection = conn;
  441 + cmd.CommandText = DBConstants.GET_AOD_COURSE_ITEMS;
  442 + cmd.CommandType = CommandType.StoredProcedure;
  443 +
  444 + cmd.Parameters.AddWithValue("@licenseId", licenseId);
  445 +
  446 + adapter = new SqlDataAdapter(cmd);
  447 + adapter.Fill(ds);
  448 +
  449 + if (ds != null && ds.Tables.Count > 0)
  450 + {
  451 + DataTable dt = ds.Tables[0];
  452 +
  453 + if (dt.Rows.Count > 0)
  454 + {
  455 + foreach (DataRow dr in dt.Rows)
  456 + {
  457 + course = new AodCourse();
  458 +
  459 + course.CourseId= dr["CourseId"].ToString();
  460 + course.CourseName = dr["CourseName"].ToString();
  461 + course.BodySystem = dr["BodySystem"].ToString();
  462 + courselist.Add(course);
  463 + }
  464 + }
  465 + }
  466 +
  467 + return courselist;
  468 + }
  469 +
428 internal User GetSelectedSettings(int userId,bool isSiteUser) 470 internal User GetSelectedSettings(int userId,bool isSiteUser)
429 { 471 {
430 logger.Debug(" Inside GetSelectedSettings for userId = " + userId); 472 logger.Debug(" Inside GetSelectedSettings for userId = " + userId);
400-SOURCECODE/AIAHTML5.API/Models/User.cs
@@ -128,6 +128,13 @@ namespace AIAHTML5.API.Models @@ -128,6 +128,13 @@ namespace AIAHTML5.API.Models
128 public int ExptImageLimit { get; set; } 128 public int ExptImageLimit { get; set; }
129 } 129 }
130 130
  131 + public class AodCourse
  132 + {
  133 + public string CourseId { get; set; }
  134 + public string CourseName { get; set; }
  135 + public string BodySystem { get; set; }
  136 + }
  137 +
131 public class LicenseUserInsertImageDetail 138 public class LicenseUserInsertImageDetail
132 { 139 {
133 public int LicenseId { get; set; } 140 public int LicenseId { get; set; }
400-SOURCECODE/AIAHTML5.API/Models/Users.cs
@@ -340,10 +340,10 @@ namespace AIAHTML5.API.Models @@ -340,10 +340,10 @@ namespace AIAHTML5.API.Models
340 return objUser; 340 return objUser;
341 } 341 }
342 342
343 - internal static string GetUserLoginStatus(int userId, string tagName, long SessionId, bool isSiteUser) 343 + internal static string GetUserLoginStatus(int userId, string tagName, long SessionId, bool isSiteUser,bool isAdmin)
344 { 344 {
345 string status = null; 345 string status = null;
346 - status = DBModel.GetUserLoginStatus(userId, tagName, SessionId, isSiteUser); 346 + status = DBModel.GetUserLoginStatus(userId, tagName, SessionId, isSiteUser, isAdmin);
347 347
348 return status; 348 return status;
349 } 349 }
400-SOURCECODE/AIAHTML5.Web/app/controllers/AODController.js
1 ๏ปฟ'use strict'; 1 ๏ปฟ'use strict';
2 2
3 -AIA.controller("AODController", ["$scope", "$window", "$rootScope", "$compile", "$http", "$log", "$location", "$timeout","DataService", "ModuleService", "$interval", "AIAConstants",  
4 -function ($scope, $window, $rootScope, $compile, $http, log, $location, $timeout,DataService, ModuleService, $interval, AIAConstants) { 3 +AIA.controller("AODController", ["$scope", "$window", "$rootScope", "$compile", "$http", "$log", "$location", "$timeout","DataService", "ModuleService", "$interval", "AuthenticationService", "AIAConstants",
  4 +function ($scope, $window, $rootScope, $compile, $http, log, $location, $timeout,DataService, ModuleService, $interval,AuthenticationService, AIAConstants) {
5 $scope.ObjectAttribute=function(windowviewid) 5 $scope.ObjectAttribute=function(windowviewid)
6 { 6 {
7 var windata={ 7 var windata={
8 'multiwinid': windowviewid, 8 'multiwinid': windowviewid,
9 'AODAnimationData': [], 9 'AODAnimationData': [],
10 'moduleName': '', 10 'moduleName': '',
11 - 'aodUrl':'', 11 + 'aodUrl':'AodHome/CoursePlayerAIA',
12 'courseId':'', 12 'courseId':'',
13 - 'uid':'2',//categoty id. courseid cheched in category id 13 + 'uid':'2',//categoty id. courseid checked in category id
14 'requestType':'SCORMPackage', 14 'requestType':'SCORMPackage',
15 'currentViewTitle': '', 15 'currentViewTitle': '',
16 'parentSlugName': '', 16 'parentSlugName': '',
17 - 'currentSlug': '',  
18 - 'imageId': '' 17 + 'currentSlug': '',
19 }; 18 };
20 return windata; 19 return windata;
21 } 20 }
@@ -109,22 +108,12 @@ function ($scope, $window, $rootScope, $compile, $http, log, $location, $timeout @@ -109,22 +108,12 @@ function ($scope, $window, $rootScope, $compile, $http, log, $location, $timeout
109 108
110 if (index != -1) { 109 if (index != -1) {
111 // remove module which one is loaded 110 // remove module which one is loaded
112 - var reffid=$rootScope.AODWindowData[index].imageId;  
113 $rootScope.AODWindowData.splice(index, 1); 111 $rootScope.AODWindowData.splice(index, 1);
114 - //remove also stream/source video from close panel from cb  
115 - if($rootScope.collectAnimationSource !=undefined)  
116 - {  
117 - for (var vdx = 0 ; vdx < $rootScope.collectAnimationSource.length; vdx++) {  
118 - if(reffid==$rootScope.collectAnimationSource[vdx].imageId)  
119 - $rootScope.collectAnimationSource.splice(vdx, 1);  
120 - }  
121 - }  
122 if ($('#' + panelid).html() != undefined) { 112 if ($('#' + panelid).html() != undefined) {
123 113
124 $('#' + panelid).remove(); 114 $('#' + panelid).remove();
125 115
126 } 116 }
127 - // $rootScope.resetjsPanelTop(panelid);  
128 } 117 }
129 } 118 }
130 } 119 }
@@ -166,62 +155,45 @@ function ($scope, $window, $rootScope, $compile, $http, log, $location, $timeout @@ -166,62 +155,45 @@ function ($scope, $window, $rootScope, $compile, $http, log, $location, $timeout
166 if ($rootScope.refreshcheck == null) { 155 if ($rootScope.refreshcheck == null) {
167 $location.path('/'); 156 $location.path('/');
168 } 157 }
169 - // code that will be executed ...  
170 - // every time this view is loaded  
171 -  
172 - 158 +
173 $rootScope.currentActiveModuleTitle = "ADAM ON DEMAND"; 159 $rootScope.currentActiveModuleTitle = "ADAM ON DEMAND";
174 160
175 $scope.SetAODwindowStoreData($rootScope.MULTI_VIEW_ID, 'moduleName', "ADAM ON DEMAND"); 161 $scope.SetAODwindowStoreData($rootScope.MULTI_VIEW_ID, 'moduleName', "ADAM ON DEMAND");
176 162
177 $scope.LoadAODJsonData($rootScope.MULTI_VIEW_ID); 163 $scope.LoadAODJsonData($rootScope.MULTI_VIEW_ID);
178 -  
179 - setTimeout(function () {  
180 -  
181 - //call time interval function until load Illustration data  
182 - var timeintval = null;  
183 - timeintval = $interval(function () {  
184 - var AODAnimationData = $scope.GetAODwindowStoreData($rootScope.MULTI_VIEW_ID, 'AODAnimationData');  
185 - if (AODAnimationData.length>0) {  
186 - $scope.stopIntervalAOD();  
187 - $scope.loadAODList($rootScope.MULTI_VIEW_ID);  
188 - }  
189 - else  
190 - {  
191 - console.log("waiting for aod Data");  
192 - }  
193 - }, 100);  
194 -  
195 - $scope.stopIntervalAOD = function () {  
196 - if (angular.isDefined(timeintval)) {  
197 - $interval.cancel(timeintval);  
198 - timeintval = undefined;  
199 - }  
200 - };  
201 -  
202 - }, 200);  
203 - }; 164 +
  165 + };
204 166
205 $scope.LoadAODJsonData = function (windowviewid) { 167 $scope.LoadAODJsonData = function (windowviewid) {
206 168
207 - var promise = DataService.getJson('~/../content/data/json/aod/aod_courselist.json')  
208 - promise.then(  
209 - function (result) {  
210 -  
211 - var AODAnimationData = new jinqJs()  
212 - .from(result.root.AODData)  
213 - .orderBy([{ field: '_BodySystem', sort: 'asc' }])  
214 - .select(); 169 + //LicenseId would be zero for admin and gernal admin
  170 + //get this from DB
  171 + AuthenticationService.GetAodCoursesList($rootScope.userData.LicenseId)
  172 + .then(
  173 + function (aodResult) {
  174 + if(aodResult.length>0 && aodResult != AIAConstants.NO_COURSE_FOUND)
  175 + {
215 176
216 - $scope.SetAODwindowStoreData(windowviewid, 'AODAnimationData', AODAnimationData); 177 + var AODAnimationData = new jinqJs()
  178 + .from(aodResult)
  179 + .orderBy([{ field: 'BodySystem', sort: 'asc' }])
  180 + .select();
217 181
218 - },  
219 - function (error) {  
220 - $scope.EnableUI();  
221 -  
222 - }  
223 - ); 182 + $scope.SetAODwindowStoreData(windowviewid, 'AODAnimationData', AODAnimationData);
  183 +
  184 + $scope.loadAODList(windowviewid);
  185 + }
  186 + else
  187 + {
  188 + $('#errorMessage').text(AIAConstants.NO_COURSE_FOUND_MESSAGE);
  189 + $("#messageModal").modal('show');
  190 + $scope.EnableUI();
224 191
  192 + }
  193 + },
  194 + function (error) {
  195 + $scope.EnableUI();
  196 + })
225 197
226 }; 198 };
227 199
@@ -232,13 +204,13 @@ function ($scope, $window, $rootScope, $compile, $http, log, $location, $timeout @@ -232,13 +204,13 @@ function ($scope, $window, $rootScope, $compile, $http, log, $location, $timeout
232 $('#grid-view').empty(); 204 $('#grid-view').empty();
233 205
234 angular.forEach(selectedAODListViewData, function (value, key) { 206 angular.forEach(selectedAODListViewData, function (value, key) {
235 - var imagePath = "~/../content/images/aod/thumbnails/" + value._ThumbnailImage; 207 + var imagePath = "~/../content/images/aod/thumbnails/" + value.CourseId+'.jpg';
236 208
237 209
238 - var $el = $('<div id="' + value._ImageId + '" class="col-sm-3 col-lg-2" title = "'+ value._Title + '" data-ng-click="openView($event)">' 210 + var $el = $('<div id="' + value.CourseId + '" class="col-sm-3 col-lg-2" title = "'+ value.CourseName + '" data-ng-click="openView($event)">'
239 + '<div class="thumbnail" ><a href="#">' 211 + '<div class="thumbnail" ><a href="#">'
240 - + '<img id="' + value._Title + '" class="img-responsive" style="width:100%;height:100%;" ng-src="' + imagePath + '" alt="" title="" >'  
241 - + '<div class="caption" style="padding:0px;height:80px"><p style="height:15px"><em>'+'ID: '+ value._ImageId + '</em></p><p style="white-space:pre-wrap;height:60px">' + value._Title + '</p></div></a></div></div>').appendTo('#grid-view'); 212 + + '<img id="' + value.CourseName + '" class="img-responsive" style="width:100%;height:100%;" ng-src="' + imagePath + '" alt="" title="" >'
  213 + + '<div class="caption" style="padding:0px;height:80px"><p style="height:15px"><em>'+'ID: '+ value.CourseId + '</em></p><p style="white-space:pre-wrap;height:60px">' + value.CourseName + '</p></div></a></div></div>').appendTo('#grid-view');
242 214
243 $compile($el)($scope); 215 $compile($el)($scope);
244 216
@@ -300,10 +272,10 @@ function ($scope, $window, $rootScope, $compile, $http, log, $location, $timeout @@ -300,10 +272,10 @@ function ($scope, $window, $rootScope, $compile, $http, log, $location, $timeout
300 var selectedTileData = []; 272 var selectedTileData = [];
301 selectedTileData = new jinqJs() 273 selectedTileData = new jinqJs()
302 .from(selectedAODListViewData) 274 .from(selectedAODListViewData)
303 - .where('_ImageId = ' + $event.currentTarget.id) 275 + .where('CourseId = ' + $event.currentTarget.id)
304 .select(); 276 .select();
305 277
306 - $rootScope.ViewTitle = selectedTileData[0]._Title; 278 + $rootScope.ViewTitle = selectedTileData[0].CourseName;
307 } 279 }
308 else { 280 else {
309 $rootScope.ViewTitle = $event.currentTarget.textContent; 281 $rootScope.ViewTitle = $event.currentTarget.textContent;
@@ -313,35 +285,12 @@ function ($scope, $window, $rootScope, $compile, $http, log, $location, $timeout @@ -313,35 +285,12 @@ function ($scope, $window, $rootScope, $compile, $http, log, $location, $timeout
313 localStorage.setItem("currentBodyViewId", $event.currentTarget.id); 285 localStorage.setItem("currentBodyViewId", $event.currentTarget.id);
314 286
315 $scope.SetAODwindowStoreData(windowviewid, 'currentViewTitle', $rootScope.ViewTitle); 287 $scope.SetAODwindowStoreData(windowviewid, 'currentViewTitle', $rootScope.ViewTitle);
316 - $scope.SetAODwindowStoreData(windowviewid, 'imageId', $event.currentTarget.id);  
317 -  
318 - var promise = DataService.getJson('~/../content/data/json/aod/aod_courselist_video.json')  
319 - promise.then(  
320 - function (result) {  
321 - // $scope.AnimationData = result;  
322 - $scope.AODlistViewData = result.root.AODData;  
323 - var id = $scope.GetAODwindowStoreData(windowviewid, 'imageId');  
324 - var clickedAODVideoData = [];  
325 - clickedAODVideoData = new jinqJs()  
326 - .from($scope.AODlistViewData)  
327 - .where('_CourseId == ' + id)  
328 - .select();  
329 -  
330 - $scope.SetAODwindowStoreData(windowviewid, 'aodUrl', clickedAODVideoData[0]._VideoUrl);  
331 - $scope.SetAODwindowStoreData(windowviewid, 'courseId', clickedAODVideoData[0]._CourseId);  
332 -  
333 - var AODGridViewScrollPosition = $($window).scrollTop();  
334 - localStorage.setItem('AODGridViewScroll', AODGridViewScrollPosition);  
335 - $location.url('/AOD-view-detail');  
336 -  
337 - },  
338 - function (error) {  
339 -  
340 - } 288 + $scope.SetAODwindowStoreData(windowviewid, 'courseId', $event.currentTarget.id);
341 289
342 - ); 290 + var AODGridViewScrollPosition = $($window).scrollTop();
  291 + localStorage.setItem('AODGridViewScroll', AODGridViewScrollPosition);
  292 + $location.url('/AOD-view-detail');
343 293
344 -  
345 } 294 }
346 295
347 296
@@ -435,8 +384,6 @@ function ($scope, $window, $rootScope, $compile, $http, log, $location, $timeout @@ -435,8 +384,6 @@ function ($scope, $window, $rootScope, $compile, $http, log, $location, $timeout
435 384
436 $('#aodvideo_' + windowviewid).attr('src', aodSiteUrl); 385 $('#aodvideo_' + windowviewid).attr('src', aodSiteUrl);
437 386
438 - //var canvasDIvHeight = $('#aodImagePanel_' + windowviewid+ " .jsPanel-content").height();  
439 - // $('#aodContentDiv_'+ windowviewid ).css("height",canvasDIvHeight);  
440 } 387 }
441 388
442 //Calling methode for save Js Panel Activity for SaveCB 389 //Calling methode for save Js Panel Activity for SaveCB
400-SOURCECODE/AIAHTML5.Web/app/controllers/HomeController.js
@@ -341,11 +341,12 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data @@ -341,11 +341,12 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data
341 var head = $(innerDoc).contents().find("head"); 341 var head = $(innerDoc).contents().find("head");
342 //hide menu link 342 //hide menu link
343 var css = '<style type="text/css">' + 343 var css = '<style type="text/css">' +
344 - // '#topMenuBar{visibility: hidden;} ' +  
345 - '.navbar-fixed-top{display: none}'+  
346 - '.pageHeading{margin-top: 2px}'+  
347 - '.sidebar{padding-top: 35px}'+  
348 - '.main{margin-top: 8px}'+ 344 + //'#topMenuBar{visibility: hidden;} ' +
  345 + '#topMenuBar{pointer-events: none;opacity:.5} ' +
  346 + //'.navbar-fixed-top{display: none}'+
  347 + // '.pageHeading{margin-top: 2px}'+
  348 + // '.sidebar{padding-top: 35px}'+
  349 + // '.main{margin-top: 8px}'+
349 350
350 '#Link\\/encyclopedia{display: none} ' + 351 '#Link\\/encyclopedia{display: none} ' +
351 // '#curriculum-builder{display: none} ' + 352 // '#curriculum-builder{display: none} ' +
@@ -362,9 +363,9 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data @@ -362,9 +363,9 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data
362 363
363 '</style>'; 364 '</style>';
364 365
365 - var storefunc = '<script> function OpenDefaultModule(iframe){ iframe.contentWindow.document.getElementById(iframe.name).click();}</script>'; 366 + // var storefunc = '<script> function OpenDefaultModule(iframe){ iframe.contentWindow.document.getElementById(iframe.name).click();}</script>';
366 $(head).append(css); 367 $(head).append(css);
367 - $(head).append(storefunc); 368 + // $(head).append(storefunc);
368 369
369 var canvasDIvHeight = $("#dvOpenResourcePanel .jsPanel-content").height(); 370 var canvasDIvHeight = $("#dvOpenResourcePanel .jsPanel-content").height();
370 $('#OpenModuleInCB').css('height', canvasDIvHeight); 371 $('#OpenModuleInCB').css('height', canvasDIvHeight);
@@ -377,7 +378,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data @@ -377,7 +378,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data
377 $scope.loadopenresourceContent(head, iframe); 378 $scope.loadopenresourceContent(head, iframe);
378 } 379 }
379 380
380 - }, 500); 381 + }, 100);
381 382
382 } 383 }
383 384
@@ -386,7 +387,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data @@ -386,7 +387,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data
386 $timeout(function () { 387 $timeout(function () {
387 sessionStorage.setItem('isModuleOpenByOpenResource', 'true'); 388 sessionStorage.setItem('isModuleOpenByOpenResource', 'true');
388 sessionStorage.removeItem('ExitsCBFileDetail'); 389 sessionStorage.removeItem('ExitsCBFileDetail');
389 - OpenDefaultModule(iframe); 390 + // OpenDefaultModule(iframe);
390 391
391 }, 500); 392 }, 500);
392 393
@@ -723,11 +724,15 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data @@ -723,11 +724,15 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data
723 //incase site user login userid is 0 so then using license id 724 //incase site user login userid is 0 so then using license id
724 //logout site user while reload url without parameter 725 //logout site user while reload url without parameter
725 var userId=loggedInUser.Id==0?loggedInUser.LicenseId:loggedInUser.Id; 726 var userId=loggedInUser.Id==0?loggedInUser.LicenseId:loggedInUser.Id;
  727 +
  728 + //licenseId would be zero for admin/gernal admin
  729 + var isadminType=loggedInUser.LicenseId==0?true:false;
726 $scope.checkuserstatus = { 730 $scope.checkuserstatus = {
727 userId: userId, 731 userId: userId,
728 tagName: loggedInUser.Id==0?'logout':'update', 732 tagName: loggedInUser.Id==0?'logout':'update',
729 SessionId:loggedInUser.SessionId, 733 SessionId:loggedInUser.SessionId,
730 - isSiteUser:loggedInUser.isSiteUser 734 + isSiteUser:loggedInUser.isSiteUser,
  735 + isAdmin:isadminType
731 } 736 }
732 737
733 // this case found when browser closed by user after login. after long time (after 20 min) open site again 738 // this case found when browser closed by user after login. after long time (after 20 min) open site again
@@ -2005,7 +2010,8 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data @@ -2005,7 +2010,8 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data
2005 userId: null, 2010 userId: null,
2006 tagName: null, 2011 tagName: null,
2007 SessionId:null, 2012 SessionId:null,
2008 - isSiteUser:false 2013 + isSiteUser:false,
  2014 + isAdmin:false
2009 } 2015 }
2010 console.log('user session start'); 2016 console.log('user session start');
2011 $rootScope.CheckUserSession('insert'); 2017 $rootScope.CheckUserSession('insert');
@@ -2084,6 +2090,8 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data @@ -2084,6 +2090,8 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data
2084 $rootScope.userStatus.tagName=tagName; 2090 $rootScope.userStatus.tagName=tagName;
2085 $rootScope.userStatus.SessionId=$rootScope.userData.SessionId; 2091 $rootScope.userStatus.SessionId=$rootScope.userData.SessionId;
2086 $rootScope.userStatus.isSiteUser=$rootScope.userData.isSiteUser; 2092 $rootScope.userStatus.isSiteUser=$rootScope.userData.isSiteUser;
  2093 + //licenseId would be zero for admin/gernal admin
  2094 + $rootScope.userStatus.isAdmin=$rootScope.userData.LicenseId==0?true:false;
2087 2095
2088 AuthenticationService.ManageUserLoginStatus($rootScope.userStatus) 2096 AuthenticationService.ManageUserLoginStatus($rootScope.userStatus)
2089 .then( 2097 .then(
@@ -8501,20 +8509,14 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data @@ -8501,20 +8509,14 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data
8501 setting.modesty =Formatsetting.modesty ; 8509 setting.modesty =Formatsetting.modesty ;
8502 setting.skintone = Formatsetting.ethnicity; 8510 setting.skintone = Formatsetting.ethnicity;
8503 8511
8504 - // var isallowToChange=false;  
8505 if($rootScope.userData.isSiteUser) 8512 if($rootScope.userData.isSiteUser)
8506 { 8513 {
8507 // send as user id 8514 // send as user id
8508 setting.userId = $rootScope.userData.siteId; 8515 setting.userId = $rootScope.userData.siteId;
8509 - //isallowToChange=$rootScope.userData.EditionId<3;  
8510 } 8516 }
8511 else 8517 else
8512 { 8518 {
8513 setting.userId = $rootScope.userData.Id; 8519 setting.userId = $rootScope.userData.Id;
8514 - //concurrent license  
8515 - // only instructor  
8516 - //if($rootScope.userData.LicenseId!=0)  
8517 - // isallowToChange=$rootScope.userData.EditionId<3;  
8518 8520
8519 } 8521 }
8520 8522
@@ -8531,8 +8533,6 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data @@ -8531,8 +8533,6 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data
8531 setting.isSiteUser=$rootScope.userData.isSiteUser; 8533 setting.isSiteUser=$rootScope.userData.isSiteUser;
8532 setting.LicenseEditionId=$rootScope.userData.LicenseEditionId; 8534 setting.LicenseEditionId=$rootScope.userData.LicenseEditionId;
8533 8535
8534 - // if(isallowToChange ||$rootScope.userData.LicenseId==0)  
8535 - // {  
8536 AuthenticationService.saveSetings(setting) 8536 AuthenticationService.saveSetings(setting)
8537 .then( 8537 .then(
8538 function (result) { 8538 function (result) {
400-SOURCECODE/AIAHTML5.Web/app/main/AIA.js
@@ -553,7 +553,9 @@ AIA.constant(&quot;AIAConstants&quot;, { @@ -553,7 +553,9 @@ AIA.constant(&quot;AIAConstants&quot;, {
553 "CB_Confirm_Password_Not_Match": "confirm password not matched.", 553 "CB_Confirm_Password_Not_Match": "confirm password not matched.",
554 "CB_Add_Slide_First": "Please add slide first to export this section.", 554 "CB_Add_Slide_First": "Please add slide first to export this section.",
555 "CB_Curriculum_Name_Empty": "Curriculum name is empty!", 555 "CB_Curriculum_Name_Empty": "Curriculum name is empty!",
556 - 556 + "NO_COURSE_FOUND": "NO COURSE FOUND",
  557 + "NO_COURSE_FOUND_MESSAGE": "No Selected A.D.A.M. courses found for this user account. Please contact ADAM.",
  558 +
557 "NO_BODY_SYSTEM_AVAILABLE": "Selected body system is not available on this layer.", 559 "NO_BODY_SYSTEM_AVAILABLE": "Selected body system is not available on this layer.",
558 "COOKIES_MESSAGE": "You need to enable your browser's cookies to run this application.", 560 "COOKIES_MESSAGE": "You need to enable your browser's cookies to run this application.",
559 "SAVED_LAB_EXERCISE_NOT_FOUND": "Saved Lab Exercise not found.", 561 "SAVED_LAB_EXERCISE_NOT_FOUND": "Saved Lab Exercise not found.",
400-SOURCECODE/AIAHTML5.Web/app/services/AuthenticationService.js
@@ -131,6 +131,28 @@ @@ -131,6 +131,28 @@
131 return deferred.promise; 131 return deferred.promise;
132 }, 132 },
133 133
  134 + GetAodCoursesList: function (licenseId) {
  135 + var deferred = $q.defer();
  136 +
  137 + $http({
  138 + url: "/API/api/GetAodCoursesList",
  139 + method: "GET",
  140 + params: { LicenseId: licenseId }
  141 + })
  142 +
  143 + .success(function (data, status, headers, config) {
  144 + deferred.resolve(data);
  145 + }).error(function (data, status, headers, config) {
  146 + console.log('error')
  147 + deferred.reject(data);
  148 + $rootScope.isVisibleLogin = true;
  149 + $('#errorMessage').text(data);
  150 + $("#messageModal").modal('show');
  151 +
  152 + });
  153 + return deferred.promise;
  154 + },
  155 +
134 validateClientSite: function (clientInfo) { 156 validateClientSite: function (clientInfo) {
135 var deferred = $q.defer(); 157 var deferred = $q.defer();
136 158
400-SOURCECODE/Admin/package-lock.json
@@ -507,6 +507,15 @@ @@ -507,6 +507,15 @@
507 "moment": "^2.19.3" 507 "moment": "^2.19.3"
508 } 508 }
509 }, 509 },
  510 + "angular2-multiselect-checkbox-dropdown": {
  511 + "version": "1.4.0",
  512 + "resolved": "https://registry.npmjs.org/angular2-multiselect-checkbox-dropdown/-/angular2-multiselect-checkbox-dropdown-1.4.0.tgz",
  513 + "integrity": "sha1-eN+iYuqAPvx9x/ctRmRdcCs59Is=",
  514 + "requires": {
  515 + "bootstrap": "*",
  516 + "font-awesome": "*"
  517 + }
  518 + },
510 "angular4-slimscroll": { 519 "angular4-slimscroll": {
511 "version": "1.0.5", 520 "version": "1.0.5",
512 "resolved": "https://registry.npmjs.org/angular4-slimscroll/-/angular4-slimscroll-1.0.5.tgz", 521 "resolved": "https://registry.npmjs.org/angular4-slimscroll/-/angular4-slimscroll-1.0.5.tgz",
@@ -3855,6 +3864,11 @@ @@ -3855,6 +3864,11 @@
3855 } 3864 }
3856 } 3865 }
3857 }, 3866 },
  3867 + "font-awesome": {
  3868 + "version": "4.7.0",
  3869 + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz",
  3870 + "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM="
  3871 + },
3858 "for-in": { 3872 "for-in": {
3859 "version": "1.0.2", 3873 "version": "1.0.2",
3860 "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 3874 "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
400-SOURCECODE/Admin/package.json
@@ -30,6 +30,7 @@ @@ -30,6 +30,7 @@
30 "@types/node": "^6.0.102", 30 "@types/node": "^6.0.102",
31 "angular2-json2csv": "^1.1.2", 31 "angular2-json2csv": "^1.1.2",
32 "angular2-moment": "^1.9.0", 32 "angular2-moment": "^1.9.0",
  33 + "angular2-multiselect-checkbox-dropdown": "^1.4.0",
33 "angular4-slimscroll": "^1.0.5", 34 "angular4-slimscroll": "^1.0.5",
34 "bootstrap": "^3.1.1", 35 "bootstrap": "^3.1.1",
35 "chosen-js": "^1.8.7", 36 "chosen-js": "^1.8.7",
400-SOURCECODE/Admin/src/app/angular2-multiselect-checkbox-dropdown/README.md 0 โ†’ 100644
  1 +# Angular2 Multiselect Dropdown
  2 +[![npm version](https://img.shields.io/npm/v/angular2-multiselect-dropdown.svg)](https://www.npmjs.com/package/angular2-multiselect-dropdown)
  3 +
  4 +Angular 2 multiselect dropdown component for web applications. Easy to integrate and use.
  5 +
  6 +
  7 +# [Documentation](http://cuppalabs.github.io/components/multiselectDropdown) | [Demo](https://cuppalabs.github.io/angular2-multiselect-dropdown).
  8 +
  9 +## Getting Started
  10 +### Installation
  11 +- The Mutiselect Dropdown package is published on the [npm](https://www.npmjs.com/package/angular2-multiselect-dropdown) Registry.
  12 +- Install the package :
  13 + `npm install angular2-multiselect-checkbox-dropdown`
  14 +
  15 +- Once installed import `AngularMultiSelectModule` from the installed package into your module as follows:
  16 +
  17 +### Usage
  18 +Import `AngularMultiSelectModule` into `NgModule` in `app.module.ts`
  19 +```js
  20 +import { AngularMultiSelectModule } from 'angular2-multiselect-checkbox-dropdown/angular2-multiselect-dropdown';
  21 +
  22 +@NgModule({
  23 + // ...
  24 + imports: [
  25 + AngularMultiSelectModule,
  26 + ]
  27 + // ...
  28 +})
  29 +
  30 +```
  31 +
  32 +Declare the component data variables and options in your component where you want to consume the dropdown component.
  33 +
  34 +```js
  35 +
  36 +import { Component, OnInit } from '@angular/core';
  37 +
  38 +export class AppComponent implements OnInit {
  39 + dropdownList = [];
  40 + selectedItems = [];
  41 + dropdownSettings = {};
  42 + ngOnInit(){
  43 + this.dropdownList = [
  44 + {"id":1,"itemName":"India"},
  45 + {"id":2,"itemName":"Singapore"},
  46 + {"id":3,"itemName":"Australia"},
  47 + {"id":4,"itemName":"Canada"},
  48 + {"id":5,"itemName":"South Korea"},
  49 + {"id":6,"itemName":"Germany"},
  50 + {"id":7,"itemName":"France"},
  51 + {"id":8,"itemName":"Russia"},
  52 + {"id":9,"itemName":"Italy"},
  53 + {"id":10,"itemName":"Sweden"}
  54 + ];
  55 + this.selectedItems = [
  56 + {"id":2,"itemName":"Singapore"},
  57 + {"id":3,"itemName":"Australia"},
  58 + {"id":4,"itemName":"Canada"},
  59 + {"id":5,"itemName":"South Korea"}
  60 + ];
  61 + this.dropdownSettings = {
  62 + singleSelection: false,
  63 + text:"Select Countries",
  64 + selectAllText:'Select All',
  65 + unSelectAllText:'UnSelect All',
  66 + enableSearchFilter: true,
  67 + classes:"myclass custom-class"
  68 + };
  69 + }
  70 + onItemSelect(item:any){
  71 + console.log(item);
  72 + console.log(this.selectedItems2);
  73 + }
  74 + OnItemDeSelect(item:any){
  75 + console.log(item);
  76 + console.log(this.selectedItems2);
  77 + }
  78 + onSelectAll(items: any){
  79 + console.log(items);
  80 + }
  81 + onDeSelectAll(items: any){
  82 + console.log(items);
  83 + }
  84 +}
  85 +```
  86 +
  87 +Add the following component tag in you template
  88 +```html
  89 +<angular2-multiselect [data]="dropdownList" [(ngModel)]="selectedItems"
  90 + [settings]="dropdownSettings"
  91 + (onSelect)="onItemSelect($event)"
  92 + (onDeSelect)="OnItemDeSelect($event)"
  93 + [selectedItems]="selectedItems"
  94 + (onSelectAll)="onSelectAll($event)"
  95 + (onDeSelectAll)="onDeSelectAll($event)"></angular2-multiselect>
  96 +
  97 +```
  98 +
  99 +### Settings
  100 +The following list of settings are supported by the component. Configure the settings to meet your requirement.
  101 +
  102 +| Setting |Type | Description | Default Value |
  103 +|:--- |:--- |:--- |:--- |
  104 +| singleSelection | Boolean | To set the dropdown for single item selection only. | false |
  105 +| text | String | Text to be show in the dropdown, when no items are selected. | 'Select' |
  106 +| enableCheckAll | Boolean | Enable the option to select all items in list | false |
  107 +| selectAllText | String | Text to display as the label of select all option | Select All |
  108 +| unSelectAllText | String | Text to display as the label of unSelect option | UnSelect All |
  109 +| enableSearchFilter | Boolean | Enable filter option for the list. | false |
  110 +| maxHeight | Number | Set maximum height of the dropdown list in px. | 300 |
  111 +| badgeShowLimit | Number | Limit the number of badges/items to show in the input field. If not set will show all selected. | All |
  112 +| classes | String | Custom classes to the dropdown component. Classes are added to the dropdown selector tag. To add multiple classes, the value should be space separated class names.| '' |
  113 +| limitSelection | Number | Limit the selection of number of items from the dropdown list. Once the limit is reached, all unselected items gets disabled. | none |
  114 +
  115 +### Callback Methods
  116 +- `onSelect` - Return the selected item on selection.
  117 + Example : (onSelect)="onItemSelect($event)"
  118 +- `onDeSelect` - Return the un-selected item on un-selecting.
  119 + Example : (onDeSelect)="OnItemDeSelect($event)"
  120 +- `onSelectAll` - Return the list of all selected items.
  121 + Example : (onSelectAll)="onSelectAll($event)"
  122 +- `onDeSelectAll` - Returns an empty array.
  123 + Example : (onDeSelectAll)="onDeSelectAll($event)"
  124 +
  125 +
  126 +## Run locally
  127 +- Clone the repository or downlod the .zip,.tar files.
  128 +- Run `npm install`
  129 +- Run `ng serve` for a dev server
  130 +- Navigate to `http://localhost:4200/`
  131 + The app will automatically reload if you change any of the source files.
  132 +
  133 +## License
  134 +MIT License.
400-SOURCECODE/Admin/src/app/angular2-multiselect-checkbox-dropdown/angular2-multiselect-dropdown.ts 0 โ†’ 100644
  1 +export * from './src/app/angular2-multiselect-dropdown/multiselect.component';
0 \ No newline at end of file 2 \ No newline at end of file
400-SOURCECODE/Admin/src/app/angular2-multiselect-checkbox-dropdown/package.json 0 โ†’ 100644
  1 +{
  2 + "_args": [
  3 + [
  4 + {
  5 + "raw": "angular2-multiselect-checkbox-dropdown",
  6 + "scope": null,
  7 + "escapedName": "angular2-multiselect-checkbox-dropdown",
  8 + "name": "angular2-multiselect-checkbox-dropdown",
  9 + "rawSpec": "",
  10 + "spec": "latest",
  11 + "type": "tag"
  12 + },
  13 + "D:\\tamil\\angular-projects\\Angular2-AdminLTE-master"
  14 + ]
  15 + ],
  16 + "_from": "angular2-multiselect-checkbox-dropdown@1.4.0",
  17 + "_id": "angular2-multiselect-checkbox-dropdown@1.4.0",
  18 + "_inBundle": false,
  19 + "_inCache": true,
  20 + "_integrity": "sha1-eN+iYuqAPvx9x/ctRmRdcCs59Is=",
  21 + "_location": "/angular2-multiselect-checkbox-dropdown",
  22 + "_nodeVersion": "6.10.3",
  23 + "_npmUser": {
  24 + "name": "tamilzh",
  25 + "email": "tamilzhchelvan@gmail.com"
  26 + },
  27 + "_npmVersion": "3.10.10",
  28 + "_phantomChildren": {},
  29 + "_requested": {
  30 + "type": "version",
  31 + "registry": true,
  32 + "raw": "angular2-multiselect-checkbox-dropdown@1.4.0",
  33 + "name": "angular2-multiselect-checkbox-dropdown",
  34 + "escapedName": "angular2-multiselect-checkbox-dropdown",
  35 + "rawSpec": "1.4.0",
  36 + "saveSpec": null,
  37 + "fetchSpec": "1.4.0"
  38 + },
  39 + "_requiredBy": [
  40 + "#USER",
  41 + "/"
  42 + ],
  43 + "_resolved": "https://registry.npmjs.org/angular2-multiselect-checkbox-dropdown/-/angular2-multiselect-checkbox-dropdown-1.4.0.tgz",
  44 + "_shasum": "78dfa262ea803efc7dc7f72d46645d702b39f48b",
  45 + "_shrinkwrap": null,
  46 + "_spec": "angular2-multiselect-checkbox-dropdown@1.4.0",
  47 + "_where": "F:\\AIAProject\\400-SOURCECODE\\Admin",
  48 + "angular-cli": {},
  49 + "bundleDependencies": false,
  50 + "dependencies": {
  51 + "bootstrap": "*",
  52 + "font-awesome": "*"
  53 + },
  54 + "deprecated": false,
  55 + "description": "[![npm version](https://img.shields.io/npm/v/angular2-multiselect-dropdown.svg)](https://www.npmjs.com/package/angular2-multiselect-dropdown)",
  56 + "devDependencies": {},
  57 + "directories": {},
  58 + "dist": {
  59 + "shasum": "346520b7512dc677da738bfcc7249045c2e0efde",
  60 + "tarball": "https://registry.npmjs.org/angular2-multiselect-checkbox-dropdown/-/angular2-multiselect-checkbox-dropdown-1.0.0.tgz"
  61 + },
  62 + "license": "MIT",
  63 + "maintainers": [
  64 + {
  65 + "name": "tamilzh",
  66 + "email": "tamilzhchelvan@gmail.com"
  67 + }
  68 + ],
  69 + "name": "angular2-multiselect-checkbox-dropdown",
  70 + "optionalDependencies": {},
  71 + "private": false,
  72 + "scripts": {
  73 + "e2e": "ng e2e",
  74 + "lint": "ng lint",
  75 + "ng": "ng",
  76 + "start": "ng serve",
  77 + "test": "ng test"
  78 + },
  79 + "version": "1.4.0"
  80 +}
400-SOURCECODE/Admin/src/app/angular2-multiselect-checkbox-dropdown/src/app/angular2-multiselect-dropdown/clickOutside.ts 0 โ†’ 100644
  1 +import {Directive, ElementRef, Output, EventEmitter, HostListener} from '@angular/core';
  2 +
  3 +@Directive({
  4 + selector: '[clickOutside]'
  5 +})
  6 +export class ClickOutsideDirective {
  7 + constructor(private _elementRef: ElementRef) {
  8 + }
  9 +
  10 + @Output()
  11 + public clickOutside = new EventEmitter<MouseEvent>();
  12 +
  13 + @HostListener('document:click', ['$event', '$event.target'])
  14 + public onClick(event: MouseEvent, targetElement: HTMLElement): void {
  15 + if (!targetElement) {
  16 + return;
  17 + }
  18 +
  19 + const clickedInside = this._elementRef.nativeElement.contains(targetElement);
  20 + if (!clickedInside) {
  21 + this.clickOutside.emit(event);
  22 + }
  23 + }
  24 +}
0 \ No newline at end of file 25 \ No newline at end of file
400-SOURCECODE/Admin/src/app/angular2-multiselect-checkbox-dropdown/src/app/angular2-multiselect-dropdown/list-filter.ts 0 โ†’ 100644
  1 +import { Pipe, PipeTransform } from '@angular/core';
  2 +
  3 +import { ListItem } from './multiselect.model';
  4 +
  5 +@Pipe({
  6 + name: 'listFilter',
  7 + pure: false
  8 +})
  9 +export class ListFilterPipe implements PipeTransform {
  10 + transform(items: ListItem[], filter: ListItem): ListItem[] {
  11 + if (!items || !filter) {
  12 + return items;
  13 + }
  14 + // filter items array, items which match and return true will be kept, false will be filtered out
  15 + return items.filter((item: ListItem) => this.applyFilter(item, filter));
  16 + }
  17 +
  18 + /**
  19 + * Perform the filtering.
  20 + *
  21 + * @param {Book} book The book to compare to the filter.
  22 + * @param {Book} filter The filter to apply.
  23 + * @return {boolean} True if book satisfies filters, false if not.
  24 + */
  25 + applyFilter(item: ListItem, filter: ListItem): boolean {
  26 + if (filter.itemName && item.itemName.toLowerCase().indexOf(filter.itemName.toLowerCase()) === -1) {
  27 + return false;
  28 + }
  29 + return true;
  30 + }
  31 +}
0 \ No newline at end of file 32 \ No newline at end of file
400-SOURCECODE/Admin/src/app/angular2-multiselect-checkbox-dropdown/src/app/angular2-multiselect-dropdown/multiselect.component.html 0 โ†’ 100644
  1 +<div class="cuppa-dropdown" (clickOutside)="closeDropdown()">
  2 + <div class="selected-list">
  3 + <button class="c-btn" (click)="toggleDropdown()">
  4 + <span style="font-weight:bold">{{settings.text}}</span>
  5 + <!-- <span *ngIf="selectedItems.length == 0">{{settings.text}}</span> -->
  6 + <!-- <span *ngIf="settings.singleSelection"> -->
  7 + <!-- <span *ngFor="let item of selectedItems;trackBy: trackByFn;"> -->
  8 + <!-- {{item.itemName}} -->
  9 + <!-- </span> -->
  10 + <!-- </span> -->
  11 + <!-- <div class="c-list" *ngIf="selectedItems.length > 0 && !settings.singleSelection"> -->
  12 + <!-- <div class="c-token" *ngFor="let item of selectedItems;trackBy: trackByFn;let k = index" [hidden]="k > settings.badgeShowLimit-1"> -->
  13 + <!-- <span class="c-label">{{item.itemName}}</span> -->
  14 + <!-- <span class="fa fa-remove" (click)="onItemClick(item)"></span> -->
  15 + <!-- </div> -->
  16 + <!-- </div> -->
  17 + <span *ngIf="selectedItems.length > settings.badgeShowLimit">+{{selectedItems.length - settings.badgeShowLimit }}</span>
  18 + <span class="fa" [ngClass]="{'fa-angle-down': !isActive,'fa-angle-up':isActive}"></span>
  19 + </button>
  20 + </div>
  21 + <div class="dropdown-list" [hidden]="!isActive">
  22 + <div class="arrow-up"></div>
  23 + <div class="list-area">
  24 + <div class="pure-checkbox select-all" *ngIf="settings.enableCheckAll && !settings.singleSelection && !settings.limitSelection" (click)="toggleSelectAll()">
  25 + <input type="checkbox" [checked]="isSelectAll" [disabled]="settings.limitSelection == selectedItems.length"/>
  26 + <label style="font-weight:normal">
  27 + <span [hidden]="isSelectAll">{{settings.selectAllText}}</span>
  28 + <span [hidden]="!isSelectAll">{{settings.unSelectAllText}}</span>
  29 + </label>
  30 + </div>
  31 + <div class="list-filter" *ngIf="settings.enableSearchFilter">
  32 + <span class="fa fa-search"></span>
  33 + <input type="text" placeholder="Search" [(ngModel)]="filter.itemName">
  34 + </div>
  35 + <ul [style.maxHeight] = "settings.maxHeight+'px'" style="position:relative">
  36 + <li *ngFor="let item of data | listFilter:filter; let i = index;" (click)="onItemClick(item,i)" class="pure-checkbox">
  37 + <input type="checkbox" [checked]="isSelected(item)" [disabled]="settings.limitSelection == selectedItems.length && !isSelected(item)"/>
  38 + <label style="font-weight:normal">{{item.itemName}}</label>
  39 + </li>
  40 + </ul>
  41 + </div>
  42 + </div>
  43 +</div>
0 \ No newline at end of file 44 \ No newline at end of file
400-SOURCECODE/Admin/src/app/angular2-multiselect-checkbox-dropdown/src/app/angular2-multiselect-dropdown/multiselect.component.scss 0 โ†’ 100644
  1 +
  2 +$base-color: #0079FE;
  3 +
  4 +.cuppa-dropdown{
  5 + position: relative;
  6 +}
  7 +.c-btn{
  8 + display: inline-block;
  9 + background: #fff;
  10 + border: 1px solid #ccc;
  11 + border-radius: 3px;
  12 + font-size: 14px;
  13 + color: #333;
  14 +}
  15 +.c-btn:focus{
  16 + outline: none;
  17 + }
  18 +.selected-list{
  19 + .c-list{
  20 + float: left;
  21 + padding: 0px;
  22 + margin: 0px;
  23 + .c-token{
  24 + list-style: none;
  25 + padding: 0px 5px;
  26 + background: $base-color;
  27 + color: #fff;
  28 + border-radius: 2px;
  29 + margin-right: 4px;
  30 + float: left;
  31 + .c-label{
  32 + display: block;
  33 + float: left;
  34 + /*width: 50px;
  35 + white-space: nowrap;
  36 + text-overflow: ellipsis;
  37 + overflow: hidden;*/
  38 + }
  39 + .fa-remove{
  40 + margin-left: 1px;
  41 + font-size: 12px;
  42 + }
  43 + }
  44 + }
  45 + .fa-angle-down, .fa-angle-up{
  46 + font-size: 15pt;
  47 + position: absolute;
  48 + right: 10px;
  49 + top: 25%;
  50 + }
  51 + button{
  52 + width: 100%;
  53 + box-shadow: 0px 1px 5px #959595;
  54 + padding: 10px;
  55 + }
  56 +}
  57 +.dropdown-list{
  58 + position: absolute;
  59 + padding-top: 14px;
  60 + width: 100%;
  61 + z-index: 9999;
  62 + ul{
  63 + padding: 0px;
  64 + list-style: none;
  65 + overflow: auto;
  66 + margin: 0px;
  67 + li{
  68 + padding: 10px 10px;
  69 + cursor: pointer;
  70 + text-align: left;
  71 + }
  72 + li:first-child{
  73 + padding-top: 10px;
  74 + }
  75 + li:last-child{
  76 + padding-bottom: 10px;
  77 + }
  78 + li:hover{
  79 + background: #f5f5f5;
  80 + }
  81 + }
  82 + ul::-webkit-scrollbar{
  83 + width: 8px;
  84 + }
  85 + ul::-webkit-scrollbar-thumb{
  86 + background: #cccccc;
  87 + border-radius: 5px;
  88 + }
  89 + ul::-webkit-scrollbar-track{
  90 + background: #f2f2f2;
  91 + }
  92 +}
  93 +.arrow-up {
  94 + width: 0;
  95 + height: 0;
  96 + border-left: 13px solid transparent;
  97 + border-right: 13px solid transparent;
  98 + border-bottom: 15px solid #fff;
  99 + margin-left: 15px;
  100 + position: absolute;
  101 + top: 0;
  102 +}
  103 +.list-area{
  104 + border: 1px solid #ccc;
  105 + border-radius: 3px;
  106 + background: #fff;
  107 + margin: 0px;
  108 + box-shadow: 0px 1px 5px #959595;
  109 +}
  110 +.select-all{
  111 + padding: 10px;
  112 + border-bottom: 1px solid #ccc;
  113 + text-align: left;
  114 +}
  115 +.list-filter{
  116 + border-bottom: 1px solid #ccc;
  117 + position: relative;
  118 + input{
  119 + border: 0px;
  120 + width: 100%;
  121 + height: 35px;
  122 + padding: 0px 0px 0px 35px;
  123 + }
  124 + input:focus{
  125 + outline: none;
  126 + }
  127 + .fa{
  128 + position: absolute;
  129 + top: 10px;
  130 + left: 13px;
  131 + color: #888;
  132 + }
  133 +}
  134 +.pure-checkbox input[type="checkbox"] {
  135 + border: 0;
  136 + clip: rect(0 0 0 0);
  137 + height: 1px;
  138 + margin: -1px;
  139 + overflow: hidden;
  140 + padding: 0;
  141 + position: absolute;
  142 + width: 1px;
  143 +}
  144 +.pure-checkbox input[type="checkbox"]:focus + label:before,
  145 +.pure-checkbox input[type="checkbox"]:hover + label:before
  146 + {
  147 + border-color: $base-color;
  148 + background-color: #f2f2f2;
  149 +}
  150 +.pure-checkbox input[type="checkbox"]:active + label:before {
  151 + transition-duration: 0s;
  152 +}
  153 +.pure-checkbox input[type="checkbox"] + label{
  154 + position: relative;
  155 + padding-left: 2em;
  156 + vertical-align: middle;
  157 + user-select: none;
  158 + cursor: pointer;
  159 + margin: 0px;
  160 + color: #000;
  161 +}
  162 +.pure-checkbox input[type="checkbox"] + label:before{
  163 + box-sizing: content-box;
  164 + content: '';
  165 + color: $base-color;
  166 + position: absolute;
  167 + top: 50%;
  168 + left: 0;
  169 + width: 14px;
  170 + height: 14px;
  171 + margin-top: -9px;
  172 + border: 2px solid $base-color;
  173 + text-align: center;
  174 + transition: all 0.4s ease;
  175 +}
  176 +.pure-checkbox input[type="checkbox"] + label:after{
  177 + box-sizing: content-box;
  178 + content: '';
  179 + background-color: $base-color;
  180 + position: absolute;
  181 + top: 50%;
  182 + left: 4px;
  183 + width: 10px;
  184 + height: 10px;
  185 + margin-top: -5px;
  186 + transform: scale(0);
  187 + transform-origin: 50%;
  188 + transition: transform 200ms ease-out;
  189 +}
  190 +.pure-checkbox input[type="checkbox"]:disabled + label:before{
  191 + border-color: #cccccc;
  192 +}
  193 +.pure-checkbox input[type="checkbox"]:disabled:focus + label:before
  194 +.pure-checkbox input[type="checkbox"]:disabled:hover + label:before{
  195 + background-color: inherit;
  196 +}
  197 +.pure-checkbox input[type="checkbox"]:disabled:checked + label:before{
  198 + background-color: #cccccc;
  199 +}
  200 +.pure-checkbox input[type="checkbox"] + label:after{
  201 + background-color: transparent;
  202 + top: 50%;
  203 + left: 4px;
  204 + width: 8px;
  205 + height: 3px;
  206 + margin-top: -4px;
  207 + border-style: solid;
  208 + border-color: #ffffff;
  209 + border-width: 0 0 3px 3px;
  210 + border-image: none;
  211 + transform: rotate(-45deg) scale(0);
  212 +}
  213 +.pure-checkbox input[type="checkbox"]:checked + label:after{
  214 + content: '';
  215 + transform: rotate(-45deg) scale(1);
  216 + transition: transform 200ms ease-out;
  217 +}
  218 +.pure-checkbox input[type="radio"]:checked + label:before{
  219 + animation: borderscale 300ms ease-in;
  220 + background-color: white;
  221 +}
  222 +.pure-checkbox input[type="radio"]:checked + label:after{
  223 + transform: scale(1);
  224 +}
  225 +.pure-checkbox input[type="radio"] + label:before{
  226 + border-radius: 50%;
  227 +}
  228 +.pure-checkbox input[type="checkbox"]:checked + label:before{
  229 + animation: borderscale 200ms ease-in;
  230 + background: $base-color;
  231 +}
  232 +.pure-checkbox input[type="checkbox"]:checked + label:after{
  233 + transform: rotate(-45deg) scale(1);
  234 +}
  235 +@keyframes borderscale {
  236 + 50% {
  237 + box-shadow: 0 0 0 2px $base-color;
  238 + }
  239 +}
0 \ No newline at end of file 240 \ No newline at end of file
400-SOURCECODE/Admin/src/app/angular2-multiselect-checkbox-dropdown/src/app/angular2-multiselect-dropdown/multiselect.component.ts 0 โ†’ 100644
  1 +import { Component, OnInit, NgModule, OnChanges, ViewEncapsulation,forwardRef, Input, Output, EventEmitter, ElementRef, AfterViewInit, Pipe, PipeTransform } from '@angular/core';
  2 +import { FormsModule, NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';
  3 +import { CommonModule } from '@angular/common';
  4 +import { ListItem , MyException} from './multiselect.model';
  5 +import { DropdownSettings } from './multiselect.interface';
  6 +import { ClickOutsideDirective } from './clickOutside';
  7 +import { ListFilterPipe } from './list-filter';
  8 +
  9 +export const DROPDOWN_CONTROL_VALUE_ACCESSOR: any = {
  10 + provide: NG_VALUE_ACCESSOR,
  11 + useExisting: forwardRef(() => AngularMultiSelect),
  12 + multi: true
  13 +};
  14 +const noop = () => {
  15 +};
  16 +
  17 +@Component({
  18 + selector:'angular2-multiselect',
  19 + templateUrl: './multiselect.component.html',
  20 + host: { '[class]' : 'defaultSettings.classes' },
  21 + styleUrls:['./multiselect.component.scss'],
  22 + providers: [DROPDOWN_CONTROL_VALUE_ACCESSOR]
  23 +})
  24 +
  25 +export class AngularMultiSelect implements OnInit, ControlValueAccessor {
  26 +
  27 + @Input()
  28 + data: Array<ListItem>;
  29 +
  30 + @Input()
  31 + settings:DropdownSettings;
  32 +
  33 + @Output('onSelect')
  34 + onSelect: EventEmitter<ListItem> = new EventEmitter<ListItem>();
  35 +
  36 + @Output('onDeSelect')
  37 + onDeSelect: EventEmitter<ListItem> = new EventEmitter<ListItem>();
  38 +
  39 + @Output('onSelectAll')
  40 + onSelectAll: EventEmitter<Array<ListItem>> = new EventEmitter<Array<ListItem>>();
  41 +
  42 + @Output('onDeSelectAll')
  43 + onDeSelectAll: EventEmitter<Array<ListItem>> = new EventEmitter<Array<ListItem>>();
  44 +
  45 + @Input()
  46 + selectedItems: Array<ListItem>;
  47 +
  48 + public isActive: boolean = false;
  49 + public isSelectAll: boolean = false;
  50 + filter: ListItem = new ListItem();
  51 + defaultSettings:DropdownSettings = {
  52 + singleSelection: false,
  53 + text:'Select',
  54 + enableCheckAll: true,
  55 + selectAllText: 'Select All',
  56 + unSelectAllText: 'UnSelect All',
  57 + enableSearchFilter: false,
  58 + maxHeight: 300,
  59 + badgeShowLimit: 999999999999,
  60 + classes:''
  61 + }
  62 + constructor(){
  63 +
  64 + }
  65 + ngOnInit(){
  66 + this.settings = Object.assign(this.defaultSettings, this.settings);
  67 + /* this.selectedItems = [];
  68 + for(var t=0;t<this.data.length;t++){
  69 + if(this.data[t]){
  70 + this.selectedItems.push(this.data[t]);
  71 + }
  72 + }*/
  73 +
  74 + }
  75 + onItemClick(item: ListItem,index){
  76 +
  77 + let found = this.isSelected(item);
  78 + let limit = this.selectedItems.length < this.settings.limitSelection ? true : false;
  79 +
  80 + if(!found){
  81 + if(this.settings.limitSelection){
  82 + if(limit){
  83 + this.addSelected(item);
  84 + this.onSelect.emit(item);
  85 + }
  86 + }
  87 + else{
  88 + this.addSelected(item);
  89 + this.onSelect.emit(item);
  90 + }
  91 +
  92 + }
  93 + else{
  94 + this.removeSelected(item);
  95 + this.onDeSelect.emit(item);
  96 + }
  97 + if(this.isSelectAll || this.data.length > this.selectedItems.length){
  98 + this.isSelectAll = false;
  99 + }
  100 + if(this.data.length == this.selectedItems.length){
  101 + this.isSelectAll = true;
  102 + }
  103 + }
  104 + private onTouchedCallback: () => void = noop;
  105 + private onChangeCallback: (_: any) => void = noop;
  106 +
  107 + writeValue(value: any) {
  108 + if (value !== undefined && value !== null) {
  109 + if(this.settings.singleSelection){
  110 + try{
  111 +
  112 + if(value.length > 1){
  113 + this.selectedItems = [value[0]];
  114 + throw new MyException(404, { "msg": "Single Selection Mode, Selected Items cannot have more than one item." });
  115 + }
  116 + else
  117 + this.selectedItems = value;
  118 + }
  119 + catch(e){
  120 + console.error(e.body.msg);
  121 + }
  122 +
  123 + }
  124 + else{
  125 + if(this.settings.limitSelection){
  126 + this.selectedItems = value.splice(0,this.settings.limitSelection);
  127 + }
  128 + else{
  129 + this.selectedItems = value;
  130 + }
  131 + }
  132 + } else {
  133 + this.selectedItems = [];
  134 + }
  135 + }
  136 +
  137 + //From ControlValueAccessor interface
  138 + registerOnChange(fn: any) {
  139 + this.onChangeCallback = fn;
  140 + }
  141 +
  142 + //From ControlValueAccessor interface
  143 + registerOnTouched(fn: any) {
  144 + this.onTouchedCallback = fn;
  145 + }
  146 + trackByFn(index,item){
  147 + return item.id;
  148 + }
  149 + isSelected(clickedItem:ListItem){
  150 + let found = false;
  151 + this.selectedItems.forEach(item => {
  152 + if(clickedItem.id === item.id){
  153 + found = true;
  154 + }
  155 + });
  156 + return found;
  157 + }
  158 + addSelected(item: ListItem){
  159 + if(this.settings.singleSelection){
  160 + this.selectedItems = [];
  161 + this.selectedItems.push(item);
  162 + }
  163 + else
  164 + this.selectedItems.push(item);
  165 + this.onChangeCallback(this.selectedItems);
  166 + }
  167 + removeSelected(clickedItem: ListItem){
  168 + this.selectedItems.forEach(item => {
  169 + if(clickedItem.id === item.id){
  170 + this.selectedItems.splice(this.selectedItems.indexOf(item),1);
  171 + }
  172 + });
  173 + this.onChangeCallback(this.selectedItems);
  174 + }
  175 + toggleDropdown(){
  176 + this.isActive = !this.isActive;
  177 + //date 8th july2021 :birendra
  178 + if(this.data.length == this.selectedItems.length){
  179 + this.isSelectAll = true;
  180 + }
  181 + if(this.isActive)
  182 + {
  183 + $('#courseDiv').css("height","340px");
  184 + }
  185 + else
  186 + {
  187 + $('#courseDiv').css("height","40px");
  188 + }
  189 +
  190 + }
  191 + closeDropdown(){
  192 + this.isActive = false;
  193 + $('#courseDiv').css("height","40px");
  194 + }
  195 + toggleSelectAll(){
  196 + if(!this.isSelectAll){
  197 + this.selectedItems = [];
  198 + this.selectedItems = this.data.slice();
  199 + this.isSelectAll = true;
  200 + this.onChangeCallback(this.selectedItems);
  201 + this.onSelectAll.emit(this.selectedItems);
  202 + }
  203 + else{
  204 + this.selectedItems = [];
  205 + this.isSelectAll = false;
  206 + this.onChangeCallback(this.selectedItems);
  207 + this.onDeSelectAll.emit(this.selectedItems);
  208 + }
  209 + }
  210 +}
  211 +
  212 +@NgModule({
  213 + imports: [ CommonModule,FormsModule ],
  214 + declarations: [AngularMultiSelect, ClickOutsideDirective, ListFilterPipe],
  215 + exports: [AngularMultiSelect, ClickOutsideDirective, ListFilterPipe]
  216 +})
  217 +export class AngularMultiSelectModule { }
400-SOURCECODE/Admin/src/app/angular2-multiselect-checkbox-dropdown/src/app/angular2-multiselect-dropdown/multiselect.interface.ts 0 โ†’ 100644
  1 +export interface DropdownSettings{
  2 + singleSelection: Boolean;
  3 + text: String;
  4 + enableCheckAll : Boolean;
  5 + selectAllText: String;
  6 + unSelectAllText: String;
  7 + enableSearchFilter: Boolean;
  8 + maxHeight: Number;
  9 + badgeShowLimit: Number;
  10 + classes: String;
  11 + limitSelection?: Number;
  12 +}
0 \ No newline at end of file 13 \ No newline at end of file
400-SOURCECODE/Admin/src/app/angular2-multiselect-checkbox-dropdown/src/app/angular2-multiselect-dropdown/multiselect.model.ts 0 โ†’ 100644
  1 +export class ListItem{
  2 + id: Number;
  3 + itemName: String
  4 +}
  5 +export class MyException {
  6 + status : number;
  7 + body : any;
  8 + constructor(status : number, body : any) {
  9 + this.status = status;
  10 + this.body = body;
  11 + }
  12 +
  13 +}
0 \ No newline at end of file 14 \ No newline at end of file
400-SOURCECODE/Admin/src/app/angular2-multiselect-checkbox-dropdown/tsconfig.json 0 โ†’ 100644
  1 +{
  2 + "compileOnSave": false,
  3 + "compilerOptions": {
  4 + "outDir": "./dist/out-tsc",
  5 + "baseUrl": "src",
  6 + "sourceMap": true,
  7 + "declaration": false,
  8 + "moduleResolution": "node",
  9 + "emitDecoratorMetadata": true,
  10 + "experimentalDecorators": true,
  11 + "target": "es5",
  12 + "typeRoots": [
  13 + "node_modules/@types"
  14 + ],
  15 + "lib": [
  16 + "es2016",
  17 + "dom"
  18 + ]
  19 + }
  20 +}
400-SOURCECODE/Admin/src/app/app.component.html
@@ -57,7 +57,7 @@ @@ -57,7 +57,7 @@
57 <!-- navigation --> 57 <!-- navigation -->
58 <div class="clearfix"></div> 58 <div class="clearfix"></div>
59 <div class="row"> 59 <div class="row">
60 - <router-outlet> 60 + <router-outlet (activate)="changeOfRoutes()">
61 <modal-confirm></modal-confirm> 61 <modal-confirm></modal-confirm>
62 </router-outlet> 62 </router-outlet>
63 </div> 63 </div>
400-SOURCECODE/Admin/src/app/app.component.ts
@@ -142,7 +142,8 @@ export class AppComponent implements OnInit { @@ -142,7 +142,8 @@ export class AppComponent implements OnInit {
142 userId: this.global.UserId, 142 userId: this.global.UserId,
143 tagName: tagname, 143 tagName: tagname,
144 SessionId:this.global.SessionId, 144 SessionId:this.global.SessionId,
145 - isSiteUser:this.global.isSiteUser 145 + isSiteUser:this.global.isSiteUser,
  146 + isAdmin:this.global.isAdmin
146 }).subscribe(status => { 147 }).subscribe(status => {
147 //console.log(status); 148 //console.log(status);
148 if(status=='False') 149 if(status=='False')
@@ -178,4 +179,13 @@ export class AppComponent implements OnInit { @@ -178,4 +179,13 @@ export class AppComponent implements OnInit {
178 //this.router.navigate([this.global.LiveURL]); 179 //this.router.navigate([this.global.LiveURL]);
179 } 180 }
180 181
  182 + changeOfRoutes()
  183 + {
  184 + //used to hide nevigation on ipad device while nevigate to page
  185 +
  186 + $('#navbar').removeClass('navbar-collapse collapse in');
  187 + $('#navbar').addClass('navbar-collapse collapse');
  188 +
  189 + }
  190 +
181 } 191 }
400-SOURCECODE/Admin/src/app/app.module.ts
@@ -16,6 +16,8 @@ import { BsDatepickerModule, ModalModule } from &#39;ngx-bootstrap&#39;; @@ -16,6 +16,8 @@ import { BsDatepickerModule, ModalModule } from &#39;ngx-bootstrap&#39;;
16 import { BsModalService } from 'ngx-bootstrap/modal'; 16 import { BsModalService } from 'ngx-bootstrap/modal';
17 import { BsDropdownModule } from 'ngx-bootstrap'; 17 import { BsDropdownModule } from 'ngx-bootstrap';
18 import { Ng2OrderModule } from 'ng2-order-pipe'; //importing the module 18 import { Ng2OrderModule } from 'ng2-order-pipe'; //importing the module
  19 +import { AngularMultiSelectModule } from './angular2-multiselect-checkbox-dropdown/angular2-multiselect-dropdown';
  20 +
19 21
20 //import { ModalModule } from 'ngx-bootstrap/modal'; 22 //import { ModalModule } from 'ngx-bootstrap/modal';
21 import { UpdateUserProfile } from './components/userentity/updateuserprofile.component'; 23 import { UpdateUserProfile } from './components/userentity/updateuserprofile.component';
@@ -86,7 +88,7 @@ import { MyFilterPipe } from &#39;./shared/my-filter.pipe&#39;; @@ -86,7 +88,7 @@ import { MyFilterPipe } from &#39;./shared/my-filter.pipe&#39;;
86 MyFilterPipe 88 MyFilterPipe
87 ], 89 ],
88 imports: [ 90 imports: [
89 - BrowserModule, AppRoutingModule, HttpClientModule, FormsModule, ReactiveFormsModule, HttpModule, Ng2Bs3ModalModule, 91 + BrowserModule, AppRoutingModule, HttpClientModule, FormsModule, ReactiveFormsModule, HttpModule, Ng2Bs3ModalModule,AngularMultiSelectModule,
90 BsDatepickerModule.forRoot(), ModalModule.forRoot(), BsDropdownModule.forRoot(), Ng2OrderModule,MomentModule,NgIdleKeepaliveModule.forRoot() 92 BsDatepickerModule.forRoot(), ModalModule.forRoot(), BsDropdownModule.forRoot(), Ng2OrderModule,MomentModule,NgIdleKeepaliveModule.forRoot()
91 //ModalModule.forRoot() 93 //ModalModule.forRoot()
92 // , AngularFireModule.initializeApp(firebaseConfig), 94 // , AngularFireModule.initializeApp(firebaseConfig),
400-SOURCECODE/Admin/src/app/components/LicenseEntity/license.service.ts
@@ -120,6 +120,11 @@ export class LicenseService{ @@ -120,6 +120,11 @@ export class LicenseService{
120 .map(this.extractData) 120 .map(this.extractData)
121 .catch((res: Response) => this.handleError(res)); 121 .catch((res: Response) => this.handleError(res));
122 } 122 }
  123 + GetLicenseAodCourse(licenseId: number) {
  124 + return this.http.get(this.commonService.resourceBaseUrl + "License/GetLicenseAodCourse?LicenseId=" + licenseId)
  125 + .map(this.extractData)
  126 + .catch((res: Response) => this.handleError(res));
  127 + }
123 128
124 InsertLicense(obj: any) { 129 InsertLicense(obj: any) {
125 //let options = new RequestOptions({ headers: this.headers }); 130 //let options = new RequestOptions({ headers: this.headers });
@@ -266,19 +271,35 @@ export class LicenseService{ @@ -266,19 +271,35 @@ export class LicenseService{
266 .catch((res: Response) => this.handleError(res)); 271 .catch((res: Response) => this.handleError(res));
267 } 272 }
268 273
269 - UpdateLicenseModulesStatus(jsonObj: any) { 274 + UpdateLicenseModulesStatus(jsonObj: any,isAodOn:boolean,CourseList:any) {
270 //let options = new RequestOptions({ headers: this.headers }); 275 //let options = new RequestOptions({ headers: this.headers });
271 var moduleStatusText = ''; 276 var moduleStatusText = '';
  277 + var CourseListText = '';
272 jsonObj.lstModuleStatus.forEach(element => { 278 jsonObj.lstModuleStatus.forEach(element => {
273 moduleStatusText += element.m_Item1 + '-' + element.m_Item2 + '|'; 279 moduleStatusText += element.m_Item1 + '-' + element.m_Item2 + '|';
274 }); 280 });
275 if(moduleStatusText != '') { 281 if(moduleStatusText != '') {
276 moduleStatusText = moduleStatusText.substr(0, moduleStatusText.length - 1); 282 moduleStatusText = moduleStatusText.substr(0, moduleStatusText.length - 1);
277 } 283 }
  284 +
  285 + if(isAodOn)
  286 + {
  287 + CourseList.forEach(element => {
  288 + CourseListText += element.CourseId + ',' + element.Status + '|';
  289 + });
  290 + if(CourseListText != '') {
  291 + CourseListText = CourseListText.substr(0, CourseListText.length - 1);
  292 + }
  293 +
  294 + }
  295 +
278 var jsonData = { 296 var jsonData = {
279 'licenseId': jsonObj.licenseId, 297 'licenseId': jsonObj.licenseId,
280 - 'moduleStatusText': moduleStatusText 298 + 'moduleStatusText': moduleStatusText,
  299 + 'isAodOn':isAodOn,
  300 + 'CourseListText':CourseListText
281 }; 301 };
  302 +
282 var headers = new Headers({ 303 var headers = new Headers({
283 'Content-Type': 'application/json' 304 'Content-Type': 'application/json'
284 }); 305 });
400-SOURCECODE/Admin/src/app/components/LicenseEntity/licensemodulesettings.component.html
@@ -43,41 +43,52 @@ @@ -43,41 +43,52 @@
43 </div> 43 </div>
44 </div> 44 </div>
45 45
46 - <div class="col-sm-12 padd-left0 padd-right0"> 46 + <div class="col-sm-12 padd-left0 padd-right0" style="height:720px">
47 47
48 <div class="well"> 48 <div class="well">
49 <div class="row"> 49 <div class="row">
50 - <div class="col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3"> 50 + <div class="col-sm-12 col-sm-offset-0 col-md-10 col-md-offset-1 col-lg-10 col-lg-offset-1">
51 <div class="panel-body"> 51 <div class="panel-body">
52 <!-- form --> 52 <!-- form -->
53 - <form class="form-horizontal" [formGroup]="updateModuleSettingsFrm" (submit)="UpdateLicenseModulesStatus(templatesuccess)"> 53 + <form class="form-horizontal" [formGroup]="updateModuleSettingsFrm">
54 <div class="form-group" *ngIf="lstModuleStatus!=null"> 54 <div class="form-group" *ngIf="lstModuleStatus!=null">
55 - <label for="inputPassword3" class="col-sm-3 control-label">Module :</label>  
56 - <div class="col-sm-9"> 55 + <label for="inputPassword3" class="col-sm-2 col-md-2 col-lg-3 control-label">Module :</label>
  56 + <div class="col-sm-10 col-md-8 col-lg-5">
57 <div class="row" *ngFor="let item of this.updateModuleSettingsFrm.controls['lstModuleStatus'].value; let i = index"> 57 <div class="row" *ngFor="let item of this.updateModuleSettingsFrm.controls['lstModuleStatus'].value; let i = index">
58 - <div class="col-sm-6"> 58 + <div class="col-sm-7 col-md-8 col-lg-8">
59 <span class="help-block">{{item.m_Item3}}</span> 59 <span class="help-block">{{item.m_Item3}}</span>
60 </div> 60 </div>
61 -  
62 - <div class="col-sm-6"> 61 + <div class="col-sm-3 col-md-3 col-lg-3">
63 <label class="radio-inline"> 62 <label class="radio-inline">
64 - <input name="{{item.m_Item3}}" [value]="true" type="radio" [(ngModel)]="item.m_Item2" [ngModelOptions]="{standalone: true}"> On 63 + <input name="{{item.m_Item3}}" [value]="true" type="radio" [(ngModel)]="item.m_Item2" [ngModelOptions]="{standalone: true}" (change)="handleChange(item.m_Item3,item.m_Item2)"> On
65 </label> 64 </label>
66 <label class="radio-inline"> 65 <label class="radio-inline">
67 - <input name="{{item.m_Item3}}" [value]="false" type="radio" [(ngModel)]="item.m_Item2" [ngModelOptions]="{standalone: true}"> Off 66 + <input name="{{item.m_Item3}}" [value]="false" type="radio" [(ngModel)]="item.m_Item2" [ngModelOptions]="{standalone: true}" (change)="handleChange(item.m_Item3,item.m_Item2)"> Off
68 </label> 67 </label>
69 </div> 68 </div>
  69 + <div id="courseDiv" class="col-sm-10 col-sm-offset-0 col-md-11 col-md-offset-0 col-lg-10 col-lg-offset-0" *ngIf="item.m_Item2==true && item.m_Item1==17">
  70 + <!-- multiselect.component.html page customized from node module 'angular2-multiselect-checkbox-dropdown'-->
  71 + <angular2-multiselect [data]="dropdownList" [(ngModel)]="selectedItems" formControlName="courselist"
  72 + [settings]="dropdownSettings"
  73 + (onSelect)="onItemSelect($event)"
  74 + (onDeSelect)="OnItemDeSelect($event)"
  75 + (onSelectAll)="onSelectAll($event)"
  76 + (onDeSelectAll)="onDeSelectAll($event)">
  77 + </angular2-multiselect>
  78 + </div>
70 </div> 79 </div>
71 </div> 80 </div>
72 - </div>  
73 - 81 +
  82 + </div>
  83 +
74 <div class="row"> 84 <div class="row">
75 - <div class="col-sm-12 marginTop20 text-center">  
76 - <button type="submit" class="btn btn-primary btn-sm" [disabled]="LicenseId == 0"><i class="fa fa-check"></i> Save</button> 85 + <div class="col-sm-12 col-md-12 col-lg-12 marginTop20 text-center">
  86 + <button (click)="UpdateLicenseModulesStatus(templatesuccess)" class="btn btn-primary btn-sm" [disabled]="LicenseId == 0"><i class="fa fa-check"></i> Update</button>
77 </div> 87 </div>
78 </div> 88 </div>
79 </form> 89 </form>
80 <!-- form --> 90 <!-- form -->
  91 +
81 </div> 92 </div>
82 </div> 93 </div>
83 94
400-SOURCECODE/Admin/src/app/components/LicenseEntity/licensemodulesettings.component.ts
@@ -25,6 +25,11 @@ export class LicenseModuleSettings implements OnInit { @@ -25,6 +25,11 @@ export class LicenseModuleSettings implements OnInit {
25 modalRef: BsModalRef; 25 modalRef: BsModalRef;
26 LicenseId:number=0; 26 LicenseId:number=0;
27 AccountNumber:string=''; 27 AccountNumber:string='';
  28 + aodModuleStatus: boolean;
  29 + aodAllCourseList=[];
  30 + dropdownList = [];
  31 + selectedItems = [];
  32 + dropdownSettings = {};
28 33
29 constructor(private _loadingService: LoadingService, private licenseService: LicenseService, 34 constructor(private _loadingService: LoadingService, private licenseService: LicenseService,
30 public globalService: GlobalService, 35 public globalService: GlobalService,
@@ -32,8 +37,10 @@ export class LicenseModuleSettings implements OnInit { @@ -32,8 +37,10 @@ export class LicenseModuleSettings implements OnInit {
32 private modalService: BsModalService, private _confirmService: ConfirmService) { } 37 private modalService: BsModalService, private _confirmService: ConfirmService) { }
33 38
34 ngOnInit(): void { 39 ngOnInit(): void {
  40 + this.aodModuleStatus=false;
  41 +
35 this._loadingService.ShowLoading("global-loading"); 42 this._loadingService.ShowLoading("global-loading");
36 - $('#accountSelect').chosen({allow_single_deselect:true,width:'200px',placeholder_text_single:'Select Account',search_contains:true }); 43 + $('#accountSelect').chosen({allow_single_deselect:true,width:'250px',placeholder_text_single:'Select Account',search_contains:true });
37 44
38 this.license = new License(); 45 this.license = new License();
39 this.alerts = ''; 46 this.alerts = '';
@@ -41,6 +48,7 @@ export class LicenseModuleSettings implements OnInit { @@ -41,6 +48,7 @@ export class LicenseModuleSettings implements OnInit {
41 licenseId: [0], 48 licenseId: [0],
42 accountNumber: [''], 49 accountNumber: [''],
43 lstModuleStatus: [this.fb.array([])], 50 lstModuleStatus: [this.fb.array([])],
  51 + courselist: []
44 }); 52 });
45 53
46 if (this.globalService.UserType > 2) { 54 if (this.globalService.UserType > 2) {
@@ -65,9 +73,9 @@ export class LicenseModuleSettings implements OnInit { @@ -65,9 +73,9 @@ export class LicenseModuleSettings implements OnInit {
65 var selectedText= $(".chosen-single span" ).text(); 73 var selectedText= $(".chosen-single span" ).text();
66 this.AccountNumberChanged(selectedValue,selectedText); 74 this.AccountNumberChanged(selectedValue,selectedText);
67 }); 75 });
68 - 76 +
69 } 77 }
70 - 78 +
71 openModal(template: TemplateRef<any>) { 79 openModal(template: TemplateRef<any>) {
72 this.modalRef = this.modalService.show(template); 80 this.modalRef = this.modalService.show(template);
73 } 81 }
@@ -91,8 +99,20 @@ export class LicenseModuleSettings implements OnInit { @@ -91,8 +99,20 @@ export class LicenseModuleSettings implements OnInit {
91 this.licenseService.GetLicenseModulesStatus(this.LicenseId) 99 this.licenseService.GetLicenseModulesStatus(this.LicenseId)
92 .subscribe(st => { 100 .subscribe(st => {
93 this.lstModuleStatus = st; 101 this.lstModuleStatus = st;
  102 + var aod= st.filter(item => item.m_Item1 ==17); //aod module
  103 + if(aod[0].m_Item2)
  104 + {
  105 + this.aodModuleStatus=true;
  106 + }
  107 +
94 this.updateModuleSettingsFrm.setControl('lstModuleStatus', this.fb.array(this.lstModuleStatus)); 108 this.updateModuleSettingsFrm.setControl('lstModuleStatus', this.fb.array(this.lstModuleStatus));
95 this._loadingService.HideLoading("global-loading"); 109 this._loadingService.HideLoading("global-loading");
  110 +
  111 + if(this.aodModuleStatus)
  112 + {
  113 + this.LoadAODCourseList();
  114 + }
  115 +
96 }, error => this.error = <any>error); 116 }, error => this.error = <any>error);
97 } 117 }
98 118
@@ -101,6 +121,8 @@ export class LicenseModuleSettings implements OnInit { @@ -101,6 +121,8 @@ export class LicenseModuleSettings implements OnInit {
101 this.lstModuleStatus = null; 121 this.lstModuleStatus = null;
102 this.LicenseId=LicenseId; 122 this.LicenseId=LicenseId;
103 this.AccountNumber=AccountNumber; 123 this.AccountNumber=AccountNumber;
  124 + this.aodModuleStatus=false;
  125 + this.aodAllCourseList=[];
104 126
105 this.updateModuleSettingsFrm.controls['licenseId'].setValue(LicenseId); 127 this.updateModuleSettingsFrm.controls['licenseId'].setValue(LicenseId);
106 this.updateModuleSettingsFrm.controls['accountNumber'].setValue(AccountNumber); 128 this.updateModuleSettingsFrm.controls['accountNumber'].setValue(AccountNumber);
@@ -108,6 +130,96 @@ export class LicenseModuleSettings implements OnInit { @@ -108,6 +130,96 @@ export class LicenseModuleSettings implements OnInit {
108 130
109 } 131 }
110 132
  133 + LoadAODCourseList()
  134 + {
  135 + this._loadingService.ShowLoading("global-loading");
  136 + this.aodAllCourseList=[];
  137 + this.dropdownList = [];
  138 + this.selectedItems = [];
  139 + this.dropdownSettings = {
  140 + singleSelection: false,
  141 + text:"AOD Courses List",
  142 + selectAllText:'Select All',
  143 + unSelectAllText:'UnSelect All',
  144 + enableSearchFilter: true,
  145 + maxHeight:200,
  146 + classes:"myclass custom-class"
  147 + };
  148 +
  149 + this.licenseService.GetLicenseAodCourse(this.LicenseId)
  150 + .subscribe(courselist => {
  151 + this.aodAllCourseList = courselist;
  152 + var selectedCourse= courselist.filter(item => item.Status ==true); //aod module
  153 +
  154 + for(var i=0;i<this.aodAllCourseList.length;i++)
  155 + {
  156 + this.dropdownList.push(
  157 + {"id":this.aodAllCourseList[i].CourseId.trim(),
  158 + "itemName":this.aodAllCourseList[i].CourseName
  159 + })
  160 + }
  161 + for(var i=0;i<selectedCourse.length;i++)
  162 + {
  163 + this.selectedItems.push(
  164 + {"id":selectedCourse[i].CourseId.trim(),
  165 + "itemName":selectedCourse[i].CourseName
  166 + })
  167 + }
  168 +
  169 + this._loadingService.HideLoading("global-loading");
  170 +
  171 + }, error => this.error = <any>error);
  172 +
  173 + }
  174 + updateAodCourseItemList(ischached:any,id:any)
  175 + {
  176 + let itemIndex = this.aodAllCourseList.findIndex(item => item.CourseId ==id);
  177 + this.aodAllCourseList[itemIndex].Status = ischached;
  178 + }
  179 + onItemSelect(item:any){
  180 + // console.log(item);
  181 + // console.log(this.selectedItems);
  182 + this.updateAodCourseItemList(true,item.id);
  183 + }
  184 + OnItemDeSelect(item:any){
  185 + // console.log(item);
  186 + this.updateAodCourseItemList(false,item.id);
  187 + }
  188 + onSelectAll(items: any){
  189 + //console.log(items);
  190 + //console.log(this.selectedItems);
  191 + for(var ind=0;ind<items.length;ind++)
  192 + {
  193 + this.updateAodCourseItemList(true,items[ind].id);
  194 + }
  195 +
  196 + }
  197 + onDeSelectAll(items: any){
  198 + //console.log(items);
  199 + //console.log(this.selectedItems);
  200 + // console.log(this.dropdownList);
  201 + for(var ind=0;ind<this.dropdownList.length;ind++)
  202 + {
  203 + this.updateAodCourseItemList(false,this.dropdownList[ind].id);
  204 + }
  205 + }
  206 + handleChange(evmoduleName,moduleValue) {
  207 + if (evmoduleName=='A.D.A.M. OnDemand') {
  208 + if(moduleValue==true)
  209 + {
  210 + this.aodModuleStatus=true;
  211 + if(this.aodAllCourseList.length==0)
  212 + {
  213 + this.LoadAODCourseList();
  214 + }
  215 + }
  216 + else
  217 + {
  218 + this.aodModuleStatus=false;
  219 + }
  220 + }
  221 + }
  222 +
111 AfterUpdateData(data, template) { 223 AfterUpdateData(data, template) {
112 if (data.Status == "false") { 224 if (data.Status == "false") {
113 this.alerts = "<span>License module status update unsuccessfull</span>"; 225 this.alerts = "<span>License module status update unsuccessfull</span>";
@@ -117,15 +229,24 @@ export class LicenseModuleSettings implements OnInit { @@ -117,15 +229,24 @@ export class LicenseModuleSettings implements OnInit {
117 this._loadingService.HideLoading("global-loading"); 229 this._loadingService.HideLoading("global-loading");
118 } 230 }
119 231
  232 + ErrorUpdateData(Error:any, template) {
  233 + this._confirmService.activate("License module update failed.", "alertMsg");
  234 + this._loadingService.HideLoading("global-loading");
  235 + }
  236 +
120 UpdateLicenseModulesStatus(template: TemplateRef<any>) { 237 UpdateLicenseModulesStatus(template: TemplateRef<any>) {
121 this.alerts = ''; 238 this.alerts = '';
122 if (this.alerts == '') { 239 if (this.alerts == '') {
123 this._loadingService.ShowLoading("global-loading"); 240 this._loadingService.ShowLoading("global-loading");
124 var obj = this.updateModuleSettingsFrm.value; 241 var obj = this.updateModuleSettingsFrm.value;
125 - return this.licenseService.UpdateLicenseModulesStatus(obj) 242 + return this.licenseService.UpdateLicenseModulesStatus(obj,this.aodModuleStatus,this.aodAllCourseList)
126 .subscribe( 243 .subscribe(
127 - n => (this.AfterUpdateData(n, template)),  
128 - error => this.error = <any>error); 244 + n =>{
  245 + this.AfterUpdateData(n, template)
  246 + },
  247 + error =>{
  248 + this.ErrorUpdateData(error, template)
  249 + });
129 } 250 }
130 } 251 }
131 252
400-SOURCECODE/Admin/src/app/components/UserEntity/user.service.ts
@@ -56,7 +56,7 @@ export class UserService { @@ -56,7 +56,7 @@ export class UserService {
56 56
57 //////////Manage UserLogin Status/////////// 57 //////////Manage UserLogin Status///////////
58 ManageUserLoginStatus(obj: any) { 58 ManageUserLoginStatus(obj: any) {
59 - var jsonData = { 'userId': obj.userId, 'tagName': obj.tagName,'SessionId': obj.SessionId,'isSiteUser': obj.isSiteUser }; 59 + var jsonData = { 'userId': obj.userId, 'tagName': obj.tagName,'SessionId': obj.SessionId,'isSiteUser': obj.isSiteUser,'isAdmin': obj.isAdmin };
60 console.log(obj); 60 console.log(obj);
61 var headers = new Headers({ 61 var headers = new Headers({
62 'Content-Type': 'application/json' 62 'Content-Type': 'application/json'
400-SOURCECODE/Admin/src/app/components/UserEntity/users.component.ts
@@ -408,7 +408,9 @@ export class UsersList implements OnInit, AfterViewChecked { @@ -408,7 +408,9 @@ export class UsersList implements OnInit, AfterViewChecked {
408 this.userservice.ManageUserLoginStatus({ 408 this.userservice.ManageUserLoginStatus({
409 userId: this.selectedId, 409 userId: this.selectedId,
410 tagName: 'adminlogout', 410 tagName: 'adminlogout',
411 - SessionId:this.global.SessionId 411 + SessionId:this.global.SessionId,
  412 + isSiteUser:this.global.isSiteUser,
  413 + isAdmin:this.global.isAdmin
412 }).subscribe(x => { 414 }).subscribe(x => {
413 console.log(x); 415 console.log(x);
414 this.EditbuttonStatus=undefined; 416 this.EditbuttonStatus=undefined;
400-SOURCECODE/Admin/src/app/shared/global.ts
@@ -29,6 +29,7 @@ export class GlobalService { @@ -29,6 +29,7 @@ export class GlobalService {
29 aiaPingInterval:number=0; 29 aiaPingInterval:number=0;
30 SessionId:number=0; 30 SessionId:number=0;
31 isSiteUser:boolean=false; 31 isSiteUser:boolean=false;
  32 + isAdmin:boolean=false;
32 RemoveColumns: Array<string> = ["Serial_No", "LicenseId","RowNum"] 33 RemoveColumns: Array<string> = ["Serial_No", "LicenseId","RowNum"]
33 error; 34 error;
34 public href: string = ""; 35 public href: string = "";
@@ -41,7 +42,7 @@ export class GlobalService { @@ -41,7 +42,7 @@ export class GlobalService {
41 var newsessionid = date.getTime();//timestamp is the number of milliseconds that have passed since January 1, 1970 42 var newsessionid = date.getTime();//timestamp is the number of milliseconds that have passed since January 1, 1970
42 localStorage.setItem('loggedInUserDetails', JSON.stringify( 43 localStorage.setItem('loggedInUserDetails', JSON.stringify(
43 { 44 {
44 - "Id": 1, "FirstName": "Maribel", "LastName": "sfsfsfsfsfsfs", "EmailId": "ravi.vishwakarma@ebix.com", "LoginId": "superadmin", "Password": "ebix@2016","aiaIdleTime": 300,"aiaIdleTimeOut": 30,"aiaPingInterval": 10,"SessionId":newsessionid,"isSiteUser":false, "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 45 + "Id": 1, "FirstName": "Maribel", "LastName": "sfsfsfsfsfsfs", "EmailId": "ravi.vishwakarma@ebix.com", "LoginId": "superadmin", "Password": "ebix@2016","aiaIdleTime": 300,"aiaIdleTimeOut": 30,"aiaPingInterval": 10,"SessionId":newsessionid,"isSiteUser":false,"isAdmin":true, "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
45 })); 46 }));
46 } 47 }
47 48
@@ -57,6 +58,7 @@ export class GlobalService { @@ -57,6 +58,7 @@ export class GlobalService {
57 this.aiaPingInterval=this.loggedInUser.aiaPingInterval; 58 this.aiaPingInterval=this.loggedInUser.aiaPingInterval;
58 this.SessionId=this.loggedInUser.SessionId; 59 this.SessionId=this.loggedInUser.SessionId;
59 this.isSiteUser=this.loggedInUser.isSiteUser; 60 this.isSiteUser=this.loggedInUser.isSiteUser;
  61 + this.isAdmin=this.loggedInUser.LicenseId==0?true:false;;
60 62
61 } 63 }
62 64