예제 #1
0
        public Task <bool> Handle(UpdateFornecedorCommand message, CancellationToken cancellationToken)
        {
            if (!message.IsValid())
            {
                NotifyValidationErrors(message);
                return(Task.FromResult(false));
            }

            var fornecedor = new Fornecedor(message.Id, message.NomeCompanhia, message.NomeContato, message.TituloContato,
                                            message.Telefone, message.EnderecoEmail, message.Endereco, message.Cidade, message.Estado, message.Pais);

            var fornecedorExiste = _fornecedorRepository.GetByNomeCompanhia(fornecedor.NomeCompanhia);

            if (fornecedorExiste != null && fornecedorExiste.Id != fornecedor.Id)
            {
                if (!fornecedorExiste.Equals(fornecedor))
                {
                    Bus.RaiseEvent(new DomainNotification(message.MessageType, "A Categria já foi recebido."));
                    return(Task.FromResult(false));
                }
            }

            _fornecedorRepository.Update(fornecedor);

            if (Commit())
            {
                Bus.RaiseEvent(new FornecedorUpdatedEvent(fornecedor.Id, fornecedor.NomeCompanhia, fornecedor.NomeContato, fornecedor.TituloContato,
                                                          fornecedor.Telefone, fornecedor.EnderecoEmail, fornecedor.Endereco, fornecedor.Cidade, fornecedor.Estado, fornecedor.Pais));
            }

            return(Task.FromResult(true));
        }
예제 #2
0
        public Task <CommandResult> Handle(UpdateFornecedorCommand command, CancellationToken cancellationToken)
        {
            if (!command.IsValid())
            {
                NotifyCommandErrors(command);
                return(Response());
            }

            Cidade     cidade     = _cidadeRepository.GetById(command.EnderecoCidadeId);
            Documento  documento  = new Documento(command.DocumentoCadastroNacional, command.DocumentoCadastroEstadual);
            Contato    contato    = new Contato(command.ContatoCelular, command.ContatoEmail, command.ContatoTelefoneComercial, command.ContatoTelefoneResidencial, command.ContatoObservacao);
            Endereco   endereco   = new Endereco(command.EnderecoRua, command.EnderecoNumero, command.EnderecoBairro, command.EnderecoComplemento, cidade, command.EnderecoCEP);
            Fornecedor fornecedor = new Fornecedor(command.Id, command.Nome, command.Tipo, documento, contato, endereco, command.Observacao);

            _fornecedorRepository.Update(fornecedor);

            if (Commit())
            {
                _mediator.PublishEvent(new UpdatedFornecedorEvent(fornecedor));
            }

            return(Response());
        }