Commit fd98512bd97ca2431fca48cbbdfd3caacae97d84

Authored by Harpreet Banwait
1 parent 41ae1eb1

Discount Code work Completed.

Showing 24 changed files with 1578 additions and 84 deletions
400-SOURCECODE/AIAHTML5.ADMIN.API/AIAHTML5.ADMIN.API.csproj
@@ -159,6 +159,7 @@ @@ -159,6 +159,7 @@
159 <Compile Include="Controllers\AccountTypeController.cs" /> 159 <Compile Include="Controllers\AccountTypeController.cs" />
160 <Compile Include="Controllers\AddLicenseController.cs" /> 160 <Compile Include="Controllers\AddLicenseController.cs" />
161 <Compile Include="Controllers\CountryController.cs" /> 161 <Compile Include="Controllers\CountryController.cs" />
  162 + <Compile Include="Controllers\SubscriptionPriceController.cs" />
162 <Compile Include="Controllers\EditionTypeController.cs" /> 163 <Compile Include="Controllers\EditionTypeController.cs" />
163 <Compile Include="Controllers\HomeController.cs" /> 164 <Compile Include="Controllers\HomeController.cs" />
164 <Compile Include="Controllers\LicenseTypeController.cs" /> 165 <Compile Include="Controllers\LicenseTypeController.cs" />
@@ -709,6 +710,15 @@ @@ -709,6 +710,15 @@
709 <Compile Include="Entity\usp_DB_TblRowCOUNT_Result.cs"> 710 <Compile Include="Entity\usp_DB_TblRowCOUNT_Result.cs">
710 <DependentUpon>AIADBEntity.tt</DependentUpon> 711 <DependentUpon>AIADBEntity.tt</DependentUpon>
711 </Compile> 712 </Compile>
  713 + <Compile Include="Entity\usp_GetAccountTypeList_Result.cs">
  714 + <DependentUpon>AIADBEntity.tt</DependentUpon>
  715 + </Compile>
  716 + <Compile Include="Entity\Usp_GetSubscriptionPlans_Result.cs">
  717 + <DependentUpon>AIADBEntity.tt</DependentUpon>
  718 + </Compile>
  719 + <Compile Include="Entity\usp_GetUserType_Result.cs">
  720 + <DependentUpon>AIADBEntity.tt</DependentUpon>
  721 + </Compile>
712 <Compile Include="Entity\VocabLexicon.cs"> 722 <Compile Include="Entity\VocabLexicon.cs">
713 <DependentUpon>AIADBEntity.tt</DependentUpon> 723 <DependentUpon>AIADBEntity.tt</DependentUpon>
714 </Compile> 724 </Compile>
@@ -738,6 +748,7 @@ @@ -738,6 +748,7 @@
738 </Compile> 748 </Compile>
739 <Compile Include="Models\AppReponse.cs" /> 749 <Compile Include="Models\AppReponse.cs" />
740 <Compile Include="Models\DbModel.cs" /> 750 <Compile Include="Models\DbModel.cs" />
  751 + <Compile Include="Models\SubscriptionPriceModel.cs" />
741 <Compile Include="Models\StringExtensions.cs" /> 752 <Compile Include="Models\StringExtensions.cs" />
742 <Compile Include="Models\User.cs" /> 753 <Compile Include="Models\User.cs" />
743 <Compile Include="Models\DiscountCodeModel.cs" /> 754 <Compile Include="Models\DiscountCodeModel.cs" />
400-SOURCECODE/AIAHTML5.ADMIN.API/Controllers/SubscriptionPriceController.cs 0 → 100644
  1 +using System;
  2 +using System.Collections.Generic;
  3 +using System.Linq;
  4 +using System.Net;
  5 +using System.Net.Http;
  6 +using System.Web.Http;
  7 +using Newtonsoft.Json;
  8 +using Newtonsoft.Json.Linq;
  9 +using AIAHTML5.ADMIN.API.Models;
  10 +using System.Web.Http.Cors;
  11 +using System.Web.Cors;
  12 +using AIAHTML5.Server.Constants;
  13 +using log4net;
  14 +using System.Text;
  15 +using AIAHTML5.ADMIN.API.Entity;
  16 +
  17 +namespace AIAHTML5.ADMIN.API.Controllers
  18 +{
  19 +
  20 + [EnableCors(origins: "http://localhost:4200", headers: "*", methods: "*")]
  21 + [RoutePrefix("SubscriptionPrice")]
  22 + public class SubscriptionPriceController : ApiController
  23 + {
  24 + AIADatabaseV5Entities dbContext = new AIADatabaseV5Entities();
  25 +
  26 + [Route("Api/GetSubscriptionPrices")]
  27 + [HttpGet]
  28 + public HttpResponseMessage GetSubscriptionPrices(int editionId, int duration)
  29 + {
  30 + List<SubscriptionPriceModel> SubscriptionPriceList = new List<SubscriptionPriceModel>();
  31 + try
  32 + {
  33 + SubscriptionPriceList = SubscriptionPriceModel.GetSubscriptionPrices(dbContext, editionId, duration);
  34 + return Request.CreateResponse(HttpStatusCode.OK, SubscriptionPriceList);
  35 + }
  36 + catch (Exception ex)
  37 + {
  38 + // Log exception code goes here
  39 + return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message);
  40 + }
  41 + }
  42 +
  43 + [Route("Api/InsertSubscriptionPrice")]
  44 + [HttpPost]
  45 + public HttpResponseMessage InsertSubscriptionPrice(JObject jsonData)
  46 + {
  47 + bool Status = false;
  48 + SubscriptionPriceModel subscriptionPriceModel = new SubscriptionPriceModel();
  49 + subscriptionPriceModel.Id = jsonData["id"].Value<int>();
  50 + subscriptionPriceModel.Title = jsonData["title"].Value<string>();
  51 + subscriptionPriceModel.Price = jsonData["price"].Value<decimal>();
  52 + subscriptionPriceModel.Duration = jsonData["duration"].Value<int>();
  53 + subscriptionPriceModel.EditionId = jsonData["editionId"].Value<int>();
  54 + subscriptionPriceModel.IsActive = jsonData["isActive"].Value<bool>();
  55 + try
  56 + {
  57 + Status = SubscriptionPriceModel.InsertSubscriptionPrice(dbContext, subscriptionPriceModel);
  58 + if (Status)
  59 + {
  60 + return Request.CreateResponse(HttpStatusCode.OK, Status.ToString());
  61 + }
  62 + else
  63 + {
  64 + return Request.CreateErrorResponse(HttpStatusCode.BadRequest, Status.ToString());
  65 + }
  66 + }
  67 + catch (Exception ex)
  68 + {
  69 + // Log exception code goes here
  70 + return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message);
  71 + }
  72 + }
  73 +
  74 + [Route("Api/UpdateSubscriptionPrice")]
  75 + [HttpPost]
  76 + public HttpResponseMessage UpdateSubscriptionPrice(JObject jsonData)
  77 + {
  78 + bool Status = false;
  79 + SubscriptionPriceModel subscriptionPriceModel = new SubscriptionPriceModel();
  80 + subscriptionPriceModel.Id = jsonData["id"].Value<int>();
  81 + subscriptionPriceModel.Title = jsonData["title"].Value<string>();
  82 + subscriptionPriceModel.Price = jsonData["price"].Value<decimal>();
  83 + subscriptionPriceModel.Duration = jsonData["duration"].Value<int>();
  84 + subscriptionPriceModel.EditionId = jsonData["editionId"].Value<int>();
  85 + subscriptionPriceModel.IsActive = jsonData["isActive"].Value<bool>();
  86 + try
  87 + {
  88 + Status = SubscriptionPriceModel.UpdateSubscriptionPrice(dbContext, subscriptionPriceModel);
  89 + if (Status)
  90 + {
  91 + return Request.CreateResponse(HttpStatusCode.OK, Status.ToString());
  92 + }
  93 + else
  94 + {
  95 + return Request.CreateErrorResponse(HttpStatusCode.BadRequest, Status.ToString());
  96 + }
  97 + }
  98 + catch (Exception ex)
  99 + {
  100 + // Log exception code goes here
  101 + return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message);
  102 + }
  103 + }
  104 +
  105 + [Route("Api/DeleteSubscriptionPrice")]
  106 + [HttpPost]
  107 + public HttpResponseMessage DeleteSubscriptionPrice(int subscriptionPriceId)
  108 + {
  109 + bool Status = false;
  110 + try
  111 + {
  112 + Status = SubscriptionPriceModel.DeleteSubscriptionPrice(dbContext, subscriptionPriceId);
  113 + if (Status)
  114 + {
  115 + return Request.CreateResponse(HttpStatusCode.OK, Status.ToString());
  116 + }
  117 + else
  118 + {
  119 + return Request.CreateErrorResponse(HttpStatusCode.BadRequest, Status.ToString());
  120 + }
  121 + }
  122 + catch (Exception ex)
  123 + {
  124 + // Log exception code goes here
  125 + return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message);
  126 + }
  127 + }
  128 +
  129 + protected HttpResponseMessage ToJson(dynamic obj)
  130 + {
  131 + var response = Request.CreateResponse(HttpStatusCode.OK);
  132 + response.Content = new StringContent(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/jsonP");
  133 + return response;
  134 + }
  135 +
  136 + }
  137 +}
400-SOURCECODE/AIAHTML5.ADMIN.API/Entity/AIADBEntity.Context.cs
@@ -2887,5 +2887,120 @@ namespace AIAHTML5.ADMIN.API.Entity @@ -2887,5 +2887,120 @@ namespace AIAHTML5.ADMIN.API.Entity
2887 2887
2888 return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<GetDiscountCodes_Result>("GetDiscountCodes", sDiscountCodeParameter, sStartDateParameter, sEndDateParameter); 2888 return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<GetDiscountCodes_Result>("GetDiscountCodes", sDiscountCodeParameter, sStartDateParameter, sEndDateParameter);
2889 } 2889 }
  2890 +
  2891 + public virtual int Usp_DeleteSubscriptionPlan(Nullable<byte> id, ObjectParameter status)
  2892 + {
  2893 + var idParameter = id.HasValue ?
  2894 + new ObjectParameter("Id", id) :
  2895 + new ObjectParameter("Id", typeof(byte));
  2896 +
  2897 + return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("Usp_DeleteSubscriptionPlan", idParameter, status);
  2898 + }
  2899 +
  2900 + public virtual ObjectResult<Usp_GetSubscriptionPlans_Result> Usp_GetSubscriptionPlans(Nullable<byte> iEditionId, Nullable<byte> iDuration)
  2901 + {
  2902 + var iEditionIdParameter = iEditionId.HasValue ?
  2903 + new ObjectParameter("iEditionId", iEditionId) :
  2904 + new ObjectParameter("iEditionId", typeof(byte));
  2905 +
  2906 + var iDurationParameter = iDuration.HasValue ?
  2907 + new ObjectParameter("iDuration", iDuration) :
  2908 + new ObjectParameter("iDuration", typeof(byte));
  2909 +
  2910 + return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Usp_GetSubscriptionPlans_Result>("Usp_GetSubscriptionPlans", iEditionIdParameter, iDurationParameter);
  2911 + }
  2912 +
  2913 + public virtual int Usp_InsertSubscriptionPlan(Nullable<byte> id, string title, Nullable<decimal> price, Nullable<byte> duration, Nullable<byte> editionId, Nullable<bool> isActive, ObjectParameter status)
  2914 + {
  2915 + var idParameter = id.HasValue ?
  2916 + new ObjectParameter("Id", id) :
  2917 + new ObjectParameter("Id", typeof(byte));
  2918 +
  2919 + var titleParameter = title != null ?
  2920 + new ObjectParameter("Title", title) :
  2921 + new ObjectParameter("Title", typeof(string));
  2922 +
  2923 + var priceParameter = price.HasValue ?
  2924 + new ObjectParameter("Price", price) :
  2925 + new ObjectParameter("Price", typeof(decimal));
  2926 +
  2927 + var durationParameter = duration.HasValue ?
  2928 + new ObjectParameter("Duration", duration) :
  2929 + new ObjectParameter("Duration", typeof(byte));
  2930 +
  2931 + var editionIdParameter = editionId.HasValue ?
  2932 + new ObjectParameter("EditionId", editionId) :
  2933 + new ObjectParameter("EditionId", typeof(byte));
  2934 +
  2935 + var isActiveParameter = isActive.HasValue ?
  2936 + new ObjectParameter("IsActive", isActive) :
  2937 + new ObjectParameter("IsActive", typeof(bool));
  2938 +
  2939 + return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("Usp_InsertSubscriptionPlan", idParameter, titleParameter, priceParameter, durationParameter, editionIdParameter, isActiveParameter, status);
  2940 + }
  2941 +
  2942 + public virtual int Usp_UpdateSubscriptionPlan(Nullable<byte> id, string title, Nullable<decimal> price, Nullable<byte> duration, Nullable<byte> editionId, Nullable<bool> isActive, ObjectParameter status)
  2943 + {
  2944 + var idParameter = id.HasValue ?
  2945 + new ObjectParameter("Id", id) :
  2946 + new ObjectParameter("Id", typeof(byte));
  2947 +
  2948 + var titleParameter = title != null ?
  2949 + new ObjectParameter("Title", title) :
  2950 + new ObjectParameter("Title", typeof(string));
  2951 +
  2952 + var priceParameter = price.HasValue ?
  2953 + new ObjectParameter("Price", price) :
  2954 + new ObjectParameter("Price", typeof(decimal));
  2955 +
  2956 + var durationParameter = duration.HasValue ?
  2957 + new ObjectParameter("Duration", duration) :
  2958 + new ObjectParameter("Duration", typeof(byte));
  2959 +
  2960 + var editionIdParameter = editionId.HasValue ?
  2961 + new ObjectParameter("EditionId", editionId) :
  2962 + new ObjectParameter("EditionId", typeof(byte));
  2963 +
  2964 + var isActiveParameter = isActive.HasValue ?
  2965 + new ObjectParameter("IsActive", isActive) :
  2966 + new ObjectParameter("IsActive", typeof(bool));
  2967 +
  2968 + return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("Usp_UpdateSubscriptionPlan", idParameter, titleParameter, priceParameter, durationParameter, editionIdParameter, isActiveParameter, status);
  2969 + }
  2970 +
  2971 + public virtual ObjectResult<usp_GetAccountTypeList_Result> usp_GetAccountTypeList(Nullable<int> id)
  2972 + {
  2973 + var idParameter = id.HasValue ?
  2974 + new ObjectParameter("Id", id) :
  2975 + new ObjectParameter("Id", typeof(int));
  2976 +
  2977 + return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<usp_GetAccountTypeList_Result>("usp_GetAccountTypeList", idParameter);
  2978 + }
  2979 +
  2980 + public virtual ObjectResult<usp_GetUserType_Result> usp_GetUserType(Nullable<int> id)
  2981 + {
  2982 + var idParameter = id.HasValue ?
  2983 + new ObjectParameter("id", id) :
  2984 + new ObjectParameter("id", typeof(int));
  2985 +
  2986 + return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<usp_GetUserType_Result>("usp_GetUserType", idParameter);
  2987 + }
  2988 +
  2989 + public virtual int usp_UpdateUserId(Nullable<int> id, string userId, string olduserId, ObjectParameter status)
  2990 + {
  2991 + var idParameter = id.HasValue ?
  2992 + new ObjectParameter("Id", id) :
  2993 + new ObjectParameter("Id", typeof(int));
  2994 +
  2995 + var userIdParameter = userId != null ?
  2996 + new ObjectParameter("UserId", userId) :
  2997 + new ObjectParameter("UserId", typeof(string));
  2998 +
  2999 + var olduserIdParameter = olduserId != null ?
  3000 + new ObjectParameter("olduserId", olduserId) :
  3001 + new ObjectParameter("olduserId", typeof(string));
  3002 +
  3003 + return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("usp_UpdateUserId", idParameter, userIdParameter, olduserIdParameter, status);
  3004 + }
2890 } 3005 }
2891 } 3006 }
400-SOURCECODE/AIAHTML5.ADMIN.API/Entity/AIADBEntity.edmx
@@ -2615,6 +2615,44 @@ warning 6002: The table/view &#39;AIADatabaseV5.dbo.VocabTermNumberToSystemMap&#39; does @@ -2615,6 +2615,44 @@ warning 6002: The table/view &#39;AIADatabaseV5.dbo.VocabTermNumberToSystemMap&#39; does
2615 <Parameter Name="Status" Type="int" Mode="InOut" /> 2615 <Parameter Name="Status" Type="int" Mode="InOut" />
2616 </Function> 2616 </Function>
2617 <Function Name="usp_DB_TblRowCOUNT" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo" /> 2617 <Function Name="usp_DB_TblRowCOUNT" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo" />
  2618 + <Function Name="Usp_DeleteSubscriptionPlan" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
  2619 + <Parameter Name="Id" Type="tinyint" Mode="In" />
  2620 + <Parameter Name="Status" Type="bit" Mode="InOut" />
  2621 + </Function>
  2622 + <Function Name="usp_GetAccountTypeList" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
  2623 + <Parameter Name="Id" Type="int" Mode="In" />
  2624 + </Function>
  2625 + <Function Name="Usp_GetSubscriptionPlans" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
  2626 + <Parameter Name="iEditionId" Type="tinyint" Mode="In" />
  2627 + <Parameter Name="iDuration" Type="tinyint" Mode="In" />
  2628 + </Function>
  2629 + <Function Name="usp_GetUserType" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
  2630 + <Parameter Name="id" Type="int" Mode="In" />
  2631 + </Function>
  2632 + <Function Name="Usp_InsertSubscriptionPlan" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
  2633 + <Parameter Name="Id" Type="tinyint" Mode="In" />
  2634 + <Parameter Name="Title" Type="varchar" Mode="In" />
  2635 + <Parameter Name="Price" Type="money" Mode="In" />
  2636 + <Parameter Name="Duration" Type="tinyint" Mode="In" />
  2637 + <Parameter Name="EditionId" Type="tinyint" Mode="In" />
  2638 + <Parameter Name="IsActive" Type="bit" Mode="In" />
  2639 + <Parameter Name="Status" Type="bit" Mode="InOut" />
  2640 + </Function>
  2641 + <Function Name="Usp_UpdateSubscriptionPlan" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
  2642 + <Parameter Name="Id" Type="tinyint" Mode="In" />
  2643 + <Parameter Name="Title" Type="varchar" Mode="In" />
  2644 + <Parameter Name="Price" Type="money" Mode="In" />
  2645 + <Parameter Name="Duration" Type="tinyint" Mode="In" />
  2646 + <Parameter Name="EditionId" Type="tinyint" Mode="In" />
  2647 + <Parameter Name="IsActive" Type="bit" Mode="In" />
  2648 + <Parameter Name="Status" Type="bit" Mode="InOut" />
  2649 + </Function>
  2650 + <Function Name="usp_UpdateUserId" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
  2651 + <Parameter Name="Id" Type="int" Mode="In" />
  2652 + <Parameter Name="UserId" Type="varchar" Mode="In" />
  2653 + <Parameter Name="olduserId" Type="varchar" Mode="In" />
  2654 + <Parameter Name="Status" Type="int" Mode="InOut" />
  2655 + </Function>
2618 <EntityContainer Name="AIADatabaseV5ModelStoreContainer"> 2656 <EntityContainer Name="AIADatabaseV5ModelStoreContainer">
2619 <EntitySet Name="AccountType" EntityType="Self.AccountType" Schema="dbo" store:Type="Tables" /> 2657 <EntitySet Name="AccountType" EntityType="Self.AccountType" Schema="dbo" store:Type="Tables" />
2620 <EntitySet Name="Activity" EntityType="Self.Activity" Schema="dbo" store:Type="Tables" /> 2658 <EntitySet Name="Activity" EntityType="Self.Activity" Schema="dbo" store:Type="Tables" />
@@ -6039,6 +6077,44 @@ FROM [dbo].[VocabTermNumberToSystemMap] AS [VocabTermNumberToSystemMap]&lt;/Definin @@ -6039,6 +6077,44 @@ FROM [dbo].[VocabTermNumberToSystemMap] AS [VocabTermNumberToSystemMap]&lt;/Definin
6039 <Parameter Name="sStartDate" Mode="In" Type="String" /> 6077 <Parameter Name="sStartDate" Mode="In" Type="String" />
6040 <Parameter Name="sEndDate" Mode="In" Type="String" /> 6078 <Parameter Name="sEndDate" Mode="In" Type="String" />
6041 </FunctionImport> 6079 </FunctionImport>
  6080 + <FunctionImport Name="Usp_DeleteSubscriptionPlan">
  6081 + <Parameter Name="Id" Mode="In" Type="Byte" />
  6082 + <Parameter Name="Status" Mode="InOut" Type="Boolean" />
  6083 + </FunctionImport>
  6084 + <FunctionImport Name="Usp_GetSubscriptionPlans" ReturnType="Collection(AIADatabaseV5Model.Usp_GetSubscriptionPlans_Result)">
  6085 + <Parameter Name="iEditionId" Mode="In" Type="Byte" />
  6086 + <Parameter Name="iDuration" Mode="In" Type="Byte" />
  6087 + </FunctionImport>
  6088 + <FunctionImport Name="Usp_InsertSubscriptionPlan">
  6089 + <Parameter Name="Id" Mode="In" Type="Byte" />
  6090 + <Parameter Name="Title" Mode="In" Type="String" />
  6091 + <Parameter Name="Price" Mode="In" Type="Decimal" />
  6092 + <Parameter Name="Duration" Mode="In" Type="Byte" />
  6093 + <Parameter Name="EditionId" Mode="In" Type="Byte" />
  6094 + <Parameter Name="IsActive" Mode="In" Type="Boolean" />
  6095 + <Parameter Name="Status" Mode="InOut" Type="Boolean" />
  6096 + </FunctionImport>
  6097 + <FunctionImport Name="Usp_UpdateSubscriptionPlan">
  6098 + <Parameter Name="Id" Mode="In" Type="Byte" />
  6099 + <Parameter Name="Title" Mode="In" Type="String" />
  6100 + <Parameter Name="Price" Mode="In" Type="Decimal" />
  6101 + <Parameter Name="Duration" Mode="In" Type="Byte" />
  6102 + <Parameter Name="EditionId" Mode="In" Type="Byte" />
  6103 + <Parameter Name="IsActive" Mode="In" Type="Boolean" />
  6104 + <Parameter Name="Status" Mode="InOut" Type="Boolean" />
  6105 + </FunctionImport>
  6106 + <FunctionImport Name="usp_GetAccountTypeList" ReturnType="Collection(AIADatabaseV5Model.usp_GetAccountTypeList_Result)">
  6107 + <Parameter Name="Id" Mode="In" Type="Int32" />
  6108 + </FunctionImport>
  6109 + <FunctionImport Name="usp_GetUserType" ReturnType="Collection(AIADatabaseV5Model.usp_GetUserType_Result)">
  6110 + <Parameter Name="id" Mode="In" Type="Int32" />
  6111 + </FunctionImport>
  6112 + <FunctionImport Name="usp_UpdateUserId">
  6113 + <Parameter Name="Id" Mode="In" Type="Int32" />
  6114 + <Parameter Name="UserId" Mode="In" Type="String" />
  6115 + <Parameter Name="olduserId" Mode="In" Type="String" />
  6116 + <Parameter Name="Status" Mode="InOut" Type="Int32" />
  6117 + </FunctionImport>
6042 </EntityContainer> 6118 </EntityContainer>
6043 <ComplexType Name="DA_GetBaseLayer_Result"> 6119 <ComplexType Name="DA_GetBaseLayer_Result">
6044 <Property Type="Int32" Name="Id" Nullable="false" /> 6120 <Property Type="Int32" Name="Id" Nullable="false" />
@@ -6838,6 +6914,20 @@ FROM [dbo].[VocabTermNumberToSystemMap] AS [VocabTermNumberToSystemMap]&lt;/Definin @@ -6838,6 +6914,20 @@ FROM [dbo].[VocabTermNumberToSystemMap] AS [VocabTermNumberToSystemMap]&lt;/Definin
6838 <Property Type="String" Name="EndDate" Nullable="true" MaxLength="10" /> 6914 <Property Type="String" Name="EndDate" Nullable="true" MaxLength="10" />
6839 <Property Type="String" Name="Status" Nullable="false" MaxLength="8" /> 6915 <Property Type="String" Name="Status" Nullable="false" MaxLength="8" />
6840 </ComplexType> 6916 </ComplexType>
  6917 + <ComplexType Name="Usp_GetSubscriptionPlans_Result">
  6918 + <Property Type="Decimal" Name="price" Nullable="true" Precision="14" Scale="2" />
  6919 + <Property Type="String" Name="title" Nullable="false" MaxLength="50" />
  6920 + <Property Type="Int16" Name="Id" Nullable="false" />
  6921 + <Property Type="Byte" Name="Duration" Nullable="false" />
  6922 + </ComplexType>
  6923 + <ComplexType Name="usp_GetAccountTypeList_Result">
  6924 + <Property Type="Byte" Name="Id" Nullable="false" />
  6925 + <Property Type="String" Name="Title" Nullable="false" MaxLength="50" />
  6926 + </ComplexType>
  6927 + <ComplexType Name="usp_GetUserType_Result">
  6928 + <Property Type="Byte" Name="Id" Nullable="false" />
  6929 + <Property Type="String" Name="Title" Nullable="false" MaxLength="50" />
  6930 + </ComplexType>
6841 </Schema> 6931 </Schema>
6842 </edmx:ConceptualModels> 6932 </edmx:ConceptualModels>
6843 <!-- C-S mapping content --> 6933 <!-- C-S mapping content -->
@@ -9127,6 +9217,36 @@ FROM [dbo].[VocabTermNumberToSystemMap] AS [VocabTermNumberToSystemMap]&lt;/Definin @@ -9127,6 +9217,36 @@ FROM [dbo].[VocabTermNumberToSystemMap] AS [VocabTermNumberToSystemMap]&lt;/Definin
9127 </ComplexTypeMapping> 9217 </ComplexTypeMapping>
9128 </ResultMapping> 9218 </ResultMapping>
9129 </FunctionImportMapping> 9219 </FunctionImportMapping>
  9220 + <FunctionImportMapping FunctionImportName="Usp_DeleteSubscriptionPlan" FunctionName="AIADatabaseV5Model.Store.Usp_DeleteSubscriptionPlan" />
  9221 + <FunctionImportMapping FunctionImportName="Usp_GetSubscriptionPlans" FunctionName="AIADatabaseV5Model.Store.Usp_GetSubscriptionPlans">
  9222 + <ResultMapping>
  9223 + <ComplexTypeMapping TypeName="AIADatabaseV5Model.Usp_GetSubscriptionPlans_Result">
  9224 + <ScalarProperty Name="price" ColumnName="price" />
  9225 + <ScalarProperty Name="title" ColumnName="title" />
  9226 + <ScalarProperty Name="Id" ColumnName="Id" />
  9227 + <ScalarProperty Name="Duration" ColumnName="Duration" />
  9228 + </ComplexTypeMapping>
  9229 + </ResultMapping>
  9230 + </FunctionImportMapping>
  9231 + <FunctionImportMapping FunctionImportName="Usp_InsertSubscriptionPlan" FunctionName="AIADatabaseV5Model.Store.Usp_InsertSubscriptionPlan" />
  9232 + <FunctionImportMapping FunctionImportName="Usp_UpdateSubscriptionPlan" FunctionName="AIADatabaseV5Model.Store.Usp_UpdateSubscriptionPlan" />
  9233 + <FunctionImportMapping FunctionImportName="usp_GetAccountTypeList" FunctionName="AIADatabaseV5Model.Store.usp_GetAccountTypeList">
  9234 + <ResultMapping>
  9235 + <ComplexTypeMapping TypeName="AIADatabaseV5Model.usp_GetAccountTypeList_Result">
  9236 + <ScalarProperty Name="Id" ColumnName="Id" />
  9237 + <ScalarProperty Name="Title" ColumnName="Title" />
  9238 + </ComplexTypeMapping>
  9239 + </ResultMapping>
  9240 + </FunctionImportMapping>
  9241 + <FunctionImportMapping FunctionImportName="usp_GetUserType" FunctionName="AIADatabaseV5Model.Store.usp_GetUserType">
  9242 + <ResultMapping>
  9243 + <ComplexTypeMapping TypeName="AIADatabaseV5Model.usp_GetUserType_Result">
  9244 + <ScalarProperty Name="Id" ColumnName="Id" />
  9245 + <ScalarProperty Name="Title" ColumnName="Title" />
  9246 + </ComplexTypeMapping>
  9247 + </ResultMapping>
  9248 + </FunctionImportMapping>
  9249 + <FunctionImportMapping FunctionImportName="usp_UpdateUserId" FunctionName="AIADatabaseV5Model.Store.usp_UpdateUserId" />
9130 </EntityContainerMapping> 9250 </EntityContainerMapping>
9131 </Mapping> 9251 </Mapping>
9132 </edmx:Mappings> 9252 </edmx:Mappings>
400-SOURCECODE/AIAHTML5.ADMIN.API/Entity/Usp_GetSubscriptionPlans_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 Usp_GetSubscriptionPlans_Result
  15 + {
  16 + public Nullable<decimal> price { get; set; }
  17 + public string title { get; set; }
  18 + public short Id { get; set; }
  19 + public byte Duration { get; set; }
  20 + }
  21 +}
400-SOURCECODE/AIAHTML5.ADMIN.API/Entity/usp_GetAccountTypeList_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 usp_GetAccountTypeList_Result
  15 + {
  16 + public byte Id { get; set; }
  17 + public string Title { get; set; }
  18 + }
  19 +}
400-SOURCECODE/AIAHTML5.ADMIN.API/Entity/usp_GetUserType_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 usp_GetUserType_Result
  15 + {
  16 + public byte Id { get; set; }
  17 + public string Title { get; set; }
  18 + }
  19 +}
400-SOURCECODE/AIAHTML5.ADMIN.API/Models/DiscountCodeModel.cs
@@ -66,8 +66,8 @@ namespace AIAHTML5.ADMIN.API.Models @@ -66,8 +66,8 @@ namespace AIAHTML5.ADMIN.API.Models
66 { 66 {
67 try 67 try
68 { 68 {
69 - var result = dbContext.UpdateDiscount(discountCodeModel.Id, discountCodeModel.Percentage, discountCodeModel.StartDate.ToString(),  
70 - discountCodeModel.EndDate.ToString(), (byte?)(discountCodeModel.IsActive == true ? 1 : 0), discountCodeModel.DiscountCode); 69 + var result = dbContext.UpdateDiscount(discountCodeModel.Id, discountCodeModel.Percentage, discountCodeModel.StartDate.ToString("MM/dd/yyyy"),
  70 + discountCodeModel.EndDate.ToString("MM/dd/yyyy"), (byte?)(discountCodeModel.IsActive == true ? 1 : 0), discountCodeModel.DiscountCode);
71 if (result.Count() > 0) 71 if (result.Count() > 0)
72 { 72 {
73 return true; 73 return true;
400-SOURCECODE/AIAHTML5.ADMIN.API/Models/SubscriptionPriceModel.cs 0 → 100644
  1 +using System;
  2 +using System.Collections.Generic;
  3 +using System.Linq;
  4 +using System.Web;
  5 +using AIAHTML5.ADMIN.API.Entity;
  6 +
  7 +namespace AIAHTML5.ADMIN.API.Models
  8 +{
  9 + public class SubscriptionPriceModel
  10 + {
  11 + public int Id { get; set; }
  12 + public string Title { get; set; }
  13 + public decimal Price { get; set; }
  14 + public int Duration { get; set; }
  15 + public int EditionId { get; set; }
  16 + public bool IsActive { get; set; }
  17 +
  18 + public static List<SubscriptionPriceModel> GetSubscriptionPrices(AIADatabaseV5Entities dbContext, int editionId, int duration)
  19 + {
  20 + List<SubscriptionPriceModel> SubscriptionPriceList = new List<SubscriptionPriceModel>();
  21 + SubscriptionPriceModel SubscriptionPriceObj = new SubscriptionPriceModel();
  22 + try
  23 + {
  24 + var result = dbContext.Usp_GetSubscriptionPlans((byte?)editionId, (byte?)duration).ToList();
  25 + if (result.Count > 0)
  26 + {
  27 + foreach (var item in result)
  28 + {
  29 + SubscriptionPriceObj = new SubscriptionPriceModel();
  30 + SubscriptionPriceObj.Id = item.Id;
  31 + SubscriptionPriceObj.Title = item.title;
  32 + SubscriptionPriceObj.Price = item.price.Value;
  33 + SubscriptionPriceObj.Duration = item.Duration;
  34 + SubscriptionPriceObj.EditionId = item.Id;
  35 + SubscriptionPriceObj.IsActive = true ;
  36 + SubscriptionPriceList.Add(SubscriptionPriceObj);
  37 + }
  38 + }
  39 + }
  40 + catch (Exception ex) { }
  41 + return SubscriptionPriceList;
  42 + }
  43 +
  44 + public static bool InsertSubscriptionPrice(AIADatabaseV5Entities dbContext, SubscriptionPriceModel subscriptionPriceModel)
  45 + {
  46 + var spStatus = new System.Data.Objects.ObjectParameter("Status", 0);
  47 + try
  48 + {
  49 + dbContext.Usp_InsertSubscriptionPlan((byte?)subscriptionPriceModel.Id, subscriptionPriceModel.Title, (decimal?)subscriptionPriceModel.Price,
  50 + (byte?)subscriptionPriceModel.Duration, (byte?)subscriptionPriceModel.EditionId, subscriptionPriceModel.IsActive, spStatus);
  51 + if (spStatus.Value.ToString() == "1")
  52 + {
  53 + return true;
  54 + }
  55 + else
  56 + {
  57 + return false;
  58 + }
  59 + }
  60 + catch (Exception ex)
  61 + {
  62 + return false;
  63 + }
  64 + }
  65 +
  66 + public static bool UpdateSubscriptionPrice(AIADatabaseV5Entities dbContext, SubscriptionPriceModel subscriptionPriceModel)
  67 + {
  68 + var spStatus = new System.Data.Objects.ObjectParameter("Status", 0);
  69 + try
  70 + {
  71 + dbContext.Usp_UpdateSubscriptionPlan((byte?)subscriptionPriceModel.Id, subscriptionPriceModel.Title, subscriptionPriceModel.Price,
  72 + (byte?)subscriptionPriceModel.Duration, (byte?)subscriptionPriceModel.EditionId, subscriptionPriceModel.IsActive, spStatus);
  73 + if (spStatus.Value.ToString() == "1")
  74 + {
  75 + return true;
  76 + }
  77 + else
  78 + {
  79 + return false;
  80 + }
  81 + }
  82 + catch (Exception ex)
  83 + {
  84 + return false;
  85 + }
  86 + }
  87 +
  88 + public static bool DeleteSubscriptionPrice(AIADatabaseV5Entities dbContext, int subscriptionPriceId)
  89 + {
  90 + var spStatus = new System.Data.Objects.ObjectParameter("Status", 0);
  91 + try
  92 + {
  93 + dbContext.Usp_DeleteSubscriptionPlan((byte?)subscriptionPriceId, spStatus);
  94 + if (spStatus.Value.ToString() == "1")
  95 + {
  96 + return true;
  97 + }
  98 + else
  99 + {
  100 + return false;
  101 + }
  102 + }
  103 + catch (Exception ex)
  104 + {
  105 + return false;
  106 + }
  107 + }
  108 + }
  109 +}
0 \ No newline at end of file 110 \ No newline at end of file
400-SOURCECODE/AIAHTML5.ADMIN.Web/src/app/app.module.ts
@@ -6,6 +6,8 @@ import { RouterModule, Routes } from &#39;@angular/router&#39;; @@ -6,6 +6,8 @@ import { RouterModule, Routes } from &#39;@angular/router&#39;;
6 import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; 6 import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
7 import { APP_BASE_HREF } from '@angular/common'; 7 import { APP_BASE_HREF } from '@angular/common';
8 import { HttpModule } from '@angular/http'; 8 import { HttpModule } from '@angular/http';
  9 +import { Pipe, PipeTransform } from '@angular/core';
  10 +import { DatePipe } from '@angular/common';
9 11
10 //import { ModalModule } from 'ngx-bootstrap/modal'; 12 //import { ModalModule } from 'ngx-bootstrap/modal';
11 import { UpdateUserProfile } from './components/UpdateProfile/updateuserprofile.component'; 13 import { UpdateUserProfile } from './components/UpdateProfile/updateuserprofile.component';
@@ -38,8 +40,8 @@ import { GlobalService } from &#39;./Shared/global&#39;; @@ -38,8 +40,8 @@ import { GlobalService } from &#39;./Shared/global&#39;;
38 // useClass: MyInterceptor, 40 // useClass: MyInterceptor,
39 // multi: true 41 // multi: true
40 //} 42 //}
41 - { provide: APP_BASE_HREF, useValue: '/' }  
42 - , GlobalService 43 + { provide: APP_BASE_HREF, useValue: '/' }, DatePipe,
  44 + GlobalService
43 ], 45 ],
44 bootstrap: [AppComponent] 46 bootstrap: [AppComponent]
45 }) 47 })
400-SOURCECODE/AIAHTML5.ADMIN.Web/src/app/components/ManageDiscountCode.zip deleted
No preview for this file type
400-SOURCECODE/AIAHTML5.ADMIN.Web/src/app/components/ManageDiscountCode/managediscountcode.component.html
@@ -7,15 +7,9 @@ @@ -7,15 +7,9 @@
7 <!-- container --> 7 <!-- container -->
8 <div [className]="divClass"> 8 <div [className]="divClass">
9 <div class="container-fluid main-full"> 9 <div class="container-fluid main-full">
10 - <div class="form-group" *ngIf="alerts != ''">  
11 - <div class="col-xs-12">  
12 - <div class="alert alert-danger" [innerHTML]="alerts">  
13 - </div>  
14 - </div>  
15 - </div> 10 +
16 <!-- form --> 11 <!-- form -->
17 <form class="form-horizontal" [formGroup]="manageDiscountCodeFrm"> 12 <form class="form-horizontal" [formGroup]="manageDiscountCodeFrm">
18 -  
19 <div [style.visibility]="(Mode == 'Manage') ? 'visible' : 'hidden'" class="row"> 13 <div [style.visibility]="(Mode == 'Manage') ? 'visible' : 'hidden'" class="row">
20 <div class="well no-margin-btm"> 14 <div class="well no-margin-btm">
21 <div class="row"> 15 <div class="row">
@@ -40,8 +34,8 @@ @@ -40,8 +34,8 @@
40 <div id="datetimepicker1" class="input-group input-append date"> 34 <div id="datetimepicker1" class="input-group input-append date">
41 <input id="searchStartDate" type="text" class="form-control" formControlName="searchStartDate"> 35 <input id="searchStartDate" type="text" class="form-control" formControlName="searchStartDate">
42 <span class="input-group-btn add-on"> 36 <span class="input-group-btn add-on">
43 - <button class="btn btn-default" type="button"><i class="fa fa-calendar"></i></button>  
44 - </span> 37 + <button class="btn btn-default" type="button"><i class="fa fa-calendar"></i></button>
  38 + </span>
45 </div> 39 </div>
46 </div> 40 </div>
47 </div> 41 </div>
@@ -80,7 +74,7 @@ @@ -80,7 +74,7 @@
80 74
81 <div class="well"> 75 <div class="well">
82 <div class="table-responsive blue table-fixT"> 76 <div class="table-responsive blue table-fixT">
83 - <table class="table table-condensed table-bordered margin-btm0 table-striped table-hover table-fixed"> 77 + <table class="table table-condensed table-bordered margin-btm0 table-striped table-fixed">
84 <thead> 78 <thead>
85 <tr> 79 <tr>
86 <th>Discount Code</th> 80 <th>Discount Code</th>
@@ -91,7 +85,7 @@ @@ -91,7 +85,7 @@
91 </tr> 85 </tr>
92 </thead> 86 </thead>
93 <tbody> 87 <tbody>
94 - <tr *ngFor="let item of this.manageDiscountCodeFrm.controls['discountCodes'].value"> 88 + <tr *ngFor="let item of this.manageDiscountCodeFrm.controls['discountCodes'].value; let i = index" (click)="SetClickedRow(i, item)" [class.active]="i == selectedRow" [class.inactive]="i != selectedRow">
95 <td><input type="hidden" value="{{item.Id}}">{{item.DiscountCode}}</td> 89 <td><input type="hidden" value="{{item.Id}}">{{item.DiscountCode}}</td>
96 <td>{{item.Percentage | number : '1.2'}}</td> 90 <td>{{item.Percentage | number : '1.2'}}</td>
97 <td>{{item.StartDate | date: 'MM/dd/yyyy'}}</td> 91 <td>{{item.StartDate | date: 'MM/dd/yyyy'}}</td>
@@ -122,32 +116,43 @@ @@ -122,32 +116,43 @@
122 <div class="panel-body"> 116 <div class="panel-body">
123 <!-- form --> 117 <!-- form -->
124 <form class="form-horizontal" [formGroup]="insertUpdateDiscountCodeFrm" (submit)="InsertUpdateDiscountCode()"> 118 <form class="form-horizontal" [formGroup]="insertUpdateDiscountCodeFrm" (submit)="InsertUpdateDiscountCode()">
  119 + <div class="form-group" *ngIf="alerts != ''">
  120 + <div class="col-xs-12">
  121 + <div class="alert alert-danger" [innerHTML]="alerts">
  122 + </div>
  123 + </div>
  124 + </div>
  125 +
125 <div class="form-group"> 126 <div class="form-group">
126 <label for="discountCode" class="col-sm-4 control-label">Discount Code :</label> 127 <label for="discountCode" class="col-sm-4 control-label">Discount Code :</label>
127 <div class="col-sm-7"> 128 <div class="col-sm-7">
128 <input type="hidden" formControlName="discountId"> 129 <input type="hidden" formControlName="discountId">
129 - <input type="text" class="form-control" id="discountCode" placeholder="" formControlName="discountCode"> 130 + <input type="text" class="form-control" id="discountCode" formControlName="discountCode">
130 </div> 131 </div>
131 </div> 132 </div>
  133 +
132 <div class="form-group"> 134 <div class="form-group">
133 <label for="startDate" class="col-sm-4 control-label">Discount Start Date <span class="red">*</span> :</label> 135 <label for="startDate" class="col-sm-4 control-label">Discount Start Date <span class="red">*</span> :</label>
134 <div class="col-sm-7"> 136 <div class="col-sm-7">
135 - <div id="datetimepicker1" class="input-group input-group-sm input-append date">  
136 - <input type="text" class="form-control" id="startDate" formControlName="startDate"> 137 + <div id="bsdatetimepicker3" class="input-group input-group-sm input-append date">
  138 + <input type="text" class="form-control" formControlName="startDate" #dp3="bsDatepicker" bsDatepicker [(bsValue)]="bsValue3">
  139 + <div *ngIf="insertUpdateDiscountCodeFrm.controls.startDate.hasError('required') && insertUpdateDiscountCodeFrm.controls.startDate.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Discount start date is required</div>
137 <span class="input-group-btn add-on"> 140 <span class="input-group-btn add-on">
138 - <button class="btn btn-default" type="button"><i class="fa fa-calendar"></i></button>  
139 - </span> 141 + <button class="btn btn-default" type="button" (click)="dp3.toggle()"><i class="fa fa-calendar"></i></button>
  142 + </span>
140 </div> 143 </div>
141 </div> 144 </div>
142 </div> 145 </div>
  146 +
143 <div class="form-group"> 147 <div class="form-group">
144 <label for="endDate" class="col-sm-4 control-label">Discount End Date <span class="red">*</span> :</label> 148 <label for="endDate" class="col-sm-4 control-label">Discount End Date <span class="red">*</span> :</label>
145 <div class="col-sm-7"> 149 <div class="col-sm-7">
146 - <div id="datetimepicker2" class="input-group input-group-sm input-append date">  
147 - <input type="text" class="form-control" id="endDate" formControlName="endDate"> 150 + <div id="bdatetimepicker4" class="input-group input-group-sm input-append date">
  151 + <input type="text" class="form-control" formControlName="endDate" #dp4="bsDatepicker" bsDatepicker [(bsValue)]="bsValue4">
  152 + <div *ngIf="insertUpdateDiscountCodeFrm.controls.endDate.hasError('required') && insertUpdateDiscountCodeFrm.controls.endDate.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Discount end date is required</div>
148 <span class="input-group-btn add-on"> 153 <span class="input-group-btn add-on">
149 - <button class="btn btn-default" type="button"><i class="fa fa-calendar"></i></button>  
150 - </span> 154 + <button class="btn btn-default" type="button" (click)="dp4.toggle()"><i class="fa fa-calendar"></i></button>
  155 + </span>
151 </div> 156 </div>
152 </div> 157 </div>
153 </div> 158 </div>
@@ -155,16 +160,33 @@ @@ -155,16 +160,33 @@
155 <div class="form-group"> 160 <div class="form-group">
156 <label for="percentage" class="col-sm-4 control-label">Percentage <span class="red">*</span> :</label> 161 <label for="percentage" class="col-sm-4 control-label">Percentage <span class="red">*</span> :</label>
157 <div class="col-sm-7"> 162 <div class="col-sm-7">
158 - <input type="text" class="form-control" id="percentage" placeholder="" formControlName="percentage"> 163 + <input type="text" class="form-control" id="percentage" formControlName="percentage" maxlength="5">
  164 + <div *ngIf="insertUpdateDiscountCodeFrm.controls.percentage.hasError('required') && insertUpdateDiscountCodeFrm.controls.percentage.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Discount percentage is required</div>
  165 + <div *ngIf="insertUpdateDiscountCodeFrm.controls.percentage.hasError('pattern') && insertUpdateDiscountCodeFrm.controls.percentage.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Discount percentage must be numeric</div>
159 </div> 166 </div>
160 </div> 167 </div>
  168 +
  169 + <div class="form-group">
  170 + <label for="status" class="col-sm-4 control-label">Status :</label>
  171 + <div class="col-sm-7">
  172 + <label class="radio-inline">
  173 + <input name="isActive" value="true" type="radio" formControlName="isActive">
  174 + Active
  175 + </label>
  176 + <label class="radio-inline">
  177 + <input name="isActive" value="false" type="radio" formControlName="isActive">
  178 + Inactive
  179 + </label>
  180 + </div>
  181 + </div>
161 182
162 <div class="form-group"> 183 <div class="form-group">
163 <div class="col-sm-offset-4 col-sm-7 mar-top17"> 184 <div class="col-sm-offset-4 col-sm-7 mar-top17">
164 - <button type="submit" class="btn btn-primary btn-sm"><i class="fa fa-plus-circle"></i> Save</button> 185 + <button type="submit" [disabled]="!insertUpdateDiscountCodeFrm.valid" class="btn btn-primary btn-sm"><i class="fa fa-plus-circle"></i> Save</button>
165 <button type="button" (click)="CancelAddEdit()" class="btn btn-primary btn-sm"><i class="fa fa-times-circle"></i> Cancel</button> 186 <button type="button" (click)="CancelAddEdit()" class="btn btn-primary btn-sm"><i class="fa fa-times-circle"></i> Cancel</button>
166 </div> 187 </div>
167 </div> 188 </div>
  189 +
168 <!--cancel-button--> 190 <!--cancel-button-->
169 <div class="modal fade bs-example-modal-sm" tabindex="-1" role="dialog" id="mymodal"> 191 <div class="modal fade bs-example-modal-sm" tabindex="-1" role="dialog" id="mymodal">
170 <div class="modal-dialog modal-sm" role="document"> 192 <div class="modal-dialog modal-sm" role="document">
@@ -181,7 +203,6 @@ @@ -181,7 +203,6 @@
181 <div class="col-sm-12"><button class="btn btn-primary btn-sm">Ok</button></div> 203 <div class="col-sm-12"><button class="btn btn-primary btn-sm">Ok</button></div>
182 </div> 204 </div>
183 </div> 205 </div>
184 -  
185 </div> 206 </div>
186 <!-- /.modal-content --> 207 <!-- /.modal-content -->
187 </div> 208 </div>
@@ -189,6 +210,7 @@ @@ -189,6 +210,7 @@
189 </div> 210 </div>
190 <!-- /.modal --> 211 <!-- /.modal -->
191 <!--cancel-button--> 212 <!--cancel-button-->
  213 +
192 </form> 214 </form>
193 <!-- form --> 215 <!-- form -->
194 </div> 216 </div>
400-SOURCECODE/AIAHTML5.ADMIN.Web/src/app/components/ManageDiscountCode/managediscountcode.component.ts
@@ -5,6 +5,8 @@ import { FormControl, FormBuilder, FormGroup, Validators } from &#39;@angular/forms&#39; @@ -5,6 +5,8 @@ import { FormControl, FormBuilder, FormGroup, Validators } from &#39;@angular/forms&#39;
5 import { DiscountCode } from '../UpdateProfile/datamodel'; 5 import { DiscountCode } from '../UpdateProfile/datamodel';
6 import { BsDatepickerModule } from 'ngx-bootstrap'; 6 import { BsDatepickerModule } from 'ngx-bootstrap';
7 import { Http, Response } from '@angular/http'; 7 import { Http, Response } from '@angular/http';
  8 +import { Pipe, PipeTransform } from '@angular/core';
  9 +import { DatePipe } from '@angular/common';
8 10
9 //import { Global } from '../../Shared/global'; 11 //import { Global } from '../../Shared/global';
10 //import { DBOperation } from 'S'; 12 //import { DBOperation } from 'S';
@@ -25,7 +27,11 @@ error: any; @@ -25,7 +27,11 @@ error: any;
25 alerts: string; 27 alerts: string;
26 divClass: string = ''; 28 divClass: string = '';
27 topPos: string = '2000px'; 29 topPos: string = '2000px';
28 -bsValue: Date = new Date(); 30 +selectedRow: number = 0;
  31 +datePipe: DatePipe = new DatePipe('en-US');
  32 +bsValue3: Date = new Date();
  33 +bsValue4: Date = new Date();
  34 +selectedId: number = 0;
29 35
30 constructor(private manageDiscountCodeService: ManageDiscountCodeService, private router: Router, private fb: FormBuilder) { } 36 constructor(private manageDiscountCodeService: ManageDiscountCodeService, private router: Router, private fb: FormBuilder) { }
31 37
@@ -41,19 +47,23 @@ constructor(private manageDiscountCodeService: ManageDiscountCodeService, privat @@ -41,19 +47,23 @@ constructor(private manageDiscountCodeService: ManageDiscountCodeService, privat
41 }); 47 });
42 this.insertUpdateDiscountCodeFrm = this.fb.group({ 48 this.insertUpdateDiscountCodeFrm = this.fb.group({
43 discountId: [''], 49 discountId: [''],
44 - discountCode: ['', Validators.required], 50 + discountCode: [''],
45 startDate: ['', Validators.required], 51 startDate: ['', Validators.required],
46 endDate: ['', Validators.required], 52 endDate: ['', Validators.required],
47 - percentage: ['', Validators.required],  
48 - isActive: [''] 53 + percentage: ['', [Validators.required, Validators.pattern('[0-9.]*')]],
  54 + isActive: [true]
49 }); 55 });
50 this.SearchDiscountCodes(); 56 this.SearchDiscountCodes();
51 } 57 }
52 58
53 - SearchDiscountCodes() {  
54 - console.log(this.manageDiscountCodeFrm.controls['searchDiscountCode'].value + ', ' +  
55 - this.manageDiscountCodeFrm.controls['searchStartDate'].value + ', ' +  
56 - this.manageDiscountCodeFrm.controls['searchEndDate'].value); 59 + public SetClickedRow(i: number, item: any) {
  60 + this.selectedRow = i;
  61 + this.selectedId = item['Id'];
  62 + this.discountCode = item;
  63 + }
  64 +
  65 + public SearchDiscountCodes() {
  66 + this.selectedRow = -1;
57 this.manageDiscountCodeService.GetDiscountCodes( 67 this.manageDiscountCodeService.GetDiscountCodes(
58 { 68 {
59 discountCode: this.manageDiscountCodeFrm.controls['searchDiscountCode'].value, 69 discountCode: this.manageDiscountCodeFrm.controls['searchDiscountCode'].value,
@@ -66,21 +76,39 @@ constructor(private manageDiscountCodeService: ManageDiscountCodeService, privat @@ -66,21 +76,39 @@ constructor(private manageDiscountCodeService: ManageDiscountCodeService, privat
66 public InsertUpdateDiscountCode() { 76 public InsertUpdateDiscountCode() {
67 console.log('InsertUpdateDiscountCode'); 77 console.log('InsertUpdateDiscountCode');
68 this.alerts = ''; 78 this.alerts = '';
69 - 79 + if(parseInt(this.insertUpdateDiscountCodeFrm.value.percentage) > 100){
  80 + this.alerts = '<span>Percentage must be between 0 to 100</span>';
  81 + }
70 if(this.alerts == ''){ 82 if(this.alerts == ''){
71 var obj = this.insertUpdateDiscountCodeFrm.value; 83 var obj = this.insertUpdateDiscountCodeFrm.value;
72 - return this.manageDiscountCodeService.InsertDiscountCode(obj)  
73 - .subscribe(  
74 - n => (this.AfterInsertData(n)),  
75 - error => this.error = <any>error); 84 + if(obj.discountId == 0){
  85 + return this.manageDiscountCodeService.InsertDiscountCode(obj)
  86 + .subscribe(
  87 + n => (this.AfterInsertData(n)),
  88 + error => this.error = <any>error);
  89 + }
  90 + else{
  91 + return this.manageDiscountCodeService.UpdateDiscountCode(obj)
  92 + .subscribe(
  93 + n => (this.AfterUpdateData(n)),
  94 + error => this.error = <any>error);
  95 + }
76 } 96 }
77 } 97 }
78 98
79 AfterInsertData(data) { 99 AfterInsertData(data) {
80 if (data.Status == "false") { 100 if (data.Status == "false") {
81 - this.alerts = "<span>Password change unsuccessfully</span>"; 101 + this.alerts = "<span>Discount code save unsuccessfull</span>";
  102 + } else {
  103 + this.alerts = "<span>Discount code saved successfully</span>";
  104 + }
  105 + }
  106 +
  107 + AfterUpdateData(data) {
  108 + if (data.Status == "false") {
  109 + this.alerts = "<span>Discount code update unsuccessfull</span>";
82 } else { 110 } else {
83 - this.alerts = "<span>Password changed successfully</span>"; 111 + this.alerts = "<span>Discount code updated successfully</span>";
84 } 112 }
85 } 113 }
86 114
@@ -89,30 +117,39 @@ constructor(private manageDiscountCodeService: ManageDiscountCodeService, privat @@ -89,30 +117,39 @@ constructor(private manageDiscountCodeService: ManageDiscountCodeService, privat
89 this.manageDiscountCodeFrm.setControl('discountCodes', this.fb.array(this.discountCodes)); 117 this.manageDiscountCodeFrm.setControl('discountCodes', this.fb.array(this.discountCodes));
90 } 118 }
91 119
92 - ResetFormFields(){  
93 - this.manageDiscountCodeFrm.reset()  
94 - //this.manageDiscountCodeFrm.controls['loginId'].setValue(this.user.LoginId);  
95 - //this.manageDiscountCodeFrm.controls['oldPassword'].setValue('');  
96 - //this.manageDiscountCodeFrm.controls['newPassword'].setValue('');  
97 - //this.manageDiscountCodeFrm.controls['confirmPassword'].setValue('');  
98 - this.alerts = '';  
99 - }  
100 -  
101 AddDiscountCode(){ 120 AddDiscountCode(){
102 this.Mode = 'Add'; 121 this.Mode = 'Add';
103 this.topPos = '100px'; 122 this.topPos = '100px';
104 this.divClass = 'col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3'; 123 this.divClass = 'col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3';
  124 + this.insertUpdateDiscountCodeFrm.reset();
  125 + this.alerts = '';
  126 + this.insertUpdateDiscountCodeFrm.controls['discountId'].setValue(0);
  127 + this.insertUpdateDiscountCodeFrm.controls['discountCode'].setValue('');
  128 + this.insertUpdateDiscountCodeFrm.controls['startDate'].setValue('');
  129 + this.insertUpdateDiscountCodeFrm.controls['endDate'].setValue('');
  130 + this.insertUpdateDiscountCodeFrm.controls['percentage'].setValue('');
  131 + this.insertUpdateDiscountCodeFrm.controls['isActive'].setValue(true);
105 } 132 }
106 133
107 EditDiscountCode(){ 134 EditDiscountCode(){
108 this.Mode = 'Edit'; 135 this.Mode = 'Edit';
109 this.topPos = '100px'; 136 this.topPos = '100px';
110 this.divClass = 'col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3'; 137 this.divClass = 'col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3';
  138 + this.alerts = '';
  139 + this.insertUpdateDiscountCodeFrm.controls['discountId'].setValue(this.discountCode.Id);
  140 + this.insertUpdateDiscountCodeFrm.controls['discountCode'].setValue(this.discountCode.DiscountCode);
  141 + this.insertUpdateDiscountCodeFrm.controls['startDate'].setValue(this.datePipe.transform(this.discountCode.StartDate, 'MM/dd/yyyy'));
  142 + this.insertUpdateDiscountCodeFrm.controls['endDate'].setValue(this.datePipe.transform(this.discountCode.EndDate, 'MM/dd/yyyy'));
  143 + this.insertUpdateDiscountCodeFrm.controls['percentage'].setValue(this.discountCode.Percentage);
  144 + this.insertUpdateDiscountCodeFrm.controls['isActive'].setValue(this.discountCode.IsActive);
111 } 145 }
112 146
113 CancelAddEdit(){ 147 CancelAddEdit(){
114 this.Mode = 'Manage'; 148 this.Mode = 'Manage';
115 this.topPos = '2000px'; 149 this.topPos = '2000px';
116 this.divClass = 'col-sm-12'; 150 this.divClass = 'col-sm-12';
  151 + this.SearchDiscountCodes();
  152 + this.selectedRow = this.discountCodes.findIndex(C => C.Id == this.selectedId);
  153 + this.SetClickedRow(this.selectedRow, this.manageDiscountCodeFrm.controls['discountCodes'].value.find(C => C.Id == this.selectedId));
117 } 154 }
118 } 155 }
400-SOURCECODE/AIAHTML5.ADMIN.Web/src/app/components/ManageDiscountCode/managediscountcode.service.ts
@@ -49,12 +49,12 @@ export class ManageDiscountCodeService { @@ -49,12 +49,12 @@ export class ManageDiscountCodeService {
49 49
50 InsertDiscountCode(obj: any) { 50 InsertDiscountCode(obj: any) {
51 //let options = new RequestOptions({ headers: this.headers }); 51 //let options = new RequestOptions({ headers: this.headers });
52 - var jsonData = {'id': obj.userId, 'newPassword': obj.newPassword }; 52 + var jsonData = {'id': obj.discountId, 'discountCode': obj.discountCode, 'startDate': obj.startDate, 'endDate': obj.endDate, 'percentage': obj.percentage, 'isActive': obj.isActive };
53 console.log(obj); 53 console.log(obj);
54 var headers = new Headers({ 54 var headers = new Headers({
55 'Content-Type': 'application/json' 55 'Content-Type': 'application/json'
56 }); 56 });
57 - return this.http.post(this.commonService.resourceBaseUrl + "/api/ChangeUserPassword", 57 + return this.http.post(this.commonService.resourceBaseUrl + "/api/InsertDiscountCode",
58 JSON.stringify(jsonData), {headers: headers}) 58 JSON.stringify(jsonData), {headers: headers})
59 .map(this.extractData) 59 .map(this.extractData)
60 .catch((res: Response) => this.handleError(res)); 60 .catch((res: Response) => this.handleError(res));
@@ -62,12 +62,12 @@ export class ManageDiscountCodeService { @@ -62,12 +62,12 @@ export class ManageDiscountCodeService {
62 62
63 UpdateDiscountCode(obj: any) { 63 UpdateDiscountCode(obj: any) {
64 //let options = new RequestOptions({ headers: this.headers }); 64 //let options = new RequestOptions({ headers: this.headers });
65 - var jsonData = {'id': obj.userId, 'newPassword': obj.newPassword }; 65 + var jsonData = {'id': obj.discountId, 'discountCode': obj.discountCode, 'startDate': obj.startDate, 'endDate': obj.endDate, 'percentage': obj.percentage, 'isActive': obj.isActive };
66 console.log(obj); 66 console.log(obj);
67 var headers = new Headers({ 67 var headers = new Headers({
68 'Content-Type': 'application/json' 68 'Content-Type': 'application/json'
69 }); 69 });
70 - return this.http.post(this.commonService.resourceBaseUrl + "/api/ChangeUserPassword", 70 + return this.http.post(this.commonService.resourceBaseUrl + "/api/UpdateDiscountCode",
71 JSON.stringify(jsonData), {headers: headers}) 71 JSON.stringify(jsonData), {headers: headers})
72 .map(this.extractData) 72 .map(this.extractData)
73 .catch((res: Response) => this.handleError(res)); 73 .catch((res: Response) => this.handleError(res));
400-SOURCECODE/AIAHTML5.ADMIN.Web/src/app/components/SubscriptionPrice/subscriptionprice.component.html 0 → 100644
  1 +<div class="row">
  2 + <!-- main-heading -->
  3 + <div class="col-sm-12 pageHeading">
  4 + <h4>Subscription Price</h4>
  5 + </div>
  6 + <!-- main-heading -->
  7 + <!-- container -->
  8 + <div class="col-sm-12">
  9 +
  10 + <div class="container-fluid main-full">
  11 + <div class="row">
  12 + <div class="well marginBtm12">
  13 + <!--tab-content-->
  14 + <div>
  15 + <!-- Nav tabs -->
  16 + <ul class="nav nav-tabs" role="tablist">
  17 + <li role="presentation" class="active"><a href="#higher-edu" aria-controls="higher-edu" role="tab" data-toggle="tab">Higher Education Instructor</a></li>
  18 + <li role="presentation"><a href="#higher-school" aria-controls="higher-school" role="tab" data-toggle="tab">Higher School Instructor</a></li>
  19 + <li role="presentation"><a href="#higher-student" aria-controls="higher-student" role="tab" data-toggle="tab">Higher Education Student</a></li>
  20 + <li role="presentation"><a href="#higher-school-student" aria-controls="higher-school-student" role="tab" data-toggle="tab">Higher School Student</a></li>
  21 + <li role="presentation"><a href="#public-library" aria-controls="public-library" role="tab" data-toggle="tab">Public Library</a></li>
  22 + <li role="presentation"><a href="#academic-library" aria-controls="academic-library" role="tab" data-toggle="tab">Academic Library</a></li>
  23 + </ul>
  24 +
  25 + <!-- Tab panes -->
  26 + <div class="tab-content">
  27 + <!--first-table-->
  28 + <div role="tabpanel" class="tab-pane active" id="higher-edu">
  29 + <div class="table-responsive blue">
  30 + <table class="table table-condensed table-bordered margin-btm0 table-striped table-hover">
  31 +
  32 + <tbody>
  33 + <tr>
  34 + <th>Select</th>
  35 + <th>Subscription Type</th>
  36 + <th>Duration(in Month)</th>
  37 + <th>Price</th>
  38 + <th>Active</th>
  39 + </tr>
  40 + <tr>
  41 + <td><input value="" type="checkbox"></td>
  42 + <td contenteditable="true">A</td>
  43 + <td contenteditable="true">11</td>
  44 + <td contenteditable="true">349.95</td>
  45 + <td><input value="" type="checkbox" checked=""></td>
  46 + </tr>
  47 + <tr>
  48 + <td><input value="" type="checkbox"></td>
  49 + <td contenteditable="true">B</td>
  50 + <td contenteditable="true">23</td>
  51 + <td contenteditable="true">200</td>
  52 + <td><input value="" type="checkbox" checked=""></td>
  53 + </tr>
  54 + <tr>
  55 + <td><input value="" type="checkbox"></td>
  56 + <td contenteditable="true">1 year Single User Online Access</td>
  57 + <td contenteditable="true">11</td>
  58 + <td contenteditable="true">349.95</td>
  59 + <td><input value="" type="checkbox"></td>
  60 + </tr>
  61 + <tr>
  62 + <td><input value="" type="checkbox"></td>
  63 + <td contenteditable="true">1 year Single User Online Access</td>
  64 + <td contenteditable="true">23</td>
  65 + <td contenteditable="true">200</td>
  66 + <td><input value="" type="checkbox"></td>
  67 + </tr>
  68 + <tr>
  69 + <td><input value="" type="checkbox"></td>
  70 + <td contenteditable="true">1 year Single User Online Access</td>
  71 + <td contenteditable="true">11</td>
  72 + <td contenteditable="true">349.95</td>
  73 + <td><input value="" type="checkbox"></td>
  74 + </tr>
  75 + <tr>
  76 + <td><input value="" type="checkbox" checked=""></td>
  77 + <td contenteditable="true">1 year Single User Online Access</td>
  78 + <td contenteditable="true">23</td>
  79 + <td contenteditable="true">200</td>
  80 + <td><input value="" type="checkbox"></td>
  81 + </tr>
  82 + <tr>
  83 + <td><input value="" type="checkbox"></td>
  84 + <td contenteditable="true">1 year Single User Online Access</td>
  85 + <td contenteditable="true">1</td>
  86 + <td contenteditable="true">349.95</td>
  87 + <td><input value="" type="checkbox"></td>
  88 + </tr>
  89 + <tr>
  90 + <td><input value="" type="checkbox"></td>
  91 + <td contenteditable="true">1 year Single User Online Access</td>
  92 + <td contenteditable="true">23</td>
  93 + <td contenteditable="true">200</td>
  94 + <td><input value="" type="checkbox" checked=""></td>
  95 + </tr>
  96 + <tr>
  97 + <td><input value="" type="checkbox" checked=""></td>
  98 + <td contenteditable="true">1 year Single User Online Access</td>
  99 + <td contenteditable="true">11</td>
  100 + <td contenteditable="true">349.95</td>
  101 + <td><input value="" type="checkbox"></td>
  102 + </tr>
  103 + <tr>
  104 + <td><input value="" type="checkbox"></td>
  105 + <td contenteditable="true">1 year Single User Online Access</td>
  106 + <td contenteditable="true">23</td>
  107 + <td contenteditable="true">200</td>
  108 + <td><input value="" type="checkbox"></td>
  109 + </tr>
  110 + <tr>
  111 + <td><input value="" type="checkbox" checked=""></td>
  112 + <td contenteditable="true">1 year Single User Online Access</td>
  113 + <td contenteditable="true">11</td>
  114 + <td contenteditable="true">349.95</td>
  115 + <td><input value="" type="checkbox"></td>
  116 + </tr>
  117 + <tr>
  118 + <td><input value="" type="checkbox"></td>
  119 + <td contenteditable="true">1 year Single User Online Access</td>
  120 + <td contenteditable="true">23</td>
  121 + <td contenteditable="true">200</td>
  122 + <td><input value="" type="checkbox"></td>
  123 + </tr>
  124 + </tbody>
  125 + </table>
  126 + </div>
  127 + </div>
  128 + <!--first-table-->
  129 +
  130 + <!--second-table-->
  131 + <div role="tabpanel" class="tab-pane" id="higher-school">
  132 + <div class="table-responsive blue">
  133 + <table class="table table-condensed table-bordered margin-btm0 table-striped table-hover">
  134 + <tbody>
  135 + <tr>
  136 + <th>Select</th>
  137 + <th>Subscription Type</th>
  138 + <th>Duration(in Month)</th>
  139 + <th>Price</th>
  140 + <th>Active</th>
  141 + </tr>
  142 + <tr>
  143 + <td><input value="" type="checkbox"></td>
  144 + <td contenteditable="true">A</td>
  145 + <td contenteditable="true">11</td>
  146 + <td contenteditable="true">349.95</td>
  147 + <td><input value="" type="checkbox" checked=""></td>
  148 + </tr>
  149 + <tr>
  150 + <td><input value="" type="checkbox"></td>
  151 + <td contenteditable="true">B</td>
  152 + <td contenteditable="true">23</td>
  153 + <td contenteditable="true">200</td>
  154 + <td><input value="" type="checkbox" checked=""></td>
  155 + </tr>
  156 + <tr>
  157 + <td><input value="" type="checkbox"></td>
  158 + <td contenteditable="true">1 year Single User Online Access</td>
  159 + <td contenteditable="true">11</td>
  160 + <td contenteditable="true">349.95</td>
  161 + <td><input value="" type="checkbox"></td>
  162 + </tr>
  163 + <tr>
  164 + <td><input value="" type="checkbox"></td>
  165 + <td contenteditable="true">1 year Single User Online Access</td>
  166 + <td contenteditable="true">23</td>
  167 + <td contenteditable="true">200</td>
  168 + <td><input value="" type="checkbox"></td>
  169 + </tr>
  170 + <tr>
  171 + <td><input value="" type="checkbox"></td>
  172 + <td contenteditable="true">1 year Single User Online Access</td>
  173 + <td contenteditable="true">11</td>
  174 + <td contenteditable="true">349.95</td>
  175 + <td><input value="" type="checkbox"></td>
  176 + </tr>
  177 + <tr>
  178 + <td><input value="" type="checkbox" checked=""></td>
  179 + <td contenteditable="true">1 year Single User Online Access</td>
  180 + <td contenteditable="true">23</td>
  181 + <td contenteditable="true">200</td>
  182 + <td><input value="" type="checkbox"></td>
  183 + </tr>
  184 + <tr>
  185 + <td><input value="" type="checkbox"></td>
  186 + <td contenteditable="true">1 year Single User Online Access</td>
  187 + <td contenteditable="true">1</td>
  188 + <td contenteditable="true">349.95</td>
  189 + <td><input value="" type="checkbox"></td>
  190 + </tr>
  191 + <tr>
  192 + <td><input value="" type="checkbox"></td>
  193 + <td contenteditable="true">1 year Single User Online Access</td>
  194 + <td contenteditable="true">23</td>
  195 + <td contenteditable="true">200</td>
  196 + <td><input value="" type="checkbox" checked=""></td>
  197 + </tr>
  198 + </tbody>
  199 + </table>
  200 + </div>
  201 + </div>
  202 + <!--second-table-->
  203 +
  204 + <!--third-table-->
  205 + <div role="tabpanel" class="tab-pane" id="higher-student">
  206 + <div class="table-responsive blue">
  207 + <table class="table table-condensed table-bordered margin-btm0 table-striped table-hover">
  208 +
  209 + <tbody>
  210 + <tr>
  211 + <th>Select</th>
  212 + <th>Subscription Type</th>
  213 + <th>Duration(in Month)</th>
  214 + <th>Price</th>
  215 + <th>Active</th>
  216 + </tr>
  217 + <tr>
  218 + <td><input value="" type="checkbox"></td>
  219 + <td contenteditable="true">A</td>
  220 + <td contenteditable="true">11</td>
  221 + <td contenteditable="true">349.95</td>
  222 + <td><input value="" type="checkbox" checked=""></td>
  223 + </tr>
  224 + <tr>
  225 + <td><input value="" type="checkbox"></td>
  226 + <td contenteditable="true">B</td>
  227 + <td contenteditable="true">23</td>
  228 + <td contenteditable="true">200</td>
  229 + <td><input value="" type="checkbox" checked=""></td>
  230 + </tr>
  231 + <tr>
  232 + <td><input value="" type="checkbox"></td>
  233 + <td contenteditable="true">1 year Single User Online Access</td>
  234 + <td contenteditable="true">11</td>
  235 + <td contenteditable="true">349.95</td>
  236 + <td><input value="" type="checkbox"></td>
  237 + </tr>
  238 + <tr>
  239 + <td><input value="" type="checkbox"></td>
  240 + <td contenteditable="true">1 year Single User Online Access</td>
  241 + <td contenteditable="true">23</td>
  242 + <td contenteditable="true">200</td>
  243 + <td><input value="" type="checkbox"></td>
  244 + </tr>
  245 + <tr>
  246 + <td><input value="" type="checkbox"></td>
  247 + <td contenteditable="true">1 year Single User Online Access</td>
  248 + <td contenteditable="true">11</td>
  249 + <td contenteditable="true">349.95</td>
  250 + <td><input value="" type="checkbox"></td>
  251 + </tr>
  252 + <tr>
  253 + <td><input value="" type="checkbox" checked=""></td>
  254 + <td contenteditable="true">1 year Single User Online Access</td>
  255 + <td contenteditable="true">23</td>
  256 + <td contenteditable="true">200</td>
  257 + <td><input value="" type="checkbox"></td>
  258 + </tr>
  259 + <tr>
  260 + <td><input value="" type="checkbox"></td>
  261 + <td contenteditable="true">1 year Single User Online Access</td>
  262 + <td contenteditable="true">1</td>
  263 + <td contenteditable="true">349.95</td>
  264 + <td><input value="" type="checkbox"></td>
  265 + </tr>
  266 + <tr>
  267 + <td><input value="" type="checkbox"></td>
  268 + <td contenteditable="true">1 year Single User Online Access</td>
  269 + <td contenteditable="true">23</td>
  270 + <td contenteditable="true">200</td>
  271 + <td><input value="" type="checkbox" checked=""></td>
  272 + </tr>
  273 + <tr>
  274 + <td><input value="" type="checkbox" checked=""></td>
  275 + <td contenteditable="true">1 year Single User Online Access</td>
  276 + <td contenteditable="true">11</td>
  277 + <td contenteditable="true">349.95</td>
  278 + <td><input value="" type="checkbox"></td>
  279 + </tr>
  280 + <tr>
  281 + <td><input value="" type="checkbox"></td>
  282 + <td contenteditable="true">1 year Single User Online Access</td>
  283 + <td contenteditable="true">23</td>
  284 + <td contenteditable="true">200</td>
  285 + <td><input value="" type="checkbox"></td>
  286 + </tr>
  287 + <tr>
  288 + <td><input value="" type="checkbox" checked=""></td>
  289 + <td contenteditable="true">1 year Single User Online Access</td>
  290 + <td contenteditable="true">11</td>
  291 + <td contenteditable="true">349.95</td>
  292 + <td><input value="" type="checkbox"></td>
  293 + </tr>
  294 + <tr>
  295 + <td><input value="" type="checkbox"></td>
  296 + <td contenteditable="true">1 year Single User Online Access</td>
  297 + <td contenteditable="true">23</td>
  298 + <td contenteditable="true">200</td>
  299 + <td><input value="" type="checkbox"></td>
  300 + </tr>
  301 + </tbody>
  302 + </table>
  303 + </div>
  304 + </div>
  305 + <!--third-table-->
  306 +
  307 + <!--fourth-table-->
  308 + <div role="tabpanel" class="tab-pane" id="higher-school-student">
  309 + <div class="table-responsive blue">
  310 + <table class="table table-condensed table-bordered margin-btm0 table-striped table-hover">
  311 + <tbody>
  312 + <tr>
  313 + <th>Select</th>
  314 + <th>Subscription Type</th>
  315 + <th>Duration(in Month)</th>
  316 + <th>Price</th>
  317 + <th>Active</th>
  318 + </tr>
  319 + <tr>
  320 + <td><input value="" type="checkbox"></td>
  321 + <td contenteditable="true">A</td>
  322 + <td contenteditable="true">11</td>
  323 + <td contenteditable="true">349.95</td>
  324 + <td><input value="" type="checkbox" checked=""></td>
  325 + </tr>
  326 + <tr>
  327 + <td><input value="" type="checkbox"></td>
  328 + <td contenteditable="true">B</td>
  329 + <td contenteditable="true">23</td>
  330 + <td contenteditable="true">200</td>
  331 + <td><input value="" type="checkbox" checked=""></td>
  332 + </tr>
  333 + <tr>
  334 + <td><input value="" type="checkbox"></td>
  335 + <td contenteditable="true">1 year Single User Online Access</td>
  336 + <td contenteditable="true">11</td>
  337 + <td contenteditable="true">349.95</td>
  338 + <td><input value="" type="checkbox"></td>
  339 + </tr>
  340 + <tr>
  341 + <td><input value="" type="checkbox"></td>
  342 + <td contenteditable="true">1 year Single User Online Access</td>
  343 + <td contenteditable="true">23</td>
  344 + <td contenteditable="true">200</td>
  345 + <td><input value="" type="checkbox"></td>
  346 + </tr>
  347 + <tr>
  348 + <td><input value="" type="checkbox"></td>
  349 + <td contenteditable="true">1 year Single User Online Access</td>
  350 + <td contenteditable="true">11</td>
  351 + <td contenteditable="true">349.95</td>
  352 + <td><input value="" type="checkbox"></td>
  353 + </tr>
  354 + <tr>
  355 + <td><input value="" type="checkbox" checked=""></td>
  356 + <td contenteditable="true">1 year Single User Online Access</td>
  357 + <td contenteditable="true">23</td>
  358 + <td contenteditable="true">200</td>
  359 + <td><input value="" type="checkbox"></td>
  360 + </tr>
  361 + <tr>
  362 + <td><input value="" type="checkbox"></td>
  363 + <td contenteditable="true">1 year Single User Online Access</td>
  364 + <td contenteditable="true">1</td>
  365 + <td contenteditable="true">349.95</td>
  366 + <td><input value="" type="checkbox"></td>
  367 + </tr>
  368 + <tr>
  369 + <td><input value="" type="checkbox"></td>
  370 + <td contenteditable="true">1 year Single User Online Access</td>
  371 + <td contenteditable="true">23</td>
  372 + <td contenteditable="true">200</td>
  373 + <td><input value="" type="checkbox" checked=""></td>
  374 + </tr>
  375 + </tbody>
  376 + </table>
  377 + </div>
  378 + </div>
  379 + <!--fourth-table-->
  380 +
  381 + <!--fifth-table-->
  382 + <div role="tabpanel" class="tab-pane" id="public-library">
  383 + <div class="table-responsive blue">
  384 + <table class="table table-condensed table-bordered margin-btm0 table-striped table-hover">
  385 +
  386 + <tbody>
  387 + <tr>
  388 + <th>Select</th>
  389 + <th>Subscription Type</th>
  390 + <th>Duration(in Month)</th>
  391 + <th>Price</th>
  392 + <th>Active</th>
  393 + </tr>
  394 + <tr>
  395 + <td><input value="" type="checkbox"></td>
  396 + <td contenteditable="true">A</td>
  397 + <td contenteditable="true">11</td>
  398 + <td contenteditable="true">349.95</td>
  399 + <td><input value="" type="checkbox" checked=""></td>
  400 + </tr>
  401 + <tr>
  402 + <td><input value="" type="checkbox"></td>
  403 + <td contenteditable="true">B</td>
  404 + <td contenteditable="true">23</td>
  405 + <td contenteditable="true">200</td>
  406 + <td><input value="" type="checkbox" checked=""></td>
  407 + </tr>
  408 + <tr>
  409 + <td><input value="" type="checkbox"></td>
  410 + <td contenteditable="true">1 year Single User Online Access</td>
  411 + <td contenteditable="true">11</td>
  412 + <td contenteditable="true">349.95</td>
  413 + <td><input value="" type="checkbox"></td>
  414 + </tr>
  415 + <tr>
  416 + <td><input value="" type="checkbox"></td>
  417 + <td contenteditable="true">1 year Single User Online Access</td>
  418 + <td contenteditable="true">23</td>
  419 + <td contenteditable="true">200</td>
  420 + <td><input value="" type="checkbox"></td>
  421 + </tr>
  422 + <tr>
  423 + <td><input value="" type="checkbox"></td>
  424 + <td contenteditable="true">1 year Single User Online Access</td>
  425 + <td contenteditable="true">11</td>
  426 + <td contenteditable="true">349.95</td>
  427 + <td><input value="" type="checkbox"></td>
  428 + </tr>
  429 + <tr>
  430 + <td><input value="" type="checkbox" checked=""></td>
  431 + <td contenteditable="true">1 year Single User Online Access</td>
  432 + <td contenteditable="true">23</td>
  433 + <td contenteditable="true">200</td>
  434 + <td><input value="" type="checkbox"></td>
  435 + </tr>
  436 + <tr>
  437 + <td><input value="" type="checkbox"></td>
  438 + <td contenteditable="true">1 year Single User Online Access</td>
  439 + <td contenteditable="true">1</td>
  440 + <td contenteditable="true">349.95</td>
  441 + <td><input value="" type="checkbox"></td>
  442 + </tr>
  443 + <tr>
  444 + <td><input value="" type="checkbox"></td>
  445 + <td contenteditable="true">1 year Single User Online Access</td>
  446 + <td contenteditable="true">23</td>
  447 + <td contenteditable="true">200</td>
  448 + <td><input value="" type="checkbox" checked=""></td>
  449 + </tr>
  450 + <tr>
  451 + <td><input value="" type="checkbox" checked=""></td>
  452 + <td contenteditable="true">1 year Single User Online Access</td>
  453 + <td contenteditable="true">11</td>
  454 + <td contenteditable="true">349.95</td>
  455 + <td><input value="" type="checkbox"></td>
  456 + </tr>
  457 + <tr>
  458 + <td><input value="" type="checkbox"></td>
  459 + <td contenteditable="true">1 year Single User Online Access</td>
  460 + <td contenteditable="true">23</td>
  461 + <td contenteditable="true">200</td>
  462 + <td><input value="" type="checkbox"></td>
  463 + </tr>
  464 + <tr>
  465 + <td><input value="" type="checkbox" checked=""></td>
  466 + <td contenteditable="true">1 year Single User Online Access</td>
  467 + <td contenteditable="true">11</td>
  468 + <td contenteditable="true">349.95</td>
  469 + <td><input value="" type="checkbox"></td>
  470 + </tr>
  471 + <tr>
  472 + <td><input value="" type="checkbox"></td>
  473 + <td contenteditable="true">1 year Single User Online Access</td>
  474 + <td contenteditable="true">23</td>
  475 + <td contenteditable="true">200</td>
  476 + <td><input value="" type="checkbox"></td>
  477 + </tr>
  478 + </tbody>
  479 + </table>
  480 + </div>
  481 + </div>
  482 + <!--fifth-table-->
  483 +
  484 + <!--sixth-table-->
  485 + <div role="tabpanel" class="tab-pane" id="academic-library">
  486 + <div class="table-responsive blue">
  487 + <table class="table table-condensed table-bordered margin-btm0 table-striped table-hover">
  488 + <tbody>
  489 + <tr>
  490 + <th>Select</th>
  491 + <th>Subscription Type</th>
  492 + <th>Duration(in Month)</th>
  493 + <th>Price</th>
  494 + <th>Active</th>
  495 + </tr>
  496 + <tr>
  497 + <td><input value="" type="checkbox"></td>
  498 + <td contenteditable="true">A</td>
  499 + <td contenteditable="true">11</td>
  500 + <td contenteditable="true">349.95</td>
  501 + <td><input value="" type="checkbox" checked=""></td>
  502 + </tr>
  503 + <tr>
  504 + <td><input value="" type="checkbox"></td>
  505 + <td contenteditable="true">B</td>
  506 + <td contenteditable="true">23</td>
  507 + <td contenteditable="true">200</td>
  508 + <td><input value="" type="checkbox" checked=""></td>
  509 + </tr>
  510 + <tr>
  511 + <td><input value="" type="checkbox"></td>
  512 + <td contenteditable="true">1 year Single User Online Access</td>
  513 + <td contenteditable="true">11</td>
  514 + <td contenteditable="true">349.95</td>
  515 + <td><input value="" type="checkbox"></td>
  516 + </tr>
  517 + <tr>
  518 + <td><input value="" type="checkbox"></td>
  519 + <td contenteditable="true">1 year Single User Online Access</td>
  520 + <td contenteditable="true">23</td>
  521 + <td contenteditable="true">200</td>
  522 + <td><input value="" type="checkbox"></td>
  523 + </tr>
  524 + <tr>
  525 + <td><input value="" type="checkbox"></td>
  526 + <td contenteditable="true">1 year Single User Online Access</td>
  527 + <td contenteditable="true">11</td>
  528 + <td contenteditable="true">349.95</td>
  529 + <td><input value="" type="checkbox"></td>
  530 + </tr>
  531 + <tr>
  532 + <td><input value="" type="checkbox" checked=""></td>
  533 + <td contenteditable="true">1 year Single User Online Access</td>
  534 + <td contenteditable="true">23</td>
  535 + <td contenteditable="true">200</td>
  536 + <td><input value="" type="checkbox"></td>
  537 + </tr>
  538 + <tr>
  539 + <td><input value="" type="checkbox"></td>
  540 + <td contenteditable="true">1 year Single User Online Access</td>
  541 + <td contenteditable="true">1</td>
  542 + <td contenteditable="true">349.95</td>
  543 + <td><input value="" type="checkbox"></td>
  544 + </tr>
  545 + <tr>
  546 + <td><input value="" type="checkbox"></td>
  547 + <td contenteditable="true">1 year Single User Online Access</td>
  548 + <td contenteditable="true">23</td>
  549 + <td contenteditable="true">200</td>
  550 + <td><input value="" type="checkbox" checked=""></td>
  551 + </tr>
  552 + </tbody>
  553 + </table>
  554 + </div>
  555 + </div>
  556 + <!--sixth-table-->
  557 +
  558 + <div class="row">
  559 + <div class="col-sm-12 marginTop20 text-center">
  560 + <button class="btn btn-primary btn-sm"><i class="fa fa-plus-circle"></i> Add</button>
  561 + <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#mymodal"><i class="fa fa-trash"></i> Delete</button>
  562 + <!--modal-->
  563 + <div class="modal fade bs-example-modal-sm text-left" tabindex="-1" role="dialog" id="mymodal">
  564 + <div class="modal-dialog modal-sm" role="document">
  565 + <div class="modal-content">
  566 + <div class="modal-header annotation-modal-header ui-draggable-handle">
  567 + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
  568 + <h4 class="modal-title" id="">Alert</h4>
  569 + </div>
  570 + <div class="modal-body">
  571 + <h5>Please select subscription to delete.</h5>
  572 + </div>
  573 + <div class="modal-footer">
  574 + <div class="row">
  575 + <div class="col-sm-12"><button class="btn btn-primary btn-sm">Ok</button></div>
  576 + </div>
  577 + </div>
  578 +
  579 + </div>
  580 + <!-- /.modal-content -->
  581 + </div>
  582 + <!-- /.modal-dialog -->
  583 + </div>
  584 + <!-- /.modal -->
  585 + <!--modal-->
  586 + <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#mymodal1"><i class="fa fa-check"></i> Apply</button>
  587 + <!--modal-->
  588 + <div class="modal fade bs-example-modal-sm text-left" tabindex="-1" role="dialog" id="mymodal1">
  589 + <div class="modal-dialog modal-sm" role="document">
  590 + <div class="modal-content">
  591 + <div class="modal-header annotation-modal-header ui-draggable-handle">
  592 + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
  593 + <h4 class="modal-title" id="">Alert</h4>
  594 + </div>
  595 + <div class="modal-body">
  596 + <h5>Subscription type is required.</h5>
  597 + </div>
  598 + <div class="modal-footer">
  599 + <div class="row">
  600 + <div class="col-sm-12"><button class="btn btn-primary btn-sm">Ok</button></div>
  601 + </div>
  602 + </div>
  603 +
  604 + </div>
  605 + <!-- /.modal-content -->
  606 + </div>
  607 + <!-- /.modal-dialog -->
  608 + </div>
  609 + <!-- /.modal -->
  610 + <!--modal-->
  611 + <button class="btn btn-primary btn-sm"><i class="fa fa-close"></i> Cancel</button>
  612 + </div>
  613 + </div>
  614 + </div>
  615 + </div>
  616 + <!--tab-content-->
  617 + </div>
  618 + </div>
  619 +
  620 + </div>
  621 + </div>
  622 +
  623 + <!-- container -->
  624 +</div>
0 \ No newline at end of file 625 \ No newline at end of file
400-SOURCECODE/AIAHTML5.ADMIN.Web/src/app/components/SubscriptionPrice/subscriptionprice.component.ts 0 → 100644
  1 +import { Component, OnInit, AfterViewInit, Input, Output, EventEmitter } from '@angular/core';
  2 +import { SubscriptionPriceService } from './subscriptionprice.service';
  3 +import { Router } from '@angular/router';
  4 +import { FormControl, FormBuilder, FormGroup, Validators } from '@angular/forms';
  5 +import { SubscriptionPriceModel } from '../UpdateProfile/datamodel';
  6 +import { BsDatepickerModule } from 'ngx-bootstrap';
  7 +import { Http, Response } from '@angular/http';
  8 +import { Pipe, PipeTransform } from '@angular/core';
  9 +import { DatePipe } from '@angular/common';
  10 +
  11 +//import { Global } from '../../Shared/global';
  12 +//import { DBOperation } from 'S';
  13 +//import { Observable } from 'rxjs/Observable';
  14 +
  15 +@Component({
  16 + templateUrl: './subscriptionprice.component.html'
  17 +})
  18 +
  19 +export class SubscriptionPrice implements OnInit {
  20 +
  21 +Mode: string = 'Manage';
  22 +subscriptionPrice: SubscriptionPriceModel;
  23 +subscriptionPrices: Array<SubscriptionPriceModel>;
  24 +subscriptionPriceFrm: FormGroup;
  25 +insertUpdateSubscriptionPriceFrm: FormGroup;
  26 +error: any;
  27 +alerts: string;
  28 +divClass: string = '';
  29 +topPos: string = '2000px';
  30 +selectedRow: number = 0;
  31 +datePipe: DatePipe = new DatePipe('en-US');
  32 +bsValue3: Date = new Date();
  33 +bsValue4: Date = new Date();
  34 +selectedId: number = 0;
  35 +
  36 +constructor(private subscriptionPriceService: SubscriptionPriceService, private router: Router, private fb: FormBuilder) { }
  37 +
  38 + ngOnInit(): void {
  39 + this.divClass = 'col-sm-12';
  40 + this.subscriptionPrice = new SubscriptionPriceModel();
  41 + this.alerts = '';
  42 + this.subscriptionPriceFrm = this.fb.group({
  43 + searchSubscriptionPriceType: [''],
  44 + subscriptionPrices: this.fb.array([])
  45 + });
  46 + this.insertUpdateSubscriptionPriceFrm = this.fb.group({
  47 + discountId: [''],
  48 + discountCode: [''],
  49 + startDate: ['', Validators.required],
  50 + endDate: ['', Validators.required],
  51 + percentage: ['', [Validators.required, Validators.pattern('[0-9.]*')]],
  52 + isActive: [true]
  53 + });
  54 + this.SearchSubscriptionPrices();
  55 + }
  56 +
  57 + public SetClickedRow(i: number, item: any) {
  58 + this.selectedRow = i;
  59 + this.selectedId = item['Id'];
  60 + this.subscriptionPrice = item;
  61 + }
  62 +
  63 + public SearchSubscriptionPrices() {
  64 + this.selectedRow = -1;
  65 + this.subscriptionPriceService.GetSubscriptionPrices(
  66 + {
  67 + subscriptionPriceType: this.subscriptionPriceFrm.controls['searchSubscriptionPriceType'].value,
  68 + })
  69 + .subscribe(x => { this.BindFormFields(x) }, error => this.error = error);
  70 + }
  71 +
  72 + public InsertUpdateSubscriptionPrice() {
  73 + console.log('InsertUpdateSubscriptionPrice');
  74 + this.alerts = '';
  75 + if(parseInt(this.insertUpdateSubscriptionPriceFrm.value.percentage) > 100){
  76 + this.alerts = '<span>Percentage must be between 0 to 100</span>';
  77 + }
  78 + if(this.alerts == ''){
  79 + var obj = this.insertUpdateSubscriptionPriceFrm.value;
  80 + if(obj.discountId == 0){
  81 + return this.subscriptionPriceService.InsertDiscountCode(obj)
  82 + .subscribe(
  83 + n => (this.AfterInsertData(n)),
  84 + error => this.error = <any>error);
  85 + }
  86 + else{
  87 + return this.subscriptionPriceService.UpdateDiscountCode(obj)
  88 + .subscribe(
  89 + n => (this.AfterUpdateData(n)),
  90 + error => this.error = <any>error);
  91 + }
  92 + }
  93 + }
  94 +
  95 + AfterInsertData(data) {
  96 + if (data.Status == "false") {
  97 + this.alerts = "<span>Subscription price save unsuccessfull</span>";
  98 + } else {
  99 + this.alerts = "<span>Subscription price saved successfully</span>";
  100 + }
  101 + }
  102 +
  103 + AfterUpdateData(data) {
  104 + if (data.Status == "false") {
  105 + this.alerts = "<span>Subscription price update unsuccessfull</span>";
  106 + } else {
  107 + this.alerts = "<span>Subscription price updated successfully</span>";
  108 + }
  109 + }
  110 +
  111 + BindFormFields(data){
  112 + this.subscriptionPrices = data;
  113 + this.subscriptionPriceFrm.setControl('subscriptionPrices', this.fb.array(this.subscriptionPrices));
  114 + }
  115 +
  116 + AddDiscountCode(){
  117 + this.Mode = 'Add';
  118 + this.topPos = '100px';
  119 + this.divClass = 'col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3';
  120 + this.insertUpdateSubscriptionPriceFrm.reset();
  121 + this.alerts = '';
  122 + this.insertUpdateSubscriptionPriceFrm.controls['discountId'].setValue(0);
  123 + this.insertUpdateSubscriptionPriceFrm.controls['discountCode'].setValue('');
  124 + this.insertUpdateSubscriptionPriceFrm.controls['startDate'].setValue('');
  125 + this.insertUpdateSubscriptionPriceFrm.controls['endDate'].setValue('');
  126 + this.insertUpdateSubscriptionPriceFrm.controls['percentage'].setValue('');
  127 + this.insertUpdateSubscriptionPriceFrm.controls['isActive'].setValue(true);
  128 + }
  129 +
  130 + EditDiscountCode(){
  131 + this.Mode = 'Edit';
  132 + this.topPos = '100px';
  133 + this.divClass = 'col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3';
  134 + this.alerts = '';
  135 + this.insertUpdateSubscriptionPriceFrm.controls['discountId'].setValue(this.subscriptionPrice.Id);
  136 + this.insertUpdateSubscriptionPriceFrm.controls['discountCode'].setValue(this.subscriptionPrice.DiscountCode);
  137 + this.insertUpdateSubscriptionPriceFrm.controls['startDate'].setValue(this.datePipe.transform(this.subscriptionPrice.StartDate, 'MM/dd/yyyy'));
  138 + this.insertUpdateSubscriptionPriceFrm.controls['endDate'].setValue(this.datePipe.transform(this.subscriptionPrice.EndDate, 'MM/dd/yyyy'));
  139 + this.insertUpdateSubscriptionPriceFrm.controls['percentage'].setValue(this.subscriptionPrice.Percentage);
  140 + this.insertUpdateSubscriptionPriceFrm.controls['isActive'].setValue(this.subscriptionPrice.IsActive);
  141 + }
  142 +
  143 + CancelAddEdit(){
  144 + this.Mode = 'Manage';
  145 + this.topPos = '2000px';
  146 + this.divClass = 'col-sm-12';
  147 + this.SearchSubscriptionPrices();
  148 + this.selectedRow = this.subscriptionPrices.findIndex(C => C.Id == this.selectedId);
  149 + this.SetClickedRow(this.selectedRow, this.subscriptionPriceFrm.controls['subscriptionPrices'].value.find(C => C.Id == this.selectedId));
  150 + }
  151 +}
400-SOURCECODE/AIAHTML5.ADMIN.Web/src/app/components/SubscriptionPrice/subscriptionprice.service.ts 0 → 100644
  1 +import { Injectable, Inject } from '@angular/core';
  2 +//import { HttpClient, HttpParams, HttpRequest} from "@angular/common/http";
  3 +import { Http, Response, Headers, RequestOptions, HttpModule } from '@angular/http';
  4 +import 'rxjs/add/operator/map';
  5 +import 'rxjs/add/operator/catch';
  6 +import 'rxjs/add/observable/throw';
  7 +import 'rxjs/add/operator/do';
  8 +import { Observable } from 'rxjs/Observable';
  9 +import { GlobalService } from '../../Shared/global';
  10 +
  11 +@Injectable()
  12 +export class SubscriptionPriceService {
  13 +
  14 + constructor(private http: Http, private commonService: GlobalService ) { }
  15 +
  16 + //public GetUserById(Id: any): Observable<User> {
  17 + // return this.http.request<User>(
  18 + // 'GET',
  19 + // 'http://192.168.86.13:92/API/Api/Users/' + Id);
  20 + //}
  21 +
  22 + //GetUserByLoginIdPassword(LoginId: string, Password: string): Observable<User> {
  23 + // return this.http.request<User>(
  24 + // 'GET',
  25 + // 'http://192.168.86.13:92/API/Api/Users/{LoginId=' + LoginId + '&Password=' + Password + '}');
  26 + //}
  27 +
  28 + //UpdateProfile(UserObj: User): Observable<any> {
  29 + // return this.http.request<any>(
  30 + // 'POST',
  31 + // 'http://192.168.86.13:92/API/Api/Users/UpdateProfile',
  32 + // {
  33 + // body: UserObj
  34 + // });
  35 + //}
  36 +
  37 + GetSubscriptionPrices(obj: any) {
  38 + return this.http.get(this.commonService.resourceBaseUrl + "/api/GetSubscriptionPrices?editionId="
  39 + + obj.editionId + "&duration=" + obj.duration)
  40 + .map(this.extractData)
  41 + .catch((res: Response) => this.handleError(res));
  42 + }
  43 +
  44 + InsertSubscriptionPrice(obj: any) {
  45 + //let options = new RequestOptions({ headers: this.headers });
  46 + var jsonData = {'id': obj.discountId, 'discountCode': obj.discountCode, 'startDate': obj.startDate, 'endDate': obj.endDate, 'percentage': obj.percentage, 'isActive': obj.isActive };
  47 + console.log(obj);
  48 + var headers = new Headers({
  49 + 'Content-Type': 'application/json'
  50 + });
  51 + return this.http.post(this.commonService.resourceBaseUrl + "/api/InsertSubscriptionPrice",
  52 + JSON.stringify(jsonData), {headers: headers})
  53 + .map(this.extractData)
  54 + .catch((res: Response) => this.handleError(res));
  55 + }
  56 +
  57 + UpdateSubscriptionPrice(obj: any) {
  58 + //let options = new RequestOptions({ headers: this.headers });
  59 + var jsonData = {'id': obj.discountId, 'discountCode': obj.discountCode, 'startDate': obj.startDate, 'endDate': obj.endDate, 'percentage': obj.percentage, 'isActive': obj.isActive };
  60 + console.log(obj);
  61 + var headers = new Headers({
  62 + 'Content-Type': 'application/json'
  63 + });
  64 + return this.http.post(this.commonService.resourceBaseUrl + "/api/UpdateSubscriptionPrice",
  65 + JSON.stringify(jsonData), {headers: headers})
  66 + .map(this.extractData)
  67 + .catch((res: Response) => this.handleError(res));
  68 + }
  69 +
  70 + extractData(res: Response) {
  71 + //debugger;
  72 + let body = res.json();
  73 + return body;
  74 + }
  75 +
  76 + handleError(error: any) {
  77 + // In a real world app, we might use a remote logging infrastructure
  78 + // We'd also dig deeper into the error to get a better message
  79 + let errMsg = (error.message) ? error.message :
  80 + error.status ? `${error.status} - ${error.statusText}` : 'Server error';
  81 + console.error(errMsg); // log to console instead
  82 + return Observable.throw(errMsg);
  83 + }
  84 +
  85 + ////public GetUserById(url: string): Observable<any> {
  86 +
  87 + //// return this._http.get(url)
  88 + //// .map((response: Response) => <any>response.json())
  89 + //// .do(data => console.log("All: " + JSON.stringify(data)))
  90 + //// .catch(this.handleError);
  91 + ////}
  92 + //// private handleError(error: Response) {
  93 + //// console.error(error);
  94 + //// return Observable.throw(error.json().error || 'Server error');
  95 + //// }
  96 +
  97 +}
400-SOURCECODE/AIAHTML5.ADMIN.Web/src/app/components/UpdateProfile/datamodel.ts
@@ -25,6 +25,15 @@ export class DiscountCode { @@ -25,6 +25,15 @@ export class DiscountCode {
25 IsActive: boolean; 25 IsActive: boolean;
26 } 26 }
27 27
  28 +export class SubscriptionPriceModel {
  29 + Id: number;
  30 + Title: string;
  31 + Price: DoubleRange;
  32 + Duration: number;
  33 + EditionId: number;
  34 + IsActive: boolean;
  35 +}
  36 +
28 //export class User { 37 //export class User {
29 // userId: number; 38 // userId: number;
30 // firstName: string; 39 // firstName: string;
400-SOURCECODE/AIAHTML5.ADMIN.Web/src/app/shared/enum.js deleted
1 -"use strict";  
2 -Object.defineProperty(exports, "__esModule", { value: true });  
3 -var DBOperation;  
4 -(function (DBOperation) {  
5 - DBOperation[DBOperation["create"] = 1] = "create";  
6 - DBOperation[DBOperation["update"] = 2] = "update";  
7 - DBOperation[DBOperation["delete"] = 3] = "delete";  
8 -})(DBOperation = exports.DBOperation || (exports.DBOperation = {}));  
9 -//# sourceMappingURL=enum.js.map  
10 \ No newline at end of file 0 \ No newline at end of file
400-SOURCECODE/AIAHTML5.ADMIN.Web/src/app/shared/enum.js.map deleted
1 -{"version":3,"file":"enum.js","sourceRoot":"","sources":["enum.ts"],"names":[],"mappings":";;AAAA,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,iDAAU,CAAA;IACV,iDAAU,CAAA;IACV,iDAAS,CAAA;AACb,CAAC,EAJW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAItB"}  
2 \ No newline at end of file 0 \ No newline at end of file
400-SOURCECODE/AIAHTML5.ADMIN.Web/src/app/shared/global.js deleted
1 -"use strict";  
2 -Object.defineProperty(exports, "__esModule", { value: true });  
3 -var Global = (function () {  
4 - function Global() {  
5 - }  
6 - return Global;  
7 -}());  
8 -Global.BASE_USER_ENDPOINT = 'api/userapi/';  
9 -exports.Global = Global;  
10 -//# sourceMappingURL=global.js.map  
11 \ No newline at end of file 0 \ No newline at end of file
400-SOURCECODE/AIAHTML5.ADMIN.Web/src/app/shared/global.js.map deleted
1 -{"version":3,"file":"global.js","sourceRoot":"","sources":["global.ts"],"names":[],"mappings":";;AAAA;IAAA;IAEA,CAAC;IAAD,aAAC;AAAD,CAAC,AAFD;AACkB,yBAAkB,GAAG,cAAc,CAAC;AADzC,wBAAM"}  
2 \ No newline at end of file 0 \ No newline at end of file
400-SOURCECODE/AIAHTML5.ADMIN.Web/src/assets/styles/admin-custom.css
@@ -147,4 +147,14 @@ @@ -147,4 +147,14 @@
147 } 147 }
148 .table-fixed thead { 148 .table-fixed thead {
149 width: calc( 100% - 0em ) 149 width: calc( 100% - 0em )
150 -}  
151 \ No newline at end of file 150 \ No newline at end of file
  151 +}
  152 +
  153 +.table>tbody>tr.active>td {
  154 + background: #000;
  155 + color: #FDFBFB;
  156 + }
  157 +
  158 + .table>tbody>tr.inactive>td {
  159 + background: #FDFBFB;
  160 + color: #000;
  161 + }
152 \ No newline at end of file 162 \ No newline at end of file
400-SOURCECODE/AIAHTML5.ADMIN.Web/src/index.html
@@ -12,6 +12,7 @@ @@ -12,6 +12,7 @@
12 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"> 12 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
13 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:400,800,700,600,400italic"> 13 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:400,800,700,600,400italic">
14 <link href="../assets/styles/bootstrap-datetimepicker.min.css" rel="stylesheet"> 14 <link href="../assets/styles/bootstrap-datetimepicker.min.css" rel="stylesheet">
  15 + <link rel="stylesheet" href="https://unpkg.com/ngx-bootstrap/datepicker/bs-datepicker.css"
15 16
16 <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> 17 <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
17 <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> 18 <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
@@ -32,16 +33,27 @@ @@ -32,16 +33,27 @@
32 <script src="../assets/scripts/bootstrap-datetimepicker.min.js"></script> 33 <script src="../assets/scripts/bootstrap-datetimepicker.min.js"></script>
33 <!--Nav--> 34 <!--Nav-->
34 <script> 35 <script>
  36 +
35 $(function () { 37 $(function () {
36 - $('#datetimepicker1, #datetimepicker2').datetimepicker({  
37 - // language: 'pt-BR' 38 +
  39 + $('#datetimepicker1').datetimepicker({
  40 + //format: 'mm/dd/yyyy'
  41 + });
  42 + $('#datetimepicker2').datetimepicker({
  43 + //format: 'mm/dd/yyyy'
  44 + });
  45 + $('#datetimepicker3').datetimepicker({
  46 + //format: 'MM/dd/yyyy'
38 }); 47 });
39 - //$('#datetimepicker1').datepicker()  
40 - //.on('changeDate', function(e) {  
41 - //$('#searchStartDate').val($('#datetimepicker1').val()); 48 + $('#datetimepicker4').datetimepicker({
  49 + //format: 'mm/dd/yyyy'
  50 + });
  51 +
  52 + //$('#datetimepicker3').on('changeDate', function() {
  53 + //$('#datetimepicker3 input').val(new date());
42 //}); 54 //});
43 - $('#searchStartDate').val($('#datetimepicker1').val());  
44 - $("#slider-range-min-2").slider({ 55 +
  56 + $("#slider-range-min-2").slider({
45 range: "min", 57 range: "min",
46 min: 1, 58 min: 1,
47 max: 60, 59 max: 60,