public async Task <IEnumerable <TAbility> > Search <TAbility>(SearchAbilitiesQuery query, string userId, CancellationToken cancellationToken)
            where TAbility : BaseAbility
        {
            var abilities = _context.Abilities.Where(a => a.GetType() == typeof(TAbility));

            var response = abilities.OfType <TAbility>()
                           .Where(s => s.UserId == null || s.UserId == userId);

            if (!string.IsNullOrWhiteSpace(query.Name))
            {
                response = response.Where(s => s.Name.Contains(query.Name));
            }

            return(await response.ToListAsync(cancellationToken));
        }
Example #2
0
 public async Task <IActionResult> SearchAbilities([FromQuery] SearchAbilitiesQuery request)
 {
     return(Ok(await _mediator.Send(request)));
 }