Exemple #1
0
    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);
    }
Exemple #2
0
        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);
        }
Exemple #3
0
        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));
 }