public async Task <IActionResult> GetSubcriptionPlans([FromQuery] SubscriptionBenefitsParameter subscriptionBenefitsParameters)
        {
            var getAllSubscriptionBenefitsQuery = new GetAllSubscriptionBenefitsQuery(subscriptionBenefitsParameters);
            var result = await mediator.Send(getAllSubscriptionBenefitsQuery);

            if (result.Code == HttpStatusCode.OK)
            {
                Response.Headers.Add("X-Pagination", PagedList <Entity> .ToJson(result.Value as PagedList <Entity>));
            }

            return(StatusCode((int)result.Code, result.Value));
        }
示例#2
0
        /// <summary>
        /// Gets all subscriptionBenefit.
        /// </summary>
        /// <param name="subscriptionBenefitsParameter">The story parameters.</param>
        /// <returns></returns>
        public async Task <PagedList <Entity> > GetAllSubscriptionBenefits(SubscriptionBenefitsParameter subscriptionBenefitsParameter)
        {
            {
                var getBenefitsParams = new object[] {
                    new MySqlParameter("@p_IsForSingleData", subscriptionBenefitsParameter.IsForSingleData),
                    new MySqlParameter("@p_IsForSubscription", subscriptionBenefitsParameter.IsForSubscription),
                    new MySqlParameter("@p_IsForBenefit", subscriptionBenefitsParameter.IsForBenefit),
                    new MySqlParameter("@p_Value", subscriptionBenefitsParameter.Value),
                    new MySqlParameter("@p_ApprovalStatus", subscriptionBenefitsParameter.ApprovalStatus)
                };
                var subscriptionBenefits = await FindAll("CALL SpSelectActiveSubscriptionBenefit(@p_IsForSingleData, @p_IsForSubscription, @p_IsForBenefit, @p_Value, @p_ApprovalStatus)", getBenefitsParams).ToListAsync();

                var mappedSubscriptionBenefits = subscriptionBenefits.AsQueryable().ProjectTo <SubscriptionBenefitsResponse>(mapper.ConfigurationProvider);
                var sortedSubscriptionBenefits = sortHelper.ApplySort(mappedSubscriptionBenefits, subscriptionBenefitsParameter.OrderBy);
                var shapedSubscriptionBenefits = dataShaper.ShapeData(sortedSubscriptionBenefits, subscriptionBenefitsParameter.Fields);

                return(await PagedList <Entity> .ToPagedList(shapedSubscriptionBenefits, subscriptionBenefitsParameter.PageNumber, subscriptionBenefitsParameter.PageSize));
            }
        }
示例#3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GetAllSubscriptionBenefitsQuery"/> class.
 /// </summary>
 /// <param name="subscriptionPlansParameter">The SubcriptionPlans parameters.</param>
 public GetAllSubscriptionBenefitsQuery(SubscriptionBenefitsParameter subscriptionBenefitsParameter)
 {
     SubscriptionBenefitsParameter = subscriptionBenefitsParameter;
 }
示例#4
0
        /// <summary>
        /// Handles a request
        /// </summary>
        /// <param name="request">The request</param>
        /// <param name="cancellationToken">Cancellation token</param>
        /// <returns>
        /// Response from the request
        /// </returns>
        public async Task <APIResponse> Handle(CreateUtilityCommand request, CancellationToken cancellationToken)
        {
            try
            {
                if (request.Request.ServiceTopupId == 0)
                {
                    request.Request.ServiceTopupId = null;
                }
                if (request.Request.ServiceSubscriptionId == 0)
                {
                    request.Request.ServiceSubscriptionId = null;
                }

                var subscriptionBenefitsParameter = new SubscriptionBenefitsParameter();
                var utilityRequest        = new Vendorserviceutilisation();
                var topUpBenefitParameter = new TopUpBenefitParameter();
                List <TopUpBenefitResponse>         topupBenefit        = new List <TopUpBenefitResponse>();
                List <SubscriptionBenefitsResponse> subscriptionBenefit = new List <SubscriptionBenefitsResponse>();

                var subscriptionUtilityParameters = new SubscriptionUtilityParameters();
                subscriptionUtilityParameters.VendorId = request.Request.VendorId;
                subscriptionUtilityParameters.ServiceSubscriptionId = request.Request.ServiceSubscriptionId;
                subscriptionUtilityParameters.TopupId   = request.Request.ServiceTopupId;
                subscriptionUtilityParameters.BenefitId = request.Request.Benefit;

                var utility = await repository.Utilitys.GetAllUtility(subscriptionUtilityParameters);

                var serviceSubscription = await repository.ServiceSubscriptions.GetServiceSubscriptionById(request.Request.ServiceSubscriptionId ?? 0);

                var serviceTopup = await repository.ServiceTopups.GetServiceTopupById(request.Request.ServiceTopupId ?? 0);

                var multidetail = await repository.MultiDetails.GetMultiDetailsById("PhotoCount");

                if (serviceSubscription != null)
                {
                    subscriptionBenefitsParameter.Value = serviceSubscription.Subscription;
                    subscriptionBenefit = await repository.SubscriptionBenefits.GetAllSubscriptionBenefitsBySubsId(subscriptionBenefitsParameter);
                }
                if (serviceTopup != null)
                {
                    topUpBenefitParameter.Value = serviceTopup.TopUpId;
                    topupBenefit = await repository.TopUpBenefits.GetAllTopUpBenefitsByTopupId(topUpBenefitParameter);
                }
                int?BenefitCount = 0;
                int?topupCount   = 0;
                foreach (var item in subscriptionBenefit)
                {
                    if (item.Benefit == request.Request.Benefit)
                    {
                        BenefitCount += item.Count;
                    }
                }
                foreach (var item in topupBenefit)
                {
                    if (item.Benefit == request.Request.Benefit)
                    {
                        topupCount += item.Count;
                    }
                }
                if (BenefitCount >= request.Request.UtilityCount)
                {
                    foreach (var item1 in utility)
                    {
                        if (item1.VendorId == request.Request.VendorId &&
                            item1.ServiceSubscriptionId == request.Request.ServiceSubscriptionId &&
                            item1.Benefit == request.Request.Benefit)
                        {
                            var vendorSubscription = await repository.Utilitys.GetUtilityById(item1.Id);

                            vendorSubscription.UtilityCount = request.Request.UtilityCount;
                            if (vendorSubscription == null)
                            {
                                return(new APIResponse(HttpStatusCode.NotFound));
                            }
                            utilityRequest = mapper.Map(request.Request, vendorSubscription);
                            repository.Utilitys.UpdateUtility(utilityRequest);
                            await repository.SaveAsync();
                        }
                    }
                }
                //else
                //{
                //    return new APIResponse(HttpStatusCode.NotAcceptable);
                //}

                // PhotoCount
                if (serviceSubscription == null)
                {
                    foreach (var item in multidetail)
                    {
                        if (int.Parse(item.Value) >= request.Request.UtilityCount)
                        {
                            foreach (var item1 in utility)
                            {
                                if (item1.VendorId == request.Request.VendorId &&
                                    item1.ServiceSubscriptionId == request.Request.ServiceSubscriptionId &&
                                    item1.Benefit == request.Request.Benefit)
                                {
                                    var vendorSubscription = await repository.Utilitys.GetUtilityById(item1.Id);

                                    if (vendorSubscription == null)
                                    {
                                        return(new APIResponse(HttpStatusCode.NotFound));
                                    }
                                    utilityRequest = mapper.Map(request.Request, vendorSubscription);
                                    repository.Utilitys.UpdateUtility(utilityRequest);
                                    await repository.SaveAsync();
                                }
                            }
                        }
                        if (utility.Count == 0)
                        {
                            foreach (var item1 in multidetail)
                            {
                                if (int.Parse(item1.Value) >= request.Request.UtilityCount)
                                {
                                    utilityRequest = mapper.Map <Vendorserviceutilisation>(request.Request);
                                    repository.Utilitys.CreateUtility(utilityRequest);
                                    await repository.SaveAsync();

                                    return(new APIResponse(new UtilityIdDetails {
                                        UtilityId = utilityRequest.Id
                                    }, HttpStatusCode.Created));
                                }
                                else
                                {
                                    return(new APIResponse(HttpStatusCode.NotAcceptable));
                                }
                            }
                        }
                    }
                }

                // New DB Entry
                if (utility.Count == 0)
                {
                    if (BenefitCount + topupCount >= request.Request.UtilityCount)
                    {
                        utilityRequest = mapper.Map <Vendorserviceutilisation>(request.Request);
                        repository.Utilitys.CreateUtility(utilityRequest);
                        await repository.SaveAsync();
                    }
                }

                return(new APIResponse(new UtilityIdDetails {
                    UtilityId = utilityRequest.Id
                }, HttpStatusCode.Created));
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception in method 'CreateVendorSubscriptionHandler()'");
                var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                return(new APIResponse(exMessage, HttpStatusCode.InternalServerError));
            }
        }
示例#5
0
 public Task <APIResponse> GetSubcriptionPlans(SubscriptionBenefitsParameter subscriptionBenefitsParameters)
 {
     throw new NotImplementedException();
 }
        /// <summary>
        /// Handles a request
        /// </summary>
        /// <param name="request">The request</param>
        /// <param name="cancellationToken">Cancellation token</param>
        /// <returns>
        /// Response from the request
        /// </returns>
        public async Task <APIResponse> Handle(GetAllUtilityQuery request, CancellationToken cancellationToken)
        {
            try
            {
                int?vendorsutilitycount = 0;
                int?benefitCount        = 0;
                int?remainingcount      = 0;
                int?topupcount          = 0;

                List <Subscription> subscription  = new List <Subscription>();
                List <Topup>        topup         = new List <Topup>();
                var subscriptionBenefitsParameter = new SubscriptionBenefitsParameter();
                var topupBenefitsParameter        = new TopUpBenefitParameter();
                var subscriptionBenefit           = new List <SubscriptionBenefitsResponse>();
                var topupBenefit = new List <TopUpBenefitResponse>();

                subscriptionBenefitsParameter.IsForBenefit      = null;
                subscriptionBenefitsParameter.IsForSingleData   = null;
                subscriptionBenefitsParameter.IsForSubscription = null;
                subscriptionBenefitsParameter.ApprovalStatus    = 0;

                topupBenefitsParameter.IsForBenefit    = null;
                topupBenefitsParameter.IsForSingleData = null;
                topupBenefitsParameter.IsForTopUp      = null;
                topupBenefitsParameter.ApprovalStatus  = 0;

                var utility = await repository.Utilitys.GetAllUtility(request.SubscriptionUtilityParameters);

                foreach (var item in utility)
                {
                    vendorsutilitycount += item.UtilityCount;
                    if (item.ServiceSubscription != null)
                    {
                        subscription.Add(item.ServiceSubscription.SubscriptionNavigation);
                    }

                    if (item.ServiceTopup != null)
                    {
                        topup.Add(item.ServiceTopup.TopUp);
                    }
                    if (item.ServiceSubscription == null)
                    {
                        var multidetail = await repository.MultiDetails.GetMultiDetailsById("PhotoCount");

                        foreach (var item1 in multidetail)
                        {
                            remainingcount = (int.Parse(item1.Value)) - vendorsutilitycount;
                        }
                    }
                }

                foreach (var item in subscription)
                {
                    subscriptionBenefitsParameter.Value = item.Id;
                    subscriptionBenefit = await repository.SubscriptionBenefits.GetAllSubscriptionBenefitsBySubsId(subscriptionBenefitsParameter);

                    foreach (var item1 in subscriptionBenefit)
                    {
                        if (item1.Benefit == request.SubscriptionUtilityParameters.BenefitId)
                        {
                            benefitCount += item1.Count;
                        }
                    }
                }

                foreach (var item in topup)
                {
                    topupBenefitsParameter.Value = item.Id;
                    topupBenefit = await repository.TopUpBenefits.GetAllTopUpBenefitsByTopupId(topupBenefitsParameter);

                    foreach (var item1 in topupBenefit)
                    {
                        if (item1.Benefit == request.SubscriptionUtilityParameters.BenefitId)
                        {
                            topupcount += item1.Count;
                        }
                    }
                }
                if (subscription.Count != 0)
                {
                    benefitCount   = benefitCount + topupcount;
                    remainingcount = benefitCount - vendorsutilitycount;
                }
                return(new APIResponse(new UtilityCountResponse {
                    RemainingCount = remainingcount
                }, HttpStatusCode.OK));
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception in method 'GetAllVendorSubscriptionsHandler()'");
                var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                return(new APIResponse(exMessage, HttpStatusCode.InternalServerError));
            }
        }
示例#7
0
        public async Task <List <SubscriptionBenefitsResponse> > GetAllSubscriptionBenefitsBySubsId(SubscriptionBenefitsParameter subscriptionBenefitsParameter)
        {
            var subsBenefit = FindByCondition(subsbenefit => subsbenefit.Active == Convert.ToInt16(true))
                              .Where(o => o.SubscriptionId == subscriptionBenefitsParameter.Value)
                              .ProjectTo <SubscriptionBenefitsResponse>(mapper.ConfigurationProvider).ToList();

            return(subsBenefit);
        }
示例#8
0
        public async Task <IActionResult> GetSubcriptionPlans([FromQuery] SubscriptionBenefitsParameter subscriptionBenefitsParameters)
        {
            var result = await subscriptionBenefitService.GetSubcriptionPlans(subscriptionBenefitsParameters);

            return(StatusCode((int)result.Code, result.Value));
        }