Ejemplo n.º 1
0
        public async Task <UpdateCampaignError> UpdateAsync(VoucherCampaign campaign)
        {
            var oldCampaign = await _campaignsRepository.GetByIdAsync(campaign.Id, true);

            if (oldCampaign == null)
            {
                _log.Error($"Campaign {campaign.Id} not found for update");
                return(UpdateCampaignError.VoucherCampaignNotFound);
            }

            if (oldCampaign.State == CampaignState.Published && oldCampaign.FromDate <= DateTime.UtcNow)
            {
                return(UpdateCampaignError.CampaignAlreadyStarted);
            }

            if (campaign.VouchersTotalCount < oldCampaign.BoughtVouchersCount)
            {
                return(UpdateCampaignError.TotalCountMustBeGreaterThanBoughtVouchersCount);
            }

            campaign.CreatedBy    = oldCampaign.CreatedBy;
            campaign.CreationDate = oldCampaign.CreationDate;
            if (campaign.LocalizedContents != null)
            {
                for (int i = 0; i < campaign.LocalizedContents.Count; ++i)
                {
                    if (!string.IsNullOrWhiteSpace(campaign.LocalizedContents[i].Value))
                    {
                        continue;
                    }

                    campaign.LocalizedContents.RemoveAt(i);
                    --i;
                }
            }

            var contentsToRemove = oldCampaign.LocalizedContents
                                   .Where(c1 => campaign.LocalizedContents.All(c2 => c1.Id != c2.Id))
                                   .ToList();
            await _campaignContentsRepository.DeleteAsync(contentsToRemove);

            foreach (var content in contentsToRemove)
            {
                if (content.ContentType == CampaignContentType.ImageUrl)
                {
                    await _fileService.DeleteAsync(content.Id);
                }
            }

            await _campaignsRepository.UpdateAsync(campaign);

            _log.Info("Campaign was updated", context: campaign);

            return(UpdateCampaignError.None);
        }
        public async Task UpdateAsync(VoucherCampaign campaign)
        {
            var entity = _mapper.Map <VoucherCampaignEntity>(campaign);

            using (var context = _contextFactory.CreateDataContext())
            {
                context.VoucherCampaigns.Update(entity);

                await context.SaveChangesAsync();
            }
        }
 private async Task PublishVoucherSoldEvent(Guid?paymentRequestId, VoucherCampaign voucherCampaign, Voucher voucher)
 {
     await _voucherSoldPublisher.PublishAsync(new SmartVoucherSoldEvent
     {
         Amount           = voucherCampaign.VoucherPrice,
         Currency         = voucherCampaign.Currency,
         CustomerId       = voucher.OwnerId.Value,
         PartnerId        = voucherCampaign.PartnerId,
         Timestamp        = DateTime.UtcNow,
         CampaignId       = voucher.CampaignId,
         VoucherShortCode = voucher.ShortCode,
         PaymentRequestId = paymentRequestId?.ToString(),
     });
 }
 private async Task PublishVoucherTransferredEvent(VoucherCampaign voucherCampaign, Voucher voucher, Guid oldOwnerId)
 {
     await _voucherTransferredPublisher.PublishAsync(new SmartVoucherTransferredEvent
     {
         Amount           = voucherCampaign.VoucherPrice,
         Currency         = voucherCampaign.Currency,
         PartnerId        = voucherCampaign.PartnerId,
         Timestamp        = DateTime.UtcNow,
         CampaignId       = voucher.CampaignId,
         VoucherShortCode = voucher.ShortCode,
         NewCustomerId    = voucher.OwnerId.Value,
         OldCustomerId    = oldOwnerId,
     });
 }
 private async Task PublishVoucherUsedEvent(VoucherCampaign voucherCampaign, Voucher voucher)
 {
     await _voucherUsedPublisher.PublishAsync(new SmartVoucherUsedEvent
     {
         CustomerId       = voucher.OwnerId.Value,
         Timestamp        = DateTime.UtcNow,
         PartnerId        = voucherCampaign.PartnerId,
         CampaignId       = voucher.CampaignId,
         Amount           = voucherCampaign.VoucherPrice,
         Currency         = voucherCampaign.Currency,
         LinkedCustomerId = voucher.SellerId,
         VoucherShortCode = voucher.ShortCode,
     });
 }
Ejemplo n.º 6
0
        private bool IsCampaignEditable(VoucherCampaign existingCampaign, VoucherCampaign updatedCampaign)
        {
            if (existingCampaign.State == CampaignState.Draft || existingCampaign.FromDate > DateTime.UtcNow)
            {
                return(true);
            }

            if (existingCampaign.VoucherPrice != updatedCampaign.VoucherPrice ||
                existingCampaign.VouchersTotalCount != updatedCampaign.VouchersTotalCount ||
                existingCampaign.Currency != updatedCampaign.Currency ||
                existingCampaign.PartnerId != updatedCampaign.PartnerId ||
                existingCampaign.ToDate != updatedCampaign.ToDate ||
                existingCampaign.FromDate != updatedCampaign.FromDate ||
                existingCampaign.ExpirationDate != updatedCampaign.ExpirationDate ||
                existingCampaign.State != updatedCampaign.State)
            {
                return(false);
            }

            return(true);
        }
Ejemplo n.º 7
0
        public async Task <Guid> CreateAsync(VoucherCampaign campaign)
        {
            campaign.CreationDate = DateTime.UtcNow;
            if (campaign.LocalizedContents != null)
            {
                for (int i = 0; i < campaign.LocalizedContents.Count; ++i)
                {
                    if (!string.IsNullOrWhiteSpace(campaign.LocalizedContents[i].Value))
                    {
                        continue;
                    }

                    campaign.LocalizedContents.RemoveAt(i);
                    --i;
                }
            }

            var result = await _campaignsRepository.CreateAsync(campaign);

            _log.Info("Campaign was added", context: campaign);

            return(result);
        }
 private bool IsCampaignDateValid(VoucherCampaign campaign)
 => DateTime.UtcNow > campaign.FromDate &&
 (!campaign.ExpirationDate.HasValue || campaign.ExpirationDate.Value > DateTime.UtcNow);
 private bool IsCampaignStateValid(VoucherCampaign campaign)
 => campaign.State == CampaignState.Published;