public CustomActionResult <Integration.ModelsSupplierApi.ClientRegisterResponse> GetRegisterStatus(string registerKey) { var response = new Integration.ModelsSupplierApi.ClientRegisterResponse(); try { if (string.IsNullOrEmpty(registerKey)) { response.AddMessage(ErrorCodes.ClientGetRegisterStatus_RegisterKeyEmpty, "Chave de registro não fornecida"); return(GetResultBadRequest(response)); } //TODO: Pesquisar registro da solicitação de cadastro na Fila if (registerKey.Equals("111111111111", StringComparison.CurrentCultureIgnoreCase)) { //---- Se a solicitação de cadastro ainda não foi processada //TODO: Implementar condição em que o cadastro ainda não foi processado response.UrlCheckStatus = string.Format("/clients/register-status/{0}", registerKey); return(GetResultAccepted(response)); } else if (registerKey.Equals("222222222222", StringComparison.CurrentCultureIgnoreCase)) { //---- Cadastro Aprovado //TODO: Retornar o ID do cliente no seu Banco de dados response.ClientID = "cli0001"; response.UrlClient = string.Format("/clients/{0}", response.ClientID); return(GetResultOK(response)); } else if (registerKey.Equals("333333333333", StringComparison.CurrentCultureIgnoreCase)) { //---- Cadastro Reprovado response.AddMessage(ErrorCodes.ClientGetRegisterStatus_ClientRejected, "Cliente não aprovado, entre em contato pelo telefone xxxx-xxxx"); return(GetResultBadRequest(response)); } else { //---- Chave de registro não encontrada response.AddMessage(ErrorCodes.ClientGetRegisterStatus_RegisterKeyNotFound, "Chave de registro não encontrada"); return(GetResultNotFound(response)); } } catch (System.Exception ex) { string errorMessage = "Erro ao consultar o status da chave de registro do cliente"; response.AddMessage(ErrorCodes.ClientGetRegisterStatus_UnknownError, errorMessage, ex.GetFullExceptionMessage()); UtilsApi.WriteError(errorMessage, ex, string.Format("RegisterKey={0}", registerKey)); return(GetResultInternalServerError(response)); } }
public CustomActionResult <Integration.ModelsSupplierApi.ClientRegisterResponse> Register(Integration.ModelsSupplierApi.ClientRegisterRequest request) { var response = new Integration.ModelsSupplierApi.ClientRegisterResponse(); try { if (request == null) { response.AddMessage(ErrorCodes.RequestNull, "Request null"); return(GetResultBadRequest(response)); } if (string.IsNullOrEmpty(request.CompanyName)) { response.AddMessage(ErrorCodes.ClientRegister_InvalidCompanyName, "Nome da empresa não preenchido"); } if (string.IsNullOrEmpty(request.Cnpj)) { response.AddMessage(ErrorCodes.ClientRegister_InvalidCnpj, "Cnpj da empresa não preenchido"); } if (string.IsNullOrEmpty(request.Email)) { response.AddMessage(ErrorCodes.ClientRegister_InvalidEmail, "E-mail não preenchido"); } else if (!new System.Text.RegularExpressions.Regex(@"^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*").Match(request.Email).Success) { response.AddMessage(ErrorCodes.ClientRegister_InvalidEmail, "Email inválido"); } if (request.BillingAddress == null) { response.AddMessage(ErrorCodes.ClientRegister_InvalidBillingAddress, "Endereço de faturamento não preenchido"); } else { if (string.IsNullOrEmpty(request.BillingAddress.Zipcode)) { response.AddMessage(ErrorCodes.ClientRegister_InvalidBillingAddress_Zipcode, "CEP do endereço de faturamento não preenchido"); } if (string.IsNullOrEmpty(request.BillingAddress.Street)) { response.AddMessage(ErrorCodes.ClientRegister_InvalidBillingAddress_Address, "Logradouro do endereço de faturamento não preenchido"); } if (string.IsNullOrEmpty(request.BillingAddress.Quarter)) { response.AddMessage(ErrorCodes.ClientRegister_InvalidBillingAddress_Quarter, "Bairro do endereço de faturamento não preenchido"); } if (string.IsNullOrEmpty(request.BillingAddress.City)) { response.AddMessage(ErrorCodes.ClientRegister_InvalidBillingAddress_City, "Cidade do endereço de faturamento não preenchido"); } if (string.IsNullOrEmpty(request.BillingAddress.State)) { response.AddMessage(ErrorCodes.ClientRegister_InvalidBillingAddress_State, "UR do endereço de faturamento não preenchido"); } } if (response.Messages != null && response.Messages.Count > 0) { return(GetResultBadRequest(response)); } //TODO: Remover essa condição e deixar somente o modelo que você irá utilizar síncrono/asíncrono bool useAsyncMode = true; if (!useAsyncMode) { //-- Modelo síncrono //TODO: Consultar no Banco de dados, se o cliente já existir, retornar o ID do cliente existente if (string.Equals(request.Cnpj, "13998916000124")) { //-- Cliente já está cadastrado //TODO: Retornar o ID do cliente no seu Banco de dados response.ClientID = "cli0001"; response.UrlClient = string.Format("/clients/{0}", response.ClientID); return(GetResultOK(response)); } else { //--- Cadastrar cliente //TODO: Gravar o cliente //TODO: Retornar o ID do cliente no seu Banco de dados response.ClientID = "cli0001"; response.UrlClient = string.Format("/clients/{0}", response.ClientID); return(GetResultCreated(response)); } } else { //-- Modelo asíncrono //TODO: Consultar no Banco de dados, se o cliente já existir, retornar o ID do cliente existente if (string.Equals(request.Cnpj, "13998916000124")) { //-- Cliente já está cadastrado //TODO: Retornar o ID do cliente no seu Banco de dados response.ClientID = "cli0001"; response.UrlClient = string.Format("/clients/{0}", response.ClientID); return(GetResultOK(response)); } else { //TODO: Incluir o cliente na fila para cadastro com o RegisterKey gerado response.RegisterKey = Guid.NewGuid().ToString("N").ToLower(); response.UrlCheckStatus = string.Format("/clients/register-status/{0}", response.RegisterKey); return(GetResultAccepted(response)); } } } catch (System.Exception ex) { string errorMessage = "Erro ao cadastrar cliente"; response.AddMessage(ErrorCodes.ClientRegister_UnknownError, errorMessage, ex.GetFullExceptionMessage()); UtilsApi.WriteError(errorMessage, ex, string.Format("Request={0}", UtilsApi.JsonSerialize(request))); return(GetResultInternalServerError(response)); } }