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);
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
		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);
            }
        }
Beispiel #6
0
        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));
        }
Beispiel #7
0
        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);
        }
Beispiel #9
0
        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);
        }
Beispiel #11
0
 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())));
 }