コード例 #1
0
        public Task <CommandResult <Cliente> > Handle(CadastrarClienteCommand request, CancellationToken cancellationToken)
        {
            var response = new CommandResult <Cliente>("Salvo com sucesso", true, null);

            request.Validate();
            if (request.Valid)
            {
                Nome      nome             = new Nome(request.PrimeiroNome, request.SegundoNome);
                Documento documentocliente = null;

                // validar tipo de pessoa
                switch (request.TipoPessoa)
                {
                case ETipoPessoa.Fisica:
                    documentocliente = new Documento(request.Documento, ETipoDocumento.Cpf);
                    break;

                case ETipoPessoa.Juridica:
                    documentocliente = new Documento(request.Documento, ETipoDocumento.Cnpj);
                    break;
                }

                // validar se tipo de documento foi definido
                if (!(documentocliente == null))
                {
                    Cliente cliente = new Cliente(nome, request.TipoPessoa, documentocliente, request.Rg);
                    if (cliente.Valid)
                    {
                        var xx = _clienteRepositorio.GetList(x => x.TipoPessoa == ETipoPessoa.Fisica);
                        if (_clienteRepositorio.ExisteCliente(cliente))
                        {
                            response.Sucesso  = false;
                            response.Mensagem = "Cliente já foi cadastrado com esse documento.";
                            return(Task.FromResult(response));
                        }
                        if (_clienteRepositorio.Insert(ref cliente))
                        {
                            response.ObjetoResposta = cliente;
                            return(Task.FromResult(response));
                        }
                    }
                    response.Notificacoes.AddRange(cliente.Notifications.Select(x => x.Message).ToList());
                }
                AddNotification("TipoPessoa", "Tipo de documento relátivo ao cliente não foi informado.");
            }
            response.Notificacoes.AddRange(request.Notifications.Select(x => x.Message).ToList());
            response.Sucesso  = false;
            response.Mensagem = "Não foi possível cadastrar cliente.";
            return(Task.FromResult(response));
        }