public PageAirlineEditAirliners(List<FleetAirliner> airliners) { Airliners = airliners; Loaded += PageAirlineEditAirliners_Loaded; DataContext = Airliners; Classes = new ObservableCollection<AirlinerClassMVVM>(); Airliner = getMinimumAirliner(); foreach (var aClass in Airliner.Airliner.Classes) { var maxCapacity = Airliner.Airliner.Type.TypeAirliner == AirlinerType.TypeOfAirliner.Passenger ? ((AirlinerPassengerType) Airliner.Airliner.Type).MaxSeatingCapacity : 100; var changeable = Airliner.Airliner.Classes.IndexOf(aClass) > 0; int maxSeats; if (Airliner.Airliner.Classes.Count == 3) { if (Airliner.Airliner.Classes.IndexOf(aClass) == 1) { maxSeats = maxCapacity - 1 - Airliner.Airliner.Classes[2].RegularSeatingCapacity; } else { maxSeats = maxCapacity - 1 - Airliner.Airliner.Classes[1].RegularSeatingCapacity; } } else { maxSeats = maxCapacity - 1; } var amClass = new AirlinerClassMVVM( aClass, aClass.SeatingCapacity, aClass.RegularSeatingCapacity, maxSeats, changeable); Classes.Add(amClass); } InitializeComponent(); }
private void btnLoadConfiguration_Click(object sender, RoutedEventArgs e) { var cbConfigurations = new ComboBox(); cbConfigurations.SetResourceReference(StyleProperty, "ComboBoxTransparentStyle"); cbConfigurations.SelectedValuePath = "Name"; cbConfigurations.DisplayMemberPath = "Name"; cbConfigurations.HorizontalAlignment = HorizontalAlignment.Left; cbConfigurations.Width = 200; foreach ( AirlinerConfiguration confItem in Configurations.GetConfigurations(Configuration.ConfigurationType.Airliner) .Where( a => ((AirlinerConfiguration) a).MinimumSeats <= Airliner.Airliner.GetTotalSeatCapacity() && ((AirlinerConfiguration) a).Classes.Count <= ((AirlinerPassengerType) Airliner.Airliner.Type).MaxAirlinerClasses)) { cbConfigurations.Items.Add(confItem); } cbConfigurations.SelectedIndex = 0; if (PopUpSingleElement.ShowPopUp( Translator.GetInstance().GetString("PageAirlineWages", "1013"), cbConfigurations) == PopUpSingleElement.ButtonSelected.OK && cbConfigurations.SelectedItem != null) { Classes.Clear(); var configuration = (AirlinerConfiguration) cbConfigurations.SelectedItem; foreach (var aClass in configuration.Classes) { var nClass = new AirlinerClass(aClass.Type, aClass.SeatingCapacity); var tClass = new AirlinerClassMVVM( nClass, aClass.SeatingCapacity, aClass.RegularSeatingCapacity, aClass.RegularSeatingCapacity); foreach (var facility in aClass.GetFacilities()) { tClass.Facilities.First(f => f.Type == facility.Type).SelectedFacility = facility; } foreach ( AirlinerFacility.FacilityType fType in Enum.GetValues(typeof (AirlinerFacility.FacilityType))) { if (!aClass.Facilities.Exists(f => f.Type == fType)) { tClass.Facilities.First(f => f.Type == fType).SelectedFacility = AirlinerFacilities.GetBasicFacility(fType); } } Classes.Add(tClass); } var seatingDiff = ((AirlinerPassengerType) Airliner.Airliner.Type).MaxSeatingCapacity - configuration.MinimumSeats; var economyClass = Classes.First( c => c.Type == AirlinerClass.ClassType.EconomyClass); economyClass.RegularSeatingCapacity += seatingDiff; var seatingFacility = economyClass.Facilities.First(f => f.Type == AirlinerFacility.FacilityType.Seat).SelectedFacility; var extraSeats = (int) (seatingDiff/seatingFacility.SeatUses); economyClass.Seating += extraSeats; } }