public IActionResult GetFavorites(AdvertFavoritePageRequest request) { request.UserId = User.GetId(); if (string.IsNullOrWhiteSpace(request.OrderBy)) { request.OrderBy = nameof(Advert.Title); } if (request.SortOrder == 0) { request.SortOrder = SortOrder.ASC; } var page = _db.Adverts.FavoriteAdverts(request); return(Ok(page.Convert(a => _mapper.Map <AdvertExtendedDTO>(a)))); }
public Page <AdvertExtended> FavoriteAdverts(AdvertFavoritePageRequest request) { var query = _db.Set <AdvertFavorite>() .Where(f => f.UserId == request.UserId) .Select(f => f.Advert) .Where(a => !request.ShowOnlyMy || a.UserId == request.UserId) .Skip(request.PageIndex * request.PageSize) .Take(request.PageSize); var total = query.Count(); var set = query .Include(a => a.User) .Select(a => new AdvertExtended { BaseAdvert = a, IsFavorite = true }) .ToList(); return(new Page <AdvertExtended>(set, request.PageIndex, request.PageSize, total)); }