Пример #1
0
 public IActionResult GetAll(WordItemsType type)
 {
     return(OnActionWork(() =>
                         new ObjectResult(_wordService.GetAll(type))));
 }
Пример #2
0
        /// <summary>
        /// Gets all.
        /// </summary>
        /// <param name="type">The type of <see cref="WordItemsType"/> enum.</param>
        /// return <see cref="IEnumerable{WordModel}" />
        public IEnumerable <WordModel> GetAll(WordItemsType type)
        {
            switch (type)
            {
            case WordItemsType.ParentsWithChildren:
                return(_flashcardDbContext.Words
                       .Include(w => w.CategoriesWord)
                       .ThenInclude(c => c.Category)
                       .Include(w => w.LanguageType)
                       .Include(w => w.ParentWord)
                       .ThenInclude(pw => pw.LanguageType)
                       .Include(pw => pw.TranslateChildrenWords)
                       .ThenInclude(pw => pw.LanguageType)
                       .Where(w => w.ParentWord == null).ToList().Select(w =>
                                                                         new WordModel
                {
                    Id = w.Id,
                    Categories = w.CategoriesWord.Select(cw =>
                                                         new CategoryModel
                    {
                        Id = cw.CategoryId,
                        Name = cw.Category.Name
                    }).ToArray(),
                    LanguageType = new LanguageTypeModel
                    {
                        Tag = Enum.Parse <LanguageTypeEnum>(w.LanguageType.Tag),
                        Name = w.LanguageType.Name
                    },
                    Value = w.Value,
                    TranslatedWords = w.TranslateChildrenWords?.ToList().Select(ch =>
                                                                                new TranslatedWord
                    {
                        Id = ch.Id,
                        LanguageType = new LanguageTypeModel
                        {
                            Tag = Enum.Parse <LanguageTypeEnum>(ch.LanguageType.Tag),
                            Name = ch.LanguageType.Name
                        },
                        Value = ch.Value
                    }).ToArray()
                }));

            case WordItemsType.ChildWithParents:

                return(_flashcardDbContext.Words
                       .Include(w => w.CategoriesWord)
                       .ThenInclude(c => c.Category)
                       .Include(w => w.LanguageType)
                       .Include(w => w.ParentWord)
                       .ThenInclude(pw => pw.LanguageType)
                       .Where(w => w.ParentWord != null)
                       .ToList().Select(w =>
                                        new WordModel
                {
                    Id = w.Id,
                    Categories = w.CategoriesWord.Select(cw =>
                                                         new CategoryModel
                    {
                        Id = cw.CategoryId,
                        Name = cw.Category.Name
                    }).ToArray(),
                    LanguageType = new LanguageTypeModel
                    {
                        Tag = Enum.Parse <LanguageTypeEnum>(w.LanguageType.Tag),
                        Name = w.LanguageType.Name
                    },
                    Value = w.Value,
                    TranslatedWords = new[]
                    {
                        new TranslatedWord
                        {
                            Id = w.ParentWord.Id,
                            LanguageType = new LanguageTypeModel
                            {
                                Tag = Enum.Parse <LanguageTypeEnum>(w.ParentWord.LanguageType.Tag),
                                Name = w.ParentWord.LanguageType.Name
                            },
                            Value = w.ParentWord.Value
                        }
                    }
                }));
            }

            throw new BadRequestException("Unsupported type name");
        }