/// <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); }
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); }