public static Funding CreateFunding( HedwigContext context, FundingSource source = FundingSource.CDC, Enrollment enrollment = null, ReportingPeriod firstReportingPeriod = null, ReportingPeriod lastReportingPeriod = null, FundingSpace fundingSpace = null ) { enrollment = enrollment ?? EnrollmentHelper.CreateEnrollment(context); fundingSpace = fundingSpace ?? FundingSpaceHelper.CreateFundingSpace(context, enrollment.Site.OrganizationId); var funding = new Funding { EnrollmentId = enrollment.Id, Source = source, FirstReportingPeriodId = firstReportingPeriod != null ? firstReportingPeriod.Id : null as int?, LastReportingPeriodId = lastReportingPeriod != null ? lastReportingPeriod.Id : null as int?, FundingSpaceId = fundingSpace != null ? fundingSpace.Id : null as int? }; context.Fundings.Add(funding); context.SaveChanges(); return(funding); }
private FundingSpace CreateFundingSpace( int organizationId, FundingSource source = FundingSource.CDC, Age ageGroup = Age.Preschool, FundingTime time = FundingTime.Full, int capacity = 10 ) { var space = new FundingSpace { OrganizationId = organizationId, Source = source, AgeGroup = ageGroup, Capacity = capacity, Time = time, TimeSplit = time != FundingTime.Split ? null : new FundingTimeSplit { FullTimeWeeks = 48, PartTimeWeeks = 4 } }; _context.FundingSpaces.Add(space); _context.SaveChanges(); return(space); }
public void GetWeeksUsedForFundingSpace_ReturnsZero_WhenReportsAreNotYetSubmitted() { var fundingSpace = new FundingSpace { Id = 1, TimeSplit = new FundingTimeSplit { FundingSpaceId = 1, PartTimeWeeks = 50, FullTimeWeeks = 2, } }; var reports = new List <CdcReport>(); foreach (var usage in new int[] { 3, 4, 5 }) { reports.Add( new CdcReport { SubmittedAt = null, TimeSplitUtilizations = new List <FundingTimeSplitUtilization> { new FundingTimeSplitUtilization { FundingSpaceId = fundingSpace.Id, FundingSpace = fundingSpace, FullTimeWeeksUsed = usage, PartTimeWeeksUsed = 0 } } } ); } Assert.Equal(0, reports.GetWeeksUsedForFundingSpace(fundingSpace)); }
public static FundingSpace CreateFundingSpace( HedwigContext context, int organizationId, FundingSource source = FundingSource.CDC, Age ageGroup = Age.Preschool, FundingTime time = FundingTime.Full, int capacity = 10 ) { var timeSplit = time != FundingTime.Split ? null : new FundingTimeSplit { FullTimeWeeks = 42, PartTimeWeeks = 10 }; var space = new FundingSpace { OrganizationId = organizationId, Source = source, AgeGroup = ageGroup, Capacity = capacity, Time = time, TimeSplit = timeSplit }; context.Add(space); context.SaveChanges(); return space; }
private object CreateFunding( int enrollmentId, bool isC4K, Guid?childId = null, Child child = null, int?caseNumber = null, string certificateStartDate = null, string certificateEndDate = null, FundingSource?source = FundingSource.CDC, ReportingPeriod firstReportingPeriod = null, ReportingPeriod lastReportingPeriod = null, FundingSpace fundingSpace = null ) { if (isC4K) { var funding = new C4KCertificate { ChildId = (Guid)childId, StartDate = DateTime.Parse(certificateStartDate), EndDate = certificateEndDate == null ? null as DateTime? : DateTime.Parse(certificateEndDate), }; _context.C4KCertificates.Add(funding); child.C4KFamilyCaseNumber = caseNumber ?? (new Random()).Next(1, 9999); _context.SaveChanges(); return(funding); } else { var funding = new Funding { EnrollmentId = enrollmentId, Source = source, FirstReportingPeriodId = firstReportingPeriod != null ? firstReportingPeriod.Id : null as int?, LastReportingPeriodId = lastReportingPeriod != null ? lastReportingPeriod.Id : null as int?, FundingSpaceId = fundingSpace != null ? fundingSpace.Id : null as int? }; _context.Fundings.Add(funding); _context.SaveChanges(); return(funding); } }
public void GetWeeksUsedForFundingSpace_ReturnsZero_WhenNoPreviousUtilizations() { var fundingSpace = new FundingSpace { Id = 1, TimeSplit = new FundingTimeSplit { FundingSpaceId = 1, PartTimeWeeks = 10, FullTimeWeeks = 42, } }; var reports = new List <CdcReport> { new CdcReport { SubmittedAt = new DateTime(), TimeSplitUtilizations = new List <FundingTimeSplitUtilization>() } }; Assert.Equal(0, reports.GetWeeksUsedForFundingSpace(fundingSpace)); }
public void GetWeeksUsedForFundingSpace_ReturnsSumOfLesserWeeksUsed( int partTimeWeeks, int fullTimeWeeks, int largerTimeUsage, int[] weeksUsed, int sum ) { var fundingSpace = new FundingSpace { Id = 1, TimeSplit = new FundingTimeSplit { FundingSpaceId = 1, PartTimeWeeks = partTimeWeeks, FullTimeWeeks = fullTimeWeeks, } }; var reports = new List <CdcReport>(); foreach (var usage in weeksUsed) { reports.Add( new CdcReport { SubmittedAt = new DateTime(), TimeSplitUtilizations = new List <FundingTimeSplitUtilization> { new FundingTimeSplitUtilization { FundingSpaceId = fundingSpace.Id, FundingSpace = fundingSpace, FullTimeWeeksUsed = usage, PartTimeWeeksUsed = largerTimeUsage } } } ); } Assert.Equal(sum, reports.GetWeeksUsedForFundingSpace(fundingSpace)); }
public void ReturnsValidationResult_IfFundingSpaceAgeGroupDoesNotMatch( Age fundingSpaceAge, Age enrollmentAge, bool returnsResult ) { var organizationId = 1; var fundingSpace = new FundingSpace { AgeGroup = fundingSpaceAge, OrganizationId = organizationId }; var funding = new Funding(); funding.GetType().GetProperty(nameof(funding.FundingSpace)) .SetValue(funding, fundingSpace); var fundings = new List <Funding> { funding }; var site = new Site { OrganizationId = organizationId }; var enrollment = new Enrollment { AgeGroup = enrollmentAge, }; enrollment.GetType().GetProperty(nameof(enrollment.Site)) .SetValue(enrollment, site); var validationContext = new ValidationContext(enrollment); var attribute = new Fundings_FundingSpaceAgeGroupMatches(); var result = attribute.GetValidationResult(fundings, validationContext); Assert.Equal(returnsResult, result != null); }
public void ReturnsValidationResult_IfFundingSpaceOrganizationDoesNotMatch( int fundingSpaceOrgId, int enrollmentSiteOrgId, bool returnsResult ) { var age = Age.InfantToddler; var fundingSpace = new FundingSpace { OrganizationId = fundingSpaceOrgId, AgeGroup = age }; var funding = new Funding(); funding.GetType().GetProperty(nameof(funding.FundingSpace)) .SetValue(funding, fundingSpace); var fundings = new List <Funding> { funding }; var site = new Site { OrganizationId = enrollmentSiteOrgId }; var enrollment = new Enrollment { AgeGroup = age }; enrollment.GetType().GetProperty(nameof(enrollment.Site)) .SetValue(enrollment, site); var validationContext = new ValidationContext(enrollment); var attribute = new Fundings_FundingSpaceOrganizationMatches(); var result = attribute.GetValidationResult(fundings, validationContext); Assert.Equal(returnsResult, result != null); }
private Report CreateCdcReport( int organizationId, int reportingPeriodId, string submittedAt = null, bool accredited = true, bool usedSplitTime = false, FundingSpace splitTimeFundingSpace = null ) { var report = new CdcReport { OrganizationId = organizationId, ReportingPeriodId = reportingPeriodId, Accredited = accredited }; if (usedSplitTime && splitTimeFundingSpace != null) { report.TimeSplitUtilizations = new List <FundingTimeSplitUtilization> { new FundingTimeSplitUtilization { FundingSpaceId = splitTimeFundingSpace.Id, ReportingPeriodId = reportingPeriodId, FullTimeWeeksUsed = 2, PartTimeWeeksUsed = 2, } }; } if (submittedAt != null) { report.SubmittedAt = DateTime.Parse(submittedAt); } _context.Reports.Add(report); _context.SaveChanges(); return(report); }
public static int GetWeeksUsedForFundingSpace(this IEnumerable <CdcReport> reports, FundingSpace fundingSpace) { return(reports .Where(report => report.SubmittedAt.HasValue) .Where(report => report.TimeSplitUtilizations != null) .SelectMany(report => report.TimeSplitUtilizations) .Where(util => util.FundingSpaceId == fundingSpace.Id) .Sum(util => util.WeeksUsedForFundingTime(util.FundingSpace.TimeSplit.LesserTime()))); }