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