public async Task <IActionResult> CriarConta([FromBody] ClienteViewDTO model) { _logger.LogDebug("A executar api/cliente/criar -> Post"); if (model is null) { _logger.LogWarning("O objeto ClienteViewDTO é null!"); return(BadRequest(nameof(model))); } try { ServiceResult resultado = _clienteBusiness.CriarConta(model); if (resultado.Sucesso) { _logger.LogInformation($"O {model.Nome}, com Email {model.Email} e Número de Telemóvel {model.NumTelemovel} registou-se com sucesso."); ServiceResult <Email> resultadoEmails = _clienteBusiness.GetEmailCodigoValidacao(model.Email, _webHostEnvironment.ContentRootPath); if (resultadoEmails.Sucesso) { await _emailSenderService.SendEmail(model.Email, resultadoEmails.Resultado); _logger.LogInformation("Email do Código de Confirmação enviado com sucesso."); return(Ok()); } else { _logger.LogInformation("Ocorreu um erro na leitura do Email do Código de Confirmação."); return(BadRequest(resultadoEmails.Erros)); } } else { _logger.LogInformation("Ocorreu um erro ao criar conta."); return(BadRequest(resultado.Erros)); } } catch (ArgumentNullException e) { _logger.LogError(e, e.Message); return(BadRequest(e.Message)); } catch (Exception e) { _logger.LogError(e, e.Message); return(StatusCode(500)); } }
public ServiceResult <ClienteViewDTO> GetCliente(int idCliente) { _logger.LogDebug("A executar [ClienteBusiness -> GetCliente]"); IList <int> erros = new List <int>(); ClienteViewDTO clienteDTO = null; Cliente cliente = _clienteDAO.GetContaId(idCliente); if (cliente == null) { _logger.LogWarning($"O IdCliente {idCliente} não existe!"); erros.Add((int)ErrosEnumeration.ContaNaoExiste); } else { clienteDTO = _mapper.Map <ClienteViewDTO>(cliente); } return(new ServiceResult <ClienteViewDTO> { Erros = new ErrosDTO { Erros = erros }, Sucesso = !erros.Any(), Resultado = clienteDTO }); }
public ServiceResult CriarConta(ClienteViewDTO model) { _logger.LogDebug("A executar [ClienteBusiness -> CriarConta]"); if (string.IsNullOrWhiteSpace(model.Nome)) { throw new ArgumentNullException("Nome", "Campo não poder ser nulo!"); } if (string.IsNullOrWhiteSpace(model.Email)) { throw new ArgumentNullException("Email", "Campo não poder ser nulo!"); } if (string.IsNullOrWhiteSpace(model.Password)) { throw new ArgumentNullException("Password", "Campo não poder ser nulo!"); } IList <int> erros = new List <int>(); if (_clienteDAO.ExisteEmail(model.Email)) { _logger.LogDebug($"O Email {model.Email} já existe."); erros.Add((int)ErrosEnumeration.EmailJaExiste); } if (_clienteDAO.ExisteNumTelemovel(model.NumTelemovel)) { _logger.LogDebug($"O Número de Telemóvel {model.NumTelemovel} já existe."); erros.Add((int)ErrosEnumeration.NumTelemovelJaExiste); } if (!ValidaNome(model.Nome)) { _logger.LogDebug($"O Nome {model.Nome} é inválido."); erros.Add((int)ErrosEnumeration.NomeInvalido); } if (!ValidaEmail(model.Email)) { _logger.LogDebug($"O Email {model.Email} é inválido."); erros.Add((int)ErrosEnumeration.EmailInvalido); } if (!ValidaPassword(model.Password)) { _logger.LogDebug("A Password introduzida é inválida."); erros.Add((int)ErrosEnumeration.PasswordInvalida); } if (!ValidaNumTelemovel(model.NumTelemovel)) { _logger.LogDebug($"O Número de Telemóvel {model.NumTelemovel} é inválida."); erros.Add((int)ErrosEnumeration.NumTelemovelInvalido); } if (!erros.Any()) { string codigoValidacao = GerarCodigo(); int numMaximoTentativas = _appSettings.NumTentativasCodigoValidacao; Cliente cliente = _mapper.Map <Cliente>(model); cliente.Password = _hashPasswordService.HashPassword(model.Password); _clienteDAO.InserirConta(cliente, codigoValidacao, numMaximoTentativas); } return(new ServiceResult { Erros = new ErrosDTO { Erros = erros }, Sucesso = !erros.Any() }); }