public PerformanceMeasureReportingPeriodSimple(ProjectFirmaModels.Models.PerformanceMeasureActual performanceMeasureActual) { PerformanceMeasureReportingPeriodID = performanceMeasureActual.PerformanceMeasureReportingPeriodID; PerformanceMeasureReportingPeriodLabel = performanceMeasureActual.PerformanceMeasureReportingPeriod.PerformanceMeasureReportingPeriodLabel; PerformanceMeasureReportingPeriodCalendarYear = performanceMeasureActual.PerformanceMeasureReportingPeriod.PerformanceMeasureReportingPeriodCalendarYear; TargetValueLabel = string.Empty; PerformanceMeasureID = performanceMeasureActual.PerformanceMeasureID; }
private PerformanceMeasureReportedValue(PerformanceMeasureActual performanceMeasureActual) { PerformanceMeasure = performanceMeasureActual.PerformanceMeasure; CalendarYear = performanceMeasureActual.PerformanceMeasureReportingPeriod.PerformanceMeasureReportingPeriodCalendarYear; _reportedValue = performanceMeasureActual.ActualValue; Project = performanceMeasureActual.Project; PerformanceMeasureActualSubcategoryOptions = new List <IPerformanceMeasureValueSubcategoryOption>(performanceMeasureActual.PerformanceMeasureActualSubcategoryOptions); PerformanceMeasureReportingPeriod = performanceMeasureActual.PerformanceMeasureReportingPeriod; }
/// <summary> /// Constructor for building a new object with MinimalConstructor required fields, using objects whenever possible /// </summary> public PerformanceMeasureActualSubcategoryOption(PerformanceMeasureActual performanceMeasureActual, PerformanceMeasureSubcategoryOption performanceMeasureSubcategoryOption, PerformanceMeasure performanceMeasure, PerformanceMeasureSubcategory performanceMeasureSubcategory) : this() { // Mark this as a new object by setting primary key with special value this.PerformanceMeasureActualSubcategoryOptionID = ModelObjectHelpers.MakeNextUnsavedPrimaryKeyValue(); this.PerformanceMeasureActualID = performanceMeasureActual.PerformanceMeasureActualID; this.PerformanceMeasureActual = performanceMeasureActual; performanceMeasureActual.PerformanceMeasureActualSubcategoryOptions.Add(this); this.PerformanceMeasureSubcategoryOptionID = performanceMeasureSubcategoryOption.PerformanceMeasureSubcategoryOptionID; this.PerformanceMeasureSubcategoryOption = performanceMeasureSubcategoryOption; performanceMeasureSubcategoryOption.PerformanceMeasureActualSubcategoryOptions.Add(this); this.PerformanceMeasureID = performanceMeasure.PerformanceMeasureID; this.PerformanceMeasure = performanceMeasure; performanceMeasure.PerformanceMeasureActualSubcategoryOptions.Add(this); this.PerformanceMeasureSubcategoryID = performanceMeasureSubcategory.PerformanceMeasureSubcategoryID; this.PerformanceMeasureSubcategory = performanceMeasureSubcategory; performanceMeasureSubcategory.PerformanceMeasureActualSubcategoryOptions.Add(this); }
private void UpdateModelImpl(List <ProjectFirmaModels.Models.PerformanceMeasureActual> currentPerformanceMeasureActuals, IList <ProjectFirmaModels.Models.PerformanceMeasureActual> allPerformanceMeasureActuals, IList <PerformanceMeasureActualSubcategoryOption> allPerformanceMeasureActualSubcategoryOptions, IList <PerformanceMeasureReportingPeriod> allPerformanceMeasureReportingPeriods) { // Remove all existing associations currentPerformanceMeasureActuals.ForEach(pmav => { pmav.PerformanceMeasureActualSubcategoryOptions.ToList().ForEach(pmavso => allPerformanceMeasureActualSubcategoryOptions.Remove(pmavso)); allPerformanceMeasureActuals.Remove(pmav); }); currentPerformanceMeasureActuals.Clear(); if (PerformanceMeasureActuals != null) { var performanceMeasureReportingPeriodsFromDatabase = HttpRequestStorage.DatabaseEntities.AllPerformanceMeasureReportingPeriods.Local; // Completely rebuild the list foreach (var performanceMeasureActualSimple in PerformanceMeasureActuals) { var performanceMeasureReportingPeriod = allPerformanceMeasureReportingPeriods.SingleOrDefault(x => x.PerformanceMeasureReportingPeriodCalendarYear == performanceMeasureActualSimple.CalendarYear); if (performanceMeasureReportingPeriod == null) { Check.EnsureNotNull(performanceMeasureActualSimple.PerformanceMeasureID, "We need to have a performance measure."); performanceMeasureReportingPeriod = new PerformanceMeasureReportingPeriod((int)performanceMeasureActualSimple.PerformanceMeasureID, performanceMeasureActualSimple.CalendarYear, performanceMeasureActualSimple.CalendarYear.ToString()); performanceMeasureReportingPeriodsFromDatabase.Add(performanceMeasureReportingPeriod); HttpRequestStorage.DatabaseEntities.SaveChanges(); } var performanceMeasureActual = new ProjectFirmaModels.Models.PerformanceMeasureActual(performanceMeasureActualSimple.ProjectID.Value, performanceMeasureActualSimple.PerformanceMeasureID.Value, performanceMeasureActualSimple.ActualValue.Value, performanceMeasureReportingPeriod.PerformanceMeasureReportingPeriodID); allPerformanceMeasureActuals.Add(performanceMeasureActual); if (performanceMeasureActualSimple.PerformanceMeasureActualSubcategoryOptions != null) { performanceMeasureActualSimple.PerformanceMeasureActualSubcategoryOptions.ForEach( y => allPerformanceMeasureActualSubcategoryOptions.Add(new PerformanceMeasureActualSubcategoryOption( performanceMeasureActual.PerformanceMeasureActualID, y.PerformanceMeasureSubcategoryOptionID.Value, y.PerformanceMeasureID, y.PerformanceMeasureSubcategoryID))); } } } }
public void UpdateModel(List <ProjectFirmaModels.Models.PerformanceMeasureActual> currentPerformanceMeasureActuals, IList <ProjectFirmaModels.Models.PerformanceMeasureActual> allPerformanceMeasureActuals, IList <PerformanceMeasureActualSubcategoryOption> allPerformanceMeasureActualSubcategoryOptions, ProjectFirmaModels.Models.Project project, IList <PerformanceMeasureReportingPeriod> allPerformanceMeasureReportingPeriods) { var currentPerformanceMeasureActualSubcategoryOptions = currentPerformanceMeasureActuals.SelectMany(x => x.PerformanceMeasureActualSubcategoryOptions).ToList(); var performanceMeasureActualsUpdated = new List <ProjectFirmaModels.Models.PerformanceMeasureActual>(); if (PerformanceMeasureActualSimples != null) { // Renumber negative indexes for PerformanceMeasureActuals RenumberPerformanceMeasureActuals(PerformanceMeasureActualSimples); var performanceMeasureReportingPeriodsFromDatabase = HttpRequestStorage.DatabaseEntities.AllPerformanceMeasureReportingPeriods.Local; // Completely rebuild the list performanceMeasureActualsUpdated = PerformanceMeasureActualSimples.Select(x => { var performanceMeasureReportingPeriod = allPerformanceMeasureReportingPeriods.SingleOrDefault(y => y.PerformanceMeasureReportingPeriodCalendarYear == x.CalendarYear); if (performanceMeasureReportingPeriod == null) { Check.EnsureNotNull(x.PerformanceMeasureID, "We need to have a performance measure."); performanceMeasureReportingPeriod = new PerformanceMeasureReportingPeriod((int)x.PerformanceMeasureID, x.CalendarYear, x.CalendarYear.ToString()); performanceMeasureReportingPeriodsFromDatabase.Add(performanceMeasureReportingPeriod); HttpRequestStorage.DatabaseEntities.SaveChanges(); } var performanceMeasureActual = new ProjectFirmaModels.Models.PerformanceMeasureActual(x.PerformanceMeasureActualID.GetValueOrDefault(), x.ProjectID.GetValueOrDefault(), x.PerformanceMeasureID.GetValueOrDefault(), x.ActualValue.GetValueOrDefault(), performanceMeasureReportingPeriod.PerformanceMeasureReportingPeriodID); if (x.PerformanceMeasureActualSubcategoryOptions != null) { performanceMeasureActual.PerformanceMeasureActualSubcategoryOptions = x.PerformanceMeasureActualSubcategoryOptions.Where(pmavsou => ModelObjectHelpers.IsRealPrimaryKeyValue(pmavsou.PerformanceMeasureSubcategoryOptionID)) .Select( y => new PerformanceMeasureActualSubcategoryOption(performanceMeasureActual.PerformanceMeasureActualID, y.PerformanceMeasureSubcategoryOptionID.GetValueOrDefault(), y.PerformanceMeasureID, y.PerformanceMeasureSubcategoryID)) .ToList(); } return(performanceMeasureActual); }).ToList(); } var databaseEntities = HttpRequestStorage.DatabaseEntities; currentPerformanceMeasureActuals.Merge(performanceMeasureActualsUpdated, allPerformanceMeasureActuals, (x, y) => x.PerformanceMeasureActualID == y.PerformanceMeasureActualID, (x, y) => { x.PerformanceMeasureReportingPeriodID = y.PerformanceMeasureReportingPeriodID; x.ActualValue = y.ActualValue; }, databaseEntities); currentPerformanceMeasureActualSubcategoryOptions.Merge( performanceMeasureActualsUpdated.SelectMany(x => x.PerformanceMeasureActualSubcategoryOptions).ToList(), allPerformanceMeasureActualSubcategoryOptions, (x, y) => x.PerformanceMeasureActualID == y.PerformanceMeasureActualID && x.PerformanceMeasureSubcategoryID == y.PerformanceMeasureSubcategoryID && x.PerformanceMeasureID == y.PerformanceMeasureID, (x, y) => x.PerformanceMeasureSubcategoryOptionID = y.PerformanceMeasureSubcategoryOptionID, databaseEntities); var currentProjectExemptYears = project.GetPerformanceMeasuresExemptReportingYears(); databaseEntities.ProjectExemptReportingYears.Load(); var allProjectExemptYears = databaseEntities.AllProjectExemptReportingYears.Local; var projectExemptReportingYears = new List <ProjectExemptReportingYear>(); if (ProjectExemptReportingYearSimples != null) { // Completely rebuild the list projectExemptReportingYears = ProjectExemptReportingYearSimples.Where(x => x.IsExempt) .Select(x => new ProjectExemptReportingYear(x.ProjectExemptReportingYearID, x.ProjectID, x.CalendarYear, ProjectExemptReportingType.PerformanceMeasures.ProjectExemptReportingTypeID)) .ToList(); } currentProjectExemptYears.Merge(projectExemptReportingYears, allProjectExemptYears, (x, y) => x.ProjectID == y.ProjectID && x.CalendarYear == y.CalendarYear && x.ProjectExemptReportingTypeID == y.ProjectExemptReportingTypeID, HttpRequestStorage.DatabaseEntities); project.PerformanceMeasureActualYearsExemptionExplanation = Explanation; if (project.ProjectApprovalStatus == ProjectApprovalStatus.PendingApproval) { project.ReportedAccomplishmentsComment = Comments; } }
/// <summary> /// Creates a "blank" object of this type and populates primitives with defaults /// </summary> public static PerformanceMeasureActualSubcategoryOption CreateNewBlank(PerformanceMeasureActual performanceMeasureActual, PerformanceMeasureSubcategoryOption performanceMeasureSubcategoryOption, PerformanceMeasure performanceMeasure, PerformanceMeasureSubcategory performanceMeasureSubcategory) { return(new PerformanceMeasureActualSubcategoryOption(performanceMeasureActual, performanceMeasureSubcategoryOption, performanceMeasure, performanceMeasureSubcategory)); }