protected ActionResult GetIndex(long userId, UserLanguages userLanguages, long groupId, Action <TrainerModel> modelSetter) { if (WebSettingsConfig.Instance.IsSectionForbidden(SectionId)) { return(RedirectToAction("Index", RouteConfig.MAIN_CONTROLLER_NAME)); } if (IdValidator.IsInvalid(userId) || UserLanguages.IsInvalid(userLanguages) || IdValidator.IsInvalid(groupId)) { return(RedirectToParentPage()); } IUserRepetitionIntervalQuery userRepetitionIntervalQuery = CreateUserRepetitionIntervalQuery(userId, groupId); var trainerHelper = new TrainerHelper(userRepetitionIntervalQuery, userLanguages); TrainerModel model = trainerHelper.GetTrainerModel(Request); modelSetter(model); if (EnumerableValidator.IsNullOrEmpty(model.Items)) { return(RedirectToParentPage()); } ViewData[OurHtmlHelper.ViewDataFlags.SKIP_POPUP_PANEL] = true; return(View("../Trainer/Index", model)); }
public FileResult GetVideo(string urlPart) { if (WebSettingsConfig.Instance.IsSectionForbidden(SectionId.TVSeries)) { return(null); } TVSeriesWatch seriesWatch = GetSeriesWatch(urlPart); if (seriesWatch == null) { return(null); } string fullFileName = WebSettingsConfig.Instance.GetDataFileName(SERIES_FOLDER, seriesWatch.GetPathToFiles(), seriesWatch.VideoFileName); byte[] fileContents = ReadFile(fullFileName); if (EnumerableValidator.IsNullOrEmpty(fileContents)) { return(null); } TVSeriesInfo seriesInfo = seriesWatch.GetSeriesInfo(); return(File(fileContents, "video/mp4", seriesInfo.OrigTitle + "_" + seriesWatch.VideoFileName)); }
/// <summary> /// Устанавливает отложенные настройки /// </summary> /// <param name="args">функции по отложенным вычислениям</param> public void SetDeferredSettings(params Action <WebSettingsConfig>[] args) { const int MAX_ATTEMPTS = 3; _deferredActions = args; if (EnumerableValidator.IsNullOrEmpty(_deferredActions)) { return; } Task.Run(() => { foreach (var action in _deferredActions) { for (int i = 0; i < MAX_ATTEMPTS; i++) { try { action(this); break; } catch (ThreadAbortException e) {} catch (Exception e) { if (i - 1 == MAX_ATTEMPTS) { LoggerWrapper.RemoteMessage(LoggingSource.Mail, LoggingType.Error, "WebSettingsConfig.SetDeferredSettings вылетело исключение {0}. Сделали {1} попыток!", e, MAX_ATTEMPTS); } } } } }); }
public JsonResult AnswerInterview(List <long> answersIds) { List <long> validAnswersIds = (answersIds ?? new List <long>(0)).Where(IdValidator.IsValid).ToList(); if (EnumerableValidator.IsNullOrEmpty(validAnswersIds)) { return(JsonResultHelper.Error()); } IInterviewsQuery interviewsQuery = new InterviewsQuery(); bool isSuccess = interviewsQuery.IncrementCountAnswers(validAnswersIds); return(JsonResultHelper.Success(isSuccess)); }
public List <VideoForUser> GetVisibleWithText(VideoType type, int count = 0) { var result = GetVisible(type, count); if (EnumerableValidator.IsNullOrEmpty(result)) { return(result); } Adapter.ActionByContext(c => { IQueryable <long> videoIdsWithText = c.VideoSentence.Select(e => e.VideoId).Distinct(); var fast = new HashSet <long>(videoIdsWithText); result = result.Where(e => fast.Contains(e.Id)).ToList(); }); return(result); }
public JsonResult AddMany(long userId, List <UserKnowledgeItem> knowledgeItems) { IUserKnowledgeQuery userKnowledgeQuery = CreateUserKnowledgeQuery(userId); if (EnumerableValidator.IsNullOrEmpty(knowledgeItems) || knowledgeItems.Any(userKnowledgeQuery.IsInvalid)) { LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "KnowledgeController.AddMany пользователь с идентификатором {0}, передал некорректные данные", userId); return(JsonResultHelper.Error(INVALID_DATA)); } List <KnowledgeAddStatus> statuses = userKnowledgeQuery.Add(knowledgeItems, MAX_COUNT_ITEMS_PER_DAY); KnowledgeAddStatus summaryStatus = EnumerableValidator.IsCountEquals(statuses, knowledgeItems) ? GetSummaryStatus(statuses) : KnowledgeAddStatus.Error; if (summaryStatus == KnowledgeAddStatus.Ok) { return(JsonResultHelper.Success(true)); } if (summaryStatus == KnowledgeAddStatus.ReachMaxLimit) { LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "KnowledgeController.AddMany пользователь с идентификатором {0}, достиг лимит данных за сегодня", userId); return(JsonResultHelper.Error( string.Format( "Сегодня вы уже добавили максимальное количество данных на обучение. В день вы можете добавлять не более {0} порций знаний. Завтра Вы вновь сможете добавлять новые элементы, а пока, рекомендуем изучить сегодняшний материал.", MAX_COUNT_ITEMS_PER_DAY))); } if (summaryStatus == KnowledgeAddStatus.AlreadyExists) { LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "KnowledgeController.AddMany пользователь с идентификатором {0}, уже добавлял данные", userId); return(JsonResultHelper.Error("Ранее вы уже добавляли эти данные на обучение.")); } LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "KnowledgeController.AddMany. Для пользователя с идентификатором {0} не удалось добавить данные, какая-то ошибка!", userId); return (JsonResultHelper.Error("Не удалось добавить порцию знаний! Попробуйте позже.")); }
public ActionResult Index(long userId, UserLanguages userLanguages) { if (WebSettingsConfig.Instance.IsSectionForbidden(SectionId.MyKnowledge)) { return(RedirectToAction("Index", RouteConfig.MAIN_CONTROLLER_NAME)); } if (IsInvalid(userId, userLanguages)) { return(RedirectToKnowledgeWall()); } IUserRepetitionIntervalQuery userRepetitionIntervalQuery = CreateUserRepetitionIntervalQuery(userId, RepetitionType. All); var trainerHelper = new TrainerHelper(userRepetitionIntervalQuery, userLanguages); TrainerModel model = trainerHelper.GetTrainerModel(Request); var pageRequiredData = new PageRequiredData(SectionId.MyKnowledge); pageRequiredData.Title = WebSettingsConfig.Instance.GetTemplateText(pageRequiredData.SectionId, PageId.Cards, TemplateId.Title, PageName); pageRequiredData.Keywords = WebSettingsConfig.Instance.GetTemplateText(pageRequiredData.SectionId, PageId.Cards, TemplateId.Keywords, PageName); pageRequiredData.Description = WebSettingsConfig.Instance.GetTemplateText(pageRequiredData.SectionId, PageId.Cards, TemplateId.Description, PageName); model.PageRequiredData = pageRequiredData; model.SetMarkUrl = Url.Action("SetMark", ControllerName, null, Request.Url.Scheme); model.BreadcrumbsItems = new List <BreadcrumbItem> { new BreadcrumbItem { Title = "Стена знаний", Action = "Index", ControllerName = RouteConfig.USER_KNOWLEDGE_CONTROLLER }, new BreadcrumbItem { IsActive = true, Title = PageName } }; if (EnumerableValidator.IsNullOrEmpty(model.Items)) { return(RedirectToKnowledgeWall()); } ViewData[OurHtmlHelper.ViewDataFlags.SKIP_POPUP_PANEL] = true; return(View("../Trainer/Index", model)); }
private bool IsFileValid(out string[] lines) { if (!File.Exists(_fileName)) { Console.WriteLine("Не найден файл {0}", _fileName); lines = null; return(false); } lines = File.ReadAllLines(_fileName); if (EnumerableValidator.IsNullOrEmpty(lines)) { Console.WriteLine("Содержимое файла {0} пустое", _fileName); return(false); } if (lines.Length < 2) { Console.WriteLine("Файл {0} должен содержать как минимум 2 строки", _fileName); return(false); } return(true); }
public ActionResult Download(long userId, DocumentType type) { if (IsInvalid(userId)) { LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "KnowledgeGeneratorController.Download передан некорректный идентификатор пользователя: {0}", userId); return(RedirectToAction("Index")); } string userKey = GetUserKey(userId); var generatedItems = ControllerContext.Controller.TempData[userKey] as Dictionary <KnowledgeDataType, List <GeneratedKnowledgeItem> >; if (EnumerableValidator.IsNullOrEmpty(generatedItems)) { LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "KnowledgeGeneratorController.Download для пользователя с идентификатором {0} не удалось найти сгенерированные данные во временных данных", userId); return(RedirectToAction("Index")); } //записать данные опять, т.к. они удаляются после считывания WriteItemsToTempData(userKey, generatedItems); string header = WebSettingsConfig.Instance.GetTemplateText(SectionId.KnowledgeGenerator, TemplateId.Header); var downloader = new GeneratedKnowledgeDownloader(WebSettingsConfig.Instance.DomainWithProtocol, CommonConstants.GetFontPath(Server)) { Header = header }; var documentGenerator = downloader.Download(type, header, generatedItems); return(File(documentGenerator.Generate(), documentGenerator.ContentType, documentGenerator.FileName)); }