예제 #1
0
        private void GenerateTrip_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            try
            {
                if ((Center)FromCenter.SelectedItem == null)
                {
                    throw new Exception("Выберите пункт отправки");
                }
                if ((Center)ToCenter.SelectedItem == null)
                {
                    throw new Exception("Выберите пункт назначения");
                }
                if ((Truck)Transport.SelectedItem == null)
                {
                    throw new Exception("Выберите транспорт");
                }

                Truck  truck       = (Truck)Transport.SelectedItem;
                Center center_from = (Center)FromCenter.SelectedItem;
                Center center_to   = (Center)ToCenter.SelectedItem;

                if (center_from.Id == center_to.Id)
                {
                    throw new Exception("Центры не должны совпадать");
                }

                //Получить все заказы с выбранного центра
                ObservableCollection <Require> requires = controller.GetDBRequiersFrom(center_from);
                //Получить слоты с каждого заказа
                ObservableCollection <TruckSlot> slots = new ObservableCollection <TruckSlot>();
                foreach (Require requier in requires)
                {
                    foreach (TruckSlot slot in TruckSlot.GetSlotsFromRequier(requier))
                    {
                        slots.Add(slot);
                    }
                }
                //Зарегистрировать рейс
                Trip trip = new Trip(slots, center_to, center_from, truck, "Ожидает отправки");
                controller.AddTripInDB(trip);
                //Занести слоты в БД
                ObservableCollection <Trip> trips = controller.GetTrips();
                trip = trips[trips.Count - 1];
                foreach (TruckSlot slot in slots)
                {
                    slot.SetTrip(trip);
                    controller.AddTruckSlotInDB(slot);
                }
                truck.SetBusy();
                MessageBox.Show("Сформирован новый рейс");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }