public static HtmlString GetBpaProjectNumberAsUrl(this ProjectUpdate projectUpdate) { //example url: https://www.cbfish.org/Project.mvc/Display/2019-008-00 var attributes = new Dictionary <string, string>(); attributes.Add("target", "_blank"); var url = UrlTemplate.MakeHrefString($"https://www.cbfish.org/Project.mvc/Display/{WebUtility.UrlEncode(projectUpdate.BpaProjectNumber)}", projectUpdate.BpaProjectNumber, attributes); return(url); }
public static FeatureCollection SimpleLocationToGeoJsonFeatureCollection(this ProjectUpdate projectUpdate, FirmaSession firmaSession) { var featureCollection = new FeatureCollection(); var userCanViewPrivateLocations = firmaSession.UserCanViewPrivateLocations(projectUpdate); if ((projectUpdate.ProjectLocationSimpleType == ProjectLocationSimpleType.PointOnMap || projectUpdate.ProjectLocationSimpleType == ProjectLocationSimpleType.LatLngInput) && projectUpdate.HasProjectLocationPoint(userCanViewPrivateLocations)) { featureCollection.Features.Add(DbGeometryToGeoJsonHelper.FromDbGeometry(projectUpdate.GetProjectLocationPoint(userCanViewPrivateLocations))); } return(featureCollection); }
public void UpdateModel(ProjectUpdate projectUpdate, Person currentPerson) { var allProjectCustomAttributeTypes = HttpRequestStorage.DatabaseEntities.ProjectCustomAttributeTypes.ToList(); var existingProjectCustomAttributes = projectUpdate.ProjectUpdateBatch.ProjectCustomAttributeUpdates; List <ProjectCustomAttributeUpdate> customAttributesToUpdate = new List <ProjectCustomAttributeUpdate>(); if (Attributes != null) { customAttributesToUpdate = Attributes.Where(x => x.ProjectCustomAttributeValues != null && x.ProjectCustomAttributeValues.Any(y => !string.IsNullOrWhiteSpace(y))) .Select(x => new ProjectCustomAttributeUpdate(projectUpdate.ProjectUpdateBatchID, x.ProjectCustomAttributeTypeID)) .ToList(); } var existingProjectCustomAttributeValues = existingProjectCustomAttributes.SelectMany(x => x.ProjectCustomAttributeUpdateValues).ToList(); if (customAttributesToUpdate.Any()) { var customAttributeValuesToUpdate = customAttributesToUpdate.Join(Attributes, x => x.ProjectCustomAttributeTypeID, x => x.ProjectCustomAttributeTypeID, (a, b) => { // Use existing attribute ID if you can, otherwise use dummy entity ID var projectCustomAttributeUpdateID = existingProjectCustomAttributes .SingleOrDefault(x => x.ProjectCustomAttributeTypeID == a.ProjectCustomAttributeTypeID) ?.ProjectCustomAttributeUpdateID ?? a.ProjectCustomAttributeUpdateID; var projectCustomAttributeType = allProjectCustomAttributeTypes.Single(x => x.ProjectCustomAttributeTypeID == a.ProjectCustomAttributeTypeID); return(b.ProjectCustomAttributeValues .Select(x => { var attributeValue = projectCustomAttributeType.ProjectCustomAttributeDataType .ValueParsedForDataType(x); return new ProjectCustomAttributeUpdateValue(projectCustomAttributeUpdateID, attributeValue); }) .ToList()); }) .SelectMany(x => x) .ToList(); UpdateProjectCustomAttributesImpl(existingProjectCustomAttributes, customAttributesToUpdate, HttpRequestStorage.DatabaseEntities.ProjectCustomAttributeUpdates.Local); UpdateProjectCustomAttributeValuesImpl(existingProjectCustomAttributeValues, customAttributeValuesToUpdate, HttpRequestStorage.DatabaseEntities.ProjectCustomAttributeUpdateValues.Local); } }
public static ProjectUpdateBatch CreateNewProjectUpdateBatchForProject(Project project, Person currentPerson) { var projectUpdateBatch = CreateProjectUpdateBatchAndLogTransition(project, currentPerson); // basics & map ProjectUpdate.CreateFromProject(projectUpdateBatch); // expenditures ProjectGrantAllocationExpenditureUpdate.CreateFromProject(projectUpdateBatch); // project expenditures exempt reporting years ProjectExemptReportingYearUpdate.CreateExpendituresExemptReportingYearsFromProject(projectUpdateBatch); // expenditures exempt explanation projectUpdateBatch.SyncExpendituresYearsExemptionExplanation(); // Expected Funding ProjectGrantAllocationRequestUpdate.CreateFromProject(projectUpdateBatch); // performance measures // TODO Neutered Per WA DNR #1446. May decide to bring it back later //PerformanceMeasureActualUpdate.CreateFromProject(projectUpdateBatch); // project performance measures exempt reporting years ProjectExemptReportingYearUpdate.CreatePerformanceMeasuresExemptReportingYearsFromProject(projectUpdateBatch); // project exempt reporting years reason projectUpdateBatch.SyncPerformanceMeasureActualYearsExemptionExplanation(); // project locations - detailed ProjectLocationUpdate.CreateFromProject(projectUpdateBatch); // project priority landscape ProjectPriorityLandscapeUpdate.CreateFromProject(projectUpdateBatch); // project region ProjectRegionUpdate.CreateFromProject(projectUpdateBatch); // photos ProjectImageUpdate.CreateFromProject(projectUpdateBatch); projectUpdateBatch.IsPhotosUpdated = false; // external links ProjectExternalLinkUpdate.CreateFromProject(projectUpdateBatch); // notes ProjectNoteUpdate.CreateFromProject(projectUpdateBatch); // organizations ProjectOrganizationUpdate.CreateFromProject(projectUpdateBatch); ProjectPersonUpdate.CreateFromProject(projectUpdateBatch); // Documents ProjectDocumentUpdate.CreateFromProject(projectUpdateBatch); // Custom attributes ProjectCustomAttributeUpdate.CreateFromProject(projectUpdateBatch); return(projectUpdateBatch); }
public static void DeleteProjectUpdate(this IQueryable <ProjectUpdate> projectUpdates, ProjectUpdate projectUpdateToDelete) { DeleteProjectUpdate(projectUpdates, new List <ProjectUpdate> { projectUpdateToDelete }); }
public static List <int> CalculateCalendarYearRangeForExpenditures(this IList <ProjectGrantAllocationExpenditureUpdate> projectGrantAllocationExpenditureUpdates, ProjectUpdate projectUpdate) { if (projectUpdate.GetCompletionYear() < projectUpdate.GetImplementationStartYear()) { return(new List <int>()); } if (projectUpdate.GetCompletionYear() < projectUpdate.PlannedDate.GetValueOrDefault().Year) { return(new List <int>()); } var existingYears = projectGrantAllocationExpenditureUpdates.Select(x => x.CalendarYear).ToList(); return(FirmaDateUtilities.CalculateCalendarYearRangeForExpendituresAccountingForExistingYears(existingYears, projectUpdate, FirmaDateUtilities.CalculateCurrentYearToUseForUpToAllowableInputInReporting())); }
public static bool UserCanViewPrivateLocations(this FirmaSession currentFirmaSession, ProjectUpdate projectUpdate) { return(currentFirmaSession.UserCanViewPrivateLocations(projectUpdate.ProjectUpdateBatch.Project)); }
public static FeatureCollection DetailedLocationToGeoJsonFeatureCollection(this ProjectUpdate projectUpdate, bool userCanViewPrivateLocations) { return(projectUpdate.GetProjectLocationDetailedAsProjectLocationUpdate(userCanViewPrivateLocations).ToGeoJsonFeatureCollection()); }
public static string GetPlanningDesignStartYear(this ProjectUpdate projectUpdate) { return(projectUpdate.PlanningDesignStartYear.HasValue ? MultiTenantHelpers.FormatReportingYear(projectUpdate.PlanningDesignStartYear.Value) : null); }
public static void CreateFromProject(this ProjectUpdateBatch projectUpdateBatch) { var projectUpdate = new ProjectUpdate(projectUpdateBatch); HttpRequestStorage.DatabaseEntities.AllProjectUpdates.Add(projectUpdate); }
public static List <LayerGeoJson> GetProjectLocationSimpleAndDetailedMapLayers(ProjectUpdate projectUpdate, FirmaSession currentFirmaSession) { var layerGeoJsons = new List <LayerGeoJson>(); var userCanViewPrivateLocations = currentFirmaSession.UserCanViewPrivateLocations(projectUpdate); if (projectUpdate.HasProjectLocationPoint(userCanViewPrivateLocations)) { layerGeoJsons.AddRange(GetProjectLocationSimpleMapLayer(projectUpdate, currentFirmaSession.UserCanViewPrivateLocations(projectUpdate))); } var detailedLocationGeoJsonFeatureCollection = projectUpdate.DetailedLocationToGeoJsonFeatureCollection(userCanViewPrivateLocations); if (detailedLocationGeoJsonFeatureCollection.Features.Any()) { layerGeoJsons.Add(new LayerGeoJson($"{FieldDefinitionEnum.ProjectLocation.ToType().GetFieldDefinitionLabel()} - Detail", detailedLocationGeoJsonFeatureCollection, "#838383", 1, LayerInitialVisibility.LayerInitialVisibilityEnum.Show)); } return(layerGeoJsons); }
public static List <int> CalculateCalendarYearRangeForExpendituresWithoutAccountingForExistingYears(this ProjectUpdate projectUpdate) { if (projectUpdate.CompletionYear < projectUpdate.ImplementationStartYear) { return(new List <int>()); } if (projectUpdate.CompletionYear < projectUpdate.PlanningDesignStartYear) { return(new List <int>()); } return(FirmaDateUtilities.CalculateCalendarYearRangeForExpendituresAccountingForExistingYears(new List <int>(), projectUpdate, FirmaDateUtilities.CalculateCurrentYearToUseForUpToAllowableInputInReporting())); }
public static List <int> CalculateCalendarYearRangeForExpenditures(this IList <ProjectFundingSourceExpenditureUpdate> projectFundingSourceExpenditureUpdates, ProjectUpdate projectUpdate) { if (projectUpdate.CompletionYear < projectUpdate.ImplementationStartYear) { return(new List <int>()); } if (projectUpdate.CompletionYear < projectUpdate.PlanningDesignStartYear) { return(new List <int>()); } var existingYears = projectFundingSourceExpenditureUpdates.Select(x => x.CalendarYear).ToList(); return(FirmaDateUtilities.CalculateCalendarYearRangeForExpendituresAccountingForExistingYears(existingYears, projectUpdate, FirmaDateUtilities.CalculateCurrentYearToUseForUpToAllowableInputInReporting())); }