private void CloseTrip_Click(object sender, RoutedEventArgs e) { if (NumberArea.Text != "") { try { int trip_id = Convert.ToInt32(NumberArea.Text); //Получить слоты Trip trip = controller.GetTrips().Where(t => t.Id == trip_id).FirstOrDefault(); if (trip == null) throw new Exception("Не найден объект, с указанным Id. Проверьте правильность введенных данных"); if (trip.Status.Equals("Завершён")) throw new Exception("Нельзя завершить завершённый рейс"); if (trip.Status.Equals("Ожидает отправки")) throw new Exception("Нельзя завершить рейс, ожидающий отправки"); ObservableCollection<TruckSlot> slots = controller.GetSlotsForTrip(trip); //Прибывить к наименованию на складе кол-во со слотов Center centerTo = trip.To; foreach (TruckSlot slot in slots) { ProductPosition position = controller.GetDBCenterProductsPosition(centerTo).Where(p => p.product.Id == slot.product.Id).FirstOrDefault(); position.numberOfProduct += slot.total_umber; } //Отнять с отбывшего склада Center centerFrom = trip.From; foreach (TruckSlot slot in slots) { ProductPosition position = controller.GetDBCenterProductsPosition(centerFrom).Where(p => p.product.Id == slot.product.Id).FirstOrDefault(); position.numberOfProduct -= slot.total_umber; } //Удалить заказы или отнять кол-во foreach (TruckSlot slot in slots) { Require require = controller.GetDBRequiers().Where(r => r.FromCenter.Id == centerFrom.Id && r.ToCenter.Id == centerTo.Id && r.product.Id == slot.product.Id).FirstOrDefault(); if (require != null) { if (require.Number == slot.total_umber) controller.DelateRequier(require.Id); else require.Number -= slot.total_umber; } } //Удалить слоты controller.DelateTripsSlots(trip_id); //Завершить рейс trip.CloseTrip(); trip.truck.closeTrip(centerTo); TripsWorkingArea.Content = AdminTripsTable.GetInstance(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } else MessageBox.Show("Укажите Id рейса, над которым хотите совершить операцию"); }
public ReductProducts(Employee employee) { this.employee = employee; controller = new RepositoryController(); ProductsOnStorage = controller.GetDBCenterProductsPosition(employee.center); InitializeComponent(); ProductsViewerTable.ItemsSource = ProductsOnStorage; }
public CreateARequier(Product prod, Center ToCenter, int number) { try { CenterTo = ToCenter; Matr = new int[Centers.Count][]; Matr[0] = new int[] { 0, 276, 351, 289 }; Matr[1] = new int[] { 276, 0, 235, 565 }; Matr[2] = new int[] { 351, 235, 0, 632 }; Matr[3] = new int[] { 289, 565, 632, 0 }; controller = new RepositoryController(); CentersObjects = controller.GetDBCenters(); CentersObjects.Remove(ToCenter); CentersWithProducts = new ObservableCollection <Center>(); ProductPosition position; foreach (Center center in CentersObjects) { position = controller.GetDBCenterProductsPosition(center).Where(p => p.product.Id == prod.Id).Where(pp => pp.numberOfProduct >= number).FirstOrDefault(); if (position != null && center.CenterName != ToCenter.CenterName) { CentersWithProducts.Add(center); } } if (CentersWithProducts.Count != 0) { CenterFrom = CentersWithProducts[0]; for (int i = 0; i < CentersWithProducts.Count; i++) { if (GetDistance(CentersWithProducts[i]) < GetDistance(CenterFrom)) { CenterFrom = CentersWithProducts[i]; } } } else { throw new Exception("Ни в одном центре нет такого количества товаров"); } //Создать заказ и отправить в БД requier = new Require(number, prod, CenterTo, CenterFrom); OpenCloseOrder.GetInstance(EmployeeWindow.GetInstance().employe).Requiers.Add(requier); } catch (Exception e) { MessageBox.Show(e.Message); } }
private void GenerateRequier_Click(object sender, RoutedEventArgs e) { try { if ((Center)ToCenter.SelectedItem == null) { throw new Exception("Укажите пункт назначения"); } if ((Center)FromCenter.SelectedItem == null) { throw new Exception("Укажите пункт отправления"); } if ((Product)Products.SelectedItem == null) { throw new Exception("Укажите продукт для заказа"); } if (ReqProductNumber.Text == "") { throw new Exception("Укажите количество"); } Center centerTo = (Center)ToCenter.SelectedItem; Center centerFrom = (Center)FromCenter.SelectedItem; if (centerTo.Id == centerFrom.Id) { throw new Exception("Один и тот же склад не может быть пунктом отправки и назначения в рамках одного заказа"); } Product prod = (Product)Products.SelectedItem; int number = Convert.ToInt32(ReqProductNumber.Text); if (controller.GetDBCenterProductsPosition(centerFrom).Where(p => p.product.Id == prod.Id && p.NumberOfProduct > number).FirstOrDefault() != null) { Require requier = new Require(number, prod, centerTo, centerFrom); controller.AddRequierInDB(requier); MessageBox.Show("Добавлен новый заказ"); } else { MessageBox.Show("В на выбранном вами складе нет столько продуктов данного наименования"); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void DoAction_Click(object sender, RoutedEventArgs e) { try { if (Convert.ToString(TripActions.SelectedItem).Equals("ApproveArrival")) { ObservableCollection <ProductPosition> productPositionsTo = controller.GetDBCenterProductsPosition(employee.center); ObservableCollection <ProductPosition> productPositionsFrom = controller.GetDBCenterProductsPosition(trip.trip.From); ProductPosition position, position2; if (trip.trip.To.CenterName.Equals(employee.center.CenterName)) { foreach (TruckSlot slot in trip.trip.Slots) { position = productPositionsTo.Where(pp => pp.product.Id == slot.product.Id).FirstOrDefault(); position2 = productPositionsFrom.Where(pp => pp.product.Id == slot.product.Id).FirstOrDefault(); if (position != null) { //Если найдена позиция товара на складе, соот. товару в слоте, просто добавляется кол-во товара position.NumberOfProduct += slot.total_umber; position2.NumberOfProduct -= slot.total_umber; //Закрыть заказ или отнять требуемое количество Require req = controller.GetDBRequiersTo(employee.center).Where(r => r.product.Id == slot.product.Id).FirstOrDefault(); if (req != null) { if (req.Number == slot.total_umber && req.product.Id == slot.product.Id) { controller.DelateRequier(req.Id); } else if (req.Number > slot.total_umber && req.product.Id == slot.product.Id) { req.Number -= slot.total_umber; } } } else { //Если позиция не найдена, в базу данных добавляется новая, при просмотре товар буде скачан controller.AddProductPositionInDB(new ProductPosition(slot.product, employee.center, slot.total_umber)); } } //Меняем ставим фуру на парковку, меняем статус trip.trip.truck.CurrentCenter = employee.center; trip.trip.truck.if_busy = false; employee.center.trucks_on_parking.Add(trip.trip.truck); trip.trip.Status = "Завершён"; MessageBox.Show("Рейс завершён"); } else { throw new Exception("Вы не можете принять рейс, который отправляете"); } } if (Convert.ToString(TripActions.SelectedItem).Equals("SendTrips")) { try { int trip_id = this.trip.trip.Id; Trip trip = controller.GetTrips().Where(t => t.Id == trip_id).FirstOrDefault(); if (trip != null) { //Сменить статус рейса trip.SendTrip(); //Сменить статус фуры //controller.UpdateTrip(trip); trip.truck.SendInTrip(); //TripsWorkingArea.Content = AdminTripsTable.GetInstance(); } else { throw new Exception("Что-то пошло не так"); } } catch (Exception ex) { MessageBox.Show(ex.Message); } //ObservableCollection<ProductPosition> productPositions = controller.GetDBCenterProductsPosition(employee.center); //ProductPosition position; //if (trip.trip.From.CenterName.Equals(employee.center.CenterName)) //{ // foreach (TruckSlot slot in trip.trip.Slots) // { // position = productPositions.Where(pp => pp.product.Id == slot.product.Id).FirstOrDefault(); // if (position != null) // { // //Если найдена позиция товара на складе, соот. товару в слоте, просто добавляется кол-во товара // // position.NumberOfProduct -= slot.total_umber; // } // else // { // //Если позиция не найдена, в базу данных добавляется новая, при просмотре товар буде скачан // controller.AddProductPositionInDB(new ProductPosition(slot.product, employee.center, slot.total_umber)); // } // } // //Меняем ставим фуру на парковку, меняем статус // trip.trip.truck.CurrentCenter = null; // trip.trip.truck.if_busy = true; // employee.center.trucks_on_parking.Remove(trip.trip.truck); // trip.trip.Status = "В пути"; // MessageBox.Show("Рейс успешно отправлен"); //} //else throw new Exception("Вы не можете отправить рейс, который напрявляется к вам"); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void CloseTrip_Click(object sender, RoutedEventArgs e) { if (NumberArea.Text != "") { try { int trip_id = Convert.ToInt32(NumberArea.Text); //Получить слоты Trip trip = controller.GetTrips().Where(t => t.Id == trip_id).FirstOrDefault(); if (trip == null) { throw new Exception("Не найден объект, с указанным Id. Проверьте правильность введенных данных"); } if (trip.Status.Equals("Завершён")) { throw new Exception("Нельзя завершить завершённый рейс"); } if (trip.Status.Equals("Ожидает отправки")) { throw new Exception("Нельзя завершить рейс, ожидающий отправки"); } if (trip.To.Id != employee.center.Id) { throw new Exception("Завершить рейс может только сотрудник центра назначения или администратор"); } ObservableCollection <TruckSlot> slots = controller.GetSlotsForTrip(trip); //Прибывить к наименованию на складе кол-во со слотов Center centerTo = trip.To; foreach (TruckSlot slot in slots) { ProductPosition position = controller.GetDBCenterProductsPosition(centerTo).Where(p => p.product.Id == slot.product.Id).FirstOrDefault(); if (position != null) { position.numberOfProduct += slot.total_umber; } else { ICommand command = new AddProductCommand( employee, Convert.ToString(slot.product.Name), Convert.ToString(slot.product.Length), Convert.ToString(slot.product.Height), Convert.ToString(slot.product.Height), Convert.ToString(slot.product.Weight), Convert.ToString(slot.product.Cost), slot.product.Unit_of_measurment, Convert.ToString(slot.product.Mominal_number), Convert.ToString(slot.total_umber) ); if (command.ifExecute()) { command.Execute(); } } } //Отнять с отбывшего склада Center centerFrom = trip.From; foreach (TruckSlot slot in slots) { ProductPosition position = controller.GetDBCenterProductsPosition(centerFrom).Where(p => p.product.Id == slot.product.Id).FirstOrDefault(); position.numberOfProduct -= slot.total_umber; } //Удалить заказы или отнять кол-во foreach (TruckSlot slot in slots) { Require require = controller.GetDBRequiers().Where(r => r.FromCenter.Id == centerFrom.Id && r.ToCenter.Id == centerTo.Id && r.product.Id == slot.product.Id).FirstOrDefault(); if (require != null) { if (require.Number == slot.total_umber) { controller.DelateRequier(require.Id); } else { require.Number -= slot.total_umber; } } } //Удалить слоты controller.DelateTripsSlots(trip_id); //Завершить рейс trip.CloseTrip(); trip.truck.closeTrip(centerTo); TripsWorkingArea.Content = EmployeeTripsTable.GetInstance(employee); } catch (Exception ex) { MessageBox.Show(ex.Message); } } else { MessageBox.Show("Укажите Id рейса, над которым хотите совершить операцию"); } }