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