public Task <Guid> CreateAsync([FromBody] SmartVoucherCampaignCreateRequest request)
        {
            var campaign = _mapper.Map <VoucherCampaignCreateModel>(request);

            campaign.CreatedBy = _requestContext.UserId;

            return(_smartVouchersClient.CampaignsApi.CreateAsync(campaign));
        }
Exemple #2
0
        public async Task <SmartVoucherCampaignCreatedResponse> CreateAsync([FromBody] SmartVoucherCampaignCreateRequest model)
        {
            var campaign = _mapper.Map <VoucherCampaignCreateModel>(model);

            campaign.CreatedBy = _requestContext.UserId;

            var mobileContents = new List <VoucherCampaignContentCreateModel>();

            foreach (var mobileContent in model.MobileContents)
            {
                Enum.TryParse <SmartVouchers.Client.Models.Enums.Localization>(mobileContent.MobileLanguage.ToString(), out var mobileLanguage);

                if (!string.IsNullOrEmpty(mobileContent.Title))
                {
                    mobileContents.Add(new VoucherCampaignContentCreateModel
                    {
                        Localization = mobileLanguage,
                        ContentType  = VoucherCampaignContentType.Name,
                        Value        = mobileContent.Title
                    });
                }

                mobileContents.Add(new VoucherCampaignContentCreateModel
                {
                    Localization = mobileLanguage,
                    ContentType  = VoucherCampaignContentType.Description,
                    Value        = string.IsNullOrEmpty(mobileContent.Description) ? null : mobileContent.Description
                });

                // create content for adding image
                mobileContents.Add(new VoucherCampaignContentCreateModel
                {
                    Localization = mobileLanguage,
                    ContentType  = VoucherCampaignContentType.ImageUrl,
                    Value        = "#"
                });
            }

            campaign.LocalizedContents = mobileContents;

            Guid campaignId;

            try
            {
                campaignId = await _smartVouchersClient.CampaignsApi.CreateAsync(campaign);
            }
            catch (ClientApiException exception)
            {
                throw new ValidationApiException(exception.ErrorResponse);
            }

            var createdCampaign = await _smartVouchersClient.CampaignsApi.GetByIdAsync(campaignId);

            var createImageContents = new List <ImageContentCreatedResponse>();

            foreach (var content in createdCampaign.LocalizedContents)
            {
                if (content.ContentType == VoucherCampaignContentType.ImageUrl)
                {
                    Enum.TryParse <MobileLocalization>(content.Localization.ToString(), out var mobileLanguage);

                    createImageContents.Add(new ImageContentCreatedResponse
                    {
                        MobileLanguage = mobileLanguage,
                        RuleContentId  = content.Id
                    });
                }
            }

            return(new SmartVoucherCampaignCreatedResponse {
                Id = campaignId, CreatedImageContents = createImageContents
            });
        }