internal CatForVote getMostLikedCat(int userId) { CatForVote res = new CatForVote(); BotUser cachedUsr = MainParams.cashedUsers.Find(user => user.user_id == userId); if (cachedUsr == null) { cachedUsr = MainParams.datebase.FindUserInDb(userId); MainParams.nlog.Debug("cachedUsr NULL in getMostLikedCat!!!userId=" + userId); if (cachedUsr == null) { cachedUsr = AddToCacheFail(userId); } } try { using (FCatsBotEntities Context = new FCatsBotEntities()) { //02.09.2016 - search max liked not viewed cats! var arr_cats_viewed_by_this_user = Context.cats_viewed_by_users.Where(catviewed => catviewed.user_id == userId).ToList(); List <int> arrviewed = new List <int>(); foreach (var item in arr_cats_viewed_by_this_user) { arrviewed.Add(item.cat_id); } var cats_not_viewed = Context.cats.Where(cat => arrviewed.Contains(cat.id) == false).ToList(); //int index = rnd.Next(0, cats_not_viewed.Count - 1); var maxlikes = cats_not_viewed.Max(cts => cts.likes_count); var found_cat = cats_not_viewed.Where(cts => cts.likes_count == maxlikes).First(); //add to cats_viewed cats_viewed_by_users viewed = new cats_viewed_by_users(); viewed.cat_id = found_cat.id; viewed.viewed = true; viewed.user_id = userId; viewed.liked = false; viewed.disliked = false; viewed.datetime_viewed = DateTime.Now; viewed.file_id = found_cat.file_id; Context.cats_viewed_by_users.Add(viewed); var catmain = Context.cats.FirstOrDefault(catt => catt.id == found_cat.id); catmain.views_count++; Context.SaveChanges(); //fill result res.fileid = found_cat.file_id.Trim(); res.likes = found_cat.likes_count; res.dislikes = found_cat.dislikes_count; res.views = found_cat.views_count; res.id = found_cat.id; res.user_id = userId; res.from_url = found_cat.from_url; //var user = Context.users res.caption = string.Format(strings.getCatCaption(cachedUsr), found_cat.id) + " " + string.Format(strings.getViews(cachedUsr), found_cat.views_count); } } catch (Exception e) { MainParams.nlog.Debug("***NewLogs; DATABASE getMostLikedCat!!! ;EX=;" + e.Message + ";Source=" + e.Source + ";stack=" + e.StackTrace + ";e.inner=" + e.InnerException); MainParams.nlog.Debug(e); } return(res); }
internal bool updateLikes(string data) { //data like "liked_cat_{0}_user_{1}" or "disliked_cat_{0}_user_{1}" try { string rr = ""; bool liked = true; if (data.Contains("disliked")) { rr = data.Replace("disliked_cat_", ""); liked = false; } else { rr = data.Replace("liked_cat_", ""); } rr = rr.Replace("_user_", "_"); //rr = rr.Replace("___", "_"); string scatid = rr.Substring(0, rr.IndexOf("_")); string suserid = rr.Substring(rr.IndexOf("_")); scatid = scatid.Replace("_", ""); suserid = suserid.Replace("_", ""); MainParams.nlog.Trace("updateLikes scatid=" + scatid + "; suserid=" + suserid); int catid = Convert.ToInt32(scatid); long userid = Convert.ToInt64(suserid); using (FCatsBotEntities Context = new FCatsBotEntities()) { //cats viewed var cv = Context.cats_viewed_by_users.FirstOrDefault(cvb => cvb.cat_id == catid && cvb.user_id == userid); var catmain = Context.cats.FirstOrDefault(catt => catt.id == catid); try { if (catmain == null) { MainParams.nlog.Debug("updateLikes CatMain=null; catid=" + catid + ";userId=" + userid); } if (cv == null) { MainParams.nlog.Debug("updateLikes catViewed=null (NOT error); catid=" + catid + ";userId=" + userid); //add //add to cats_viewed by user cats_viewed_by_users viewed = new cats_viewed_by_users(); viewed.cat_id = catmain.id; viewed.viewed = true; viewed.user_id = catmain.user_id; viewed.liked = liked; viewed.disliked = !liked; viewed.datetime_viewed = DateTime.Now; viewed.file_id = catmain.file_id; Context.cats_viewed_by_users.Add(viewed); } else { //if cat was viewed, update likes //voted if like or dislike is true if (cv.liked || cv.disliked) { return(false); } cv.liked = liked; cv.disliked = !liked; } } catch (Exception e) { MainParams.nlog.Debug("***NewLogs; DATABASE updatelikes fff!!! ;EX=;" + e.Message + ";Source=" + e.Source + ";stack=" + e.StackTrace + ";e.inner=" + e.InnerException); MainParams.nlog.Debug(e); } try { if (liked) { catmain.likes_count++; } else { catmain.dislikes_count++; } } catch (Exception e) { MainParams.nlog.Debug("***NewLogs; DATABASE updatelikes CatMain!!! ;EX=;" + e.Message + ";Source=" + e.Source + ";stack=" + e.StackTrace + ";e.inner=" + e.InnerException); } Context.SaveChanges(); //catmain.views_count++ } } catch (Exception e) { MainParams.nlog.Debug("***NewLogs; DATABASE updatelikes General!!! ;EX=;" + e.Message + ";Source=" + e.Source + ";stack=" + e.StackTrace + ";e.inner=" + e.InnerException); MainParams.nlog.Debug(e); } return(true); }