public override async Task <ComicReply> GetComic(ComicRequest request, ServerCallContext context) { var random = ChooseRandomComicSource(); return(request.Comicname.ToLower() switch { "dilbert" => new ComicReply { Comicurl = await _dilbertService.GetComicUri() }, "garfield" => new ComicReply { Comicurl = await _garfieldService.GetComicUri() }, "xkcd" => new ComicReply { Comicurl = await _xKCDService.GetComicUri() }, "calvinandhobbs" => new ComicReply { Comicurl = await _calvinAndHobbesService.GetComicUri() }, _ => new ComicReply { Comicurl = random switch { ComicEnum.Garfield => await _garfieldService.GetComicUri(), ComicEnum.XKCD => await _xKCDService.GetComicUri(), ComicEnum.Dilbert => await _dilbertService.GetComicUri(), ComicEnum.CalvinAndHobbes => await _calvinAndHobbesService.GetComicUri(), _ => throw new ArgumentOutOfRangeException(), } }, });
public PagedResponse <ComicGetDTO> Execute(ComicRequest request) { var comics = Context.Comics.AsQueryable(); if (request.Genres != null) { comics = comics.Where(c => c.ComicGenres.Any(cg => request.Genres.Contains(cg.GenreId))); } if (request.Authors != null) { comics = comics.Where(c => c.ComicAuthors.Any(ca => request.Authors.Contains(ca.AuthorId))); } if (request.Name != null) { comics = comics.Where(c => c.Name.ToLower().Contains(request.Name.Trim().ToLower())); } return(comics .Include(c => c.Pictures) .Include(c => c.ComicGenres) .ThenInclude(cg => cg.Genre) .OrderBy(c => c.Id) .Where(c => c.DeletedAt == null) .Select(c => new ComicGetDTO { Id = c.Id, Name = c.Name, Description = c.Description, Issues = c.Issues, PublishedAt = c.PublishedAt, Publisher = c.Publisher.Name, Pictures = c.Pictures.Select(p => p.Path), Genres = c.ComicGenres.Select(cg => cg.Genre.Name), Authors = c.ComicAuthors.Select(ca => ca.Author.FirstName + ' ' + ca.Author.LastName) }) .Paginate(request.PerPage, request.Page)); }
// GET: Comics public ActionResult Index(ComicRequest request) { var result = getCommand.Execute(request); return(View(result)); }
[HttpGet] // GET: api/Comics //[LoggedIn] public IActionResult Get([FromQuery] ComicRequest queryParams) { var result = getCommand.Execute(queryParams); return(Ok(result)); }