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