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); }