public Vote CreateVote(int score, long userId, long trackId)
{
Vote vote;
var playlist = repo.ReadPlaylists().FirstOrDefault(p => p.PlaylistTracks.Any(t=>t.Id == trackId));
var existingVote = repo.ReadVoteOfUserFromPlaylistTrack(userId, trackId);
if (existingVote == null)
{
vote = new Vote()
{
Score = score
};
return repo.CreateVote(vote, userId, trackId);
}
else
{
if (existingVote.Score == score)
{
DeleteVote(existingVote);
existingVote.Score = 0;
return existingVote;
}
else {
vote = existingVote;
vote.Score = score;
return repo.UpdateVote(vote);
}
}
}