public AddGradeResultDTO AddGrade(int enrollmentId, AddGradeDTO gradeDTO) { var result = new AddGradeResultDTO { Added = false, Grade = null }; var enrollment = _repository.GetEnrollmentById(enrollmentId); var grade = Mapper.Map <Grade>(gradeDTO); grade.Enrollement = enrollment; if (grade.GradeValueId.HasValue) { grade.GradeValue = _repository.GetGradeValueById((int)grade.GradeValueId); } else { grade.GradeValue = null; } var addedGrade = _repository.InsertGrade(grade); if (_repository.Save()) { result.Added = true; result.Grade = Mapper.Map <GetGradeDTO>(addedGrade); } return(result); }
public ValidationError Execute(Funding funding, NonBlockingValidationContext context) { if (!funding.FirstReportingPeriodId.HasValue) { return(null); } var currentEnrollment = funding.Enrollment ?? _enrollments.GetEnrollmentById(funding.EnrollmentId); var childId = currentEnrollment.ChildId; var otherCdcFundings = _fundings.GetFundingsByChildId(childId).Where(f => f.Source == FundingSource.CDC).Where(f => f.Id != funding.Id); var sortedFundings = otherCdcFundings.OrderBy(f => f.FirstReportingPeriod.PeriodStart); if (sortedFundings.Count() == 0) { return(null); } var firstReportingPeriodStart = funding.FirstReportingPeriod != null ? funding.FirstReportingPeriod.PeriodStart : _reportingPeriods.GetById(funding.FirstReportingPeriodId.Value).PeriodStart; DateTime?lastReportingPeriodEnd = null; if (funding.LastReportingPeriodId.HasValue) { lastReportingPeriodEnd = funding.LastReportingPeriod != null ? funding.LastReportingPeriod.PeriodEnd : _reportingPeriods.GetById(funding.LastReportingPeriodId.Value).PeriodEnd; } var doesOverlap = false; foreach (var currentFunding in sortedFundings) { if (doesOverlap) { break; } var currentFirstReportingPeriodStart = currentFunding.FirstReportingPeriod.PeriodStart; if (currentFirstReportingPeriodStart == firstReportingPeriodStart) { doesOverlap = true; } else if (currentFirstReportingPeriodStart < firstReportingPeriodStart) { if (currentFunding.LastReportingPeriod == null) { doesOverlap = true; } else { var currentLastReportingPeriodEnd = currentFunding.LastReportingPeriod.PeriodEnd; if (firstReportingPeriodStart <= currentLastReportingPeriodEnd) { doesOverlap = true; } } } else /* (firstReportingPeriod < currentFirstReportingPeriodStart) */ { if (lastReportingPeriodEnd == null) { doesOverlap = true; } else { if (currentFirstReportingPeriodStart <= lastReportingPeriodEnd) { doesOverlap = true; } } } } if (doesOverlap) { return(new ValidationError( message: "Cannot claim a child twice in a reporting period", isSubObjectValidation: false, field: "FirstReportingPeriod" )); } return(null); }