public ActionResult GetMoreGigs(int startIndex, string searchBy, string query = null)
        {
            GigFilterParams filter = new GigFilterParams
            {
                SearchTerm = query,
                SearchBy   = searchBy
            };
            var upcomingGigs = _unitOfWork.Gigs.GetUpcomingGigs(startIndex, AppConst.PageSizeSm, filter);

            if (!upcomingGigs.Any())
            {
                return(Content(HttpStatusCode.NoContent.ToString()));
            }

            var userId = User.Identity.GetUserId();

            var attendances = _unitOfWork.Attendances.GetFutureAttendances(userId)
                              .ToLookup(a => a.GigId);

            var viewModel = new GigsViewModel
            {
                UpcomingGigs = upcomingGigs,
                ShowActions  = User.Identity.IsAuthenticated,
                Attendances  = attendances
            };

            return(PartialView("_MoreGigs", viewModel));
        }
Example #2
0
        private Expression <Func <Gig, bool> > _getMyAttendingGigFilterExpression(GigFilterParams filter)
        {
            Expression <Func <Gig, bool> > filterExpression = g =>
                                                              g.DateTime > DateTime.Now;

            return(string.IsNullOrWhiteSpace(filter.SearchTerm) ? filterExpression :
                   ExpressionCombiner.And(filterExpression, getSeachFilter(filter)));
        }
Example #3
0
        private Expression <Func <Gig, bool> > _getGigFilterExpression(GigFilterParams filter)
        {
            Expression <Func <Gig, bool> > filterExpression = g =>
                                                              g.DateTime > DateTime.Now &&
                                                              g.Artist.Activated &&
                                                              !g.IsCancelled;

            return(string.IsNullOrWhiteSpace(filter.SearchTerm) ? filterExpression :
                   ExpressionCombiner.And(filterExpression, getSeachFilter(filter)));
        }
Example #4
0
        public IEnumerable <Gig> GetUpcomingGigs(int?startIndex, int?count, GigFilterParams filter)
        {
            var gigFilterExpression = _getGigFilterExpression(filter);

            IQueryable <Gig> query = _context.Gigs
                                     .Include(g => g.Artist)
                                     .Include(g => g.Genre)
                                     .Include(g => g.Venue)
                                     .Where(gigFilterExpression)
                                     .OrderBy(g => g.DateTime);

            if (!startIndex.HasValue || !count.HasValue)
            {
                return(query.ToList());
            }

            return(query.Skip(startIndex.Value).Take(count.Value).ToList());
        }
Example #5
0
        private Expression <Func <Gig, bool> > getSeachFilter(GigFilterParams filter)
        {
            var searchTerm = filter.SearchTerm;

            switch (filter.SearchBy)
            {
            case AppConst.SearchAll:
                Expression <Func <Gig, bool> > allExpression = g =>
                                                               g.Artist.Name.Contains(searchTerm) ||
                                                               g.Genre.Name.Contains(searchTerm) ||
                                                               g.Venue.Name.Contains(searchTerm);

                return(allExpression);

            case AppConst.SearchByArtist:
                Expression <Func <Gig, bool> > artistExpression = g =>
                                                                  g.Artist.Name.Contains(searchTerm);

                return(artistExpression);

            case AppConst.SearchByGener:
                Expression <Func <Gig, bool> > genreExpression = g =>
                                                                 g.Genre.Name.Contains(searchTerm);

                return(genreExpression);

            case AppConst.SearchByVenue:

                Expression <Func <Gig, bool> > venueExpression = g =>
                                                                 g.Venue.Name.Contains(searchTerm);

                return(venueExpression);

            default:
                return(null);
            }
        }
Example #6
0
        public IEnumerable <Gig> GetGigsUserAttending(string userId, int startIndex, int count, GigFilterParams filter)
        {
            var gigFilterExpression = _getMyAttendingGigFilterExpression(filter);

            IQueryable <Gig> query = _context.Attendances
                                     .Where(a => a.AttendeeId == userId)
                                     .Select(a => a.Gig)
                                     .Include(g => g.Artist)
                                     .Include(g => g.Genre)
                                     .Include(g => g.Venue)
                                     .Where(gigFilterExpression)
                                     .OrderBy(g => g.DateTime);

            return(query.Skip(startIndex).Take(count).ToList());
        }