Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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));
 }
Beispiel #5
0
 public bool DoPreliminaryCheckup(FlightRosterData data)
 {
     return(Channel.DoPreliminaryCheckup(data));
 }