コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 public static void DeleteProjectUpdate(this IQueryable <ProjectUpdate> projectUpdates, ProjectUpdate projectUpdateToDelete)
 {
     DeleteProjectUpdate(projectUpdates, new List <ProjectUpdate> {
         projectUpdateToDelete
     });
 }
コード例 #6
0
        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()));
        }
コード例 #7
0
 public static bool UserCanViewPrivateLocations(this FirmaSession currentFirmaSession, ProjectUpdate projectUpdate)
 {
     return(currentFirmaSession.UserCanViewPrivateLocations(projectUpdate.ProjectUpdateBatch.Project));
 }
コード例 #8
0
 public static FeatureCollection DetailedLocationToGeoJsonFeatureCollection(this ProjectUpdate projectUpdate, bool userCanViewPrivateLocations)
 {
     return(projectUpdate.GetProjectLocationDetailedAsProjectLocationUpdate(userCanViewPrivateLocations).ToGeoJsonFeatureCollection());
 }
コード例 #9
0
 public static string GetPlanningDesignStartYear(this ProjectUpdate projectUpdate)
 {
     return(projectUpdate.PlanningDesignStartYear.HasValue ? MultiTenantHelpers.FormatReportingYear(projectUpdate.PlanningDesignStartYear.Value) : null);
 }
コード例 #10
0
        public static void CreateFromProject(this ProjectUpdateBatch projectUpdateBatch)
        {
            var projectUpdate = new ProjectUpdate(projectUpdateBatch);

            HttpRequestStorage.DatabaseEntities.AllProjectUpdates.Add(projectUpdate);
        }
コード例 #11
0
ファイル: MapInitJson.cs プロジェクト: sitkatech/alevin
        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()));
        }