Ejemplo n.º 1
0
        private IQueryable <EntityFramework.Session> BaseFilterSearchQuery(string wildcard, Common.Enumeration.SessionType statusId, int searchSessionId, int teamId)
        {
            bool wildcardFilter = !string.IsNullOrEmpty(wildcard);
            bool statusFilter   = (int)statusId != 0;
            bool sessionFilter  = searchSessionId != 0;
            bool teamIdFilter   = teamId != 0;

            IQueryable <EntityFramework.Session> filterQuery = _context.Sessions;

            if (wildcardFilter)
            {
                filterQuery = filterQuery.Where(x => x.Title.Contains(wildcard) || x.Description.Contains(wildcard));
            }

            if (statusFilter)
            {
                DateTime today = DateTime.Now.Date;

                if (statusId == Common.Enumeration.SessionType.ToBePresented)
                {
                    filterQuery = filterQuery.Where(x => x.SessionDate >= today);
                }
                if (statusId == Common.Enumeration.SessionType.AlreadyPresented)
                {
                    filterQuery = filterQuery.Where(x => x.SessionDate < today);
                }
            }
            ;

            if (sessionFilter)
            {
                filterQuery = filterQuery.Where(x => x.SessionId == searchSessionId);
            }
            if (teamIdFilter)
            {
                filterQuery = filterQuery.Where(x => x.User.TeamId == teamId);
            }

            return(filterQuery.OrderByDescending(x => x.SessionDate));
        }
Ejemplo n.º 2
0
        public PagedResult <EntityFramework.Session> GetPagedFilteredSessions(string wildcard, Common.Enumeration.SessionType statusId, int searchSessionId
                                                                              , int teamId, int pageNumber, int pageSize)
        {
            if (searchSessionId == 0)
            {
                return(BaseFilterSearchQuery(wildcard, statusId, searchSessionId, teamId).AsNoTracking()
                       .Page(pageNumber, pageSize));
            }

            var pagedResult = BaseFilterSearchQuery(wildcard, statusId, 0, teamId).AsNoTracking()
                              .Page(pageNumber, pageSize);

            if (pagedResult.Results.Any(x => x.SessionId == searchSessionId) && pagedResult.Results.IndexOf(pagedResult.Results.FirstOrDefault(x => x.SessionId == searchSessionId)) == 0)
            {
                return(pagedResult);
            }

            pagedResult.Results.Remove(pagedResult.Results.FirstOrDefault(x => x.SessionId == searchSessionId));
            var sessionResult = BaseFilterSearchQuery(wildcard, statusId, searchSessionId, teamId).AsNoTracking()
                                .Page(pageNumber, pageSize);

            pagedResult.Results.Insert(0, sessionResult.Results.FirstOrDefault());
            return(pagedResult);
        }