Exemple #1
0
        public async Task <CreateOfferResult> Handle(CreateOfferCommand command, CancellationToken cancellationToken)
        {
            commandValidator.ValidateAndThrow(command);

            var offer = mapper.Map <Entities.Offer>(command.Offer);

            await offerRepository.AddOrUpdateAsync(offer);

            await unitOfWork.SaveChangesAsync();

            var offerCreatedEvent = new OfferCreatedEvent
            {
                Offer = mapper.Map <OfferDto>(offer)
            };

            await mediator.Publish(offerCreatedEvent);

            var result = new CreateOfferResult
            {
                Offer = offerCreatedEvent.Offer
            };

            return(result);
        }