示例#1
0
        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);
        }