public async Task <Vote> AddVoteAsync([FromBody] AddVoteRequest req) { if (!ModelState.IsValid || !UserToken.HasValue) { return(null); } var vote = await _votingService.GetVoteAsync(req.SpotifyTrackId, UserToken.Value); if (vote == null) { if (req.Liked == null) { return(null); } return(await _votingService.AddVoteAsync(req.SpotifyTrackId, UserToken.Value, req.Liked.Value, req.Comment, DateTime.UtcNow)); } else { if (req.Liked == null) { await _votingService.RemoveVoteAsync(vote.Id); } else { await _votingService.UpdateVoteAsync(vote, req.Liked.Value, req.Comment); return(vote); } } return(null); }
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); }
public JsonResult AddVote(AddVoteRequest request) { var result = _directorService.VoteDirector(new VoteDirectorDto() { DirectorId = request.DirectorId, Score = request.Stars, UserId = ApplicationUser.Id }); var obj = _directorDataProvider.GetCurrentDirectorVote(request.DirectorId); return(Json(obj)); }
public async Task <ActionResult <ObjectId> > Post([FromBody] AddVoteRequest request, CancellationToken cancellationToken) { return(await this.mediator.Send(request, cancellationToken)); }