public IActionResult GetAll(WordItemsType type) { return(OnActionWork(() => new ObjectResult(_wordService.GetAll(type)))); }
/// <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"); }