Example #1
0
        /// <summary>
        /// Active Dependent type names of this object
        /// </summary>
        public List <string> DependentObjectNames()
        {
            var dependentObjects = new List <string>();

            if (FundingSourceCustomAttributes.Any())
            {
                dependentObjects.Add(typeof(FundingSourceCustomAttribute).Name);
            }

            if (ProjectFundingSourceBudgets.Any())
            {
                dependentObjects.Add(typeof(ProjectFundingSourceBudget).Name);
            }

            if (ProjectFundingSourceBudgetUpdates.Any())
            {
                dependentObjects.Add(typeof(ProjectFundingSourceBudgetUpdate).Name);
            }

            if (ProjectFundingSourceExpenditures.Any())
            {
                dependentObjects.Add(typeof(ProjectFundingSourceExpenditure).Name);
            }

            if (ProjectFundingSourceExpenditureUpdates.Any())
            {
                dependentObjects.Add(typeof(ProjectFundingSourceExpenditureUpdate).Name);
            }
            return(dependentObjects.Distinct().ToList());
        }
 public EditProjectFundingSourceExpendituresByCostTypeViewModel(ProjectFirmaModels.Models.Project project, List <int> calendarYearsToPopulate, List <ProjectRelevantCostTypeSimple> projectRelevantCostTypes)
 {
     ProjectRelevantCostTypes = projectRelevantCostTypes;
     Explanation = project.ExpendituresNote;
     ProjectFundingSourceExpenditures = ProjectFundingSourceExpenditureBulk.MakeFromListByCostType(project, calendarYearsToPopulate);
     HasExpenditures = ProjectFundingSourceExpenditures.Any();
 }
Example #3
0
        /// <summary>
        /// Dependent type names of this entity
        /// </summary>
        public void DeleteChildren(DatabaseEntities dbContext)
        {
            foreach (var x in FundingSourceCustomAttributes.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectFundingSourceBudgets.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectFundingSourceBudgetUpdates.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectFundingSourceExpenditures.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectFundingSourceExpenditureUpdates.ToList())
            {
                x.DeleteFull(dbContext);
            }
        }
 public ExpendituresByCostTypeViewModel(ProjectUpdateBatch projectUpdateBatch, List <int> calendarYearsToPopulate, List <ProjectRelevantCostTypeSimple> projectRelevantCostTypeSimples)
 {
     ProjectRelevantCostTypes = projectRelevantCostTypeSimples;
     Explanation = projectUpdateBatch.ExpendituresNote;
     ProjectFundingSourceExpenditures = ProjectFundingSourceExpenditureBulk.MakeFromListByCostType(projectUpdateBatch, calendarYearsToPopulate);
     HasExpenditures        = ProjectFundingSourceExpenditures.Any();
     ShowValidationWarnings = true;
     Comments = projectUpdateBatch.ExpendituresComment;
 }
Example #5
0
        /// <summary>
        /// Active Dependent type names of this object
        /// </summary>
        public List <string> DependentObjectNames()
        {
            var dependentObjects = new List <string>();

            if (ProjectFundingSourceExpenditures.Any())
            {
                dependentObjects.Add(typeof(ProjectFundingSourceExpenditure).Name);
            }

            if (ProjectFundingSourceExpenditureUpdates.Any())
            {
                dependentObjects.Add(typeof(ProjectFundingSourceExpenditureUpdate).Name);
            }

            if (ProjectNoFundingSourceIdentifieds.Any())
            {
                dependentObjects.Add(typeof(ProjectNoFundingSourceIdentified).Name);
            }

            if (ProjectNoFundingSourceIdentifiedUpdates.Any())
            {
                dependentObjects.Add(typeof(ProjectNoFundingSourceIdentifiedUpdate).Name);
            }

            if (ProjectRelevantCostTypes.Any())
            {
                dependentObjects.Add(typeof(ProjectRelevantCostType).Name);
            }

            if (ProjectRelevantCostTypeUpdates.Any())
            {
                dependentObjects.Add(typeof(ProjectRelevantCostTypeUpdate).Name);
            }

            if (BudgetObjectCodesWhereYouAreTheOverrideCostType.Any())
            {
                dependentObjects.Add(typeof(BudgetObjectCode).Name);
            }

            if (BudgetObjectCodeGroups.Any())
            {
                dependentObjects.Add(typeof(BudgetObjectCodeGroup).Name);
            }

            if (ProjectFundingSourceBudgets.Any())
            {
                dependentObjects.Add(typeof(ProjectFundingSourceBudget).Name);
            }

            if (ProjectFundingSourceBudgetUpdates.Any())
            {
                dependentObjects.Add(typeof(ProjectFundingSourceBudgetUpdate).Name);
            }
            return(dependentObjects.Distinct().ToList());
        }
Example #6
0
        /// <summary>
        /// Dependent type names of this entity
        /// </summary>
        public void DeleteChildren(DatabaseEntities dbContext)
        {
            foreach (var x in ProjectFundingSourceExpenditures.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectFundingSourceExpenditureUpdates.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectNoFundingSourceIdentifieds.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectNoFundingSourceIdentifiedUpdates.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectRelevantCostTypes.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectRelevantCostTypeUpdates.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in BudgetObjectCodesWhereYouAreTheOverrideCostType.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in BudgetObjectCodeGroups.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectFundingSourceBudgets.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectFundingSourceBudgetUpdates.ToList())
            {
                x.DeleteFull(dbContext);
            }
        }
        public IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            var errors    = new List <ValidationResult>();
            var emptyRows = ProjectFundingSourceExpenditures?.Where(x =>
                                                                    x.CalendarYearExpenditures.All(y => !y.MonetaryAmount.HasValue));

            if (emptyRows?.Any() ?? false)
            {
                errors.Add(new ValidationResult($"The {FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabel()} Update could not be saved because there are blank rows. Enter a value in all fields or delete funding sources for which there is no expenditure data to report."));
            }
            // Expenditures note is required if no expenditures to enter is selected
            if (!HasExpenditures && string.IsNullOrWhiteSpace(ExpendituresNote))
            {
                errors.Add(new ValidationResult($"The {FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabel()} could not be saved, Expenditures Notes are required if no expenditures are entered."));
            }

            return(errors);
        }
Example #8
0
        public void UpdateModel(List <ProjectFirmaModels.Models.ProjectFundingSourceExpenditure> currentProjectFundingSourceExpenditures,
                                IList <ProjectFirmaModels.Models.ProjectFundingSourceExpenditure> allProjectFundingSourceExpenditures, ProjectFirmaModels.Models.Project project)
        {
            var projectFundingSourceExpendituresUpdated = new List <ProjectFirmaModels.Models.ProjectFundingSourceExpenditure>();

            if (ProjectFundingSourceExpenditures != null)
            {
                // Completely rebuild the list
                projectFundingSourceExpendituresUpdated = ProjectFundingSourceExpenditures.Where(x => x.IsRelevant).SelectMany(x => x.ToProjectFundingSourceExpenditures()).ToList();
            }

            var databaseEntities = HttpRequestStorage.DatabaseEntities;

            project.ExpendituresNote = ExpendituresNote;

            currentProjectFundingSourceExpenditures.Merge(projectFundingSourceExpendituresUpdated,
                                                          allProjectFundingSourceExpenditures,
                                                          (x, y) => x.ProjectID == y.ProjectID && x.FundingSourceID == y.FundingSourceID && x.CalendarYear == y.CalendarYear,
                                                          (x, y) => x.ExpenditureAmount = y.ExpenditureAmount, databaseEntities);
        }
        public IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            var errors = new List <ValidationResult>();

            if (ProjectFundingSourceExpenditures == null)
            {
                ProjectFundingSourceExpenditures = new List <ProjectFundingSourceExpenditureBulk>();
            }
            var projectFundingSourceExpenditureBulks = ProjectFundingSourceExpenditures.Where(x => x.IsRelevant).ToList();

            if (HasExpenditures && !projectFundingSourceExpenditureBulks.Any())
            {
                errors.Add(new ValidationResult("Please enter your expenditures"));
            }

            if (!HasExpenditures && string.IsNullOrWhiteSpace(Explanation))
            {
                errors.Add(new ValidationResult("Please enter an explanation why you do not have any expenditures"));
            }
            return(errors);
        }
Example #10
0
        public void UpdateModel(ProjectFirmaModels.Models.Project project,
                                List <ProjectFirmaModels.Models.ProjectFundingSourceExpenditure> currentProjectFundingSourceExpenditures,
                                IList <ProjectFirmaModels.Models.ProjectFundingSourceExpenditure> allProjectFundingSourceExpenditures)
        {
            var databaseEntities = HttpRequestStorage.DatabaseEntities;

            databaseEntities.ProjectExemptReportingYearUpdates.Load();
            databaseEntities.ProjectRelevantCostTypes.Load();

            var projectFundingSourceExpendituresUpdated = new List <ProjectFirmaModels.Models.ProjectFundingSourceExpenditure>();

            if (ProjectFundingSourceExpenditures != null)
            {
                // Completely rebuild the list
                projectFundingSourceExpendituresUpdated = ProjectFundingSourceExpenditures.Where(x => x.IsRelevant).SelectMany(x => x.ToProjectFundingSourceExpendituresSetNullToZero()).ToList();
            }

            currentProjectFundingSourceExpenditures.Merge(projectFundingSourceExpendituresUpdated,
                                                          allProjectFundingSourceExpenditures,
                                                          (x, y) => x.ProjectID == y.ProjectID && x.FundingSourceID == y.FundingSourceID && x.CostTypeID == y.CostTypeID && x.CalendarYear == y.CalendarYear,
                                                          (x, y) => x.ExpenditureAmount = y.ExpenditureAmount, databaseEntities);

            var currentProjectRelevantCostTypes = project.GetExpendituresRelevantCostTypes();
            var allProjectRelevantCostTypes     = databaseEntities.AllProjectRelevantCostTypes.Local;
            var projectRelevantCostTypes        = new List <ProjectRelevantCostType>();

            if (ProjectRelevantCostTypes != null)
            {
                // Completely rebuild the list
                projectRelevantCostTypes =
                    ProjectRelevantCostTypes.Where(x => x.IsRelevant)
                    .Select(x => new ProjectRelevantCostType(x.ProjectRelevantCostTypeID, x.ProjectID, x.CostTypeID, ProjectRelevantCostTypeGroup.Expenditures.ProjectRelevantCostTypeGroupID))
                    .ToList();
            }
            currentProjectRelevantCostTypes.Merge(projectRelevantCostTypes,
                                                  allProjectRelevantCostTypes,
                                                  (x, y) => x.ProjectID == y.ProjectID && x.CostTypeID == y.CostTypeID && x.ProjectRelevantCostTypeGroupID == y.ProjectRelevantCostTypeGroupID, databaseEntities);

            project.ExpendituresNote = ProjectFundingSourceExpenditures != null && ProjectFundingSourceExpenditures.Any() ? null : Explanation;
        }
Example #11
0
        public void UpdateModel(ProjectFirmaModels.Models.Project project,
                                List <ProjectFirmaModels.Models.ProjectFundingSourceExpenditure> currentProjectFundingSourceExpenditures,
                                IList <ProjectFirmaModels.Models.ProjectFundingSourceExpenditure> allProjectFundingSourceExpenditures)
        {
            var projectFundingSourceExpendituresUpdated = new List <ProjectFirmaModels.Models.ProjectFundingSourceExpenditure>();

            if (ProjectFundingSourceExpenditures != null)
            {
                // Completely rebuild the list
                projectFundingSourceExpendituresUpdated = ProjectFundingSourceExpenditures.SelectMany(x => x.ToProjectFundingSourceExpenditures()).ToList();
            }

            project.ExpendituresNote = ExpendituresNote;
            if (project.ProjectApprovalStatus == ProjectApprovalStatus.PendingApproval)
            {
                project.ExpendituresComment = Comments;
            }
            currentProjectFundingSourceExpenditures.Merge(projectFundingSourceExpendituresUpdated,
                                                          allProjectFundingSourceExpenditures,
                                                          (x, y) => x.ProjectID == y.ProjectID && x.FundingSourceID == y.FundingSourceID && x.CalendarYear == y.CalendarYear,
                                                          (x, y) => x.ExpenditureAmount = y.ExpenditureAmount, HttpRequestStorage.DatabaseEntities);
        }
Example #12
0
 /// <summary>
 /// Does this object have any dependent objects? (If it does have dependent objects, these would need to be deleted before this object could be deleted.)
 /// </summary>
 /// <returns></returns>
 public bool HasDependentObjects()
 {
     return(NotificationProjects.Any() || PerformanceMeasureActuals.Any() || PerformanceMeasureExpecteds.Any() || ProjectAssessmentQuestions.Any() || ProjectAttachments.Any() || ProjectClassifications.Any() || ProjectContacts.Any() || ProjectCustomAttributes.Any() || ProjectEvaluations.Any() || ProjectExemptReportingYears.Any() || ProjectExternalLinks.Any() || ProjectFundingSourceBudgets.Any() || ProjectFundingSourceExpenditures.Any() || ProjectGeospatialAreas.Any() || ProjectGeospatialAreaTypeNotes.Any() || ProjectImages.Any() || ProjectInternalNotes.Any() || ProjectLocations.Any() || ProjectLocationStagings.Any() || ProjectNoFundingSourceIdentifieds.Any() || ProjectNotes.Any() || ProjectOrganizations.Any() || ProjectProjectStatuses.Any() || ProjectRelevantCostTypes.Any() || ProjectTags.Any() || ProjectUpdateBatches.Any() || SecondaryProjectTaxonomyLeafs.Any() || TechnicalAssistanceRequests.Any());
 }
Example #13
0
 /// <summary>
 /// Does this object have any dependent objects? (If it does have dependent objects, these would need to be deleted before this object could be deleted.)
 /// </summary>
 /// <returns></returns>
 public bool HasDependentObjects()
 {
     return(FundingSourceCustomAttributes.Any() || ProjectFundingSourceExpenditures.Any() || ProjectFundingSourceExpenditureUpdates.Any() || WbsElementObligationItemBudgets.Any() || WbsElementPnBudgets.Any() || ProjectFundingSourceBudgets.Any() || ProjectFundingSourceBudgetUpdates.Any());
 }
Example #14
0
 /// <summary>
 /// Does this object have any dependent objects? (If it does have dependent objects, these would need to be deleted before this object could be deleted.)
 /// </summary>
 /// <returns></returns>
 public bool HasDependentObjects()
 {
     return(ProjectFundingSourceExpenditures.Any() || ProjectFundingSourceExpenditureUpdates.Any() || ProjectNoFundingSourceIdentifieds.Any() || ProjectNoFundingSourceIdentifiedUpdates.Any() || ProjectRelevantCostTypes.Any() || ProjectRelevantCostTypeUpdates.Any() || BudgetObjectCodesWhereYouAreTheOverrideCostType.Any() || BudgetObjectCodeGroups.Any() || ProjectFundingSourceBudgets.Any() || ProjectFundingSourceBudgetUpdates.Any());
 }
Example #15
0
        /// <summary>
        /// Active Dependent type names of this object
        /// </summary>
        public List <string> DependentObjectNames()
        {
            var dependentObjects = new List <string>();

            if (NotificationProjects.Any())
            {
                dependentObjects.Add(typeof(NotificationProject).Name);
            }

            if (PerformanceMeasureActuals.Any())
            {
                dependentObjects.Add(typeof(PerformanceMeasureActual).Name);
            }

            if (PerformanceMeasureExpecteds.Any())
            {
                dependentObjects.Add(typeof(PerformanceMeasureExpected).Name);
            }

            if (ProjectAssessmentQuestions.Any())
            {
                dependentObjects.Add(typeof(ProjectAssessmentQuestion).Name);
            }

            if (ProjectAttachments.Any())
            {
                dependentObjects.Add(typeof(ProjectAttachment).Name);
            }

            if (ProjectClassifications.Any())
            {
                dependentObjects.Add(typeof(ProjectClassification).Name);
            }

            if (ProjectContacts.Any())
            {
                dependentObjects.Add(typeof(ProjectContact).Name);
            }

            if (ProjectCustomAttributes.Any())
            {
                dependentObjects.Add(typeof(ProjectCustomAttribute).Name);
            }

            if (ProjectEvaluations.Any())
            {
                dependentObjects.Add(typeof(ProjectEvaluation).Name);
            }

            if (ProjectExemptReportingYears.Any())
            {
                dependentObjects.Add(typeof(ProjectExemptReportingYear).Name);
            }

            if (ProjectExternalLinks.Any())
            {
                dependentObjects.Add(typeof(ProjectExternalLink).Name);
            }

            if (ProjectFundingSourceBudgets.Any())
            {
                dependentObjects.Add(typeof(ProjectFundingSourceBudget).Name);
            }

            if (ProjectFundingSourceExpenditures.Any())
            {
                dependentObjects.Add(typeof(ProjectFundingSourceExpenditure).Name);
            }

            if (ProjectGeospatialAreas.Any())
            {
                dependentObjects.Add(typeof(ProjectGeospatialArea).Name);
            }

            if (ProjectGeospatialAreaTypeNotes.Any())
            {
                dependentObjects.Add(typeof(ProjectGeospatialAreaTypeNote).Name);
            }

            if (ProjectImages.Any())
            {
                dependentObjects.Add(typeof(ProjectImage).Name);
            }

            if (ProjectInternalNotes.Any())
            {
                dependentObjects.Add(typeof(ProjectInternalNote).Name);
            }

            if (ProjectLocations.Any())
            {
                dependentObjects.Add(typeof(ProjectLocation).Name);
            }

            if (ProjectLocationStagings.Any())
            {
                dependentObjects.Add(typeof(ProjectLocationStaging).Name);
            }

            if (ProjectNoFundingSourceIdentifieds.Any())
            {
                dependentObjects.Add(typeof(ProjectNoFundingSourceIdentified).Name);
            }

            if (ProjectNotes.Any())
            {
                dependentObjects.Add(typeof(ProjectNote).Name);
            }

            if (ProjectOrganizations.Any())
            {
                dependentObjects.Add(typeof(ProjectOrganization).Name);
            }

            if (ProjectProjectStatuses.Any())
            {
                dependentObjects.Add(typeof(ProjectProjectStatus).Name);
            }

            if (ProjectRelevantCostTypes.Any())
            {
                dependentObjects.Add(typeof(ProjectRelevantCostType).Name);
            }

            if (ProjectTags.Any())
            {
                dependentObjects.Add(typeof(ProjectTag).Name);
            }

            if (ProjectUpdateBatches.Any())
            {
                dependentObjects.Add(typeof(ProjectUpdateBatch).Name);
            }

            if (SecondaryProjectTaxonomyLeafs.Any())
            {
                dependentObjects.Add(typeof(SecondaryProjectTaxonomyLeaf).Name);
            }

            if (TechnicalAssistanceRequests.Any())
            {
                dependentObjects.Add(typeof(TechnicalAssistanceRequest).Name);
            }
            return(dependentObjects.Distinct().ToList());
        }
Example #16
0
        /// <summary>
        /// Dependent type names of this entity
        /// </summary>
        public void DeleteChildren(DatabaseEntities dbContext)
        {
            foreach (var x in NotificationProjects.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in PerformanceMeasureActuals.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in PerformanceMeasureExpecteds.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectAssessmentQuestions.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectAttachments.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectClassifications.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectContacts.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectCustomAttributes.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectEvaluations.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectExemptReportingYears.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectExternalLinks.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectFundingSourceBudgets.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectFundingSourceExpenditures.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectGeospatialAreas.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectGeospatialAreaTypeNotes.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectImages.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectInternalNotes.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectLocations.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectLocationStagings.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectNoFundingSourceIdentifieds.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectNotes.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectOrganizations.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectProjectStatuses.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectRelevantCostTypes.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectTags.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectUpdateBatches.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in SecondaryProjectTaxonomyLeafs.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in TechnicalAssistanceRequests.ToList())
            {
                x.DeleteFull(dbContext);
            }
        }
 /// <summary>
 /// Does this object have any dependent objects? (If it does have dependent objects, these would need to be deleted before this object could be deleted.)
 /// </summary>
 /// <returns></returns>
 public bool HasDependentObjects()
 {
     return(ProjectFundingSourceBudgets.Any() || ProjectFundingSourceBudgetUpdates.Any() || ProjectFundingSourceExpenditures.Any() || ProjectFundingSourceExpenditureUpdates.Any() || ProjectRelevantCostTypes.Any() || ProjectRelevantCostTypeUpdates.Any());
 }