public static async Task <AddReportResponse> AddReportAsync(AddReportRequest model) { int IterationsToRetry = 5; int TimeToSleepForRetry = 3000; AddReportResponse result = new AddReportResponse(); if (Helpers.ConnectivyHelper.CheckConnectivity() != Enums.ConnectivtyResultEnum.HasConnectivity) { result.Status = Enums.ResponseStatus.CommunicationError; result.Message = "El dispositivo no pudo comunicarse con el servidor, comprueba que tengas conexión a internet"; return(result); } model.token = GetToken(); for (int i = 0; i <= IterationsToRetry; i++) { try { using (var client = new HttpClient()) { var service = $"{Settings.FunctionURL}/api/AddRecordItem/"; var res = JsonConvert.SerializeObject(model); byte[] byteData = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(model)); using (var content = new ByteArrayContent(byteData)) { content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var httpResponse = await client.PostAsync(service, content); result = JsonConvert.DeserializeObject <AddReportResponse>(await httpResponse.Content.ReadAsStringAsync()); if (httpResponse.StatusCode == HttpStatusCode.OK) { result.Status = Enums.ResponseStatus.Ok; } else { result.Status = Enums.ResponseStatus.Error; Thread.Sleep(TimeToSleepForRetry); } return(result); } } } catch (Exception) { result.Status = Enums.ResponseStatus.CommunicationError; result.Message = "Ocurrió un error durante el proceso, por favor intenta de nuevo o espera unos minutos antes de vovler a intentar"; Thread.Sleep(TimeToSleepForRetry); continue; } } return(result); }
public async Task <V> CallServiceAsync <U, V>(U request) where U : RequestBase where V : ResponseBase, new() { var response = new V(); try { switch (request.GetType().Name) { case nameof(RegistroUsuariosGetAllRequest): response = await ProcessCallAsyncObtenerDatos(request as RegistroUsuariosGetAllRequest) as V; //SadmApi.RegistroUsuariosGetAll(request as RegistroUsuariosGetAllRequest) as V; break; case nameof(PAGOSRequest): response = new ResponseBase() as V; await SadmApi.RealizarPago(request as PAGOSRequest); break; case nameof(ObtenerUrlPagosRequest): response = await ProcessCallPagosAsync(request as ObtenerUrlPagosRequest) as V; break; case nameof(GetAppTokenRequest): response = await SadmApi.GetAppToken(request as GetAppTokenRequest) as V; break; case nameof(SignUpRequest): response = await SadmApi.SignUp(request as SignUpRequest) as V; var a = response; break; case nameof(RecoverPasswordRequest): response = new RecoverPasswordResponse { Message = (await SadmApi.RecoverPassword(request as RecoverPasswordRequest)) } as V; break; case nameof(UpdateUserRequest): response = new UpdateUserResponse { Message = (await SadmApi.UpdateUser(request as UpdateUserRequest)).Replace("\"", string.Empty) } as V; break; case nameof(LoginRequest): response = await ProcessCallAsync(request as LoginRequest) as V; break; case nameof(PasswordRecoveryRequest): response = await SimulateSuccessfulAsync <PasswordRecoveryResponse>() as V; break; case nameof(AddContractRequest): var reqAux = new AddContractRequest(); bool errorExiste = false; //bool errordiverso = true; var response1 = new AddContractResponse { ContractId = (await SadmApi.AddNis(request as AddContractRequest)).Replace("\"", string.Empty) }; //if(response.== @"\0|El Servicio No Puede Agregarse, Ya Se Encuentra Asociado\") response = response1 as V; if (response1.ContractId.Contains("El Servicio No Puede Agregarse, Ya Se Encuentra Asociado")) { response.AddError("El Servicio No Puede Agregarse, Ya Se Encuentra Asociado"); } else if (response1.ContractId.ToUpper().Contains("EL RECIBO INDICADO NO EXISTE")) { response.AddError("El recibo indicado no existe"); } else if (response1.ContractId.Contains("La Lectura Ingresada Es Incorrecta")) { response.AddError("La Lectura Ingresada Es Incorrecta"); } break; case nameof(RemoveContractRequest): response = new RemoveContractResponse { ContractId = (await SadmApi.RemoveNis(request as RemoveContractRequest)).Replace("\"", string.Empty) } as V; break; case nameof(GetContractListRequest): var tmp = await SadmApi.GetBalanceList(request as GetContractListRequest); tmp = tmp.Substring(1, tmp.Length - 2); tmp = tmp.Replace("\\", string.Empty); var contractList = Newtonsoft.Json.JsonConvert.DeserializeObject <IList <Balance> >(tmp); response = new GetBalanceListResponse { BalanceList = contractList } as V; break; case nameof(AddReportRequest): response = new AddReportResponse { ReportId = (await SadmApi.AddReport((request as AddReportRequest).Report)).Replace("\"", string.Empty) } as V; break; case nameof(GetReportListRequest): response = await SadmApi.GetReportList((request as GetReportListRequest).UserId) as V; break; case nameof(UpdateMyDataRequest): var updateMyDataRequest = await SadmApi.Update(request as UpdateMyDataRequest); response = new UpdateMyDataResponse() as V; break; case nameof(GetBillListRequest): var responseAux = await SadmApi.GetBillList(request as GetBillListRequest); var billList = Newtonsoft.Json.JsonConvert.DeserializeObject <IList <Bill> >(responseAux); response = new GetBillListResponse { BillList = billList } as V; break; case nameof(UpdateBillDeliveryConfigurationRequest): var respAux = await SadmApi.UpdateBillDeliveryConfiguration(request as UpdateBillDeliveryConfigurationRequest); var success = respAux == "\"1\""; response = new UpdateBillDeliveryConfigurationResponse { Result = success } as V; break; default: throw new NotImplementedException(); } } catch (Exception ex) { response.AddError("Ocurrió un error, vuelve a intentarlo más tarde."); } return(response); }