public AddVoteResponse AddVote(AddVoteRequest request) { AddVoteResponse response = new AddVoteResponse(); try { Vote vote = new Vote() { ProductId = request.ProductId, UserId = request.UserId, VoteDate = DateTime.Now }; votesRepository.Add(vote); unitOfWork.Commit(); response.Status = true; response.Message = "ok"; } catch (Exception e) { response.Status = false; response.Message = e.Message; if (e.InnerException != null) { response.Message += Environment.NewLine; response.Message += string.Format("Inner exception: {0}", e.InnerException.Message); } } return response; }
public static async Task <AddVoteResponse> AddVoteAsync(AddVoteRequest model) { int IterationsToRetry = 5; int TimeToSleepForRetry = 3000; AddVoteResponse result = new AddVoteResponse(); 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/AddRecordVote/"; 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 <AddVoteResponse>(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); }