Esempio n. 1
0
 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());
 }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
 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)));
        }
Esempio n. 5
0
        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);
            }
        }
Esempio n. 6
0
        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);
            }
        }
Esempio n. 8
0
 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;
 }