@Taifunov

Как реализовать в данном случае подсчёт дизлайков?

Есть такая модель:
[Table("PostsData")]
	public class PostData
	{
		[PrimaryKey,AutoIncrement]
        public int Id { get; private set; }
		public string PostUrl { get; set; }
		public long? PostId { get; set; }
		public int MessageId { get; set; }
		public int Likes { get; set; }
		public int DisLikes { get; set; }

        public virtual List<VoteData> VoteDatas { get; set; }
    }


	[Table("VotesData")]
	public class VoteData
	{
        [PrimaryKey, AutoIncrement]
        public int Id { get; set; }
        public int PostDataId { get; set; }
		public int? VoterId { get; set; }
		public bool LikedPost { get; set; }

        public virtual PostData Post { get; set; }
    }


С телеграмма ловлю коллбэк на кнопку и в зависимости от коллбэка делаю какие-то манипуляции, есть такой код для подсчёта лайков:
int messageId = callbackQuery.Message.MessageId;
                    var userId = callbackQuery.From.Id;
                    var postData = context.Posts
                        .Include("VoteDatas")
                        .FirstOrDefault(p => p.MessageId == messageId);

                    if (postData == null)
                    {
                        return;
                    }

                    var voteData = postData.VoteDatas.ToList();

                        var inLikes = postData.VoteDatas
                            .FirstOrDefault(v =>
                            v.PostDataId == postData.Id && v.VoterId == userId);

                        var inDislikes = voteData
                        .FirstOrDefault(v =>
                        v.PostDataId == postData.Id && v.VoterId == userId && !v.LikedPost);

                    try
                    {
                        if (inLikes != null)
                        {
                            context.Votes.Remove(inLikes);
                        } else
                        {
                            context.Votes.Add(new VoteData() {
                                VoterId = userId, LikedPost = true, PostDataId = postData.Id
                            });
                        }

                        if (inDislikes != null)
                        {
                            context.Votes.Remove(inDislikes);
                        }

                        context.SaveChanges();

                        var likesCount = postData.VoteDatas.Count();


А вот как по нормальному дизлайки подсчитать, я хз. Подскажите пожалуйста
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы