コード例 #1
0
        public JsonResult LoadPopupTrainer(long userId, UserLanguages userLanguages)
        {
            if (IsInvalid(userId, userLanguages))
            {
                return(JsonResultHelper.Error());
            }

            List <TrainerItem> items = GetOverdueItems(userId, userLanguages);

            return
                (JsonResultHelper.GetUnlimitedJsonResult(
                     new {
                sourceLanguageId = userLanguages.From.Id,
                items,
                html =
                    OurHtmlHelper.RenderRazorViewToString(ControllerContext, "PartialTrainer",
                                                          new PartialTrainerParams {
                    NeedShow = true,
                    BtnClass = "btn-xs",
                    LeftBtnContainerClass =
                        "popup-knowledge-panel-mark-btn",
                    CenterBtnContainerClass =
                        "popup-knowledge-panel-mark-btn",
                    RightBtnContainerClass =
                        "popup-knowledge-panel-mark-btn",
                    TrainerPanelClass = "",
                    TagTitle = "h3",
                    TagTranslation = "h4"
                })
            }));
        }
コード例 #2
0
        public ActionResult CheckPurchasedGoods(long userId, string uniqueDownloadId)
        {
            if (IdGenerator.IsInvalidDownloadId(uniqueDownloadId))
            {
                return(JsonResultHelper.Error());
            }

            var            purchasedGoogsQuery = new PurchasedGoodsQuery();
            PurchasedGoods purchasedGoods      = purchasedGoogsQuery.GetPaid(uniqueDownloadId);

            LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat(
                "PaymentController.Check. Пользователь {0} проверял уникальный идентификатор покупки {1}. Статус: {2}!",
                userId, uniqueDownloadId, purchasedGoods != null ? "ОПЛАЧЕНО" : "НЕ оплачен");

            if (purchasedGoods == null)
            {
                return(JsonResultHelper.Error());
            }

            string html = OurHtmlHelper.RenderRazorViewToString(ControllerContext, "PartialDownloadPurchasedGoods",
                                                                new SuccessPaymentModel(
                                                                    purchasedGoods.ShortDescription,
                                                                    purchasedGoods.UniqueDownloadId,
                                                                    (GoodsId)purchasedGoods.GoodsId));

            return(JsonResultHelper.GetUnlimitedJsonResult(new { success = true, result = html }));
        }
コード例 #3
0
        public JsonResult AddComment(long userId, long authorId, string key, string comment, int lastShowedComment)
        {
            if (IdValidator.IsInvalid(authorId) || string.IsNullOrWhiteSpace(comment) ||
                WebSettingsConfig.Instance.IsSectionForbidden(SectionId.UserTasks))
            {
                return(JsonResultHelper.Error());
            }

            if (comment.Length > UserTasksSettings.COMMENT_MAX_LENGTH)
            {
                return(JsonResultHelper.Error());
            }

            RepositoryFactory repositoryFactory = WebSettingsConfig.Instance.GetRepositoryFactory();
            BanRepository     banRepository     = repositoryFactory.GetBanRepository();
            var  banHelper = new BanHelper(Request);
            bool isBanned  = banHelper.IsBanned(SectionId.UserTasks, userId, banRepository);

            if (isBanned)
            {
                return(JsonResultHelper.Error());
            }

            banHelper.RegisterEvent(SectionId.UserTasks, "AddComment", userId, banRepository);

            UserTasksRepository userTasksRepository = repositoryFactory.CreateUserRepository(authorId);

            //TODO: получить пользователя и если у него указано имя, то заполнить Author

            comment = OurHtmlHelper.PrepareStringFromUser(comment);
            //TODO: дописывать (автор) к имени пользователя
            var taskComment = new TaskComment {
                Author       = null,
                AuthorId     = userId,
                CreationDate = DateTime.Now.Ticks,
                Text         = comment
            };

            bool isAddedComment         = userTasksRepository.AddComment(key, taskComment);
            List <TaskComment> comments = userTasksRepository.GetComments(key, lastShowedComment);

            SendMail(string.Format("Пользователь {0} оставил комментарий к таску {1} автора {2}:\r\n{3}", userId, key, authorId, comment));

            var htmlItems = new StringBuilder();

            foreach (TaskComment newComment in comments)
            {
                string item = OurHtmlHelper.RenderRazorViewToString(ControllerContext, "PartialTaskComment", newComment);
                htmlItems.Insert(0, item);
            }

            return
                (JsonResultHelper.GetUnlimitedJsonResult(
                     new {
                success = isAddedComment,
                newComments = htmlItems.ToString(),
                countNewComments = comments.Count
            }));
        }
コード例 #4
0
ファイル: GeneratorModel.cs プロジェクト: AndreyShp/StudyFun
 private static string GetHtml(ControllerContext controllerContext,
                               KnowledgeDataType knowledgeDataType,
                               List <SourceWithTranslation> items)
 {
     return(OurHtmlHelper.RenderRazorViewToString(controllerContext, "PartialKnowledgeItems",
                                                  new Tuple <KnowledgeDataType, List <SourceWithTranslation> >(
                                                      knowledgeDataType, items)));
 }
コード例 #5
0
        public JsonResult AddTask(long userId, string task)
        {
            if (IdValidator.IsInvalid(userId) || string.IsNullOrWhiteSpace(task) ||
                WebSettingsConfig.Instance.IsSectionForbidden(SectionId.UserTasks))
            {
                return(JsonResultHelper.Error());
            }

            if (task.Length > UserTasksSettings.TASK_MAX_LENGTH)
            {
                return(JsonResultHelper.Error());
            }

            RepositoryFactory repositoryFactory = WebSettingsConfig.Instance.GetRepositoryFactory();
            BanRepository     banRepository     = repositoryFactory.GetBanRepository();
            var  banHelper = new BanHelper(Request);
            bool isBanned  = banHelper.IsBanned(SectionId.UserTasks, userId, banRepository);

            if (isBanned)
            {
                return(JsonResultHelper.Error());
            }

            banHelper.RegisterEvent(SectionId.UserTasks, "AddTask", userId, banRepository);

            UserTasksRepository userTasksRepository = repositoryFactory.CreateUserRepository(userId);

            task = OurHtmlHelper.PrepareStringFromUser(task);

            //TODO: дописывать (автор) к имени пользователя
            var userTask = new UserTask {
                Author       = null,
                AuthorId     = userId,
                Text         = task,
                CreationDate = DateTime.Now.Ticks,
                DeletedDate  = 0
            };

            UserTask addedTask = userTasksRepository.AddTask(userTask);

            if (addedTask == null)
            {
                return(JsonResultHelper.Error());
            }

            SendMail(string.Format("Пользователь {0} добавил таск {1}:\r\n{2}", userId, addedTask.Id, task));

            HttpContext.Response.Cookies.Add(new HttpCookie(TASK_COOKIE_NAME, addedTask.Id));
            string urlToRedirect = Url.Action("Index", RouteConfig.USER_TASKS_CONTROLLER, null, Request.Url.Scheme);

            return(JsonResultHelper.GetUnlimitedJsonResult(new { success = true, urlToRedirect }));
        }
コード例 #6
0
        public JsonResult Load(long userId, UserLanguages userLanguages, long prevId)
        {
            if (IdValidator.IsInvalid(userId) || UserLanguages.IsInvalid(userLanguages) || IdValidator.IsInvalid(prevId))
            {
                return(JsonResultHelper.Error(INVALID_DATA));
            }

            IUserKnowledgeQuery      userKnowledgeQuery = CreateUserKnowledgeQuery(userId);
            List <UserKnowledgeItem> items = GetData(userKnowledgeQuery, userLanguages, prevId);
            var htmlItems = new List <string>();

            foreach (UserKnowledgeItem userKnowledgeItem in items ?? new List <UserKnowledgeItem>(0))
            {
                string item = OurHtmlHelper.RenderRazorViewToString(ControllerContext, "PartialWallItem",
                                                                    userKnowledgeItem);
                htmlItems.Add(item);
            }
            return
                (JsonResultHelper.GetUnlimitedJsonResult(
                     new { sourceLanguageId = userLanguages.From.Id, items = htmlItems }));
        }
コード例 #7
0
ファイル: TrainerHelper.cs プロジェクト: AndreyShp/StudyFun
        public TrainerModel GetTrainerModel(HttpRequestBase request)
        {
            var model = new TrainerModel(_userLanguages);
            List <UserRepetitionIntervalItem> repetitionIntervalItems =
                _userRepetitionIntervalQuery.GetRepetitionIntervalItems(_userLanguages.From.Id,
                                                                        _userLanguages.To.Id,
                                                                        MAX_COUNT_ITEMS_TO_GET);

            foreach (UserRepetitionIntervalItem repetitionItem in
                     repetitionIntervalItems ?? new List <UserRepetitionIntervalItem>(0))
            {
                var trainerItem = new TrainerItem();

                var userKnowledge = repetitionItem.Data as UserKnowledgeItem;
                if (userKnowledge != null)
                {
                    var dataType = userKnowledge.DataType;
                    //тренируемся на запоминание пользовательских данных
                    SpeakerDataType speakerType = KnowledgeHelper.GetSpeakerType(dataType);
                    var             parsedData  = userKnowledge.ParsedData as SourceWithTranslation;

                    trainerItem.NextTimeToShow        = KnowledgeHelper.ConvertDateTimeToJsTicks(repetitionItem.NextTimeToShow);
                    trainerItem.DataId                = repetitionItem.DataId;
                    trainerItem.DataType              = (int)repetitionItem.DataType;
                    trainerItem.HtmlSource            = OurHtmlHelper.GetSpeakerHtml(parsedData.Source, speakerType);
                    trainerItem.HtmlTranslation       = OurHtmlHelper.GetSpeakerHtml(parsedData.Translation, speakerType);
                    trainerItem.SourceLanguageId      = parsedData.Source.LanguageId;
                    trainerItem.TranslationLanguageId = parsedData.Translation.LanguageId;
                    trainerItem.ImageUrl              = parsedData.HasImage ? GetImageUrl(request, parsedData.Id, dataType) : null;
                }

                if (IdValidator.IsValid(trainerItem.DataId) && trainerItem.HtmlSource != null &&
                    trainerItem.HtmlTranslation != null)
                {
                    //данные такого типа, могут быть представлены
                    model.AddItem(trainerItem);
                }
            }
            return(model);
        }
コード例 #8
0
ファイル: HelpController.cs プロジェクト: AndreyShp/StudyFun
        public JsonResult FeedbackMessage(string message, string email)
        {
            //TODO: антиспам систему
            if (string.IsNullOrWhiteSpace(message))
            {
                return(JsonResultHelper.Error());
            }

            string text = string.Format("Домен: {0}\r\n" +
                                        "IP-адрес: {1}\r\n\r\n" +
                                        "Адрес для ответа: {2}\r\n" +
                                        "Сообщение:\r\n{3}",
                                        WebSettingsConfig.Instance.Domain,
                                        RemoteClientHelper.GetClientIpAddress(Request),
                                        OurHtmlHelper.HtmlEncode(email, true),
                                        OurHtmlHelper.HtmlEncode(message, true));

            var  mailer    = new Mailer();
            bool isSuccess = mailer.SendMail(MailAddresses.FEEDBACK, MailAddresses.FEEDBACK, "Обратная связь", text);

            return(JsonResultHelper.Success(isSuccess));
        }