98 lines
No EOL
2.3 KiB
C#
98 lines
No EOL
2.3 KiB
C#
using Pupils;
|
|
|
|
Console.WriteLine("*** Pupils ***");
|
|
|
|
var baseYear = DateTime.Now.Year;
|
|
|
|
var p1 = new Pupil("Horst", "Fuchs",
|
|
new DateOnly(baseYear - 72, 04, 17));
|
|
var p2 = new Pupil("Susi", "Sorglos",
|
|
new DateOnly(baseYear - 15, 11, 08));
|
|
var p3 = new Pupil("Max", "Muster",
|
|
new DateOnly(baseYear - 16, 08, 30));
|
|
var p4 = new Pupil("Petra", "Programmierer",
|
|
new DateOnly(baseYear - 51, 11, 08));
|
|
|
|
p1.ZipCode = 4060;
|
|
p2.ZipCode = 4020;
|
|
p3.ZipCode = 688;
|
|
p4.ZipCode = 5020;
|
|
|
|
PrintNextSection("Overview");
|
|
foreach (var pupil in new[] { p1, p2, p3, p4 })
|
|
{
|
|
PrintPupilInformation(pupil);
|
|
}
|
|
|
|
PrintNextSection("Age Checks 1");
|
|
AgeCheck(p1, AgeType.RetirementAge);
|
|
AgeCheck(p2, AgeType.VotingAge);
|
|
AgeCheck(p3, AgeType.VotingAge);
|
|
AgeCheck(p3, AgeType.FullAge);
|
|
AgeCheck(p4, AgeType.FullAge);
|
|
AgeCheck(p4, AgeType.RetirementAge);
|
|
|
|
PrintNextSection("Age Checks 2");
|
|
AgeComparison(p1, p2);
|
|
AgeComparison(p2, p3);
|
|
AgeComparison(p3, p4);
|
|
AgeComparison(p4, p1);
|
|
|
|
PrintNextSection("Location Checks");
|
|
LocationComparison(p1, p2);
|
|
LocationComparison(p2, p3);
|
|
LocationComparison(p3, p4);
|
|
LocationComparison(p4, p1);
|
|
|
|
|
|
#region utility methods
|
|
|
|
void PrintNextSection(string section)
|
|
{
|
|
Console.WriteLine($"{Environment.NewLine}{section}");
|
|
}
|
|
|
|
void PrintPupilInformation(Pupil pupil)
|
|
{
|
|
Console.WriteLine($"[#{pupil.Id}] {pupil.FirstName} " +
|
|
$"{pupil.LastName} | Age = {pupil.Age}");
|
|
}
|
|
|
|
void AgeCheck(Pupil pupil, AgeType type)
|
|
{
|
|
var fulfilled = $"{(pupil.IsOfAge(type) ? "has" : "has not")} fulfilled";
|
|
Console.WriteLine($"Pupil {pupil.FirstName} {fulfilled} the requirements for {type}");
|
|
}
|
|
|
|
void AgeComparison(Pupil some, Pupil other)
|
|
{
|
|
// note: we are ignoring pupils of equal age here
|
|
|
|
if (some.IsOlderThan(other))
|
|
{
|
|
PrintOlder(some, other);
|
|
return;
|
|
}
|
|
|
|
PrintOlder(other, some);
|
|
|
|
return;
|
|
|
|
void PrintOlder(Pupil older, Pupil younger)
|
|
{
|
|
Console.WriteLine($"{older.FirstName} is older than {younger.FirstName}");
|
|
}
|
|
}
|
|
|
|
void LocationComparison(Pupil some, Pupil other)
|
|
{
|
|
if (some.LivesNearby(other))
|
|
{
|
|
Console.WriteLine($"{some.FirstName} lives near {other.FirstName}");
|
|
return;
|
|
}
|
|
|
|
Console.WriteLine($"{some.FirstName} and {other.FirstName} live some way apart");
|
|
}
|
|
|
|
#endregion |