/// <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 ActionResult ClearFilters(StatisticsStatementListViewModel model)
        {
            // Usuń filtry
            if (Session != null)
            {
                Session.Remove(FilterSettingsKey.StatisticsStatementControllerFilterList.ToString());
                PageSettings.RemoveFromSession(PageSettingsKey.StatisticsStatementCampaignsPageSettings);
                PageSettings.RemoveFromSession(PageSettingsKey.StatisticsStatementObjectsPageSettings);
                PageSettings.RemoveFromSession(PageSettingsKey.DevDetailsSettings);
                Session.Remove(FilterSettingsKey.DevDetailsFilterList.ToString());
            }

            // Wybierz i zwróć model
            var actionName = ChooseAction(model.StatementType);

            return(RedirectToAction(actionName));
        }
        public ActionResult List(StatisticsStatementListViewModel model)
        {
            // Zapamiętaj filtry
            if (Session != null)
            {
                Session[FilterSettingsKey.StatisticsStatementControllerFilterList.ToString()] = model.Filters;

                PageSettings.RemoveFromSession(PageSettingsKey.StatisticsStatementCampaignsPageSettings);
                PageSettings.RemoveFromSession(PageSettingsKey.StatisticsStatementObjectsPageSettings);

                Session[FilterSettingsKey.DevDetailsFilterList.ToString()] = new StatisticsListViewModelFilter
                {
                    FilterDateFrom = model.Filters.FilterDateFrom,
                    FilterDateTo   = model.Filters.FilterDateTo
                };
                PageSettings.RemoveFromSession(PageSettingsKey.DevDetailsSettings);
            }

            // Wybierz i zbuduj model
            var actionName = ChooseAction(model.StatementType);

            return(RedirectToAction(actionName));
        }
        public ActionResult MultimediaObjectStatement(int?page,
                                                      string sortExpression,
                                                      bool?ascending)
        {
            // Odtwórz zapamiętane filtry
            StatisticsStatementListViewModelFilter filter = null;

            if (Session != null)
            {
                filter = Session[FilterSettingsKey.StatisticsStatementControllerFilterList.ToString()] as StatisticsStatementListViewModelFilter;
            }

            if (filter == null)
            {
                filter = new StatisticsStatementListViewModelFilter();
                var filtr2 = new StatisticsListViewModelFilter
                {
                    FilterDateFrom = filter.FilterDateFrom,
                    FilterDateTo   = filter.FilterDateTo
                };
                Session[FilterSettingsKey.ObjDetailsFilterList.ToString()] = filtr2;
            }

            // Zapamiętaj aktualne filtry
            if (Session != null)
            {
                Session[FilterSettingsKey.StatisticsStatementControllerFilterList.ToString()] = filter;

                PageSettings.RemoveFromSessionExcept(PageSettingsKey.StatisticsStatementObjectsPageSettings);
                //FilterSettings.RemoveFromSessionExcept(FilterSettingsKey.StatisticsStatementControllerFilterList);

                PageSettings pageSettings = PageSettings.GetFromSession(PageSettingsKey.StatisticsStatementObjectsPageSettings);
                if (pageSettings != null)
                {
                    if (!page.HasValue)
                    {
                        page = pageSettings.Page;
                    }
                    if (!ascending.HasValue)
                    {
                        ascending = pageSettings.Accending;
                    }
                    if (string.IsNullOrEmpty(sortExpression))
                    {
                        sortExpression = pageSettings.SortExpression;
                    }
                }
                else
                {
                    pageSettings = new PageSettings();
                }

                pageSettings.Page      = page ?? 1;
                pageSettings.Accending = !ascending.HasValue || ascending.Value;

                Session[PageSettingsKey.StatisticsStatementObjectsPageSettings.ToString()] = pageSettings;
            }

            // Zbuduj i zwróć model
            StatisticsStatementListViewModel model = CreateModel(StatisticsStatementType.MultimediaObject, page, sortExpression, ascending, filter);

            var id = User.GetUserIDInt();
            var u  = _usersRepository.Users.Single(it => it.Id == id);

            ViewBag.AdPoints = u.AdPoints;

            return(View("Index", model));
        }
        public ActionResult CampaignStatement(int?Page,
                                              string SortExpression,
                                              bool?Ascending)
        {
            // Odtwórz zapamiętane filtry
            StatisticsStatementListViewModelFilter filter = null;

            if (Session != null)
            {
                filter = Session[FilterSettingsKey.StatisticsStatementControllerFilterList.ToString()] as StatisticsStatementListViewModelFilter;
            }

            if (filter == null)
            {
                filter = new StatisticsStatementListViewModelFilter();
            }

            // Zapamiętaj aktualne filtry
            if (Session != null)
            {
                Session[FilterSettingsKey.StatisticsStatementControllerFilterList.ToString()] = filter;

                PageSettings.RemoveFromSessionExcept(PageSettingsKey.StatisticsStatementCampaignsPageSettings);
                FilterSettings.RemoveFromSessionExcept(FilterSettingsKey.StatisticsStatementControllerFilterList);

                PageSettings pageSettings = PageSettings.GetFromSession(PageSettingsKey.StatisticsStatementCampaignsPageSettings);
                if (pageSettings != null)
                {
                    if (!Page.HasValue)
                    {
                        Page = pageSettings.Page;
                    }
                    if (!Ascending.HasValue)
                    {
                        Ascending = pageSettings.Accending;
                    }
                    if (string.IsNullOrEmpty(SortExpression))
                    {
                        SortExpression = pageSettings.SortExpression;
                    }
                }
                else
                {
                    pageSettings = new PageSettings();
                }

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

                Session[PageSettingsKey.StatisticsStatementCampaignsPageSettings.ToString()] = pageSettings;
            }

            // Zbuduj i zwróć model
            StatisticsStatementListViewModel model = CreateModel(StatisticsStatementType.Campaign, Page, SortExpression, Ascending, filter);

            var id = User.GetUserIDInt();
            var u  = _usersRepository.Users.Single(it => it.Id == id);

            ViewBag.AdPoints = u.AdPoints;

            return(View("Index", model));
        }