public ActionResult FavouriteList(int?page = 1) { var userId = db.GetUserId(User); Expression <Func <Picture, bool> > likedExpression = x => x.Rates .Any(r => r.Like == true && r.UserId == userId); var pictures = GetPaigedUserRatedPictures(page.Value, likedExpression); return(View(nameof(PictureList), pictures)); }
private void RatePicture(int pictureId, bool rate = true) { var userId = db.GetUserId(User); var previousRate = db.Rates .Where(x => x.PictureId == pictureId && x.UserId == userId) .FirstOrDefault(); if (previousRate != null) { if (previousRate.Like == rate) { db.Rates.Remove(previousRate); } else { previousRate.Like = rate; } } else { var newRate = new Rate { Like = rate, PictureId = pictureId, UserId = userId }; db.Rates.Add(newRate); } db.SaveChanges(); }