public bool DoFinalCheckup(FlightRosterData rosterData) { var result = true; var astronauts = GetAstronautsFromService(rosterData); var clearedData = new RosterClearedData { Captain = false, SecondInCommand = false, Engineer = false, Navigator = false }; foreach (var astronaut in astronauts) { var astronautCleared = true; if (astronaut.Clearance == NASAClearance.Pending || astronaut.Clearance == NASAClearance.Limited) { astronautCleared = false; } if (astronaut.LastMedicalCheck < new DateTime(2015, 1, 1)) { astronautCleared = false; } if (astronaut.Birthdate < DateTime.Now.Subtract(TimeSpan.FromDays(DaysPerYear * MaximumAge))) { astronautCleared = false; } if (rosterData.CaptainName == astronaut.Name) { clearedData.Captain = astronautCleared; } else if (rosterData.SecondInCommandName == astronaut.Name) { clearedData.SecondInCommand = astronautCleared; } else if (rosterData.NavigatorName == astronaut.Name) { clearedData.Navigator = astronautCleared; } else if (rosterData.EngineerName == astronaut.Name) { clearedData.Engineer = astronautCleared; } result = result && astronautCleared; var callback = OperationContext.Current.GetCallbackChannel <ICallbackFinalCheck>(); if (callback != null) { callback.SendClearedData(clearedData); } Thread.Sleep(1000); } return(result); }
private List <Astronaut> GetAstronautsFromService(FlightRosterData data) { var db = new AstronautsDB(); //should be done via dependency injection var result = new List <Astronaut> { db.GetAstronaut(data.CaptainName), db.GetAstronaut(data.SecondInCommandName), db.GetAstronaut(data.NavigatorName), db.GetAstronaut(data.EngineerName) }; return(result); }
public bool DoPreliminaryCheckup(FlightRosterData data) { var astronauts = GetAstronautsFromService(data); foreach (var astronaut in astronauts) { if (astronaut.LastMedicalCheck < new DateTime(2010, 1, 1)) { return(false); } if (astronaut.Birthdate < DateTime.Now.Subtract(TimeSpan.FromDays(DaysPerYear * MaximumAge))) { return(false); } } return(true); }
public bool DoFinalCheckup(FlightRosterData data) { return(Channel.DoFinalCheckup(data)); }
public bool DoPreliminaryCheckup(FlightRosterData data) { return(Channel.DoPreliminaryCheckup(data)); }