public Task <CommandResult> Handle(AddOrdemServicoCommand command, CancellationToken cancellationToken) { if (!command.IsValid()) { NotifyCommandErrors(command); return(Response()); } Cliente cliente = _clienteRepository.GetById(command.ClienteId); if (cliente == null) { NotifyCommandError("Cliente não encontrado", "Erro de repositório"); return(Response()); } OrdemServico ordemServico = new OrdemServico(cliente, command.Produtos); _ordemServicoRepository.Add(ordemServico); if (Commit()) { _mediator.Publish(new AddedOrdemServicoEvent()); } return(Response()); }
// Add Command public async Task <ValidationResult> Handle(AddOrdemServicoCommand request, CancellationToken cancellationToken) { if (!request.IsValid()) { return(request.ValidationResult); } var OrdemServico = new Models.OrdemServico( id: Guid.NewGuid(), numero: request.Numero, data: request.DataOrdem, pacienteId: request.PacienteId, convenioId: request.ConvenioId, postoId: request.PostoColetaId, medicoId: request.MedicoId); if (await _ordemServicoRepository.GetByNumber(request.Numero) != null) { AddError("Já existe ordem de serviço com esse número"); return(ValidationResult); } OrdemServico.AddDomainEvent(new OrdemServicoAddedEvent( id: OrdemServico.Id, numero: OrdemServico.Numero, data: OrdemServico.DataOrdem, pacienteId: OrdemServico.PacienteId, convenioId: OrdemServico.ConvenioId, postoId: OrdemServico.PostoColetaId, medicoId: OrdemServico.MedicoId)); _ordemServicoRepository.Add(OrdemServico); return(await Commit(_ordemServicoRepository.UnitOfWork)); }