public static IEnumerable <IGrouping <TaxonomyTier, TaxonomyLeafPerformanceMeasure> > GetTaxonomyTiers(this PerformanceMeasure performanceMeasure) { Func <TaxonomyLeafPerformanceMeasure, TaxonomyTier> groupingFunc; switch (MultiTenantHelpers.GetAssociatePerformanceMeasureTaxonomyLevel().ToEnum) { case TaxonomyLevelEnum.Trunk: groupingFunc = x => new TaxonomyTier(x.TaxonomyLeaf.TaxonomyBranch.TaxonomyTrunk); break; case TaxonomyLevelEnum.Branch: groupingFunc = x => new TaxonomyTier(x.TaxonomyLeaf.TaxonomyBranch); break; case TaxonomyLevelEnum.Leaf: groupingFunc = x => new TaxonomyTier(x.TaxonomyLeaf); break; default: throw new ArgumentException(); } var taxonomyBranchPerformanceMeasureGroupedByLevel = performanceMeasure.TaxonomyLeafPerformanceMeasures.GroupBy(groupingFunc, new HavePrimaryKeyComparer <TaxonomyTier>()); return(taxonomyBranchPerformanceMeasureGroupedByLevel); }
public IEnumerable <IGrouping <ITaxonomyTier, ProjectTypePerformanceMeasure> > GetTaxonomyTiers() { Func <ProjectTypePerformanceMeasure, ITaxonomyTier> groupingFunc; switch (MultiTenantHelpers.GetAssociatePerformanceMeasureTaxonomyLevel().ToEnum) { case TaxonomyLevelEnum.Trunk: groupingFunc = x => x.ProjectType.TaxonomyBranch.TaxonomyTrunk; break; case TaxonomyLevelEnum.Branch: groupingFunc = x => x.ProjectType.TaxonomyBranch; break; case TaxonomyLevelEnum.Leaf: groupingFunc = x => x.ProjectType; break; default: throw new ArgumentException(); } var taxonomyBranchPerformanceMeasureGroupedByLevel = ProjectTypePerformanceMeasures.GroupBy(groupingFunc); return(taxonomyBranchPerformanceMeasureGroupedByLevel); }
public ViewResult Detail(TaxonomyBranchPrimaryKey taxonomyBranchPrimaryKey) { var taxonomyBranch = taxonomyBranchPrimaryKey.EntityObject; var taxonomyBranchProjects = taxonomyBranch.GetAssociatedProjects(CurrentPerson).ToList(); var projectMapCustomization = new ProjectMapCustomization(ProjectLocationFilterType.TaxonomyBranch, new List <int> { taxonomyBranch.TaxonomyBranchID }, ProjectColorByType.ProjectStage); var projectLocationsLayerGeoJson = new LayerGeoJson($"{FieldDefinition.ProjectLocation.GetFieldDefinitionLabel()}", Project.MappedPointsToGeoJsonFeatureCollection(taxonomyBranchProjects, true, true), "red", 1, LayerInitialVisibility.Show); var projectLocationsMapInitJson = new ProjectLocationsMapInitJson(projectLocationsLayerGeoJson, projectMapCustomization, "TaxonomyBranchProjectMap"); var projectLocationsMapViewData = new ProjectLocationsMapViewData(projectLocationsMapInitJson.MapDivID, ProjectColorByType.ProjectStage.DisplayName, MultiTenantHelpers.GetTopLevelTaxonomyTiers(), CurrentPerson.CanViewProposals); var associatePerformanceMeasureTaxonomyLevel = MultiTenantHelpers.GetAssociatePerformanceMeasureTaxonomyLevel(); var canHaveAssociatedPerformanceMeasures = associatePerformanceMeasureTaxonomyLevel == TaxonomyLevel.Branch; var taxonomyTierPerformanceMeasures = taxonomyBranch.GetTaxonomyTierPerformanceMeasures(); var relatedPerformanceMeasuresViewData = new RelatedPerformanceMeasuresViewData(associatePerformanceMeasureTaxonomyLevel, true, taxonomyTierPerformanceMeasures, canHaveAssociatedPerformanceMeasures); List <PerformanceMeasureChartViewData> performanceMeasureChartViewDatas = null; if (canHaveAssociatedPerformanceMeasures) { performanceMeasureChartViewDatas = taxonomyTierPerformanceMeasures.Select(x => new PerformanceMeasureChartViewData(x.Key, CurrentPerson, false, new List <Project>())).ToList(); } var taxonomyLevel = MultiTenantHelpers.GetTaxonomyLevel(); var viewData = new DetailViewData(CurrentPerson, taxonomyBranch, projectLocationsMapInitJson, projectLocationsMapViewData, canHaveAssociatedPerformanceMeasures, relatedPerformanceMeasuresViewData, performanceMeasureChartViewDatas, taxonomyLevel); return(RazorView <Summary, DetailViewData>(viewData)); }
private PartialViewResult ViewEdit(EditViewModel viewModel, PerformanceMeasure performanceMeasure) { var associatePerformanceMeasureTaxonomyLevel = MultiTenantHelpers.GetAssociatePerformanceMeasureTaxonomyLevel(); var taxonomyBranchSimples = associatePerformanceMeasureTaxonomyLevel.GetTaxonomyTiers().OrderBy(p => p.DisplayName).ToList().Select(x => new TaxonomyTier(x)).ToList(); var viewData = new EditViewData(new PerformanceMeasureSimple(performanceMeasure), taxonomyBranchSimples, associatePerformanceMeasureTaxonomyLevel); return(RazorPartialView <Edit, EditViewData, EditViewModel>(viewData, viewModel)); }
public DetailViewData(Person currentPerson, Models.PerformanceMeasure performanceMeasure, PerformanceMeasureChartViewData performanceMeasureChartViewData, EntityNotesViewData entityNotesViewData, bool userHasPerformanceMeasureManagePermissions) : base(currentPerson) { PageTitle = performanceMeasure.PerformanceMeasureDisplayName; EntityName = "PerformanceMeasure Detail"; PerformanceMeasure = performanceMeasure; PerformanceMeasureChartViewData = performanceMeasureChartViewData; EntityNotesViewData = entityNotesViewData; UserHasPerformanceMeasureOverviewManagePermissions = userHasPerformanceMeasureManagePermissions; EditPerformanceMeasureUrl = SitkaRoute <PerformanceMeasureController> .BuildUrlFromExpression(c => c.Edit(performanceMeasure)); EditSubcategoriesAndOptionsUrl = SitkaRoute <PerformanceMeasureController> .BuildUrlFromExpression(c => c.EditSubcategoriesAndOptions(performanceMeasure)); EditCriticalDefinitionsUrl = SitkaRoute <PerformanceMeasureController> .BuildUrlFromExpression(c => c.EditPerformanceMeasureRichText(performanceMeasure, EditRtfContent.PerformanceMeasureRichTextType.CriticalDefinitions)); EditProjectReportingUrl = SitkaRoute <PerformanceMeasureController> .BuildUrlFromExpression(c => c.EditPerformanceMeasureRichText(performanceMeasure, EditRtfContent.PerformanceMeasureRichTextType.ProjectReporting)); IndexUrl = SitkaRoute <PerformanceMeasureController> .BuildUrlFromExpression(c => c.Index()); var associatePerformanceMeasureTaxonomyLevel = MultiTenantHelpers.GetAssociatePerformanceMeasureTaxonomyLevel(); TaxonomyTierDisplayNamePluralized = associatePerformanceMeasureTaxonomyLevel.GetFieldDefinition().GetFieldDefinitionLabelPluralized(); UserHasTaxonomyTierPerformanceMeasureManagePermissions = new TaxonomyTierPerformanceMeasureManageFeature().HasPermission(currentPerson, performanceMeasure).HasPermission; EditTaxonomyTiersUrl = SitkaRoute <TaxonomyTierPerformanceMeasureController> .BuildUrlFromExpression(c => c.Edit(performanceMeasure)); RelatedTaxonomyTiersViewData = new RelatedTaxonomyTiersViewData(performanceMeasure, associatePerformanceMeasureTaxonomyLevel, true); PerformanceMeasureReportedValuesGridSpec = new PerformanceMeasureReportedValuesGridSpec(performanceMeasure) { ObjectNameSingular = $"{Models.FieldDefinition.ReportedValue.GetFieldDefinitionLabel()} for {Models.FieldDefinition.Project.GetFieldDefinitionLabel()}", ObjectNamePlural = $"{Models.FieldDefinition.ReportedValue.GetFieldDefinitionLabelPluralized()} for {Models.FieldDefinition.Project.GetFieldDefinitionLabelPluralized()}", SaveFiltersInCookie = true }; PerformanceMeasureReportedValuesGridName = "performanceMeasuresReportedValuesFromPerformanceMeasureGrid"; PerformanceMeasureReportedValuesGridDataUrl = SitkaRoute <PerformanceMeasureController> .BuildUrlFromExpression(tc => tc.PerformanceMeasureReportedValuesGridJsonData(performanceMeasure)); PerformanceMeasureExpectedGridSpec = new PerformanceMeasureExpectedGridSpec(performanceMeasure) { ObjectNameSingular = $"{Models.FieldDefinition.ExpectedValue.GetFieldDefinitionLabel()} for {Models.FieldDefinition.Project.GetFieldDefinitionLabel()}", ObjectNamePlural = $"{Models.FieldDefinition.ExpectedValue.GetFieldDefinitionLabelPluralized()} for {Models.FieldDefinition.Project.GetFieldDefinitionLabelPluralized()}", SaveFiltersInCookie = true }; PerformanceMeasureExpectedsGridName = "performanceMeasuresExpectedValuesFromPerformanceMeasureGrid"; PerformanceMeasureExpectedsGridDataUrl = SitkaRoute <PerformanceMeasureController> .BuildUrlFromExpression(tc => tc.PerformanceMeasureExpectedsGridJsonData(performanceMeasure)); }
public PerformanceMeasureGridSpec(Person currentPerson) { var hasDeletePermission = new PerformanceMeasureManageFeature().HasPermissionByPerson(currentPerson); if (hasDeletePermission) { Add(string.Empty, x => x.PerformanceMeasureDataSourceType.IsCustomCalculation ? new HtmlString("") : DhtmlxGridHtmlHelpers.MakeDeleteIconAndLinkBootstrap(x.GetDeleteUrl(), true, true), 30, DhtmlxGridColumnFilterType.None); } Add(Models.FieldDefinition.PerformanceMeasure.ToGridHeaderString(MultiTenantHelpers.GetPerformanceMeasureName()), a => UrlTemplate.MakeHrefString(a.GetSummaryUrl(), a.PerformanceMeasureDisplayName), 300, DhtmlxGridColumnFilterType.Text); Add(Models.FieldDefinition.MeasurementUnit.ToGridHeaderString("Unit"), a => a.MeasurementUnitType.MeasurementUnitTypeDisplayName, 80, DhtmlxGridColumnFilterType.SelectFilterStrict); Add(Models.FieldDefinition.PerformanceMeasureType.ToGridHeaderString("Type"), a => a.PerformanceMeasureType.PerformanceMeasureTypeDisplayName, 60, DhtmlxGridColumnFilterType.SelectFilterStrict); Add("Description", a => a.PerformanceMeasureDefinition, 400, DhtmlxGridColumnFilterType.Html); Add($"# of {Models.FieldDefinition.PerformanceMeasureSubcategory.GetFieldDefinitionLabelPluralized()}", a => a.GetRealSubcategoryCount(), 110); Add($"# of {Models.FieldDefinition.Project.GetFieldDefinitionLabelPluralized()}", a => a.ReportedProjectsCount(currentPerson), 80); Add($"Primary {MultiTenantHelpers.GetAssociatePerformanceMeasureTaxonomyLevel().GetFieldDefinition().GetFieldDefinitionLabel()}", a => a.GetPrimaryTaxonomyTier() == null ? new HtmlString(string.Empty) : a.GetPrimaryTaxonomyTier().GetDisplayNameAsUrl(), 150); }
public ViewResult Detail(TaxonomyTrunkPrimaryKey taxonomyTrunkPrimaryKey) { var taxonomyTrunk = taxonomyTrunkPrimaryKey.EntityObject; var taxonomyTrunkProjects = taxonomyTrunk.GetAssociatedProjects(CurrentFirmaSession).ToList(); var projectMapCustomization = new ProjectMapCustomization(ProjectLocationFilterType.TaxonomyTrunk, new List <int> { taxonomyTrunk.TaxonomyTrunkID }, ProjectColorByType.ProjectStage); var projectLocationsLayerGeoJson = new LayerGeoJson($"{FieldDefinitionEnum.ProjectLocation.ToType().GetFieldDefinitionLabel()}", taxonomyTrunkProjects.MappedPointsToGeoJsonFeatureCollection(false, true, true), "red", 1, LayerInitialVisibility.LayerInitialVisibilityEnum.Show); var projectLocationsMapInitJson = new ProjectLocationsMapInitJson(projectLocationsLayerGeoJson, projectMapCustomization, "TaxonomyTrunkProjectMap", false); var projectLocationsMapViewData = new ProjectLocationsMapViewData(projectLocationsMapInitJson.MapDivID, ProjectColorByType.ProjectStage.GetDisplayNameFieldDefinition(), MultiTenantHelpers.GetTopLevelTaxonomyTiers(), CurrentFirmaSession.CanViewProposals()); var associatePerformanceMeasureTaxonomyLevel = MultiTenantHelpers.GetAssociatePerformanceMeasureTaxonomyLevel(); var canHaveAssociatedPerformanceMeasures = associatePerformanceMeasureTaxonomyLevel == TaxonomyLevel.Trunk; var taxonomyTierPerformanceMeasures = taxonomyTrunk.GetTaxonomyTierPerformanceMeasures(); var relatedPerformanceMeasuresViewData = new RelatedPerformanceMeasuresViewData( associatePerformanceMeasureTaxonomyLevel, true, taxonomyTierPerformanceMeasures, canHaveAssociatedPerformanceMeasures); List <PerformanceMeasureChartViewData> performanceMeasureChartViewDatas = null; if (canHaveAssociatedPerformanceMeasures) { performanceMeasureChartViewDatas = taxonomyTierPerformanceMeasures.Select(x => new PerformanceMeasureChartViewData(x.Key, CurrentFirmaSession, false, new List <Project>())).ToList(); } var taxonomyLevel = MultiTenantHelpers.GetTaxonomyLevel(); var projectCustomDefaultGridConfigurations = HttpRequestStorage.DatabaseEntities.ProjectCustomGridConfigurations.Where(x => x.IsEnabled && x.ProjectCustomGridTypeID == ProjectCustomGridType.Default.ProjectCustomGridTypeID).OrderBy(x => x.SortOrder).ToList(); var viewData = new DetailViewData(CurrentFirmaSession, taxonomyTrunk, projectLocationsMapInitJson, projectLocationsMapViewData, canHaveAssociatedPerformanceMeasures, relatedPerformanceMeasuresViewData, performanceMeasureChartViewDatas, taxonomyLevel, projectCustomDefaultGridConfigurations); return(RazorView <Detail, DetailViewData>(viewData)); }
public void UpdateModel(List <ProjectTypePerformanceMeasure> currentProjectTypePerformanceMeasures, IList <ProjectTypePerformanceMeasure> allProjectTypePerformanceMeasures) { var projectTypePerformanceMeasuresUpdated = new List <ProjectTypePerformanceMeasure>(); if (TaxonomyTierPerformanceMeasures != null) { // Completely rebuild the list var associatePerformanceMeasureTaxonomyLevel = MultiTenantHelpers.GetAssociatePerformanceMeasureTaxonomyLevel(); if (associatePerformanceMeasureTaxonomyLevel == TaxonomyLevel.Trunk) { var taxonomyTrunkIDsSelected = TaxonomyTierPerformanceMeasures.Select(x => x.TaxonomyTierID).ToList(); var taxonomyBranchesForTrunk = HttpRequestStorage.DatabaseEntities.TaxonomyBranches .Where(x => taxonomyTrunkIDsSelected.Contains(x.TaxonomyTrunkID)) .ToLookup(x => x.TaxonomyTrunkID); projectTypePerformanceMeasuresUpdated = TaxonomyTierPerformanceMeasures.SelectMany(tt => taxonomyBranchesForTrunk[tt.TaxonomyTierID].SelectMany(tb => tb.ProjectTypes.Select(x => new ProjectTypePerformanceMeasure(x.ProjectTypeID, tt.PerformanceMeasureID, tt.TaxonomyTierID == PrimaryTaxonomyTierID)))).ToList(); } else if (associatePerformanceMeasureTaxonomyLevel == TaxonomyLevel.Branch) { var taxonomyBranchIDsSelected = TaxonomyTierPerformanceMeasures.Select(x => x.TaxonomyTierID).ToList(); var projectTypesForBranch = HttpRequestStorage.DatabaseEntities.ProjectTypes .Where(x => taxonomyBranchIDsSelected.Contains(x.TaxonomyBranchID)) .ToLookup(x => x.TaxonomyBranchID); projectTypePerformanceMeasuresUpdated = TaxonomyTierPerformanceMeasures.SelectMany(tb => projectTypesForBranch[tb.TaxonomyTierID].Select(x => new ProjectTypePerformanceMeasure(x.ProjectTypeID, tb.PerformanceMeasureID, tb.TaxonomyTierID == PrimaryTaxonomyTierID))).ToList(); } else { projectTypePerformanceMeasuresUpdated = TaxonomyTierPerformanceMeasures.Select(x => new ProjectTypePerformanceMeasure(x.TaxonomyTierID, x.PerformanceMeasureID, x.TaxonomyTierID == PrimaryTaxonomyTierID)).ToList(); } } currentProjectTypePerformanceMeasures.Merge(projectTypePerformanceMeasuresUpdated, allProjectTypePerformanceMeasures, (x, y) => x.ProjectTypeID == y.ProjectTypeID && x.PerformanceMeasureID == y.PerformanceMeasureID, (x, y) => x.IsPrimaryProjectType = y.IsPrimaryProjectType); }
public PartialViewResult OrganizationAccomplishments(int organizationID, int taxonomyTierID) { List <Project> projects; if (ModelObjectHelpers.IsRealPrimaryKeyValue(organizationID) && MultiTenantHelpers.DisplayAccomplishmentDashboard()) { var organization = HttpRequestStorage.DatabaseEntities.Organizations.GetOrganization(organizationID); projects = organization.GetAllActiveProjectsAndProposals(CurrentFirmaSession); } else { projects = HttpRequestStorage.DatabaseEntities.Projects.ToList().GetActiveProjectsAndProposals(MultiTenantHelpers.ShowProposalsToThePublic(), CurrentFirmaSession).ToList(); } var associatePerformanceMeasureTaxonomyLevel = MultiTenantHelpers.GetAssociatePerformanceMeasureTaxonomyLevel(); TaxonomyTier taxonomyTier; if (associatePerformanceMeasureTaxonomyLevel == TaxonomyLevel.Trunk) { taxonomyTier = new TaxonomyTier(HttpRequestStorage.DatabaseEntities.TaxonomyTrunks.GetTaxonomyTrunk(taxonomyTierID)); } else if (associatePerformanceMeasureTaxonomyLevel == TaxonomyLevel.Branch) { taxonomyTier = new TaxonomyTier(HttpRequestStorage.DatabaseEntities.TaxonomyBranches.GetTaxonomyBranch(taxonomyTierID)); } else { taxonomyTier = new TaxonomyTier(HttpRequestStorage.DatabaseEntities.TaxonomyLeafs.GetTaxonomyLeaf(taxonomyTierID)); } var projectIDs = projects.Select(x => x.ProjectID).Distinct().ToList(); var primaryPerformanceMeasuresForTaxonomyTier = taxonomyTier.TaxonomyTierPerformanceMeasures.Select(x => x.Key).ToList(); var performanceMeasures = primaryPerformanceMeasuresForTaxonomyTier.SelectMany(x => x.PerformanceMeasureActuals.Where(y => projectIDs.Contains(y.ProjectID))).Select(x => x.PerformanceMeasure).Distinct(new HavePrimaryKeyComparer <PerformanceMeasure>()).OrderBy(x => x.PerformanceMeasureDisplayName).ToList(); var performanceMeasureChartViewDatas = performanceMeasures.Select(x => new PerformanceMeasureChartViewData(x, CurrentFirmaSession, false, projects)).ToList(); var viewData = new OrganizationAccomplishmentsViewData(performanceMeasureChartViewDatas, taxonomyTier, associatePerformanceMeasureTaxonomyLevel); return(RazorPartialView <OrganizationAccomplishments, OrganizationAccomplishmentsViewData>(viewData)); }
public ActionResult New(EditViewModel viewModel) { if (!ModelState.IsValid) { return(ViewNew(viewModel)); } var projectType = new ProjectType(viewModel.TaxonomyBranchID, string.Empty, false); viewModel.UpdateModel(projectType, CurrentPerson); HttpRequestStorage.DatabaseEntities.ProjectTypes.Add(projectType); HttpRequestStorage.DatabaseEntities.SaveChanges(); // we need to add this new leaf as a ProjectTypePerformanceMeasure record if it's branch or trunk are currently associated to a PM var associatePerformanceMeasureTaxonomyLevel = MultiTenantHelpers.GetAssociatePerformanceMeasureTaxonomyLevel(); if (associatePerformanceMeasureTaxonomyLevel == TaxonomyLevel.Branch) { var leaves = HttpRequestStorage.DatabaseEntities.ProjectTypes.Where(x => x.TaxonomyBranchID == projectType.TaxonomyBranchID).Select(x => x.ProjectTypeID).ToList(); var projectTypePerformanceMeasuresGroupedByPerformanceMeasure = HttpRequestStorage.DatabaseEntities.ProjectTypePerformanceMeasures .Where(x => leaves.Contains(x.ProjectTypeID)).ToList().GroupBy(x => x.PerformanceMeasure, new HavePrimaryKeyComparer <PerformanceMeasure>()); var projectTypePerformanceMeasures = projectTypePerformanceMeasuresGroupedByPerformanceMeasure.Select(x => new ProjectTypePerformanceMeasure(projectType, x.Key, x.First().IsPrimaryProjectType)); } else if (associatePerformanceMeasureTaxonomyLevel == TaxonomyLevel.Trunk) { var taxonomyBranch = HttpRequestStorage.DatabaseEntities.TaxonomyBranches.GetTaxonomyBranch(projectType.TaxonomyBranchID); var leaves = taxonomyBranch.TaxonomyTrunk.TaxonomyBranches.SelectMany(x => x.ProjectTypes.Select(y => y.ProjectTypeID)).ToList(); var projectTypePerformanceMeasuresGroupedByPerformanceMeasure = HttpRequestStorage.DatabaseEntities.ProjectTypePerformanceMeasures .Where(x => leaves.Contains(x.ProjectTypeID)).ToList().GroupBy(x => x.PerformanceMeasure, new HavePrimaryKeyComparer <PerformanceMeasure>()); var projectTypePerformanceMeasures = projectTypePerformanceMeasuresGroupedByPerformanceMeasure.Select(x => new ProjectTypePerformanceMeasure(projectType, x.Key, x.First().IsPrimaryProjectType)); } SetMessageForDisplay($"New {FieldDefinition.ProjectType.GetFieldDefinitionLabel()} {projectType.GetDisplayNameAsUrl()} successfully created!"); return(new ModalDialogFormJsonResult()); }
public ViewResult AccomplishmentsDashboard() { var firmaPage = FirmaPageTypeEnum.ProjectResults.GetFirmaPage(); var tenantAttribute = MultiTenantHelpers.GetTenantAttributeFromCache(); List <Organization> organizations; // default to Funding Organizations if no relationship type is selected to report in the dashboard. var relationshipTypeToReportInAccomplishmentsDashboard = MultiTenantHelpers.GetOrganizationRelationshipTypeToReportInAccomplishmentsDashboard(); if (relationshipTypeToReportInAccomplishmentsDashboard == null) { var expectedFundingOrganizations = HttpRequestStorage.DatabaseEntities.ProjectFundingSourceBudgets .Select(x => x.FundingSource.Organization).ToList(); var reportedFundingOrganization = HttpRequestStorage.DatabaseEntities.ProjectFundingSourceExpenditures .Select(x => x.FundingSource.Organization).ToList(); expectedFundingOrganizations.AddRange(reportedFundingOrganization); organizations = expectedFundingOrganizations.Distinct(new HavePrimaryKeyComparer <Organization>()).OrderBy(x => x.OrganizationName).ToList(); } else { organizations = HttpRequestStorage.DatabaseEntities.Projects.ToList().SelectMany(x => x.ProjectOrganizations.Where(y => y.OrganizationRelationshipType == relationshipTypeToReportInAccomplishmentsDashboard).Select(z => z.Organization)).ToList().Distinct(new HavePrimaryKeyComparer <Organization>()).OrderBy(x => x.OrganizationName).ToList(); } var defaultEndYear = FirmaDateUtilities.CalculateCurrentYearToUseForRequiredReporting(); var defaultBeginYear = defaultEndYear - (defaultEndYear - MultiTenantHelpers.GetMinimumYear()); var associatePerformanceMeasureTaxonomyLevel = MultiTenantHelpers.GetAssociatePerformanceMeasureTaxonomyLevel(); var taxonomyTiers = associatePerformanceMeasureTaxonomyLevel.GetTaxonomyTiers(HttpRequestStorage.DatabaseEntities).OrderBy(x => x.SortOrder).ThenBy(x => x.DisplayName, StringComparer.InvariantCultureIgnoreCase).ToList(); var viewData = new AccomplishmentsDashboardViewData(CurrentFirmaSession, firmaPage, tenantAttribute, organizations, FirmaDateUtilities.GetRangeOfYearsForReporting(), defaultBeginYear, defaultEndYear, taxonomyTiers, associatePerformanceMeasureTaxonomyLevel); return(RazorView <AccomplishmentsDashboard, AccomplishmentsDashboardViewData>(viewData)); }
public ViewResult Detail(TaxonomyLeafPrimaryKey taxonomyLeafPrimaryKey) { var taxonomyLeaf = taxonomyLeafPrimaryKey.EntityObject; var currentPersonCanViewProposals = CurrentFirmaSession.CanViewProposals(); var primaryTaxonomyLeafProjects = taxonomyLeaf.GetProjects().ToList() .GetActiveProjectsAndProposals(currentPersonCanViewProposals) .Where(x => x.ProjectStage.ShouldShowOnMap()) .ToList(); var secondaryTaxonomyLeafProjects = primaryTaxonomyLeafProjects.Union( taxonomyLeaf.SecondaryProjectTaxonomyLeafs.Select(x => x.Project) .ToList() .GetActiveProjectsAndProposals(currentPersonCanViewProposals) .Where(x => x.ProjectStage.ShouldShowOnMap())) .ToList(); // This page supports two maps for cases where secondary taxonomy leafs are supported var primaryProjectMapCustomization = new ProjectMapCustomization(ProjectLocationFilterType.TaxonomyLeaf, new List <int> { taxonomyLeaf.TaxonomyLeafID }, ProjectColorByType.ProjectStage); var secondaryProjectMapCustomization = new ProjectMapCustomization(ProjectLocationFilterType.TaxonomyLeaf, secondaryTaxonomyLeafProjects.Select(x => x.GetTaxonomyLeaf().TaxonomyLeafID).Union(new List <int> { taxonomyLeaf.TaxonomyLeafID }).ToList(), ProjectColorByType.ProjectStage); var primaryProjectLocationsLayerGeoJson = new LayerGeoJson($"{FieldDefinitionEnum.ProjectLocation.ToType().GetFieldDefinitionLabel()}", primaryTaxonomyLeafProjects.MappedPointsToGeoJsonFeatureCollection(false, true, false), "red", 1, LayerInitialVisibility.LayerInitialVisibilityEnum.Show); var secondaryProjectLocationsLayerGeoJson = new LayerGeoJson($"{FieldDefinitionEnum.ProjectLocation.ToType().GetFieldDefinitionLabel()}", secondaryTaxonomyLeafProjects.MappedPointsToGeoJsonFeatureCollection(false, true, false), "red", 1, LayerInitialVisibility.LayerInitialVisibilityEnum.Show); // Add Organization Type boundaries according to configuration var configuredOrganizationBoundariesMapInitJson = HttpRequestStorage.DatabaseEntities.Organizations.GetConfiguredBoundaryLayersGeoJson(); var primaryProjectLocationsMapInitJson = new ProjectLocationsMapInitJson(primaryProjectLocationsLayerGeoJson, primaryProjectMapCustomization, "TaxonomyLeafProjectMap", false); primaryProjectLocationsMapInitJson.Layers.AddRange(configuredOrganizationBoundariesMapInitJson); var secondaryProjectLocationsMapInitJson = new ProjectLocationsMapInitJson(secondaryProjectLocationsLayerGeoJson, secondaryProjectMapCustomization, "SecondaryTaxonomyLeafProjectMap", false); secondaryProjectLocationsMapInitJson.Layers.AddRange(configuredOrganizationBoundariesMapInitJson); var primaryProjectLocationsMapViewData = new ProjectLocationsMapViewData(primaryProjectLocationsMapInitJson.MapDivID, ProjectColorByType.ProjectStage.GetDisplayNameFieldDefinition(), MultiTenantHelpers.GetTopLevelTaxonomyTiers(), CurrentFirmaSession.CanViewProposals()); var secondaryProjectLocationsMapViewData = new ProjectLocationsMapViewData(secondaryProjectLocationsMapInitJson.MapDivID, ProjectColorByType.ProjectStage.GetDisplayNameFieldDefinition(), MultiTenantHelpers.GetTopLevelTaxonomyTiers(), CurrentFirmaSession.CanViewProposals()); var associatePerformanceMeasureTaxonomyLevel = MultiTenantHelpers.GetAssociatePerformanceMeasureTaxonomyLevel(); var canHaveAssociatedPerformanceMeasures = associatePerformanceMeasureTaxonomyLevel == TaxonomyLevel.Leaf; var taxonomyTierPerformanceMeasures = taxonomyLeaf.GetTaxonomyTierPerformanceMeasures(); var relatedPerformanceMeasuresViewData = new RelatedPerformanceMeasuresViewData( associatePerformanceMeasureTaxonomyLevel, true, taxonomyTierPerformanceMeasures, canHaveAssociatedPerformanceMeasures); var taxonomyLevel = MultiTenantHelpers.GetTaxonomyLevel(); var tenantAttribute = MultiTenantHelpers.GetTenantAttributeFromCache(); var performanceMeasures = taxonomyLeaf.TaxonomyLeafPerformanceMeasures.Select(x => x.PerformanceMeasure) .ToList(); var primaryPerformanceMeasureChartViewDataByPerformanceMeasure = performanceMeasures.ToDictionary( x => x.PerformanceMeasureID, x => new PerformanceMeasureChartViewData(x, CurrentFirmaSession, false, primaryTaxonomyLeafProjects, $"primary{x.GetJavascriptSafeChartUniqueName()}")); var secondaryPerformanceMeasureChartViewDataByPerformanceMeasure = performanceMeasures.ToDictionary( x => x.PerformanceMeasureID, x => new PerformanceMeasureChartViewData(x, CurrentFirmaSession, false, secondaryTaxonomyLeafProjects, $"secondary{x.GetJavascriptSafeChartUniqueName()}")); var projectCustomDefaultGridConfigurations = HttpRequestStorage.DatabaseEntities.ProjectCustomGridConfigurations.Where(x => x.IsEnabled && x.ProjectCustomGridTypeID == ProjectCustomGridType.Default.ProjectCustomGridTypeID).OrderBy(x => x.SortOrder).ToList(); var viewData = new DetailViewData(CurrentFirmaSession, taxonomyLeaf, primaryProjectLocationsMapInitJson, secondaryProjectLocationsMapInitJson, primaryProjectLocationsMapViewData, secondaryProjectLocationsMapViewData, canHaveAssociatedPerformanceMeasures, relatedPerformanceMeasuresViewData, taxonomyLevel, tenantAttribute, performanceMeasures, primaryPerformanceMeasureChartViewDataByPerformanceMeasure, secondaryPerformanceMeasureChartViewDataByPerformanceMeasure, projectCustomDefaultGridConfigurations); return(RazorView <Summary, DetailViewData>(viewData)); }
public DetailViewData(FirmaSession currentFirmaSession, ProjectFirmaModels.Models.PerformanceMeasure performanceMeasure, PerformanceMeasureChartViewData performanceMeasureChartViewData, EntityNotesViewData entityNotesViewData, bool userHasPerformanceMeasureManagePermissions, bool isAdmin) : base(currentFirmaSession) { PageTitle = performanceMeasure.PerformanceMeasureDisplayName; EntityName = "PerformanceMeasure Detail"; PerformanceMeasure = performanceMeasure; PerformanceMeasureChartViewData = performanceMeasureChartViewData; EntityNotesViewData = entityNotesViewData; UserHasPerformanceMeasureOverviewManagePermissions = userHasPerformanceMeasureManagePermissions; IsAdmin = isAdmin; EditPerformanceMeasureUrl = SitkaRoute <PerformanceMeasureController> .BuildUrlFromExpression(c => c.Edit(performanceMeasure)); EditSubcategoriesAndOptionsUrl = SitkaRoute <PerformanceMeasureController> .BuildUrlFromExpression(c => c.EditSubcategoriesAndOptions(performanceMeasure)); var performanceMeasuresExternallySourced = HttpRequestStorage.Tenant.ArePerformanceMeasuresExternallySourced; CanEditImportanceAndAdditionalInformation = !performanceMeasuresExternallySourced; EditImportanceUrl = SitkaRoute <PerformanceMeasureController> .BuildUrlFromExpression(c => c.EditPerformanceMeasureRichText(performanceMeasure, EditRtfContent.PerformanceMeasureRichTextType.Importance)); EditAdditionalInformationUrl = SitkaRoute <PerformanceMeasureController> .BuildUrlFromExpression(c => c.EditPerformanceMeasureRichText(performanceMeasure, EditRtfContent.PerformanceMeasureRichTextType.AdditionalInformation)); EditCriticalDefinitionsUrl = SitkaRoute <PerformanceMeasureController> .BuildUrlFromExpression(c => c.EditPerformanceMeasureRichText(performanceMeasure, EditRtfContent.PerformanceMeasureRichTextType.CriticalDefinitions)); EditProjectReportingUrl = SitkaRoute <PerformanceMeasureController> .BuildUrlFromExpression(c => c.EditPerformanceMeasureRichText(performanceMeasure, EditRtfContent.PerformanceMeasureRichTextType.ProjectReporting)); IndexUrl = SitkaRoute <PerformanceMeasureController> .BuildUrlFromExpression(c => c.Index()); var associatePerformanceMeasureTaxonomyLevel = MultiTenantHelpers.GetAssociatePerformanceMeasureTaxonomyLevel(); TaxonomyTierDisplayNamePluralized = associatePerformanceMeasureTaxonomyLevel.GetFieldDefinition().GetFieldDefinitionLabelPluralized(); UserHasTaxonomyTierPerformanceMeasureManagePermissions = new TaxonomyTierPerformanceMeasureManageFeature().HasPermission(currentFirmaSession, performanceMeasure).HasPermission; EditTaxonomyTiersUrl = SitkaRoute <TaxonomyTierPerformanceMeasureController> .BuildUrlFromExpression(c => c.Edit(performanceMeasure)); RelatedTaxonomyTiersViewData = new RelatedTaxonomyTiersViewData(performanceMeasure, associatePerformanceMeasureTaxonomyLevel, true); // Hide GeoSpatialArea panel on tenants where performance measures are externally sourced ShowGeoSpatialAreaPanel = !performanceMeasuresExternallySourced; CanAddGeospatialArea = new GeospatialAreaPerformanceMeasureTargetManageFeature().HasPermissionByFirmaSession(currentFirmaSession); PerformanceMeasureReportedValuesGridSpec = new PerformanceMeasureReportedValuesGridSpec(performanceMeasure) { ObjectNameSingular = $"{FieldDefinitionEnum.ReportedValue.ToType().GetFieldDefinitionLabel()} for {FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabel()}", ObjectNamePlural = $"{FieldDefinitionEnum.ReportedValue.ToType().GetFieldDefinitionLabelPluralized()} for {FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabelPluralized()}", SaveFiltersInCookie = true }; PerformanceMeasureReportedValuesGridName = "performanceMeasuresReportedValuesFromPerformanceMeasureGrid"; PerformanceMeasureReportedValuesGridDataUrl = SitkaRoute <PerformanceMeasureController> .BuildUrlFromExpression(tc => tc.PerformanceMeasureReportedValuesGridJsonData(performanceMeasure)); PerformanceMeasureExpectedGridSpec = new PerformanceMeasureExpectedGridSpec(performanceMeasure) { ObjectNameSingular = $"{FieldDefinitionEnum.ExpectedValue.ToType().GetFieldDefinitionLabel()} for {FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabel()}", ObjectNamePlural = $"{FieldDefinitionEnum.ExpectedValue.ToType().GetFieldDefinitionLabelPluralized()} for {FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabelPluralized()}", SaveFiltersInCookie = true }; PerformanceMeasureExpectedsGridName = "performanceMeasuresExpectedValuesFromPerformanceMeasureGrid"; PerformanceMeasureExpectedsGridDataUrl = SitkaRoute <PerformanceMeasureController> .BuildUrlFromExpression(tc => tc.PerformanceMeasureExpectedsGridJsonData(performanceMeasure)); GeospatialAreaPerformanceMeasureTargetGridSpec = new GeospatialAreaPerformanceMeasureTargetGridSpec(currentFirmaSession, performanceMeasure) { ObjectNameSingular = $"{FieldDefinitionEnum.GeospatialArea.ToType().GetFieldDefinitionLabel()} Target for {performanceMeasure.GetDisplayName()}", ObjectNamePlural = $"{FieldDefinitionEnum.GeospatialArea.ToType().GetFieldDefinitionLabel()} Targets for {performanceMeasure.GetDisplayName()}", SaveFiltersInCookie = true }; GeospatialAreaPerformanceMeasureTargetGridName = "geospatialAreaPerformanceMeasuresTargetsGrid"; GeospatialAreaPerformanceMeasureTargetGridDataUrl = SitkaRoute <PerformanceMeasureController> .BuildUrlFromExpression(tc => tc.GeospatialAreaPerformanceMeasureTargetsGridJsonData(performanceMeasure)); AddGeospatialAreaPerformanceMeasureTargetDialogTitle = $"Add {FieldDefinitionEnum.GeospatialArea.ToType().GetFieldDefinitionLabelPluralized()} to {performanceMeasure.GetDisplayName()}"; AddGeospatialAreaPerformanceMeasureTargetText = $"{BootstrapHtmlHelpers.MakeGlyphIcon("glyphicon-plus")} Add {FieldDefinitionEnum.GeospatialArea.ToType().GetFieldDefinitionLabel()}"; AddGeospatialAreaPerformanceMeasureTargetUrl = SitkaRoute <GeospatialAreaPerformanceMeasureTargetController> .BuildUrlFromExpression(x => x.AddGeospatialAreaToPerformanceMeasure(performanceMeasure)); EditPerformanceMeasureTargetUrl = SitkaRoute <PerformanceMeasureController> .BuildUrlFromExpression(pmc => pmc.EditPerformanceMeasureReportedValues(performanceMeasure)); FieldDefinitionForPerformanceMeasure = FieldDefinitionEnum.PerformanceMeasure.ToType(); FieldDefinitionForPerformanceMeasureType = FieldDefinitionEnum.PerformanceMeasureType.ToType(); FieldDefinitionForPerformanceMeasureSubcategory = FieldDefinitionEnum.PerformanceMeasureSubcategory.ToType(); FieldDefinitionForPerformanceMeasureSubcategoryOption = FieldDefinitionEnum.PerformanceMeasureSubcategoryOption.ToType(); FieldDefinitionForProject = FieldDefinitionEnum.Project.ToType(); }