public async Task HandleAsync(PublishAd command) { var ad = await _adRepository.GetAsync(command.AdId); if (ad is null) { throw new AdNotFoundException(command.AdId); } ad.Publish(); var storyId = await _storyApiClient.SendStoryAsync(new SendStoryRequest { UserId = ad.UserId, Title = ad.Header, Text = ad.Content, Tags = ad.Tags, Highlighted = true, VisibleFrom = ad.From, VisibleTo = ad.To }); if (storyId is null) { throw new CannotPublishAdAException(command.AdId); } ad.SetStoryId(storyId.Value); await _adRepository.UpdateAsync(ad); await _messageBroker.PublishAsync(new AdPublished(ad.Id)); }
public async Task HandleAsync(PublishAd command) { var ad = await _adRepository.GetAsync(command.AdId); if (ad is null) { throw new AdNotFoundException(command.AdId); } ad.Publish(_clock.Current()); var storyId = await _storyApiClient.SendStoryAsync(new SendStory(default, ad.UserId,
public async Task HandleAsync(RejectAd command) { var ad = await _adRepository.GetAsync(command.AdId); if (ad is null) { throw new AdNotFoundException(command.AdId); } ad.Reject(); await _adRepository.UpdateAsync(ad); await _messageBroker.PublishAsync(new AdRejected(ad.Id)); }
public async Task HandleAsync(ApproveAd command) { var ad = await _adRepository.GetAsync(command.AdId); if (ad is null) { throw new AdNotFoundException(command.AdId); } ad.Approve(_clock.Current()); await _adRepository.UpdateAsync(ad); await _messageBroker.PublishAsync(new AdApproved(ad.Id)); }
public async Task HandleAsync(PayAd command) { var ad = await _adRepository.GetAsync(command.AdId); if (ad is null) { throw new AdNotFoundException(command.AdId); } ad.Pay(); var fundsCharged = await _usersApiClient.ChargeFundsAsync(ad.UserId, ad.Amount); if (!fundsCharged) { throw new CannotPayAdException(ad.Id); } await _adRepository.UpdateAsync(ad); await _messageBroker.PublishAsync(new AdPaid(ad.Id)); }
public async Task <AdDto> GetAsync(Guid id) { var ad = await _adRepository.GetAsync(id); return(_mapper.Map <AdDto>(ad)); }