public ProjectCustomGridConfigurationSimple(int projectCustomGridTypeID, ProjectCustomGridColumn projectCustomGridColumn, ProjectCustomAttributeType projectCustomAttributeType, GeospatialAreaType geospatialAreaType, bool isEnabled, int?sortOrder) { ProjectCustomGridTypeID = projectCustomGridTypeID; ProjectCustomGridColumnID = projectCustomGridColumn.ProjectCustomGridColumnID; ProjectCustomGridColumnName = projectCustomGridColumn.ProjectCustomGridColumnDisplayName; ProjectCustomAttributeTypeID = projectCustomAttributeType?.ProjectCustomAttributeTypeID; ProjectCustomAttributeTypeName = projectCustomAttributeType?.ProjectCustomAttributeTypeName; GeospatialAreaTypeID = geospatialAreaType?.GeospatialAreaTypeID; GeospatialAreaTypeName = geospatialAreaType?.GeospatialAreaTypeName; IsEnabled = !projectCustomGridColumn.IsOptional || isEnabled; IsOptional = projectCustomGridColumn.IsOptional; SortOrder = sortOrder; }
public EditProjectCustomGridViewModel(int projectCustomGridTypeID, List <ProjectCustomGridConfiguration> projectCustomGridConfigurations, List <GeospatialAreaType> geospatialAreaTypes, List <ProjectFirmaModels.Models.ProjectCustomAttributeType> projectCustomAttributeTypes) { var projectCustomGridConfigurationSimples = new List <ProjectCustomGridConfigurationSimple>(); var projectCustomGridColumns = GeneralUtility.EnumGetValues <ProjectCustomGridColumnEnum>(); // Remove the Secondary Taxonomy Leaf Column if Tenant doesn't use them if (!MultiTenantHelpers.GetTenantAttributeFromCache().EnableSecondaryProjectTaxonomyLeaf) { projectCustomGridColumns = projectCustomGridColumns.Where(x => x != ProjectCustomGridColumnEnum.SecondaryTaxonomyLeaf).ToList(); } // Remove the Project Status Column if Tenant doesn't use the timeline and status updates if (!MultiTenantHelpers.GetTenantAttributeFromCache().EnableStatusUpdates) { projectCustomGridColumns = projectCustomGridColumns.Where(x => x != ProjectCustomGridColumnEnum.ProjectStatus).ToList(); } // Remove the Final Status Update Status Column if Tenant doesn't use the require submitting lessons learned if (!MultiTenantHelpers.GetTenantAttributeFromCache().EnableStatusUpdates) { projectCustomGridColumns = projectCustomGridColumns.Where(x => x != ProjectCustomGridColumnEnum.FinalStatusUpdateStatus).ToList(); } // Remove the Project Type Column if Tenant doesn't use the attribute if (!MultiTenantHelpers.GetTenantAttributeFromCache().EnableProjectCategories) { projectCustomGridColumns = projectCustomGridColumns.Where(x => x != ProjectCustomGridColumnEnum.ProjectCategory).ToList(); } // Remove Performance Measure Columns if Tenant doesn't Track Accomplishments if (!MultiTenantHelpers.TrackAccomplishments()) { projectCustomGridColumns = projectCustomGridColumns.Where(x => x != ProjectCustomGridColumnEnum.NumberOfExpectedPerformanceMeasureRecords).ToList(); projectCustomGridColumns = projectCustomGridColumns.Where(x => x != ProjectCustomGridColumnEnum.NumberOfReportedPerformanceMeasures).ToList(); } // Remove Solicitation Column if Tenant doesn't have solicitations if (!MultiTenantHelpers.HasSolicitations()) { projectCustomGridColumns = projectCustomGridColumns.Where(x => x != ProjectCustomGridColumnEnum.Solicitation).ToList(); } foreach (var projectCustomGridColumn in projectCustomGridColumns) { if (projectCustomGridColumn == ProjectCustomGridColumnEnum.CustomAttribute) { foreach (var projectCustomAttributeType in projectCustomAttributeTypes) { var enabled = projectCustomGridConfigurations.Any(x => x.ProjectCustomGridTypeID == projectCustomGridTypeID && x.ProjectCustomGridColumnID == (int)projectCustomGridColumn && x.ProjectCustomAttributeTypeID == projectCustomAttributeType.ProjectCustomAttributeTypeID && x.IsEnabled); var sortOrder = projectCustomGridConfigurations.SingleOrDefault(x => x.ProjectCustomGridTypeID == projectCustomGridTypeID && x.ProjectCustomGridColumnID == (int)projectCustomGridColumn && x.ProjectCustomAttributeTypeID == projectCustomAttributeType.ProjectCustomAttributeTypeID && x.IsEnabled)?.SortOrder; projectCustomGridConfigurationSimples.Add(new ProjectCustomGridConfigurationSimple(projectCustomGridTypeID, ProjectCustomGridColumn.ToType(projectCustomGridColumn), projectCustomAttributeType, null, enabled, sortOrder)); } } else if (projectCustomGridColumn == ProjectCustomGridColumnEnum.GeospatialAreaName) { foreach (var geospatialAreaType in geospatialAreaTypes) { var enabled = projectCustomGridConfigurations.Any(x => x.ProjectCustomGridTypeID == projectCustomGridTypeID && x.ProjectCustomGridColumnID == (int)projectCustomGridColumn && x.GeospatialAreaTypeID == geospatialAreaType.GeospatialAreaTypeID && x.IsEnabled); var sortOrder = projectCustomGridConfigurations.SingleOrDefault(x => x.ProjectCustomGridTypeID == projectCustomGridTypeID && x.ProjectCustomGridColumnID == (int)projectCustomGridColumn && x.GeospatialAreaTypeID == geospatialAreaType.GeospatialAreaTypeID && x.IsEnabled)?.SortOrder; projectCustomGridConfigurationSimples.Add(new ProjectCustomGridConfigurationSimple(projectCustomGridTypeID, ProjectCustomGridColumn.ToType(projectCustomGridColumn), null, geospatialAreaType, enabled, sortOrder)); } } else { var enabled = projectCustomGridConfigurations.Any(x => x.ProjectCustomGridTypeID == projectCustomGridTypeID && x.ProjectCustomGridColumnID == (int)projectCustomGridColumn && x.IsEnabled); var sortOrder = projectCustomGridConfigurations.SingleOrDefault(x => x.ProjectCustomGridTypeID == projectCustomGridTypeID && x.ProjectCustomGridColumnID == (int)projectCustomGridColumn && x.IsEnabled)?.SortOrder; projectCustomGridConfigurationSimples.Add(new ProjectCustomGridConfigurationSimple(projectCustomGridTypeID, ProjectCustomGridColumn.ToType(projectCustomGridColumn), null, null, enabled, sortOrder)); } } ProjectCustomGridConfigurationSimples = projectCustomGridConfigurationSimples; }