예제 #1
0
        public ICommandResult Atualizar([FromBody] AtualizarUsuarioBaseCommand command)
        {
            var result = (CommandResult)_handler.Handle(command);

            return(result);
        }
예제 #2
0
        public ICommandResult Handle(AtualizarUsuarioBaseCommand command)
        {
            if (!command.IsValidCommand())
            {
                return(new CommandResult(false, "Por favor, corrigir os campos abaixo", command.Notifications));
            }

            var usuario = _repository.UsuarioBase(command.Id);

            if (usuario == null)
            {
                return(new CommandResult(false, $"O usuario não existe na base de dados. Id de usuário informado: { command.Id }", new { }));
            }

            if (command.Usuario != usuario.Login.Usuario)
            {
                if (_repository.UsuarioExistente(command.Usuario))
                {
                    AddNotification("Usuario", $"Nome de usuário já cadastrado na base de dados. Nome informado: { command.Usuario }");
                }
            }

            if (command.Documento != usuario.Documento.Documento)
            {
                if (_repository.DocumentoExistente(command.Documento))
                {
                    AddNotification("CPF/CNPJ", $"CPF/CNPJ já cadastrado na base de dados. Doc. informado: { command.Documento }");
                }
            }

            if (command.Email != usuario.Email.Email)
            {
                if (_repository.EmailExistente(command.Email))
                {
                    AddNotification("E-mail", $"E-mail já cadastrado na base de dados. E-mail informado: { command.Email }");
                }
            }

            var login     = new LoginVO(command.Usuario);
            var email     = new EmailVO(command.Email);
            var documento = new DocumentoVO(command.Documento);

            if (usuario.Login.Senha != command.Senha)
            {
                login = new LoginVO(command.Usuario, command.Senha);
            }
            else
            {
                login.AtribuirSenha(command.Senha);
            }

            if (command.Ativo.Equals(EBoolean.False))
            {
                usuario.Desativar();
            }
            else
            {
                usuario.Ativar();
            }

            usuario.AtribuirUsuario(
                login,
                email,
                documento,
                command.PerfilAcesso,
                command.ImpressoraZebra);

            AddNotifications(usuario, login, email, documento);

            if (Invalid)
            {
                return(new CommandResult(false, "Por favor, corrigir os campos abaixo", Notifications));
            }

            _repository.Atualizar(usuario);

            return(new CommandResult(true, "Usuário atualizado com sucesso", new
            {
                Id = usuario.Id,
                Usuario = usuario.Login.Usuario,
                Documento = usuario.Documento.Documento
            }));
        }