コード例 #1
0
    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(),
                }
            },
        });
コード例 #2
0
        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));
        }
コード例 #3
0
        // GET: Comics
        public ActionResult Index(ComicRequest request)
        {
            var result = getCommand.Execute(request);

            return(View(result));
        }
コード例 #4
0
        [HttpGet] // GET: api/Comics
        //[LoggedIn]
        public IActionResult Get([FromQuery] ComicRequest queryParams)
        {
            var result = getCommand.Execute(queryParams);

            return(Ok(result));
        }