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 })); }