示例#1
0
        /// <summary>
        /// Tworzenie modelu
        /// </summary>
        /// <typeparam name="T">Typ obiektu</typeparam>
        /// <typeparam name="U">TYp filtra</typeparam>
        /// <param name="filterKey">Klucz do zapisanego filtra w sesji</param>
        /// <param name="settingsKey">Klucz do zapisanych stawień w sesji</param>
        /// <param name="page">Strona</param>
        /// <param name="sortExpression">Wyrażenie sortowania</param>
        /// <param name="accending">rosnące?</param>
        /// <param name="repo">Analizowany zbiór</param>
        /// <returns></returns>
        protected T CreateModel <T, U, Q>(
            FilterSettingsKey filterKey, PageSettingsKey settingsKey,
            int?page,
            string sortExpression,
            bool?accending,
            IQueryable <Q> repo, delegateFilter <U, Q> method)
            where T : ListViewModel
            where U : ViewModelFilterBase
            where Q : Entity
        {
            var filter = PageSettingsOrder <U>(filterKey, settingsKey, ref page, ref sortExpression, ref accending);

            page           = page ?? 1;
            sortExpression = string.IsNullOrEmpty(sortExpression) ? "Id" : sortExpression;
            accending      = !accending.HasValue || accending.Value;

            // Przygotowanie informacji o stronnicowaniu
            var paginationInfo = new AdPaginationInfo
            {
                Accending      = (bool)accending,
                ItemsPerPage   = ItemsPerPage,
                RequestedPage  = (int)page,
                SortExpression = sortExpression
            };

            // Pobranie danych z repozytorium
            var query = repo;

            filter = method(ref query, filter);

            paginationInfo.OutResultsFound = query.Count();
            int correctPageNo;
            var skip = GetSkip(paginationInfo.RequestedPage, paginationInfo.ItemsPerPage, paginationInfo.OutResultsFound, out correctPageNo);

            paginationInfo.RequestedPage = correctPageNo;

            if (PageSettings.GetFromSession(PageSettingsKey.CampaignCategoriesPageSettings) != null)
            {
                PageSettings.GetFromSession(PageSettingsKey.CampaignCategoriesPageSettings).Page = paginationInfo.RequestedPage;
            }

            query = query.OrderBy(paginationInfo.SortExpression, paginationInfo.Accending).Skip(skip).Take(paginationInfo.ItemsPerPage);
            var test = query.ToList();

            var ret = Activator.CreateInstance <T>();

            // Zbudowanie modelu listy
            ret.Query           = (IQueryable <Entity>)query;
            ret.CurrentPage     = paginationInfo.RequestedPage;
            ret.SortExpression  = paginationInfo.SortExpression;
            ret.NumberOfResults = paginationInfo.OutResultsFound;
            ret.ItemsPerPage    = paginationInfo.ItemsPerPage;
            ret.SortAccending   = paginationInfo.Accending;
            ret.FilerBase       = filter;

            return(ret);
        }
        /// <summary>
        /// Zbudowanie modelu
        /// </summary>
        /// <param name="statementType">Typ zestawienia</param>
        /// <param name="Page">Numer żądanej strony</param>
        /// <param name="SortExpression">Pole do sortowania</param>
        /// <param name="Ascending">Czy sortować rosnąco</param>
        /// <param name="filter">Obiekt filtrów</param>
        private StatisticsStatementListViewModel CreateModel(StatisticsStatementType statementType,
                                                             int?Page,
                                                             string SortExpression,
                                                             bool?Ascending,
                                                             StatisticsStatementListViewModelFilter filter)
        {
            var       page           = Page ?? 1;
            var       sortExpression = string.IsNullOrEmpty(SortExpression) ? "TotalDisplayCount" : SortExpression;
            var       ascending      = Ascending.HasValue && Ascending.Value;
            const int itemsPerPage   = 10;

            // Zbuduj obiekt informacyjny dla stronnicowania
            var paginationInfo = new AdPaginationInfo
            {
                Accending      = ascending,
                ItemsPerPage   = itemsPerPage,
                RequestedPage  = page,
                SortExpression = sortExpression
            };

            var statements = _repository.StatisticsStatements(filter, paginationInfo, statementType, (User.IsInRole("Admin") ? 0 : User.GetUserIDInt()));

            var model = new StatisticsStatementListViewModel
            {
                StatementType   = statementType,
                Statement       = statements.ToList(),
                CurrentPage     = paginationInfo.RequestedPage,
                SortExpression  = paginationInfo.SortExpression,
                NumberOfResults = paginationInfo.OutResultsFound,
                ItemsPerPage    = paginationInfo.ItemsPerPage,
                SortAccending   = paginationInfo.Accending,
                Filters         = filter ?? new StatisticsStatementListViewModelFilter()
            };

            // Określ adres powrotny w zależności od wybranego rodzaju zestawienia
            switch (statementType)
            {
            case StatisticsStatementType.Campaign:
                model.DestinationURL = "Campaign";
                model.StatementTitle = "Zestawienie kampanii";
                break;

            case StatisticsStatementType.MultimediaObject:
                model.DestinationURL = "MultimediaObjects";
                model.StatementTitle = "Zestawienie obiektów multimedialnych";
                break;

            default:
                model.StatementTitle = "Zestawienie";
                break;
            }

            return(model);
        }
示例#3
0
        public override bool Equals(object obj)
        {
            AdPaginationInfo other = obj as AdPaginationInfo;

            if (other != null)
            {
                return(other.Accending == this.Accending &&
                       other.ItemsPerPage == this.ItemsPerPage &&
                       other.OutResultsFound == this.OutResultsFound &&
                       other.RequestedPage == this.RequestedPage &&
                       other.SortExpression == this.SortExpression);
            }
            return(false);
        }