Exemplo n.º 1
0
        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));
        }