Есть такая модель:
[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();
А вот как по нормальному дизлайки подсчитать, я хз. Подскажите пожалуйста