예제 #1
0
        public async Task <IActionResult> GetTopUpBenefits([FromQuery] TopUpBenefitParameter topupBenefitsParameters)
        {
            var getAllTopUpBenefitsQuery = new GetAllTopUpBenefitsQuery(topupBenefitsParameters);
            var result = await mediator.Send(getAllTopUpBenefitsQuery);

            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));
        }
        /// <summary>
        /// Gets all TopUpBenefits.
        /// </summary>
        /// <param name="topUpBenefitParameter">The TopUpBenefits parameters.</param>
        /// <returns></returns>
        public async Task <PagedList <Entity> > GetAllTopUpBenefits(TopUpBenefitParameter topUpBenefitParameter)
        {
            {
                var getvendorSubscriptionsParams = new object[] {
                    new MySqlParameter("@p_IsForSingleData", topUpBenefitParameter.IsForSingleData),
                    new MySqlParameter("@p_IsForTopUp", topUpBenefitParameter.IsForTopUp),
                    new MySqlParameter("@p_IsForBenefit", topUpBenefitParameter.IsForBenefit),
                    new MySqlParameter("@p_Value", topUpBenefitParameter.Value),
                    new MySqlParameter("@p_ApprovalStatus", topUpBenefitParameter.ApprovalStatus)
                };
                var vendorsubscriptions = await FindAll("CALL SpSelectActiveTopUpBenefit(@p_IsForSingleData, @p_IsForTopUp, @p_IsForBenefit,@p_Value, @p_ApprovalStatus)", getvendorSubscriptionsParams).ToListAsync();

                var mappedVendorSubscriptions = vendorsubscriptions.AsQueryable().ProjectTo <TopUpBenefitResponse>(mapper.ConfigurationProvider);
                var sortedVendorSubscriptions = sortHelper.ApplySort(mappedVendorSubscriptions, topUpBenefitParameter.OrderBy);
                var shapedVendorSubscriptions = dataShaper.ShapeData(sortedVendorSubscriptions, topUpBenefitParameter.Fields);

                return(await PagedList <Entity> .ToPagedList(shapedVendorSubscriptions, topUpBenefitParameter.PageNumber, topUpBenefitParameter.PageSize));
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="GetAllTopUpQuery"/> class.
 /// </summary>
 /// <param name="topUpBenefitParameter">The TopUpBenefit parameters.</param>
 public GetAllTopUpBenefitsQuery(TopUpBenefitParameter topUpBenefitParameter)
 {
     TopUpBenefitParameter = topUpBenefitParameter;
 }
예제 #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));
            }
        }
        /// <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));
            }
        }
예제 #6
0
        public async Task <IActionResult> GetTopUpBenefits([FromQuery] TopUpBenefitParameter topupBenefitsParameters)
        {
            var result = await topUpService.GetTopUpBenefits(topupBenefitsParameters);

            return(StatusCode((int)result.Code, result.Value));
        }
        public async Task <List <TopUpBenefitResponse> > GetAllTopUpBenefitsByTopupId(TopUpBenefitParameter topUpBenefitParameter)
        {
            var topBenefit = FindByCondition(topBenefit => topBenefit.Active == Convert.ToInt16(true))
                             .Where(o => o.TopUpId == topUpBenefitParameter.Value)
                             .ProjectTo <TopUpBenefitResponse>(mapper.ConfigurationProvider).ToList();

            return(topBenefit);
        }
예제 #8
0
 public Task <APIResponse> GetTopUpBenefits(TopUpBenefitParameter topupBenefitsParameters)
 {
     throw new NotImplementedException();
 }