public bool ToggleVote(int id, int categoryID, string userID, bool actual, out string message) { message = string.Empty; var category = CategoryService.Get(categoryID); if (category.Statut != (int)Common.Entities.CategoryStatus.Opened) { message = "La catégorie est fermée aux votes"; return(false); } if (actual) { RankingService.RemoveVote(id, userID); message = "Votre vote a bien été annulé !"; return(true); } int nbVotes = RankingService.GetNumberVotesForUser(categoryID, userID); if (nbVotes >= Constants.MAX_VOTES) { message = "Désolé, vous avez atteint le maximum de votes"; return(false); } if (RankingService.AddVote(id, userID)) { message = "Merci pour votre vote !"; return(true); } else { message = "Vous avez déjà voté pour cet album"; return(false); } }