public async Task <List <PostViewModel> > GetAllPosts(Guid currentUserId, PostSortOptions sortOptions = PostSortOptions.Date, SortOrderOption orderOption = SortOrderOption.Descending, AccomodationOptions?accomodationOptions = null, decimal?minPrice = null, decimal?maxPrice = null, string city = null, string keyword = null) { return((await _context.GetAllPostsAsync(currentUserId, sortOptions, orderOption, accomodationOptions, minPrice, maxPrice, city, keyword)).ToList()); }
public static object GetDefaultModifier(this PostSortOptions sortOptions, SortOrderOption orderOption) { switch (sortOptions) { case PostSortOptions.Date: return(null); case PostSortOptions.Popularity: if (orderOption == SortOrderOption.Ascending) { return(int.MinValue); } return(int.MaxValue); case PostSortOptions.Price: if (orderOption == SortOrderOption.Ascending) { return(decimal.MinValue); } return(decimal.MaxValue); case PostSortOptions.UserRating: if (orderOption == SortOrderOption.Ascending) { return(0.0m); } return(6.0m); default: throw new ArgumentOutOfRangeException(nameof(sortOptions), sortOptions, null); } }
public async Task <List <PostViewModel> > GetAllPosts(Guid currentUserId, DateTimeOffset date, object pagingModifier, int numberToTake, PostSortOptions sortOptions = PostSortOptions.Date, SortOrderOption orderOption = SortOrderOption.Descending, AccomodationOptions?accomodationOptions = null, decimal?minPrice = null, decimal?maxPrice = null, string city = null, string keyword = null) { return((await _context.GetAllPostsAsync(currentUserId, date, pagingModifier, numberToTake, sortOptions, orderOption, accomodationOptions, minPrice, maxPrice, city, keyword)).ToList()); }
public async Task <IActionResult> GetAllPosts(PostSortOptions sortOptions = PostSortOptions.Date, SortOrderOption orderOption = SortOrderOption.Descending, AccomodationOptions?accomodationOptions = null, decimal?minPrice = null, decimal?maxPrice = null, string city = null, string keyword = null) { var user = await _userManager.GetUserAsync(HttpContext.User); if (user?.ApplicationUserInfo != null && await _userManager.IsInRoleAsync(user, Constants.Authorization.UserRole)) { return(Ok(await _postService.GetAllPosts(user.ApplicationUserInfo.Value, sortOptions, orderOption, accomodationOptions, minPrice, maxPrice, city, keyword))); } return(Ok(await _postService.GetAllPosts(sortOptions, orderOption, accomodationOptions, minPrice, maxPrice, city, keyword))); }
public static object GetSortingObject(this BasePostViewModel model, PostSortOptions sortOptions) { switch (sortOptions) { case PostSortOptions.Date: return(null); case PostSortOptions.Popularity: return(model.LikesCount); case PostSortOptions.Price: return(model.Price); case PostSortOptions.UserRating: return(model.User.AverageGrade); default: throw new ArgumentOutOfRangeException(nameof(sortOptions), sortOptions, null); } }
public static object ParseModifier(this string modifier, PostSortOptions sortOptions) { switch (sortOptions) { case PostSortOptions.Date: return(null); case PostSortOptions.Popularity: return(int.Parse(modifier)); case PostSortOptions.Price: return(decimal.Parse(modifier)); case PostSortOptions.UserRating: return(decimal.Parse(modifier)); default: throw new ArgumentOutOfRangeException(nameof(sortOptions), sortOptions, null); } }
public static IQueryable <Post> SortBy(this IQueryable <Post> source, PostSortOptions sortOptions = PostSortOptions.Date, SortOrderOption orderOption = SortOrderOption.Descending) { switch (sortOptions) { case PostSortOptions.Date: if (orderOption == SortOrderOption.Ascending) { return(source.OrderBy(post => post.PostDate)); } return(source.OrderByDescending(post => post.PostDate)); case PostSortOptions.Popularity: if (orderOption == SortOrderOption.Ascending) { return(source.OrderBy(post => post.Likes.Count)); } return(source.OrderByDescending(post => post.Likes.Count)); case PostSortOptions.Price: if (orderOption == SortOrderOption.Ascending) { return(source.OrderByDescending(post => post.Price.HasValue).ThenBy(post => post.Price)); } return(source.OrderByDescending(post => post.Price.HasValue).ThenByDescending(post => post.Price)); case PostSortOptions.UserRating: if (orderOption == SortOrderOption.Ascending) { return(source.OrderBy(post => post.User.CommentsOnProfile.Average(com => com.Grade))); } return(source.OrderByDescending(post => post.User.CommentsOnProfile.Average(com => com.Grade))); default: throw new ArgumentOutOfRangeException(nameof(sortOptions), sortOptions, null); } }
public async Task <ApiResult <IEnumerable <BasePostViewModel> > > GetAllPosts(DateTimeOffset date, object pagingModifier, int numberToTake, PostSortOptions sortOptions = PostSortOptions.Date, SortOrderOption orderOption = SortOrderOption.Descending, AccomodationOptions?accomodationOptions = null, decimal?minPrice = null, decimal?maxPrice = null, string city = null, string keyword = null) { return(await ApiRequestHelper.HandlApiRequest(async() => { var posts = await _api.GetAllPostsPart(date.ToString("O"), pagingModifier?.ToString(), numberToTake, (int)sortOptions, (int)orderOption, (int?)accomodationOptions, minPrice?.ToString(), maxPrice?.ToString(), city, keyword); return new ApiResult <IEnumerable <BasePostViewModel> >(string.Empty, true, posts.Select(p => new BasePostViewModel(p))); })); }
public SortManager(PostSortOptions sortOptions = PostSortOptions.Date, SortOrderOption orderOption = SortOrderOption.Descending) { SortOptions = sortOptions; OrderOption = orderOption; }