コード例 #1
0
        public virtual ActionResult Index(PMRPublicReportModel model)
        {
            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");
            }

            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            int ini = Environment.TickCount;

            PMRPublicReportModel resultModel = CreateFilteredModel(model);

            int lapsed = Environment.TickCount - ini;

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

            return(PartialView(
                       "~/Areas/Administration/Views/PMRPublic/Partial/_PMRPublicTablePartial.cshtml",
                       resultModel));
        }
コード例 #2
0
        private void LoadSectorsAndDivisions(PMRPublicReportModel model)
        {
            _filterBusinesslogic = new PMRPublicBusinessLogic();

            model.SectorDepartments =
                _filterBusinesslogic.FilterSectorDepartment(ClientForGenericReports
                                                            .GetSectorDepartment(IDBContext.Current.CurrentLanguage));

            List <int> sectorIds =
                model.SectorDepartments.Select(x => x.ConvergenceMasterDataId).ToList();

            model.Divisions = FilterDivisionsForSectorDepartments(sectorIds);
        }
コード例 #3
0
        public virtual JsonResult PMRPublicFilterCountries(PMRPublicReportModel model)
        {
            _filterBusinesslogic = new PMRPublicBusinessLogic();

            model.Countries = _filterBusinesslogic.FilterCountries(ClientForGenericReports
                                                                   .GetCountriesFilter(
                                                                       IDBContext.Current.CurrentLanguage,
                                                                       model.SelectedCountryDepartments));

            return(new JsonResult()
            {
                Data = model.Countries
            });
        }
コード例 #4
0
        public virtual ActionResult AuthorizeReports(PMRPublicReportModel model)
        {
            if (string.IsNullOrEmpty(model.AuthorizeDocuments))
            {
                return(null);
            }

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

            string[] documentsToSend = model.AuthorizeDocuments.Split('|');

            foreach (string document in documentsToSend)
            {
                int ini = Environment.TickCount;

                AuthorizeDocumentInIDBDocs(new AuthorizeDocumentRequest
                {
                    DocumentNumber = document
                });

                int authTime = Environment.TickCount;

                AuthorizeDocumentInDatabase(document);

                int dbTime = Environment.TickCount;

                Logger.GetLogger().WriteDebug(
                    "PMRPublicController",
                    "--- TOTAL TIME AUTHORIZING PMR DOCUMENT ---");
                Logger.GetLogger().WriteDebug("PMRPublicController", string.Format(
                                                  "TOTAL: {0}s", (dbTime - ini) / 1000));
                Logger.GetLogger().WriteDebug("PMRPublicController", string.Format(
                                                  "AUTH IN IDBDOCS: {0}s", (authTime - ini) / 1000));
                Logger.GetLogger().WriteDebug("PMRPublicController", string.Format(
                                                  "AUTH IN DB: {0}s", (dbTime - authTime) / 1000));
            }

            PMRPublicReportModel resultModel = CreateFilteredModel(model);

            return(PartialView(
                       "~/Areas/Administration/Views/PMRPublic/Partial/_PMRPublicTablePartial.cshtml",
                       resultModel));
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        public virtual JsonResult PMRPublicFilterDivisions(PMRPublicReportModel model)
        {
            if (model.SelectedSectorDepartments.Count > 0)
            {
                model.Divisions = FilterDivisionsForSectorDepartments(model.SelectedSectorDepartments);

                return(new JsonResult()
                {
                    Data = model.Divisions
                });
            }

            LoadSectorsAndDivisions(model);

            return(new JsonResult()
            {
                Data = model.Divisions
            });
        }
コード例 #7
0
        public virtual ActionResult DeleteDocument(PMRPublicReportModel model)
        {
            if (string.IsNullOrEmpty(model.DocumentNumber))
            {
                return(null);
            }

            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;

            DeleteDocumentInIDBDocs(new DeleteDocumentRequest
            {
                DocumentNumber = model.DocumentNumber,
                VersionId      = string.Empty
            });

            int deleteIDBTime = Environment.TickCount;

            DeleteDocumentInDatabase(model.DocumentNumber);

            int deleteDBTime = Environment.TickCount;

            Logger.GetLogger().WriteDebug("PMRPublicController", "--- TOTAL TIME DELETING PMR DOCUMENT ---");
            Logger.GetLogger().WriteDebug("PMRPublicController", string.Format(
                                              "TOTAL: {0}s", (deleteDBTime - ini) / 1000));
            Logger.GetLogger().WriteDebug("PMRPublicController", string.Format(
                                              "DELETE IN IDBDOCS: {0}s", (deleteIDBTime - ini) / 1000));
            Logger.GetLogger().WriteDebug("PMRPublicController", string.Format(
                                              "DELETE IN DB: {0}s", (deleteDBTime - deleteIDBTime) / 1000));

            PMRPublicReportModel resultModel = CreateFilteredModel(model);

            return(PartialView(
                       "~/Areas/Administration/Views/PMRPublic/Partial/_PMRPublicTablePartial.cshtml",
                       resultModel));
        }
コード例 #8
0
        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));
        }
コード例 #9
0
        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));
        }
コード例 #10
0
        public virtual ActionResult GenerateReportsAndSendToIDBDocs(PMRPublicReportModel model)
        {
            if (string.IsNullOrEmpty(model.Operations))
            {
                return(null);
            }

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

            try
            {
                string[] operationsToSend = model.Operations.Split('|');

                int ini, buildReportTime, createDocTime, addDocToDBTime;

                foreach (string operation in operationsToSend)
                {
                    var reportResponse = new ReportResponse();

                    //Parse the operation information sent
                    string[] operationInfo   = operation.Split(';');
                    string   operationId     = operationInfo[0];
                    string   operationNumber = operationInfo[1];

                    ini = Environment.TickCount;

                    var reportCognos = new CognosReportBuilder();

                    var reportParameter = new GenerationParameter
                    {
                        OutputFormat     = CognosGlobalValues.FORMAT_PDF,
                        ReportParameters = new Dictionary <string, string>
                        {
                            { CognosGlobalValues.P_OPER_NUMBER, operationNumber },
                            { CognosGlobalValues.P_CYCLE, model.PmrCycleId },
                            { CognosGlobalValues.P_SECTION, CognosGlobalValues.ALL_SECTIONS }
                        }
                    };

                    reportResponse = reportCognos.Generate(reportParameter);

                    if (!reportResponse.IsValid)
                    {
                        throw new Exception(reportResponse.ErrorMessage);
                    }

                    buildReportTime = Environment.TickCount;

                    string docNum = CreateIDBDocsDocument(
                        new UploadDocumentRequest
                    {
                        OperationNumber = operationNumber,
                        FileStream      = reportResponse.Data,
                        FileName        =
                            operationNumber + " " + model.PmrCycleName + "-Public Report.pdf",
                        TrusteeList       = TRUSTEE_LIST,
                        BusinessAreaCode  = BusinessAreaCodeEnum.BA_PMR,
                        AccessInformation = AccessInformationCategoryEnum.PUBLIC,
                        StageCode         = "PMR PUBLIC",
                        TypeId            = "Report"
                    });

                    createDocTime = Environment.TickCount;

                    if (!CreateDocumentInDatabase(
                            operationId, operationNumber, docNum, model.PmrCycleId))
                    {
                        DeleteDocumentInIDBDocs(new DeleteDocumentRequest
                        {
                            DocumentNumber = docNum,
                            VersionId      = string.Empty
                        });

                        throw new Exception(
                                  "An error occurred when saving the document in the database." +
                                  " Refer to the log for further information");
                    }

                    addDocToDBTime = Environment.TickCount;

                    Logger.GetLogger().WriteDebug("PMRPublicController", string.Format(
                                                      "--- TOTAL TIME GENERATING PMR DOCUMENT FOR OPERATION {0} ---",
                                                      operationNumber));
                    Logger.GetLogger().WriteDebug("PMRPublicController", string.Format(
                                                      "TOTAL: {0}s", (addDocToDBTime - ini) / 1000));
                    Logger.GetLogger().WriteDebug("PMRPublicController", string.Format(
                                                      "GENERATE REPORT: {0}s", (buildReportTime - ini) / 1000));
                    Logger.GetLogger().WriteDebug("PMRPublicController", string.Format(
                                                      "CREATE DOC IN IDBDOCS: {0}s", (createDocTime - buildReportTime) / 1000));
                    Logger.GetLogger().WriteDebug("PMRPublicController", string.Format(
                                                      "CREATE ENTRY IN DATABASE: {0}s", (addDocToDBTime - createDocTime) / 1000));
                }

                PMRPublicReportModel resultModel = CreateFilteredModel(model);

                return(PartialView(
                           "~/Areas/Administration/Views/PMRPublic/Partial/_PMRPublicTablePartial.cshtml",
                           resultModel));
            }
            catch (Exception e)
            {
                Logger.GetLogger().WriteError(
                    "PMRPublicController", "Error when uploading Cognos report", e);
                throw;
            }
        }