public async Task <Query.Contract> Handle(UpdateContractInfoCommand request, CancellationToken cancellationToken) { var contractDomain = _ContractRepository.GetById(request.Id).Result.ToDomain <Contract>(_Mapper); contractDomain.Validate(); contractDomain.SetInfo(request.Name); #region Persistence await _ContractRepository.Update(contractDomain.ToModel <Command.Contract>(_Mapper)); await _UnitOfWork.Commit(); #endregion #region Bus var publishMessage = new Message(); publishMessage.MessageType = "UpdateContract"; var response = contractDomain.ToQueryModel <Query.Contract>(_Mapper); publishMessage.SetData(response); await _Bus.SendMessage(publishMessage); #endregion return(response); }
public async Task <AddContractPayload> UpdateContractInfo( UpdateContractInfoInput input, [Service] IServiceProvider serviceProvider, CancellationToken cancellationToken) { var updateContractInfoCommand = new UpdateContractInfoCommand() { Id = input.Id, Name = input.Name }; using (var scope = serviceProvider.CreateScope()) { var mediator = scope.ServiceProvider.GetRequiredService <IMediator>(); try { var response = await mediator.Send(updateContractInfoCommand, cancellationToken); return(new AddContractPayload(response)); } catch (ValidationException e) { var userErrors = new List <UserError>(); e.Message.Split(";").ForAll(item => { userErrors.Add(new UserError(item, item)); }); return(new AddContractPayload(userErrors)); } catch (ElementNotFoundException e) { return(new AddContractPayload(new List <UserError> { new UserError("Элемент не найден", "PROJ-not_found") })); } catch (QueryArgumentException e) { return(new AddContractPayload(new List <UserError> { new UserError(e.Message, e.Message) })); } } }