private PMRPublicReportModel CreateModel(PMRPublicFilterModel filterModel)
        {
            PMRPublicReportModel result = new PMRPublicReportModel();
            string language             = IDBContext.Current.CurrentLanguage;

            _filterBusinesslogic = new PMRPublicBusinessLogic();

            result.CountryDepartments =
                _filterBusinesslogic.FilterCountryDepartments(
                    ClientForGenericReports.GetCountryDepartments(language));

            result.PMRCycles = ClientPMRForCycleModel
                               .GetPMRCycles(language).OrderByDescending(x => x.StartDate).ToList();

            // don't include DRAFT validation stages, no necessary to list them
            result.PMRValidationStages =
                _filterBusinesslogic.FilterPMRValidationStages(
                    ClientForGenericReports.GetPMRValidationStages(language));

            result.OperationOverallStages =
                ClientForGenericReports.GetOperationOverallStages(language)
                .OrderBy(x => x.Name).ToList();

            result.Countries = _filterBusinesslogic.FilterCountries(
                ClientForGenericReports.GetCountries(language));

            LoadSectorsAndDivisions(result);

            List <TriStateFilter> triState = new List <TriStateFilter>();

            triState.Add(new TriStateFilter {
                Name = Localization.GetText("All"), Value = -1
            });
            triState.Add(new TriStateFilter {
                Name = Localization.GetText("Yes"), Value = 1
            });
            triState.Add(new TriStateFilter {
                Name = Localization.GetText("No"), Value = 0
            });

            result.IsActive    = triState;
            result.IsAuthorize = triState;

            result.Table = ClientForPMRPublic.GetPMRPublicTableData(filterModel);

            return(result);
        }
        public virtual ActionResult Index(string operationNumber)
        {
            if (!IDBContext.Current.HasRole(Role.RM_ADMINISTRATOR))
            {
                Logger.GetLogger().WriteMessage("PMRPublicController", "No RM Administrator in PMR Public. Security issue?");
                throw new Exception("You don't have permissions to use PMR Public");
            }

            int ini = Environment.TickCount;

            PMRPublicFilterModel filterModel = new PMRPublicFilterModel
            {
                Language = IDBContext.Current.CurrentLanguage
            };

            PMRPublicReportModel model = CreateModel(filterModel);

            int lapsed = Environment.TickCount - ini;

            Logger.GetLogger().WriteDebug("PMRPublicController",
                                          string.Format("Time lapsed building the model without filtering: {0}s", lapsed / 1000));

            return(View(model));
        }
        private PMRPublicReportModel CreateFilteredModel(PMRPublicReportModel model)
        {
            PMRPublicFilterModel filterModel = new PMRPublicFilterModel
            {
                Language          = IDBContext.Current.CurrentLanguage,
                CountryDepartment = model.SelectedCountryDepartments.Count == 0 ? null
                    : string.Join(",", model.SelectedCountryDepartments),
                SectorDepartment = model.SelectedSectorDepartments.Count == 0 ? null
                    : string.Join(",", model.SelectedSectorDepartments),
                PMRCycle           = model.PMRCycles[0].PmrCycleId,
                PMRValidationStage = model.SelectedPMRValidationStages.Count == 0 ? null
                    : string.Join(",", model.SelectedPMRValidationStages),
                OperationOverallStage = model.SelectedOperationOverallStages.Count == 0 ? null
                    : string.Join(",", model.SelectedOperationOverallStages),
                Country = model.SelectedCountries.Count == 0 ? null
                    : string.Join(",", model.SelectedCountries),
                Division = model.SelectedDivisions.Count == 0 ? null
                    : string.Join(",", model.SelectedDivisions),
                Uploaded  = model.IsActive[0].Value == -1 ? null : model.IsActive[0].Value,
                Authorize = model.IsAuthorize[0].Value == -1 ? null : model.IsAuthorize[0].Value
            };

            return(CreateModel(filterModel));
        }