internal static void ValidateNewRestrictions(this IHasRestrictions entity) { if (entity == null) { return; } if ((entity.MinAge ?? 0) > (entity.MaxAge ?? 100)) { throw new Exception($"The Min. Age [{entity.MinAge}] is greater than the Max. Age [{entity.MaxAge}]."); } if ((entity.MinGrade != GradeLevels.NotSet) && (entity.MaxGrade != GradeLevels.NotSet) && entity.MinGrade > entity.MinGrade) { throw new Exception($"The Min. Grade [{entity.MinGrade}] is greater than the Max. Grade [{entity.MaxGrade}]."); } }
internal static bool CanCheckOut(this IHasRestrictions volume, int?age = null, GradeLevels grade = GradeLevels.NotSet) { if (volume.MinAge.HasValue && (age ?? 100) < volume.MinAge.Value) { return(false); } if (volume.MaxAge.HasValue && (age ?? 0) > volume.MaxAge.Value) { return(false); } if (volume.MinGrade != GradeLevels.NotSet && grade != GradeLevels.NotSet && volume.MinGrade > grade) { return(false); } if (volume.MaxGrade != GradeLevels.NotSet && grade != GradeLevels.NotSet && volume.MaxGrade < grade) { return(false); } return(true); }
internal static bool CanCheckOut(this IHasRestrictions volume, IPatron patron) { if (volume == null || patron == null) { return(false); } if (volume.MinAge.HasValue && patron.MaxAge.HasValue) { if (patron.MaxAge < volume.MinAge) { return(false); } } if (volume.MaxAge.HasValue && patron.MinAge.HasValue) { if (patron.MinAge > volume.MaxAge) { return(false); } } if (volume.MinGrade != GradeLevels.NotSet && patron.MaxGrade != GradeLevels.NotSet) { if (patron.MaxGrade < volume.MinGrade) { return(false); } } if (volume.MaxGrade != GradeLevels.NotSet && patron.MinGrade != GradeLevels.NotSet) { if (patron.MinGrade > volume.MaxGrade) { return(false); } } return(volume.CanCheckOut(patron.Age, patron.Grade)); }