コード例 #1
0
        public async Task <BurnRulePaginatedResponseModel> GetSpendRulesAsync(
            Localization language,
            [FromQuery] BasePaginationRequestModel pagination)
        {
            var spendRules = await _burnRuleService.GetLocalizedPagedAsync(
                Enum.Parse <Domain.Enums.Localization>(language.ToString(), true),
                _mapper.Map <PaginationModel>(pagination));

            return(_mapper.Map <BurnRulePaginatedResponseModel>(spendRules));
        }
コード例 #2
0
        public async Task <EarnRulePaginatedResponseModel> GetEarnRulesAsync(
            Localization language,
            [FromQuery] CampaignStatus[] statuses,
            [FromQuery] BasePaginationRequestModel pagination)
        {
            var earnRules = await _campaignService
                            .GetEarnRulesPagedAsync(
                Enum.Parse <Domain.Enums.Localization>(language.ToString(), true),
                _mapper.Map <List <Domain.Enums.CampaignStatus> >(statuses),
                _mapper.Map <PaginationModel>(pagination));

            return(_mapper.Map <EarnRulePaginatedResponseModel>(earnRules));
        }
コード例 #3
0
        public async Task <PaginatedVouchersListResponseModel> GetCustomerVouchersAsync(Guid customerId, [FromQuery] BasePaginationRequestModel pageData)
        {
            if (customerId == default)
            {
                throw new ArgumentNullException(nameof(customerId));
            }

            var pageInfo = _mapper.Map <PageInfo>(pageData);
            var result   = await _vouchersService.GetCustomerVouchersAsync(customerId, pageInfo);

            return(_mapper.Map <PaginatedVouchersListResponseModel>(result));
        }
        public async Task <SmartVouchersListResponse> GetSmartVouchersForCustomerAsync([FromQuery] BasePaginationRequestModel request)
        {
            var customerId = Guid.Parse(_requestContext.UserId);

            var vouchersResponse =
                await _smartVouchersClient.VouchersApi.GetCustomerVouchersAsync(customerId,
                                                                                new BasePaginationRequestModel { CurrentPage = request.CurrentPage, PageSize = request.PageSize });

            var result = _mapper.Map <SmartVouchersListResponse>(vouchersResponse);

            if (!result.SmartVouchers.Any())
            {
                return(result);
            }

            var campaignIds = vouchersResponse.Vouchers.Select(x => x.CampaignId).Distinct().ToArray();
            var campaigns   = await _smartVouchersClient.CampaignsApi.GetCampaignsByIds(campaignIds);

            var campaignsDict = campaigns.Campaigns.ToDictionary(k => k.Id,
                                                                 v => new SmartVoucherCampaignDto
            {
                Name         = v.GetContentValue(Localization.En, VoucherCampaignContentType.Name),
                ImageUrl     = v.GetContentValue(Localization.En, VoucherCampaignContentType.ImageUrl),
                Description  = v.GetContentValue(Localization.En, VoucherCampaignContentType.Description),
                VoucherPrice = v.VoucherPrice,
                PartnerId    = v.PartnerId,
                ToDate       = v.ToDate,
                Currency     = v.Currency,
            });

            var partnerIds = campaigns.Campaigns.Select(c => c.PartnerId).Distinct().ToArray();
            var partners   = await _partnerManagementClient.Partners.GetByIdsAsync(partnerIds);

            var partnersDict = partners.ToDictionary(k => k.Id, v => v.Name);

            foreach (var voucher in result.SmartVouchers)
            {
                if (!campaignsDict.TryGetValue(voucher.CampaignId, out var campaignInfo))
                {
                    _log.Warning("Smart voucher campaign is missing for existing voucher", context: new { VoucherShortCode = voucher.ShortCode, voucher.CampaignId });
                    continue;
                }

                voucher.CampaignName   = campaignInfo.Name;
                voucher.ImageUrl       = campaignInfo.ImageUrl;
                voucher.ExpirationDate = campaignInfo.ToDate;
                voucher.PartnerId      = campaignInfo.PartnerId;
                voucher.Description    = campaignInfo.Description;
                voucher.Price          = campaignInfo.VoucherPrice;
                voucher.Currency       = campaignInfo.Currency;

                if (!partnersDict.TryGetValue(campaignInfo.PartnerId, out var partnerName))
                {
                    _log.Warning("Partner is missing for existing smart voucher campaign", context: new { campaignInfo.PartnerId, voucher.CampaignId });
                    continue;
                }

                voucher.PartnerName = partnerName;
            }

            return(result);
        }