예제 #1
0
        public async Task <List <Character> > GetCharacters(CharacterQuery query)
        {
            var contents = await RepositoryParser.ParseRepository <List <Character> >(filePaths.Characters);

            var queryedItems = FilterCharacters(contents, query);

            return(queryedItems);
        }
예제 #2
0
 public async Task <IActionResult> Get([FromQuery] CharacterQuery query)
 {
     try
     {
         return(Ok(await charactersService.GetCharacters(query)));
     }
     catch (FileNotFoundException fileNotFoundEx)
     {
         return(BadRequest(fileNotFoundEx));
     }
     catch (Exception ex)
     {
         return(BadRequest(ex));
     }
 }
예제 #3
0
        public async Task <QueryResult <Character> > GetAll(CharacterQuery queryObj)
        {
            var result = new QueryResult <Character>();

            var query =
                _context.Characters
                .Include(c => c.Friends)
                .ThenInclude(f => f.Friend)
                .Include(c => c.Episodes)
                .ThenInclude(e => e.Episode)
                .AsQueryable();

            result.TotalItems = await query.CountAsync();

            query = query.ApplyPaging(queryObj);

            result.Items = await query.ToListAsync();

            return(result);
        }
예제 #4
0
        private List <Character> FilterCharacters(List <Character> characters, CharacterQuery query)
        {
            if (query == null)
            {
                return(characters);
            }

            if (query.Id != null)
            {
                characters = characters.Where(x => query.Id.IndexOf(x.Id) >= 0).ToList();
            }

            if (query.Name != null)
            {
                characters = characters.Where(x =>
                                              query.Name.Any(y =>
                                                             x.Name.ToLower()
                                                             .Contains(y.ToLower()
                                                                       )
                                                             )
                                              ).ToList();
            }

            if (query.GameId != null)
            {
                characters = characters.Where(x =>
                                              query.GameId.Any(id =>
                                                               x.AppearsInGame.Any(
                                                                   y => y.Contains(id.ToString())
                                                                   )
                                                               )
                                              ).ToList();
            }

            if (query.IsMainCharacter != null)
            {
                characters = characters.Where(x => x.IsMainCharacter == query.IsMainCharacter).ToList();
            }

            return(characters);
        }