Example #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);
    }