Ejemplo n.º 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);
        }
Ejemplo n.º 2
0
 protected T CreateModel <T, U, Q>(
     FilterSettingsKey filterKey, PageSettingsKey settingsKey,
     int?page,
     string sortExpression,
     bool?accending,
     IQueryable <Q> repo)
     where T : ListViewModel
     where U : ViewModelFilterBase
     where Q : Entity
 {
     return(CreateModel <T, U, Q>(filterKey, settingsKey, page, sortExpression, accending, repo, FilterSettingsVirtual));
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Methoda zwraca filtr
        /// </summary>
        /// <typeparam name="T">Typ filtru</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>
        /// <returns></returns>
        private T PageSettingsOrder <T>(FilterSettingsKey filterKey, PageSettingsKey settingsKey, ref int?page, ref string sortExpression, ref bool?accending)
        {
            var filter = default(T);

            // Pobranie aktualnych filtrów z sesji
            if (Session != null)
            {
                filter = (T)Session[filterKey.ToString()];
            }

            if (filter == null)
            {
                filter = Activator.CreateInstance <T>();
            }

            if (Session != null)
            {
                Session[filterKey.ToString()] = filter;

                PageSettings.RemoveFromSessionExcept(settingsKey);
                FilterSettings.RemoveFromSessionExcept(filterKey);

                var pageSettings = PageSettings.GetFromSession(settingsKey);
                if (pageSettings != null)
                {
                    if (!page.HasValue)
                    {
                        page = pageSettings.Page;
                    }
                    if (!accending.HasValue)
                    {
                        accending = pageSettings.Accending;
                    }
                    if (string.IsNullOrEmpty(sortExpression))
                    {
                        sortExpression = pageSettings.SortExpression;
                    }
                }
                else
                {
                    pageSettings = new PageSettings();
                }

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

                Session[settingsKey.ToString()] = pageSettings;
            }
            return(filter);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Usuwana obiekty filtrów z sesji za wyjątkiem zadanego klucza
 /// </summary>
 /// <param name="exception">Wyjątek - klucz, który nie zostanie usunięty z sesji</param>
 public static void RemoveFromSessionExcept(FilterSettingsKey exception)
 {
     if (System.Web.HttpContext.Current != null && System.Web.HttpContext.Current.Session != null)
     {
         string[] namesToRemove = Enum.GetNames(typeof(FilterSettingsKey)).Except(new string[] { exception.ToString() }).ToArray();
         foreach (string name in namesToRemove)
         {
             if (System.Web.HttpContext.Current.Session[name] != null)
             {
                 System.Web.HttpContext.Current.Session[name] = null;
                 System.Web.HttpContext.Current.Session.Remove(name);
             }
         }
     }
 }