public async Task <IActionResult> Get(long id, [FromCommaSeparatedQuery(Name = "include")] IEnumerable <string> includes) { var flags = EnumFlags.Parse <CommentIncludes>(includes); var query = new GetCommentQuery(User, id) { IncludeAuthor = CommentIncludes.Authors == (flags & CommentIncludes.Authors) }; var result = await mediator.Send(query, HttpContext.RequestAborted); if (false == result.IsSuccess()) { return(NotFound()); } return(Ok(mapper.Map <StoryModel>(result.Data))); }
public async Task <IActionResult> Get([FromCommaSeparatedQuery(Name = "include")] IEnumerable <string> includes) { var flags = EnumFlags.Parse <LandingIncludes>(includes); var query = new GetLandingQuery { IncludeHeroStory = LandingIncludes.HeroStory == (flags & LandingIncludes.HeroStory), FeaturedStoriesCount = LandingIncludes.FeaturedStories == (flags & LandingIncludes.FeaturedStories) ? blogSettings.FeaturedStoriesCount : 0 //StoriesFeedCount = LandingIncludes.StoriesFeed == (flags & LandingIncludes.StoriesFeed) // ? blogSettings.FeedStoriesCount // : 0 }; var result = await mediator.Send(query, HttpContext.RequestAborted); if (false == result.IsSuccess()) { foreach (var exception in result.Exceptions) { logger.LogError(exception, "[LandingController.Get] Exception"); } return(BadRequest(result.Exceptions)); } //return Ok(mapper.Map<LandingModel>(result.Data)); return(Ok(new LandingModel { Title = "", Description = "", Data = Enumerable.Empty <FeedStoryModel>(), Hero = new HeroStoryModel(), Featured = Enumerable.Empty <FeedStoryModel>(), Meta = new ResourcesMetaInfo { Resources = new AuthorsResource { Authors = Enumerable.Empty <AuthorModel>() } } })); }
public async Task <IActionResult> Get(string page, [FromCommaSeparatedQuery(Name = "include")] IEnumerable <string> includes) { var flags = EnumFlags.Parse <StoryIncludes>(includes); var query = new GetStoriesListQuery(User) { IncludeAuthors = StoryIncludes.Authors == (flags & StoryIncludes.Authors), IncludeComments = StoryIncludes.Comments == (flags & StoryIncludes.Comments), Cursor = (null != page && NavigationCursorEncoder.TryParse(page, out var cursor)) ? cursor : NavigationCursor.Forward(0, blogSettings.PageSize) }; var result = await mediator.Send(query, HttpContext.RequestAborted); if (false == result.IsSuccess()) { foreach (var exception in result.Exceptions) { logger.LogError(exception, "[StoriesController.Get]"); } return(BadRequest(result.Exceptions)); } var include = EnumFlags.ToQueryString(flags); string backward = null; string forward = null; if (null != result.Backward) { backward = Url.Action("Get", "Stories", new { page = NavigationCursorEncoder.ToEncodedString(result.Backward), include = include.ToString() }); } if (null != result.Forward) { forward = Url.Action("Get", "Stories", new { page = NavigationCursorEncoder.ToEncodedString(result.Forward), include = include.ToString() }); } return(Ok(new ListResult <StoryModel, ResourcesMetaInfo> { Data = result.Select(story => { var model = mapper.Map <StoryModel>(story); model.Author = result.Authors.FindIndex(story.Author); return model; }), Meta = new ResourcesMetaInfo { Resources = new AuthorsResource { Authors = result.Authors.Select(author => mapper.Map <AuthorModel>(author)) }, Navigation = new Navigation { Previous = backward, Next = forward } } })); } }
public void Test2() { //var include = EnumFlags.ToQueryString(TestFlags.Value1 | TestFlags.Value3); var temp = EnumFlags.Parse <TestFlags>(new[] { "value-1", "Value3" }, StringComparer.InvariantCulture); //Assert.IsNotNull(include); }