Пример #1
0
        /// <summary>
        /// Модерирование изображений по хэштегу
        /// </summary>
        public ActionResult Mod(string hashtag = "", int page = 1)
        {
            if (string.IsNullOrEmpty(hashtag))
            {
                hashtag = Convert.ToString(Session["ACTIVETAG"]);
            }

            IList <InstagramMVC.Models.UserModel.HashTag> usertags = HashTagManager.GetUserTags(_account.USER_ID);

            if (usertags != null && usertags.Count > 0)
            {
                IEnumerable <SelectListItem> tags = usertags.Select(x => new SelectListItem
                {
                    Text     = x.TAG_CAPTION,
                    Value    = x.TAG_CAPTION,
                    Selected = x.TAG_CAPTION.Equals(hashtag)
                });

                if (string.IsNullOrEmpty(hashtag))
                {
                    hashtag = tags.First().Text;
                }

                ViewBag.tags = tags;
            }

            //новые фото будут отображаться в начале из-за OrderByDescending
            ViewData["page"]    = page;
            ViewData["hashtag"] = hashtag;
            var res = HashTagManager.GetDataBaseMediaTags(_account.USER_ID, hashtag, page, AppEnums.SelectMediaAttr.HideDeleted).OrderByDescending(x => x.MEDIA_ID).ToList();

            return(View(res));
        }
Пример #2
0
        /// <summary>
        /// Запустить обновление медиатегов пользователя по команде с Telegram
        /// </summary>
        /// <returns>Кол-во добавленных тегов</returns>
        public JsonResult UpdateTeleUserMediatags(string user_login, string tag_caption)
        {
            var user = UserManager.GetUser(user_login);
            int addedMeditagCount = HashTagManager.SaveMediaTagsToDataBase(user.USER_ID, tag_caption);

            UtilManager.RegisterEvent(user.USER_ID, AppEnums.Event.Запуск_обновления_медиатегов, string.Format("Обновление медиатега '{0}'", tag_caption));
            return(Json(new { MeditagCount = addedMeditagCount }, JsonRequestBehavior.AllowGet));
        }
Пример #3
0
        public ActionResult BotMod(string user_login, string hashtag, int page = 1)
        {
            var res = HashTagManager.GetDataBaseMediaTags(user_login, hashtag, page, AppEnums.SelectMediaAttr.HideDeleted).OrderByDescending(x => x.MEDIA_ID).ToList();

            ViewData["page"]    = page;
            ViewData["hashtag"] = hashtag;
            return(View(res));
        }
Пример #4
0
        public ActionResult UpdateMediaTags(string hashtag = "", int updtype = (int)AppEnums.UpdateHashTagType.Recent30)
        {
            //todo в зав-ти от updtype делать запрос SaveMediaTagsToDataBase
            if (string.IsNullOrEmpty(hashtag))
            {
                hashtag = (string)Session["ACTIVETAG"];
            }

            //TODO async
            HashTagManager.SaveMediaTagsToDataBase(_account.USER_ID, hashtag, (AppEnums.UpdateHashTagType)updtype);
            UtilManager.RegisterEvent(_account.USER_ID, AppEnums.Event.Запуск_обновления_медиатегов, string.Format("Обновление медиатега '{0}'", hashtag));
            return(RedirectToAction("Mod", "User", new { hashtag = hashtag }));
        }
Пример #5
0
        /// <summary>
        /// Добавить пользовательский хэштег
        /// </summary>
        public ActionResult AddTag(string hashtag = "")
        {
            if (!string.IsNullOrEmpty(hashtag))
            {
                hashtag = hashtag.Trim().ToLower();
                if (HashTagManager.IsTagExist(hashtag))
                {
                    TempData["result"] = new OperationResult()
                    {
                        Status  = AppEnums.OperationStatus.Warning,
                        Message = "Такой хэштег уже существует!"
                    };
                    return(RedirectToAction("Tags"));
                }

                SQLReturnResult res = HashTagManager.InsertHashTag(_account.USER_ID, hashtag);
                switch (res.Result)
                {
                case AppEnums.SQLExecResult.RollBack:
                    TempData["result"] = new OperationResult()
                    {
                        Status = AppEnums.OperationStatus.Error, Message = "Ошибка! Откат транзакции!"
                    };
                    break;

                case AppEnums.SQLExecResult.SyntaxError:
                    TempData["result"] = new OperationResult()
                    {
                        Status = AppEnums.OperationStatus.Error, Message = "Ошибка! Синтаксическая ошибка!"
                    };
                    break;

                default:
                    TempData["result"] = new OperationResult()
                    {
                        Status = AppEnums.OperationStatus.Success, Message = "Новый тег добавлен!"
                    };
                    UtilManager.RegisterEvent(_account.USER_ID, AppEnums.Event.Добавить_хэштег, string.Format("Добавлен хэштег '{0}'", hashtag));
                    break;
                }
            }
            return(RedirectToAction("Tags"));
        }
Пример #6
0
        /// <summary>
        /// Удалить пользовательский хэштег
        /// </summary>
        public ActionResult DelTag(string hashtag = "")
        {
            if (!string.IsNullOrEmpty(hashtag))
            {
                hashtag = hashtag.Trim().ToLower();
                var res = HashTagManager.DeleteTag(hashtag);
                switch (res.Result)
                {
                case AppEnums.SQLExecResult.RollBack:
                    TempData["result"] = new OperationResult()
                    {
                        Status = AppEnums.OperationStatus.Error, Message = "Ошибка! Откат транзакции!"
                    };
                    break;

                case AppEnums.SQLExecResult.SyntaxError:
                    TempData["result"] = new OperationResult()
                    {
                        Status = AppEnums.OperationStatus.Error, Message = "Ошибка! Синтаксическая ошибка!"
                    };
                    break;

                default:
                    TempData["result"] = new OperationResult()
                    {
                        Status = AppEnums.OperationStatus.Success, Message = string.Format("Тег '#{0}' удален!", hashtag)
                    };
                    UtilManager.RegisterEvent(_account.USER_ID, AppEnums.Event.Удалить_хэштег, string.Format("Хэштег '{0}' удален", hashtag));
                    break;
                }

                if (string.Compare((string)Session["ACTIVETAG"], hashtag, true) == 0)
                {
                    Session["ACTIVETAG"] = null;
                }
            }

            return(RedirectToAction("Tags"));
        }
Пример #7
0
        public ActionResult GetNextBatchTags(string tag)
        {
            //TODO делаешь unban - виснет может из-за Session["NEXT_MEDIA_ID"]
            if (!UserManager.CanUserTranslateShow(_account.USER_ID))
            {
                List <MediaTag> res = new List <MediaTag>()
                {
                    new MediaTag {
                        INSTAGRAM_MEDIA_ID  = "0",
                        INSTAGRAM_USER_ID   = "0",
                        INSTAGRAM_USER_NAME = UtilManager.GetVarValue("app.caption"),
                        INSTAGRAM_MEDIA_STANDARD_RES_URL = Url.Content("~/Content/img/trans_show_end.png"),
                        INSTAGRAM_USER_PROFILEPICTURE    = Url.Content("~/Content/img/logo.png"),
                        INSTAGRAM_CAPTION = "Трансляция шоу завершена!!!"
                    }
                };
                return(Json(res, JsonRequestBehavior.AllowGet));
            }

            UserOptions opts;

            if (Session["OPTIONS"] == null)
            {
                opts = UserManager.GetUserOptions(_account.USER_ID);
                Session["OPTIONS"] = opts;
            }
            else
            {
                opts = (UserOptions)Session["OPTIONS"];
            }
            //auction
            int next_media_id = (Session["NEXT_MEDIA_ID"] == null ? 0 : Convert.ToInt32(Session["NEXT_MEDIA_ID"]));

            var batch = HashTagManager.GetNextBatchDataBaseMediaTags(_account.USER_ID, tag, next_media_id, opts.USER_SLIDE_BATCH_SIZE);

            if (batch.Count == 0)
            {
                if (next_media_id == 0) //значит в базе нет нужных тегов
                {
                    return(new EmptyResult());
                }
                else
                {
                    //запрос с начала базы
                    next_media_id = 0;
                    batch         = HashTagManager.GetNextBatchDataBaseMediaTags(_account.USER_ID, tag, next_media_id, opts.USER_SLIDE_BATCH_SIZE);
                }
            }

            if (batch.Count > 0)
            {
                if (opts.USER_SLIDE_BATCH_SIZE > batch.Count)
                {
                    next_media_id = 0;
                    batch.AddRange(HashTagManager.GetNextBatchDataBaseMediaTags(_account.USER_ID, tag, next_media_id, opts.USER_SLIDE_BATCH_SIZE - batch.Count));
                }

                batch = batch.GroupBy(x => x.MEDIA_ID, (key, group) => group.FirstOrDefault()).ToList();
                Session["NEXT_MEDIA_ID"] = batch.Last().MEDIA_ID;

                //для того, чтобы работала BS Carousel нужно мин. 5 элементов в писке
                int batch_size = batch.Count;
                var rnd        = new Random((int)DateTime.Now.Ticks);
                while (batch.Count < 5)
                {
                    batch.Add(new MediaTag()
                    {
                        MEDIA_ID            = rnd.Next(1, 10000),
                        INSTAGRAM_MEDIA_ID  = batch[batch.Count - batch_size].INSTAGRAM_MEDIA_ID,
                        INSTAGRAM_USER_ID   = batch[batch.Count - batch_size].INSTAGRAM_USER_ID,
                        INSTAGRAM_USER_NAME = batch[batch.Count - batch_size].INSTAGRAM_USER_NAME,
                        INSTAGRAM_MEDIA_STANDARD_RES_URL = batch[batch.Count - batch_size].INSTAGRAM_MEDIA_STANDARD_RES_URL,
                        INSTAGRAM_USER_PROFILEPICTURE    = batch[batch.Count - batch_size].INSTAGRAM_USER_PROFILEPICTURE,
                        INSTAGRAM_CAPTION = batch[batch.Count - batch_size].INSTAGRAM_CAPTION
                    });
                    batch_size--;
                    if (batch_size == 0)
                    {
                        batch_size = batch.Count;
                    }
                }
                //@Url.Action("Translate", "Show")

                if (Session["ACTIONTAG"] != null)
                {
                    string          actionTag            = (string)Session["ACTIONTAG"];
                    int             action_next_media_id = Session["ACTION_NEXT_MEDIA_ID"] == null ? 0 : (int)Session["ACTION_NEXT_MEDIA_ID"];
                    List <MediaTag> actionMediaTag       = HashTagManager.GetNextBatchDataBaseMediaTags(_account.USER_ID, actionTag, action_next_media_id, 1);
                    if (actionMediaTag == null || actionMediaTag.Count == 0)
                    {
                        if (action_next_media_id > 0)
                        {
                            //значит достигнут конец списка аукционного тега
                            action_next_media_id = 0;
                            actionMediaTag       = HashTagManager.GetNextBatchDataBaseMediaTags(_account.USER_ID, actionTag, action_next_media_id, 1);
                        }
                        else
                        {
                            //значит список пуст
                        }
                    }

                    if (actionMediaTag.Count > 0)
                    {
                        action_next_media_id            = actionMediaTag[0].MEDIA_ID;
                        Session["ACTION_NEXT_MEDIA_ID"] = action_next_media_id;
                        batch.Add(actionMediaTag[0]);
                    }
                }

                return(Json(batch, JsonRequestBehavior.AllowGet));//.GroupBy(x => x.MEDIA_ID, (key, group) => group.FirstOrDefault()).ToList()
            }

            //var total = HashTagManager.GetNextBatchDataBaseMediaTags(_account.USER_ID, tag, next_media_id, opts.USER_SLIDE_BATCH_SIZE);
            //if (total.Count > 0)
            //{
            //    List<MediaTag> res = total.Where(x => x.MEDIA_ID > next_media_id).Take(opts.USER_SLIDE_BATCH_SIZE).ToList<MediaTag>();
            //    if (res.Count() < opts.USER_SLIDE_BATCH_SIZE)
            //    {
            //        //дошли до конца
            //        //res = total.Skip(Math.Max(0, total.Count - opts.USER_SLIDE_BATCH_SIZE)).ToList<MediaTag>();
            //        res.AddRange(total.Take(opts.USER_SLIDE_BATCH_SIZE - res.Count()));
            //    }

            //    Session["NEXT_MEDIA_ID"] = res.Last().MEDIA_ID;

            //    return Json(res, JsonRequestBehavior.AllowGet);
            //}

            return(new EmptyResult());
        }
Пример #8
0
 public ActionResult DelMedia(int media_id)
 {
     HashTagManager.DeleteMedia(media_id);
     return(new EmptyResult());
 }
Пример #9
0
 public ActionResult SetBan(int media_id, bool value)
 {
     HashTagManager.SetBan(media_id, value);
     return(new EmptyResult());
 }
Пример #10
0
 public ActionResult ClearMediaTags(string hashtag)
 {
     HashTagManager.ClearMediaTags(_account.USER_ID, hashtag);
     UtilManager.RegisterEvent(_account.USER_ID, AppEnums.Event.Очистить_медиатеги_в_БД, string.Format("Очистка медиатега '{0}'", hashtag));
     return(RedirectToAction("Mod", "User", new { hashtag = hashtag }));
 }
Пример #11
0
 /// <summary>
 /// Отобразить пользовательские хэштеги
 /// </summary>
 /// <returns></returns>
 public ActionResult Tags()
 {
     return(View(HashTagManager.GetUserTags(_account.USER_ID)));
 }
Пример #12
0
 public Task(HashTagManager hashTagManager)
 {
     _hashTagManager = hashTagManager;
 }
Пример #13
0
 public HashController(HashTagManager hashTagManager)
 {
     _hashTagManager = hashTagManager;
 }