Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }