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); }
public void SendClearedData(RosterClearedData data) { SendOrPostCallback updateUI = new SendOrPostCallback(arg => { CaptainCleared.IsChecked = data.Captain; SecondCleared.IsChecked = data.SecondInCommand; NavigatorCleared.IsChecked = data.Navigator; EngineerCleared.IsChecked = data.Engineer; }); context.Send(updateUI, null); }