コード例 #1
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 }));
        }