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() }); }
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)); } }