using System.Collections.Generic;
namespace MyHN.Domain
{
///
/// Représente un élément sur lequel un utilisateur peut voter.
///
public abstract class Votable
{
private List _votes;
public IReadOnlyList Votes => _votes;
protected Votable()
{
_votes = new List();
}
public void UpvoteBy(string user)
{
UpdateVote(VoteType.Up, user);
}
public void DownvoteBy(string user)
{
UpdateVote(VoteType.Down, user);
}
private void UpdateVote(VoteType type, string user)
{
var userVote = _votes.Find(o => o.CreatedBy == user);
if (userVote != null)
{
userVote.Direction = type;
return;
}
_votes.Add(new Vote(type, user));
}
}
}