Пример #1
0
        public List <ExternalInterview> GetQuestions()
        {
            List <Interview> interviews =
                Adapter.ReadByContext(c => c.Interview.OrderBy(e => e.ParentInterviewId).ToList());
            var result = new Dictionary <long, ExternalInterview>();

            foreach (Interview interview in interviews)
            {
                if (interview.ParentInterviewId == null)
                {
                    result.Add(interview.Id, new ExternalInterview(interview.Id, interview.Text));
                    continue;
                }

                long parentId = interview.ParentInterviewId.Value;
                ExternalInterview question;
                if (!result.TryGetValue(parentId, out question))
                {
                    LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat(
                        "InterviewsQuery.GetQuestions не найден родитель с идентификатором {0}!", parentId);
                    continue;
                }

                question.AddAnswer(interview.Id, interview.Text);
            }

            return(result.Values.Where(e => EnumerableValidator.IsNotNullAndNotEmpty(e.Answers)).OrderBy(e => e.Id).ToList());
        }
Пример #2
0
        /// <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);
                            }
                        }
                    }
                }
            });
        }
Пример #3
0
        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));
        }
Пример #4
0
 public void AddRow(params string[] fields)
 {
     if (EnumerableValidator.IsNotEmpty(fields))
     {
         AddRow(fields.Select(TableDataCell.CreateText).ToList());
     }
 }
Пример #5
0
        private void LoadLanguages()
        {
            if (EnumerableValidator.IsNotNullAndNotEmpty(_languages))
            {
                //ранее уже загрузили языки
                return;
            }

            Adapter.ActionByContext(c => {
                _languages             = c.Language.ToList();
                _languagesByIds        = new Dictionary <long, Language>(_languages.Count);
                _languagesByShortNames = new Dictionary <LanguageShortName, Language>(_languages.Count);
                foreach (Language language in _languages)
                {
                    LanguageShortName parsedShortName = ParseShortName(language.ShortName);
                    if (parsedShortName == LanguageShortName.Unknown)
                    {
                        continue;
                    }

                    _languagesByIds.Add(language.Id, language);
                    _languagesByShortNames.Add(parsedShortName, language);
                }
            });
        }
Пример #6
0
        private static void AddSubmenu(HashSet <SectionId> availableSectionIds,
                                       string title,
                                       IEnumerable <MenuItem> menuItems,
                                       List <MenuItem> result)
        {
            var children = menuItems.Where(menuItem => menuItem.SectionId == SectionId.No || availableSectionIds.Contains(menuItem.SectionId)).ToList();

            if (EnumerableValidator.IsEmpty(children))
            {
                return;
            }

            MenuItem item;

            if (children.Count == 1)
            {
                item = children[0];
            }
            else
            {
                item = new MenuItem(SectionId.No, title + " <b class=\"caret\"></b>", null, null)
                {
                    Children = children
                };
            }
            result.Add(item);
        }
Пример #7
0
        public GeneratorModel(ControllerContext controllerContext,
                              Dictionary <KnowledgeDataType, List <GeneratedKnowledgeItem> > items)
        {
            HtmlItems = new List <string>();
            IEnumerable <GeneratedKnowledgeItem> generatedWords = GetGeneratedItems(KnowledgeDataType.WordTranslation,
                                                                                    items);
            List <SourceWithTranslation> words =
                generatedWords.Select(e => (SourceWithTranslation)e.ParsedData).ToList();

            if (EnumerableValidator.IsNotNullAndNotEmpty(words))
            {
                HtmlItems.Add(GetHtml(controllerContext, KnowledgeDataType.WordTranslation, words));
            }

            IEnumerable <GeneratedKnowledgeItem> generatedPhrases = GetGeneratedItems(
                KnowledgeDataType.PhraseTranslation, items);
            List <SourceWithTranslation> phrases =
                generatedPhrases.Select(e => (SourceWithTranslation)e.ParsedData).ToList();

            if (EnumerableValidator.IsNotNullAndNotEmpty(phrases))
            {
                HtmlItems.Add(GetHtml(controllerContext, KnowledgeDataType.PhraseTranslation, phrases));
            }

            IEnumerable <GeneratedKnowledgeItem> generatedSentences =
                GetGeneratedItems(KnowledgeDataType.SentenceTranslation, items);
            List <SourceWithTranslation> sentences =
                generatedSentences.Select(e => (SourceWithTranslation)e.ParsedData).ToList();

            if (EnumerableValidator.IsNotNullAndNotEmpty(sentences))
            {
                HtmlItems.Add(GetHtml(controllerContext, KnowledgeDataType.SentenceTranslation, sentences));
            }
        }
Пример #8
0
        public ActionResult Index(long userId, UserLanguages userLanguages)
        {
            const string EMPTY_WALL_VIEW = "EmptyWall";

            if (WebSettingsConfig.Instance.IsSectionForbidden(SectionId.MyKnowledge))
            {
                return(RedirectToAction("Index", RouteConfig.MAIN_CONTROLLER_NAME));
            }

            if (IdValidator.IsInvalid(userId) || UserLanguages.IsInvalid(userLanguages))
            {
                return(View(EMPTY_WALL_VIEW));
            }

            IUserKnowledgeQuery      userKnowledgeQuery = CreateUserKnowledgeQuery(userId);
            List <UserKnowledgeItem> items = GetData(userKnowledgeQuery, userLanguages, long.MaxValue);

            if (items == null || EnumerableValidator.IsEmpty(items))
            {
                return(View(EMPTY_WALL_VIEW));
            }

            //TODO: если будет тормозить - получать ajax'ом данные через action GetStatistic
            UserKnowledgeStatistic statistic = userKnowledgeQuery.GetStatistic();

            return(View("Index", new KnowledgeWallModel(userLanguages, items)
            {
                Statistic = statistic
            }));
        }
Пример #9
0
        public List <string> FindSentences(string words, OrderWordsInSearch orderWordsInSearch)
        {
            var             uniqueWords = new HashSet <string>(words.Split(new [] { ' ' }, StringSplitOptions.RemoveEmptyEntries));
            List <Sentence> sentences   = _sentenceWordsQuery.FindSentencesByWords(uniqueWords.Select(e => e.Trim()).ToList(),
                                                                                   orderWordsInSearch);

            if (EnumerableValidator.IsEmpty(sentences))
            {
                NLPWrapper.ExternalObjects.Sentence sentence = _textAnalyzer.ParseSentence(words, false);
                var normalWords = new List <string>();
                foreach (Word word in sentence.Words)
                {
                    if (EnumerableValidator.IsNotEmpty(word.NormalForms))
                    {
                        normalWords.AddRange(word.NormalForms);
                    }
                    else
                    {
                        normalWords.Add(word.GetAppropriateWordText());
                    }
                }
                sentences = _sentenceWordsQuery.FindSentencesByWords(normalWords, orderWordsInSearch);
            }
            return(sentences.Select(e => e.Text).ToList());
        }
Пример #10
0
        private static bool IsInvalid(RepresentationForUser representationForUser)
        {
            Size size = representationForUser != null ? representationForUser.Size : null;

            bool result = representationForUser == null || string.IsNullOrEmpty(representationForUser.Title) ||
                          IsInvalidSize(size) || IsInvalidImage(representationForUser.Image) ||
                          !EnumerableValidator.IsNotNullAndNotEmpty(representationForUser.Areas);

            if (!result)
            {
                IWordsQuery wordsQuery = new WordsQuery();
                //проверить области
                List <RepresentationAreaForUser> areas = representationForUser.Areas;
                foreach (RepresentationAreaForUser area in areas)
                {
                    if (wordsQuery.IsInvalid(area.Source) || wordsQuery.IsInvalid(area.Translation) ||
                        IsInvalid(size, area.LeftUpperCorner) || IsInvalid(size, area.RightBottomCorner))
                    {
                        result = true;
                        break;
                    }
                }
            }
            return(result);
        }
Пример #11
0
        /// <summary>
        /// Возвращает count данных, которые нужно повторить
        /// </summary>
        /// <param name="sourceLanguageId">идентификатор языка с которого переводят</param>
        /// <param name="translationLanguageId">идентификатор языка на который переводят</param>
        /// <param name="count">кол-во записей</param>
        /// <returns>если есть, то данные которые нужно повторить, иначе пустой набор</returns>
        public List <UserRepetitionIntervalItem> GetRepetitionIntervalItems(long sourceLanguageId,
                                                                            long translationLanguageId,
                                                                            int count)
        {
            List <UserRepetitionIntervalItem> result = Adapter.ReadByContext(c => {
                DateTime dateTimeNow = DateTime.Now;
                //получать данные для которых подошло данные для показа
                List <Tuple <UserKnowledge, UserRepetitionInterval> > joinedData = _repetitionQuery.GetRepetitionQuery(c,
                                                                                                                       DateTime
                                                                                                                       .
                                                                                                                       MinValue,
                                                                                                                       dateTimeNow,
                                                                                                                       count);
                //NOTE: определяем время для показа, для данных, которые никогда и никому не показывали - чтобы эти данные всегда были перед данными
                //NOTE: время для показа, которых еще не подошло, но после данных, время которых просрочено
                DateTime unknownNextTimeToShow = EnumerableValidator.IsEmpty(joinedData)
                                                     ? new DateTime().GetDbDateTime()
                                                     : dateTimeNow.AddMilliseconds(1);
                if (_repetitionType == RepetitionType.All)
                {
                    //получать данные, которые ни разу не показывали пользователю
                    AddOtherData(count, joinedData, wantage => _repetitionQuery.GetRepetitionNewQuery(c, wantage));
                    //получать данные для которых время показа - еще не подошло
                    AddOtherData(count, joinedData,
                                 wantage =>
                                 _repetitionQuery.GetRepetitionQuery(c, dateTimeNow, DateTime.MaxValue, wantage));
                }

                return(ConvertToItems(sourceLanguageId, translationLanguageId, joinedData, unknownNextTimeToShow));
            }, new List <UserRepetitionIntervalItem>(0));

            return(result);
        }
Пример #12
0
 public void AddHeader(params string[] headers)
 {
     if (EnumerableValidator.IsNotEmpty(headers))
     {
         AddHeader(headers.ToList());
     }
 }
Пример #13
0
        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));
        }
Пример #14
0
 /// <summary>
 /// Конструктор
 /// </summary>
 /// <param name="video">данные о видео</param>
 internal VideoForUser(Data.Video.Video video)
     : this(video.Title, video.HtmlCode)
 {
     Id       = video.Id;
     HasImage = EnumerableValidator.IsNotNullAndNotEmpty(video.Image);
     SortInfo = new SortInfo(video);
 }
Пример #15
0
        public void Create(string file)
        {
            var csvReader = new CsvReader(file);
            //var sentences = IoCModule.Create<SentencesQuery>();
            var      languages = new LanguagesQuery(LanguageShortName.Unknown, LanguageShortName.Unknown);
            Language from      = languages.GetByShortName(_from);
            Language russian   = languages.GetByShortName(LanguageShortName.Ru);

            string[] firstLine = csvReader.ReadLine();
            if (firstLine == null || EnumerableValidator.IsEmpty(firstLine))
            {
                return;
            }

            string groupName = TextFormatter.FirstUpperCharAndTrim(firstLine[0]);

            if (string.IsNullOrEmpty(groupName) || groupName.Length < 2)
            {
                return;
            }
            var groupsQuery = new GroupsQuery(from.Id);

            string fileName = firstLine.Length > 1 && !string.IsNullOrWhiteSpace(firstLine[1])
                                  ? firstLine[1].Trim()
                                  : groupName;
            string imageFileName = Path.Combine(@"C:\Projects\StudyLanguages\Источники для групп\Источники картинок\",
                                                fileName + ".jpg");

            //создает или получает раннее созданную группу
            byte[]       image        = !string.IsNullOrEmpty(imageFileName) ? File.ReadAllBytes(imageFileName) : null;
            GroupForUser groupForUser = groupsQuery.GetOrCreate(GroupType, groupName, image);

            do
            {
                string[] line = csvReader.ReadLine();
                if (line == null)
                {
                    break;
                }
                if (line.Length < 2)
                {
                    continue;
                }
                image = line.Length > 2 && !string.IsNullOrEmpty(line[2]) ? File.ReadAllBytes(line[2]) : null;
                int?rating = null;
                int rat;
                if (line.Length > 3 && int.TryParse(line[3], out rat))
                {
                    rating = rat;
                }

                bool isSuccess = Create(groupForUser, line, from, russian, image, rating);
                Console.WriteLine("{0}: {1}", isSuccess ? "Сохранено" : "Не сохранено",
                                  line.Aggregate((e1, e2) => e1 + " -> " + e2));
            } while (true);
        }
        public void ValidateEnumerableToBeNullOrEmpty()
        {
            // Given
            var validator = new EnumerableValidator <int>(null);

            // When
            validator.BeNullOrEmpty();

            // Then
            Assert.True(true);
        }
Пример #17
0
        public DocumentationGenerator Download(DocumentType docType, string fileName, ComparisonForUser comparisonForUser)
        {
            string header = comparisonForUser.Title;
            DocumentationGenerator documentGenerator = DocumentationGenerator.Create(_domain, _fontPath, docType, fileName);

            documentGenerator.AddHeader(header, false);
            if (comparisonForUser.HasDescription)
            {
                documentGenerator.AddParagraph(TextFormatter.AppendCharIfNeed(comparisonForUser.Description));
            }
            foreach (ComparisonItemForUser item in comparisonForUser.Items)
            {
                string title = item.Title;
                if (item.HasTranslatedTitle)
                {
                    title += " – " + item.TitleTranslated;
                }
                documentGenerator.AddSubheader(title);
                documentGenerator.AddParagraph(item.GetRuleHeader());
                int ruleNumber = 1;
                foreach (ComparisonRuleForUser rule in item.Rules)
                {
                    string ruleDescription = TextFormatter.AppendCharIfNeed(rule.Description);
                    if (!item.IsOneRule)
                    {
                        ruleDescription = ruleNumber + ". " + ruleDescription;
                        ruleNumber++;
                    }
                    documentGenerator.AddParagraph(ruleDescription);
                    if (EnumerableValidator.IsNotEmpty(rule.Examples))
                    {
                        foreach (ComparisonRuleExampleForUser example in @rule.Examples)
                        {
                            documentGenerator.AddParagraph(example.Example.Source.Text + " – "
                                                           + example.Example.Translation.Text,
                                                           new TextFormat {
                                CountLeftPaddings = 1
                            });
                            if (!string.IsNullOrWhiteSpace(example.Description))
                            {
                                documentGenerator.AddParagraph("Пояснение к примеру: "
                                                               + TextFormatter.AppendCharIfNeed(example.Description),
                                                               new TextFormat {
                                    IsItalic = true, CountLeftPaddings = 1
                                });
                            }
                        }
                    }
                }
            }

            return(documentGenerator);
        }
Пример #18
0
        private static void TranslationsToElement(XElement container, string name, List <string> translations)
        {
            if (EnumerableValidator.IsEmpty(translations))
            {
                return;
            }

            foreach (string translation in translations)
            {
                container.Add(new XElement(name, translation));
            }
        }
        public void ValidateEnumerableHaveCountOf()
        {
            // Given
            var validator = new EnumerableValidator <int>(new List <int> {
                1
            });

            // When
            validator.HaveCountOf(1);

            // Then
            Assert.True(true);
        }
        public void ValidateEnumerableHaveCountLessThanOrEqualTo()
        {
            // Given
            var validator = new EnumerableValidator <int>(new List <int> {
                1
            });

            // When
            validator.HaveCountLessThanOrEqualTo(10);

            // Then
            Assert.True(true);
        }
Пример #21
0
        /*public JsonResult GetExamples(UserLanguages userLanguages,
         *                            GroupForUser group) {
         *  if (userLanguages == null || group == null || UserLanguages.IsInvalid(userLanguages)) {
         *      return JsonResultHelper.Error();
         *  }
         *  GroupModel model = GetModel(userLanguages, group);
         *  if (model.IsInvalid()) {
         *      return JsonResultHelper.Error();
         *  }
         *
         *  var resultExamples = new List<Tuple<long, List<string>>>();
         *  var searchEngineFactory = new SentencesSearchEngineFactory();
         *  ISentencesSearchEngine fromSentencesSearchEngine = searchEngineFactory.Create(userLanguages.From.Id);
         *  ISentencesSearchEngine toSentencesSearchEngine = searchEngineFactory.Create(userLanguages.To.Id);
         *
         *  foreach (SourceWithTranslation elem in model.ElemsWithTranslations) {
         *      model.SetCurrent(elem);
         *
         *      AddExample(fromSentencesSearchEngine, elem.Source, resultExamples);
         *      AddExample(toSentencesSearchEngine, elem.Translation, resultExamples);
         *  }
         *  return JsonResultHelper.GetUnlimitedJsonResult(resultExamples);
         * }*/

        /*protected JsonResult GetKnowledgeInfo(long userId, UserLanguages userLanguages, GroupForUser group) {
         *  if (IdValidator.IsInvalid(userId) || group == null) {
         *      return JsonResultHelper.Error();
         *  }
         *  GroupModel model = GetModel(userLanguages, group, GetPatternsForAll(group));
         *  if (model.IsInvalid()) {
         *      return JsonResultHelper.Error();
         *  }
         *  var knowledgeQuery = IoCModule.Create<UserKnowledgeQuery>();
         *  var statuses = //knowledgeQuery.GetStatusesByDataIds(model.ElemsWithTranslations.Select(e => e.Id).ToList());
         *  return GetUnlimitedJsonResult(statuses);
         * }*/

        public void AddExample(ISentencesSearchEngine sentencesSearcher,
                               PronunciationForUser entity,
                               List <Tuple <long, List <string> > > result)
        {
            List <string> examples = sentencesSearcher.FindSentences(entity.Text, OrderWordsInSearch.ExactWordForWord);

            if (EnumerableValidator.IsEmpty(examples))
            {
                return;
            }

            result.Add(new Tuple <long, List <string> >(entity.Id, examples));
        }
Пример #22
0
        public static T Get <T>(XElement element, params string[] names)
        {
            if (EnumerableValidator.IsEmpty(names))
            {
                return(default(T));
            }

            XElement elem             = GetElementByNames(element, names);
            string   valueElementName = names[names.Length - 1];
            XElement valueElement     = elem != null?elem.Element(valueElementName) : null;

            return(valueElement != null?ParseValue <T>(GetElementValue(valueElement)) : default(T));
        }
Пример #23
0
        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));
        }
Пример #24
0
        public void ConvertGroupWords()
        {
            string path = string.Format(@"C:\Projects\StudyLanguages\Источники для групп\Word\{0}\", _languageTo);

            string[] files = Directory.GetFiles(Path.Combine(path, "Xml"), "*.xml");

            var xmlTranslationReader = new XmlTranslationReader();

            foreach (string file in files)
            {
                string name = Path.GetFileNameWithoutExtension(file);

                Console.WriteLine("Обрабатываем группу слов \"{0}\"", name);

                List <XmlTranslationReader.Item> items = xmlTranslationReader.Read(file);

                string destinationFile = Path.Combine(path, name + ".csv");
                using (var csvWriter = new CsvWriter(destinationFile)) {
                    csvWriter.WriteLine(name);
                    foreach (XmlTranslationReader.Item item in items)
                    {
                        var    fields = new List <string>();
                        string source;
                        if (EnumerableValidator.IsNotEmpty(item.Best))
                        {
                            source = item.Best[0].Trim();
                        }
                        else
                        {
                            source = "<UNKNOWN> - " + string.Join("|", item.Other);
                        }

                        fields.Add(source);
                        fields.Add(item.Source);

                        /* string imageFileName =
                         *  string.Format(
                         *      @"C:\Projects\StudyLanguages\Источники для групп\Источники картинок\{0}\{1}.jpg",
                         *      name, item.Translation);
                         * if (File.Exists(imageFileName)) {
                         *  fields.Add(item.Translation);
                         * }*/

                        csvWriter.WriteLine(fields.ToArray());
                    }
                }
            }

            Console.WriteLine("Все группы слов обработаны!");
        }
Пример #25
0
        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);
        }
Пример #26
0
        internal string GetAdditionalInfo()
        {
            if (EnumerableValidator.IsEmpty(_additionalInfo))
            {
                return(null);
            }

            var xElement = new XElement("Info");

            foreach (var additionalInfo in _additionalInfo)
            {
                xElement.Add(new XElement(additionalInfo.Key.ToString(), additionalInfo.Value));
            }
            return(xElement.ToString(SaveOptions.DisableFormatting));
        }
Пример #27
0
        private WordsByPattern GetKeyboardLayoutResult(UserLanguages userLanguages, string query, WordsQuery wordsQuery)
        {
            var           keyboardLayoutConverter = new KeyboardLayoutConverter();
            List <string> convertedQueries        = keyboardLayoutConverter.Convert(query);

            foreach (string convertedQuery in convertedQueries)
            {
                WordsByPattern result = wordsQuery.GetLikeWords(userLanguages, convertedQuery, WordType);
                if (EnumerableValidator.IsNotEmpty(result.Words))
                {
                    result.NewPattern = convertedQuery;
                    return(result);
                }
            }
            return(new WordsByPattern());
        }
        public void ValidateEnumerableToBeNullViolated()
        {
            // Given
            var validator = new EnumerableValidator <int>(new List <int>());

            // When
            var exception = Assert.Throws <XunitException>(() => validator.BeNull("that's the bottom line"));

            // Then
            Assert.NotNull(exception);
            var rn = Environment.NewLine;

            Assert.Equal(
                $"{rn}validator{rn}contains \"0\" item(s){rn}but was expected to be null{rn}because that's the bottom line",
                exception.UserMessage);
        }
Пример #29
0
        public JsonResult GetExistenceIds(long userId, List <long> ids, KnowledgeDataType dataType)
        {
            /*             List<long> ids = new List<long>();
             * KnowledgeDataType dataType = KnowledgeDataType.SentenceTranslation;*/
            List <long> parsedIds = ids != null?ids.Where(IdValidator.IsValid).ToList() : new List <long>(0);

            if (IdValidator.IsInvalid(userId) || EnumerableValidator.IsEmpty(parsedIds) ||
                EnumValidator.IsInvalid(dataType))
            {
                return(JsonResultHelper.Error(INVALID_DATA));
            }

            IUserKnowledgeQuery userKnowledgeQuery = CreateUserKnowledgeQuery(userId);
            List <long>         existenceIds       = userKnowledgeQuery.GetExistenceIds(parsedIds, dataType);

            return(JsonResultHelper.GetUnlimitedJsonResult(existenceIds));
        }
Пример #30
0
        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("Не удалось добавить порцию знаний! Попробуйте позже."));
        }