public IActionResult EditarConta([FromBody] EditarTrabalhadorDTO model)
        {
            _logger.LogDebug("A executar api/funcionario/editar -> Post");
            if (model is null)
            {
                _logger.LogWarning("O objeto EditarTrabalhadorDTO é null!");
                return(BadRequest(nameof(model)));
            }

            try
            {
                ServiceResult resultado = _funcionarioBusiness.EditarConta(model);
                if (resultado.Sucesso)
                {
                    _logger.LogInformation($"O {model.Nome} e Número de Funcionário {model.NumFuncionario} editou a sua conta com sucesso.");
                    return(Ok());
                }
                else
                {
                    _logger.LogInformation($"Ocorreu um erro ao efetuar a edição do Funcionário com Número de Funcionário {model.NumFuncionario}.");
                    return(BadRequest(resultado.Erros));
                }
            }
            catch (ArgumentNullException e)
            {
                _logger.LogError(e, e.Message);
                return(BadRequest(new { message = e.Message }));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(StatusCode(500));
            }
        }
        public ServiceResult EditarConta(int idFuncionario, EditarTrabalhadorDTO model)
        {
            _logger.LogDebug("A executar [AdministradorBusiness -> EditarConta]");
            if (string.IsNullOrWhiteSpace(model.Nome))
            {
                throw new ArgumentNullException("Nome", "Campo não poder ser nulo!");
            }
            if (string.IsNullOrWhiteSpace(model.Password))
            {
                throw new ArgumentNullException("Password", "Campo não poder ser nulo!");
            }

            if (string.IsNullOrWhiteSpace(model.NovaPassword))
            {
                throw new ArgumentNullException("NovaPassword", "Campo não poder ser nulo!");
            }

            IList <int>   erros         = new List <int>();
            Administrador administrador = _administradorDAO.GetContaIdFuncionario(idFuncionario);

            if (administrador == null)
            {
                _logger.LogWarning($"Não existe nenhum Administrador com o IdFuncionario {idFuncionario}!");
                erros.Add((int)ErrosEnumeration.ContaNaoExiste);
            }
            else
            {
                if (!ValidaNome(model.Nome))
                {
                    _logger.LogDebug($"O Nome {model.Nome} é inválido.");
                    erros.Add((int)ErrosEnumeration.NomeInvalido);
                }
                if (!ValidaPassword(model.NovaPassword))
                {
                    _logger.LogDebug("A Password introduzida é inválido.");
                    erros.Add((int)ErrosEnumeration.PasswordInvalida);
                }
                if (!_hashPasswordService.HashPassword(model.Password).Equals(administrador.Password))
                {
                    _logger.LogDebug("As Passwords não coincidem.");
                    erros.Add((int)ErrosEnumeration.PasswordsNaoCorrespondem);
                }


                if (!erros.Any())
                {
                    Administrador administradorEditado = _mapper.Map <Administrador>(model);
                    administradorEditado.IdFuncionario  = administrador.IdFuncionario;
                    administradorEditado.NumFuncionario = administrador.NumFuncionario;
                    administradorEditado.Password       = _hashPasswordService.HashPassword(model.NovaPassword);
                    _administradorDAO.EditarConta(administradorEditado);
                }
            }

            return(new ServiceResult {
                Erros = new ErrosDTO {
                    Erros = erros
                }, Sucesso = !erros.Any()
            });
        }
Exemplo n.º 3
0
        public IActionResult EditarConta([FromBody] EditarTrabalhadorDTO model)
        {
            _logger.LogDebug("A executar api/administrador/editar -> Post");
            if (model is null)
            {
                _logger.LogWarning("O objeto EditarTrabalhadorDTO é null!");
                return(BadRequest(nameof(model)));
            }

            try
            {
                string        nameIdentifier = HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value;
                int           idFuncionario  = int.Parse(nameIdentifier);
                ServiceResult resultado      = _administradorBusiness.EditarConta(idFuncionario, model);
                if (resultado.Sucesso)
                {
                    _logger.LogInformation($"O {model.Nome} e Número de Funcionário {model.NumFuncionario} editou a sua conta com sucesso.");
                    return(Ok());
                }
                else
                {
                    _logger.LogInformation($"Ocorreu um erro ao efetuar a edição do Administrador com IdFuncionario {idFuncionario}.");
                    return(BadRequest(resultado.Erros));
                }
            }
            catch (ArgumentNullException e)
            {
                _logger.LogError(e, e.Message);
                return(BadRequest(new { message = e.Message }));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(StatusCode(500));
            }
        }