Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 2
0
        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
            });
        }
Exemplo n.º 3
0
        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()
            });
        }