Пример #1
0
        public ProjectCustomGridSpec(FirmaSession currentFirmaSession,
                                     List <ProjectCustomGridConfiguration> projectCustomGridConfigurations,
                                     ProjectCustomGridTypeEnum projectCustomGridTypeEnum,
                                     Dictionary <int, vProjectDetail> projectDetailsDictionary,
                                     ProjectFirmaModels.Models.Tenant tenant)
        {
            bool userHasTagManagePermissions          = new FirmaAdminFeature().HasPermissionByFirmaSession(currentFirmaSession);
            bool userHasDeletePermissions             = new ProjectDeleteFeature().HasPermissionByFirmaSession(currentFirmaSession);
            bool userHasEditProjectAsAdminPermissions = new ProjectEditAsAdminFeature().HasPermissionByFirmaSession(currentFirmaSession);
            bool userHasReportDownloadPermissions     = new ReportTemplateGenerateReportsFeature().HasPermissionByFirmaSession(currentFirmaSession);
            var  geospatialAreas         = HttpRequestStorage.DatabaseEntities.vGeospatialAreas.Where(x => x.TenantID == tenant.TenantID).ToDictionary(x => x.GeospatialAreaID);
            var  projectCustomAttributes = HttpRequestStorage.DatabaseEntities.vProjectCustomAttributeValues.Where(x => x.TenantID == tenant.TenantID)
                                           .GroupBy(x => x.ProjectID)
                                           .ToDictionary(grp => grp.Key, y => y.ToList());

            var projectGeospatialAreas = HttpRequestStorage.DatabaseEntities.ProjectGeospatialAreas
                                         .GroupBy(x => x.ProjectID).ToDictionary(grp => grp.Key, y => y.ToList());
            var  taxonomyLeafs = HttpRequestStorage.DatabaseEntities.TaxonomyLeafs.ToDictionary(x => x.TaxonomyLeafID);
            var  projectLabel  = FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabel();
            bool hasProjectApprovalPermissionBySession =
                new ProjectApproveFeature().HasPermissionByFirmaSession(currentFirmaSession);
            var statusUpdateLabel   = FieldDefinitionEnum.StatusUpdate.ToType().GetFieldDefinitionLabel();
            var sitkaAdminPersonIDs =
                HttpRequestStorage.DatabaseEntities.AllPeople.Where(x =>
                                                                    x.RoleID == ProjectFirmaModels.Models.Role.SitkaAdmin.RoleID).Select(x => x.PersonID).ToList();

            // Mandatory fields before
            AddMandatoryFieldsBefore(userHasTagManagePermissions, userHasReportDownloadPermissions, userHasDeletePermissions, projectCustomGridTypeEnum);

            // Implement configured fields here
            AddConfiguredFields(currentFirmaSession
                                , projectCustomGridConfigurations
                                , userHasEditProjectAsAdminPermissions
                                , projectDetailsDictionary
                                , geospatialAreas
                                , taxonomyLeafs
                                , projectGeospatialAreas
                                , projectCustomAttributes
                                , projectLabel
                                , hasProjectApprovalPermissionBySession
                                , statusUpdateLabel
                                , sitkaAdminPersonIDs);

            // Mandatory fields appearing AFTER configurable fields
            AddMandatoryFieldsAfter(userHasTagManagePermissions);
        }
Пример #2
0
        public void ProjectEditReportedExpendituresTest()
        {
            var manageReportedExpendituresFeature = new ProjectEditAsAdminFeature();

            // Test organizations we'll use for membership checks
            var testOrganizationForProject  = TestFramework.TestOrganization.Create("The Test Organization for Project");
            var testOrganizationJustForUser = TestFramework.TestOrganization.Create("The Test Organization for User");

            Person userAnonymous = null;

            var userNormal = TestFramework.TestPerson.Create();

            userNormal.RoleID = Role.Normal.RoleID;

            var userAdmin = TestFramework.TestPerson.Create();

            userAdmin.RoleID = Role.Admin.RoleID;

            var userSitkaAdmin = TestFramework.TestPerson.Create();

            userSitkaAdmin.RoleID = Role.SitkaAdmin.RoleID;

            // Planning/Design Project
            // ----------------
            {
                var planningDesignProject = TestFramework.TestProject.Create();
                planningDesignProject.ProjectStageID = ProjectStage.PlanningDesign.ProjectStageID;

                // - Edit Actual PMs -
                TestExpectedUserPermission(userAnonymous, planningDesignProject, manageReportedExpendituresFeature, false);
                TestExpectedUserPermission(userNormal, planningDesignProject, manageReportedExpendituresFeature, false);
                TestExpectedUserPermissionWithUserInLeadImplementingOrg(userNormal, planningDesignProject, manageReportedExpendituresFeature, testOrganizationForProject, false);
                TestExpectedUserPermissionWithUserAsPrimaryContactForImplementingOrg(userNormal,
                                                                                     planningDesignProject,
                                                                                     manageReportedExpendituresFeature,
                                                                                     testOrganizationJustForUser,
                                                                                     testOrganizationForProject,
                                                                                     false);
                // Only Admin should be allowed to edit actual, reported PMs
                TestExpectedUserPermission(userAdmin, planningDesignProject, manageReportedExpendituresFeature, true);
                TestExpectedUserPermission(userSitkaAdmin, planningDesignProject, manageReportedExpendituresFeature, true);
            }
        }
Пример #3
0
        public void ProjectProposedTest()
        {
            var editPerformanceMeasureFeature = new ProjectEditAsAdminFeature();
            var viewPerformanceMeasureFeature = new ProjectsInProposalStageViewListFeature();

            // Test organizations we'll use for membership checks
            var testOrganizationForProject  = TestFramework.TestOrganization.Create("The Test Organization for Project");
            var testOrganizationJustForUser = TestFramework.TestOrganization.Create("The Test Organization for User");

            Person userAnonymous = null;

            var userNormal = TestFramework.TestPerson.Create();

            userNormal.RoleID = Role.Normal.RoleID;

            var userAdmin = TestFramework.TestPerson.Create();

            userAdmin.RoleID = Role.Admin.RoleID;

            var userSitkaAdmin = TestFramework.TestPerson.Create();

            userSitkaAdmin.RoleID = Role.SitkaAdmin.RoleID;

            // Deferred Project
            // ----------------
            {
                // Deferred Project
                var deferredProject = TestFramework.TestProject.Create();
                deferredProject.ProjectStageID = ProjectStage.Deferred.ProjectStageID;

                // - View PMs -
                TestExpectedUserPermission(userAnonymous, viewPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userNormal, viewPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userAdmin, viewPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userSitkaAdmin, viewPerformanceMeasureFeature, true);

                // - Edit PMs -
                TestExpectedUserPermission(userAnonymous, deferredProject, editPerformanceMeasureFeature, false);
                TestExpectedUserPermission(userNormal, deferredProject, editPerformanceMeasureFeature, false);
                TestExpectedUserPermission(userAdmin, deferredProject, editPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userSitkaAdmin, deferredProject, editPerformanceMeasureFeature, true);

                TestExpectedUserPermissionWithUserInLeadImplementingOrg(userNormal, deferredProject, editPerformanceMeasureFeature, testOrganizationForProject, false);
                TestExpectedUserPermissionWithUserAsPrimaryContactForImplementingOrg(userNormal,
                                                                                     deferredProject,
                                                                                     editPerformanceMeasureFeature,
                                                                                     testOrganizationJustForUser,
                                                                                     testOrganizationForProject,
                                                                                     false);

                TestExpectedUserPermission(userAdmin, deferredProject, editPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userSitkaAdmin, deferredProject, editPerformanceMeasureFeature, true);
            }

            // Planning/Design Project
            // -----------------------
            {
                // Planning / Design Project
                var planningDesignProject = TestFramework.TestProject.Create();
                planningDesignProject.ProjectStageID = ProjectStage.PlanningDesign.ProjectStageID;

                // - View PMs -
                TestExpectedUserPermission(userAnonymous, viewPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userNormal, viewPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userAdmin, viewPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userSitkaAdmin, viewPerformanceMeasureFeature, true);

                // - Edit PMs -
                TestExpectedUserPermission(userAnonymous, planningDesignProject, editPerformanceMeasureFeature, false);
                TestExpectedUserPermission(userNormal, planningDesignProject, editPerformanceMeasureFeature, false);
                TestExpectedUserPermission(userAdmin, planningDesignProject, editPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userSitkaAdmin, planningDesignProject, editPerformanceMeasureFeature, true);

                TestExpectedUserPermissionWithUserInLeadImplementingOrg(userNormal, planningDesignProject, editPerformanceMeasureFeature, testOrganizationForProject, false);
                TestExpectedUserPermissionWithUserAsPrimaryContactForImplementingOrg(userNormal,
                                                                                     planningDesignProject,
                                                                                     editPerformanceMeasureFeature,
                                                                                     testOrganizationJustForUser,
                                                                                     testOrganizationForProject,
                                                                                     false);
                TestExpectedUserPermission(userAdmin, planningDesignProject, editPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userSitkaAdmin, planningDesignProject, editPerformanceMeasureFeature, true);
            }

            // Implementation Project
            // -----------------------
            {
                // Implementation Project
                var implementationProject = TestFramework.TestProject.Create();
                implementationProject.ProjectStageID = ProjectStage.Implementation.ProjectStageID;

                // - View PMs -
                TestExpectedUserPermission(userAnonymous, viewPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userNormal, viewPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userAdmin, viewPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userSitkaAdmin, viewPerformanceMeasureFeature, true);

                // - Edit PMs -
                TestExpectedUserPermission(userAnonymous, implementationProject, editPerformanceMeasureFeature, false);
                TestExpectedUserPermission(userNormal, implementationProject, editPerformanceMeasureFeature, false);
                TestExpectedUserPermission(userAdmin, implementationProject, editPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userSitkaAdmin, implementationProject, editPerformanceMeasureFeature, true);

                TestExpectedUserPermissionWithUserInLeadImplementingOrg(userNormal, implementationProject, editPerformanceMeasureFeature, testOrganizationForProject, false);
                TestExpectedUserPermissionWithUserAsPrimaryContactForImplementingOrg(userNormal,
                                                                                     implementationProject,
                                                                                     editPerformanceMeasureFeature,
                                                                                     testOrganizationJustForUser,
                                                                                     testOrganizationForProject,
                                                                                     false);
                TestExpectedUserPermission(userAdmin, implementationProject, editPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userSitkaAdmin, implementationProject, editPerformanceMeasureFeature, true);
            }

            // Post-Implementation Project
            // -----------------------
            {
                // Post-Implementation Project
                var postImplementationProject = TestFramework.TestProject.Create();
                postImplementationProject.ProjectStageID = ProjectStage.PostImplementation.ProjectStageID;

                // - View PMs -
                TestExpectedUserPermission(userAnonymous, viewPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userNormal, viewPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userAdmin, viewPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userSitkaAdmin, viewPerformanceMeasureFeature, true);

                // - Edit PMs -
                TestExpectedUserPermission(userAnonymous, postImplementationProject, editPerformanceMeasureFeature, false);
                TestExpectedUserPermission(userNormal, postImplementationProject, editPerformanceMeasureFeature, false);
                TestExpectedUserPermission(userAdmin, postImplementationProject, editPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userSitkaAdmin, postImplementationProject, editPerformanceMeasureFeature, true);

                TestExpectedUserPermissionWithUserInLeadImplementingOrg(userNormal, postImplementationProject, editPerformanceMeasureFeature, testOrganizationForProject, false);
                TestExpectedUserPermissionWithUserAsPrimaryContactForImplementingOrg(userNormal,
                                                                                     postImplementationProject,
                                                                                     editPerformanceMeasureFeature,
                                                                                     testOrganizationJustForUser,
                                                                                     testOrganizationForProject,
                                                                                     false);
                TestExpectedUserPermission(userAdmin, postImplementationProject, editPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userSitkaAdmin, postImplementationProject, editPerformanceMeasureFeature, true);
            }

            // Completed Project
            // -----------------------
            {
                // Completed Project
                var completedProject = TestFramework.TestProject.Create();
                completedProject.ProjectStageID = ProjectStage.Completed.ProjectStageID;

                // - View PMs -
                TestExpectedUserPermission(userAnonymous, viewPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userNormal, viewPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userAdmin, viewPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userSitkaAdmin, viewPerformanceMeasureFeature, true);

                // - Edit PMs -
                TestExpectedUserPermission(userAnonymous, completedProject, editPerformanceMeasureFeature, false);
                TestExpectedUserPermission(userNormal, completedProject, editPerformanceMeasureFeature, false);
                TestExpectedUserPermission(userAdmin, completedProject, editPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userSitkaAdmin, completedProject, editPerformanceMeasureFeature, true);

                TestExpectedUserPermissionWithUserInLeadImplementingOrg(userNormal, completedProject, editPerformanceMeasureFeature, testOrganizationForProject, false);
                TestExpectedUserPermissionWithUserAsPrimaryContactForImplementingOrg(userNormal,
                                                                                     completedProject,
                                                                                     editPerformanceMeasureFeature,
                                                                                     testOrganizationJustForUser,
                                                                                     testOrganizationForProject,
                                                                                     false);
                TestExpectedUserPermission(userAdmin, completedProject, editPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userSitkaAdmin, completedProject, editPerformanceMeasureFeature, true);
            }

            // Terminated Project
            // -----------------------
            {
                // Terminated Project
                var terminatedProject = TestFramework.TestProject.Create();
                terminatedProject.ProjectStageID = ProjectStage.Terminated.ProjectStageID;

                // - View PMs -
                TestExpectedUserPermission(userAnonymous, viewPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userNormal, viewPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userAdmin, viewPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userSitkaAdmin, viewPerformanceMeasureFeature, true);

                // - Edit PMs -
                TestExpectedUserPermission(userAnonymous, terminatedProject, editPerformanceMeasureFeature, false);
                TestExpectedUserPermission(userNormal, terminatedProject, editPerformanceMeasureFeature, false);
                TestExpectedUserPermission(userAdmin, terminatedProject, editPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userSitkaAdmin, terminatedProject, editPerformanceMeasureFeature, true);

                TestExpectedUserPermissionWithUserInLeadImplementingOrg(userNormal, terminatedProject, editPerformanceMeasureFeature, testOrganizationForProject, false);
                TestExpectedUserPermissionWithUserAsPrimaryContactForImplementingOrg(userNormal,
                                                                                     terminatedProject,
                                                                                     editPerformanceMeasureFeature,
                                                                                     testOrganizationJustForUser,
                                                                                     testOrganizationForProject,
                                                                                     false);
                TestExpectedUserPermission(userAdmin, terminatedProject, editPerformanceMeasureFeature, true);
                TestExpectedUserPermission(userSitkaAdmin, terminatedProject, editPerformanceMeasureFeature, true);
            }
        }