private async void Add_Click(object sender, RoutedEventArgs e)
        {
            await context1.ЗаказаноТоваров.LoadAsync();

            var r  = context1.СкладТоваров;
            var r2 = context1.ЗаказаноТоваров.ToArray();

            if (tb.Text == "" & gb.SelectedItem == null)
            {
                MessageBox.Show("Ошибка ввода!", "Внимание!", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            else if (tb.Text != "" || gb.SelectedItem != null)
            {
                if (tb.Text == "")
                {
                    MessageBox.Show("Введите число!", "Внимание!", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                else if (gb.SelectedItem == null)
                {
                    MessageBox.Show("Выберите товар!", "Внимание!", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                else
                {
                    foreach (СкладТоваров i3 in r)
                    {
                        if (i3.Наименование == (string)gb.SelectedItem)
                        {
                            if (i3.Остаток - int.Parse(tb.Text) < 0)
                            {
                                MessageBox.Show("Нехватка товара на складе!", "Внимание!", MessageBoxButton.OK, MessageBoxImage.Error);
                                flag = true;
                            }
                            else
                            {
                                flag = false;
                            }
                        }
                    }
                    if (flag == false)
                    {
                        string item = gb.SelectedItem as string;


                        foreach (ЗаказаноТоваров i in lst)
                        {
                            if (i.СкладТоваров.Наименование == item)
                            {
                                i.Количество += int.Parse(tb.Text);
                                //await context1.SaveChangesAsync();
                                alreadyAdded = true;
                                break;
                            }
                            if (alreadyAdded == false)
                            {
                                foreach (ЗаказаноТоваров i2 in r2)
                                {
                                    if (i2.СкладТоваров.Наименование == item)
                                    {
                                        product = new ЗаказаноТоваров
                                        {
                                            ЗаказID         = order1.ЗаказID,
                                            КодТовара       = i2.КодТовара,
                                            Количество      = int.Parse(tb.Text),
                                            Масса           = 2,
                                            асценкаТоннЗаКм = 1
                                        };
                                    }
                                }
                            }
                        }
                        if (product != null & alreadyAdded == false)
                        {
                            context1.ЗаказаноТоваров.Add(product);
                            product = null;
                        }
                        try
                        {
                            await context1.SaveChangesAsync();

                            alreadyAdded = false;
                            MessageBox.Show("Товар добавлен в заказ!", "Готово!", MessageBoxButton.OK, MessageBoxImage.Information);
                        }
                        catch (System.Data.Entity.Infrastructure.DbUpdateException)
                        {
                            MessageBox.Show("Товар добавить не удалось, попробуйте заново войти в меню, чтобы добавить товар!", "Ошибка добавления товара", MessageBoxButton.OK, MessageBoxImage.Error);
                        }
                    }
                }
            }
        }
        private async void Remove_order_Click(object sender, RoutedEventArgs e) //удаление заказа
        {
            int             removeZakazID = 0;
            var             zakaz         = context1.Заказы;
            var             sklad         = context1.СкладТоваров;
            DialRemoveZakaz dialog1       = new DialRemoveZakaz();

            if (dialog1.ShowDialog() == true)
            {
                removeZakazID = dialog1.RemZakazID;
                if (zakaz.Find(removeZakazID).СостояниеID == 1)
                {
                    var zakazanoTovarov = context1.ЗаказаноТоваров;
                    //Возвращаем товары на склад
                    foreach (ЗаказаноТоваров i2 in zakazanoTovarov)
                    {
                        if (i2.ЗаказID == removeZakazID)
                        {
                            int numberOfTovar = i2.Количество;
                            foreach (СкладТоваров i in sklad)
                            {
                                if (i2.КодТовара == i.КодТовара)
                                {
                                    i.Остаток = i.Остаток + numberOfTovar;
                                    MessageBox.Show("Вернули на склад " + i.Наименование + " в количестве " + numberOfTovar + " шт.", "Ура!!!", MessageBoxButton.OK, MessageBoxImage.Information);
                                }
                            }
                        }
                    }
                    //Удаляем товары в заказе
                    foreach (ЗаказаноТоваров i in zakazanoTovarov)
                    {
                        if (i.ЗаказID == removeZakazID)
                        {
                            context1.ЗаказаноТоваров.Remove(i);
                        }
                    }
                    //Удаляем сам заказ

                    foreach (Заказы i1 in zakaz)
                    {
                        if (i1.ЗаказID == removeZakazID)
                        {
                            context1.Заказы.Remove(i1);
                        }
                    }
                    await context1.SaveChangesAsync();

                    List <Заказы> showRez = context1.Заказы.ToList();
                    dg2.ItemsSource = null;
                    dg2.Items.Clear();
                    dg2.ItemsSource = showRez;
                    dg2.Items.Refresh();
                    dg1.ItemsSource = null;
                    dg1.Items.Clear();
                    dg1.Items.Refresh();
                    MessageBox.Show("Заказ удален!", "Успех!!!", MessageBoxButton.OK, MessageBoxImage.Information);
                }
                else
                {
                    MessageBox.Show("Заказ не был удален!Смотрите состояние заказа!", "Ошибка!!!", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
        }
Ejemplo n.º 3
0
        private async void BOk_Click(object sender, RoutedEventArgs e)
        {
            if (rbSave.IsChecked is true)
            {
                XDocument xdoc   = new XDocument();
                XElement  xroot  = new XElement("Заказы");
                XElement  orders = new XElement("Товары");


                var rez  = context1.Заказы;
                var rez2 = context2.ЗаказаноТоваров;
                var rez3 = context3.СостояниеЗаказа;
                var rez4 = context4.Клиенты;
                var rez5 = context5.Водители;
                var rez6 = context6.ТранспортноеСредство;

                foreach (Заказы i in rez)
                {
                    //Первый элемент
                    XElement elId = new XElement("Заказ");
                    //Элементы этого элемента
                    XElement   elDataDostavki;
                    XAttribute elAttr         = new XAttribute("id", i.ЗаказID.ToString());
                    XElement   elSrokPostavki = new XElement("СрокПоставки", i.СрокПоставки.ToShortDateString());
                    if (i.ДатаДоставки != null)
                    {
                        elDataDostavki = new XElement("ДатаДоставки", i.ДатаДоставки.Value.ToShortDateString());
                    }
                    else
                    {
                        elDataDostavki = new XElement("ДатаДоставки", "");
                    }
                    XElement elDataZakaza       = new XElement("ДатаЗаказа", i.ДатаЗаказа.ToShortDateString());
                    XElement elDestinationPlace = new XElement("МестоНазначения", i.МестоНазначения.ToString());
                    elId.Add(elAttr);
                    elId.Add(elSrokPostavki);
                    elId.Add(elDataDostavki);
                    elId.Add(elDataZakaza);
                    elId.Add(elDestinationPlace);
                    //данные о заказанных товарах
                    foreach (ЗаказаноТоваров i2 in rez2)
                    {
                        if (i.ЗаказID == i2.ЗаказID)
                        {
                            XElement   elOrderedItem    = new XElement("Товар");
                            XAttribute elAttrItem       = new XAttribute("id", i2.КодТовара.ToString());
                            XElement   elItemWeightCost = new XElement("РасценкаТоннЗаКм", i2.асценкаТоннЗаКм);
                            XElement   elItemAmount     = new XElement("Количество", i2.Количество);
                            XElement   elItemWeigth     = new XElement("Масса", i2.Масса);
                            //Привязка к товару
                            elOrderedItem.Add(elAttrItem);
                            elOrderedItem.Add(elItemWeightCost);
                            elOrderedItem.Add(elItemAmount);
                            elOrderedItem.Add(elItemWeigth);
                            //вставляем данные о заказанных товарах в одному заказу
                            orders = new XElement(elOrderedItem); ///обязательно через NEW!!!!!!!!!!!!!!!!

                            //вставляем данные с товарами о заказе
                            elId.Add(orders);
                        }
                    }
                    //СОстояние товара
                    foreach (СостояниеЗаказа i3 in rez3)
                    {
                        if (i.СостояниеID == i3.СостояниеID)
                        {
                            XElement   elStat     = new XElement("СостояниеЗаказа");
                            XAttribute elAtt      = new XAttribute("id", i3.СостояниеID.ToString());
                            XElement   elStatName = new XElement("Состояние", i3.Состояние.ToString());
                            elStat.Add(elAtt);
                            elStat.Add(elStatName);
                            elId.Add(elStat);
                        }
                    }
                    //Клиент заказа
                    foreach (Клиенты i4 in rez4)
                    {
                        if (i.КлиентID == i4.КлиентID)
                        {
                            XElement   elClient = new XElement("Клиент");
                            XAttribute elAttCli = new XAttribute("id", i4.КлиентID.ToString());
                            XElement   elFIO    = new XElement("ФИО", i4.ФИО.ToString());
                            XElement   elTel    = new XElement("Телефон", i4.Телефон.ToString());
                            XElement   elAdress = new XElement("Адрес", i4.Адрес.ToString());
                            elClient.Add(elAttCli);
                            elClient.Add(elFIO);
                            elClient.Add(elTel);
                            elClient.Add(elAdress);
                            //Добавляем клиента
                            elId.Add(elClient);
                        }
                    }
                    //Водитель
                    foreach (Водители i5 in rez5)
                    {
                        if (i.ВодительID == i5.ВодительID)
                        {
                            XElement   elDriver    = new XElement("Водитель");
                            XAttribute elAttDri    = new XAttribute("id", i5.ВодительID.ToString());
                            XElement   elFIOdriver = new XElement("ФИО", i5.ФИО);
                            XElement   elTeldriver = new XElement("МобТелефон", i5.МобТелефон);
                            elDriver.Add(elAttDri);
                            elDriver.Add(elFIOdriver);
                            elDriver.Add(elTeldriver);

                            elId.Add(elDriver);
                        }
                    }
                    //Грузовик
                    foreach (ТранспортноеСредство i6 in rez6)
                    {
                        if (i.ТрСредствоID == i6.ТрСредствоID)
                        {
                            XElement   elCar       = new XElement("Грузовик");
                            XAttribute elAttCar    = new XAttribute("id", i6.ТрСредствоID.ToString());
                            XElement   elCarType   = new XElement("Марка", i6.Марка);
                            XElement   elCarWeight = new XElement("Грузоподъемность", i6.Грузоподъемность);
                            elCar.Add(elAttCar);
                            elCar.Add(elCarType);
                            elCar.Add(elCarWeight);

                            elId.Add(elCar);
                        }
                    }

                    //Добалвяем в корень данные из таблицы Заказы
                    xroot.Add(elId);
                }
                //Запись в документ
                xdoc.Add(xroot);
                //Сохраняем документ
                xdoc.Save("Data1.xml");
                //Сообщение об успешном сохранении в файл
                MessageBox.Show("Данные были успешно сохранены.", "Окей", MessageBoxButton.OK, MessageBoxImage.Information);
                DialogResult = true;
            }
            //чтение из файла
            if (rbLoad.IsChecked is true)
            {
                DriverId = 0;
                clientId = 0;
                CarId    = 0;
                flag     = false;
                flagCar  = false;
                var       col   = context1.Заказы;
                XDocument xdoc  = XDocument.Load("Data1.xml");
                var       xroot = xdoc.Root; //Заказы


                Заказы order;
                int    orderId;
                //Обход коллекции Заказы
                foreach (XElement el in xdoc.Element("Заказы").Elements("Заказ")) //ищем по порядку
                {
                    //обнуляем флаги и состояния
                    DriverId = 0;
                    clientId = 0;
                    CarId    = 0;
                    flag     = false;
                    flagCar  = false;

                    int item = int.Parse(el.Attribute("id").Value);
                    order = col.FirstOrDefault(s => s.ЗаказID == item);// ищем id заказа в базе

                    if (order == null)
                    {
                        //Если ID заказа нет в xml файле, добавляем, данные о клиенте, затем, сам заказ, затем товары и все остальное...
                        //Добаляем клента
                        Клиенты addClient = new Клиенты
                        {
                            //КлиентID = int.Parse(el.Element("Клиент").Attribute("id").Value),
                            ФИО     = el.Element("Клиент").Element("ФИО").Value,
                            Адрес   = el.Element("Клиент").Element("Адрес").Value,
                            Телефон = el.Element("Клиент").Element("Телефон").Value
                        };
                        context1.Клиенты.Add(addClient);
                        context1.SaveChanges();
                        clientId = addClient.КлиентID;
                        var dr = context1.Водители;
                        //Проверяем наличие водителей
                        foreach (Водители drivers in dr)
                        {
                            if (drivers.ФИО == el.Element("Водитель").Element("ФИО").Value)
                            {
                                flag = true;
                                break;
                            }
                        }
                        //Проверяем наличие транпортного средства
                        var ts = context1.ТранспортноеСредство;
                        foreach (ТранспортноеСредство t in ts)
                        {
                            if (t.Марка == el.Element("Грузовик").Element("Марка").Value)
                            {
                                flagCar = true;
                                break;
                            }
                        }



                        if (flag == false) //Если водителя нет в базе
                        {
                            if (flagCar)   //если машина в базе
                            {
                                CarId = int.Parse(el.Element("Грузовик").Attribute("id").Value);
                            }
                            if (flagCar == false) //иначе...
                            {
                                ТранспортноеСредство car = new ТранспортноеСредство
                                {
                                    Марка            = el.Element("Грузовик").Element("Марка").Value,
                                    Грузоподъемность = double.Parse(el.Element("Грузовик").Element("Грузоподъемность").Value)
                                };

                                context1.ТранспортноеСредство.Add(car);
                                context1.SaveChanges();
                                CarId = car.ТрСредствоID;
                            }
                            //Добавляем водителя
                            Водители addDriver = new Водители
                            {
                                ФИО        = el.Element("Водитель").Element("ФИО").Value,
                                МобТелефон = el.Element("Водитель").Element("МобТелефон").Value
                            };
                            context1.Водители.Add(addDriver);
                            context1.SaveChanges();
                            DriverId = addDriver.ВодительID;
                            //Добавляем сам заказ с новым водителем
                            if (el.Element("ДатаДоставки").Value != "")
                            {
                                Заказы addOrder = new Заказы
                                {
                                    //ЗаказID = int.Parse(el.Attribute("id").Value),
                                    СрокПоставки    = DateTime.Parse(el.Element("СрокПоставки").Value).Date,
                                    ДатаДоставки    = DateTime.Parse(el.Element("ДатаДоставки").Value).Date,
                                    ДатаЗаказа      = DateTime.Parse(el.Element("ДатаЗаказа").Value).Date,
                                    МестоНазначения = el.Element("МестоНазначения").Value,
                                    ВодительID      = DriverId,
                                    СостояниеID     = int.Parse(el.Element("СостояниеЗаказа").Attribute("id").Value),
                                    ТрСредствоID    = CarId,
                                    КлиентID        = clientId
                                };
                                context1.Заказы.Add(addOrder);
                                context1.SaveChanges();
                                orderId = addOrder.ЗаказID;
                            }
                            else
                            {
                                Заказы addOrder = new Заказы
                                {
                                    // ЗаказID = int.Parse(el.Attribute("id").Value),
                                    СрокПоставки    = DateTime.Parse(el.Element("СрокПоставки").Value).Date,
                                    ДатаЗаказа      = DateTime.Parse(el.Element("ДатаЗаказа").Value).Date,
                                    МестоНазначения = el.Element("МестоНазначения").Value,
                                    ВодительID      = DriverId,
                                    СостояниеID     = int.Parse(el.Element("СостояниеЗаказа").Attribute("id").Value),
                                    ТрСредствоID    = CarId,
                                    КлиентID        = clientId
                                };

                                context1.Заказы.Add(addOrder);
                                context1.SaveChanges();
                                orderId = addOrder.ЗаказID;
                            }
                        }
                        else //если водитель есть в базе
                        {
                            if (flagCar) //если машина в базе
                            {
                                CarId = int.Parse(el.Element("Грузовик").Attribute("id").Value);
                            }
                            if (flagCar == false) //иначе...
                            {
                                ТранспортноеСредство car = new ТранспортноеСредство
                                {
                                    Марка            = el.Element("Грузовик").Element("Марка").Value,
                                    Грузоподъемность = double.Parse(el.Element("Грузовик").Element("Грузоподъемность").Value)
                                };

                                context1.ТранспортноеСредство.Add(car);
                                context1.SaveChanges();
                                CarId = car.ТрСредствоID;
                            }

                            //Добавляем сам заказ
                            if (el.Element("ДатаДоставки").Value != "")
                            {
                                Заказы addOrder = new Заказы
                                {
                                    СрокПоставки    = DateTime.Parse(el.Element("СрокПоставки").Value).Date,
                                    ДатаДоставки    = DateTime.Parse(el.Element("ДатаДоставки").Value).Date,
                                    ДатаЗаказа      = DateTime.Parse(el.Element("ДатаЗаказа").Value).Date,
                                    МестоНазначения = el.Element("МестоНазначения").Value,
                                    ТрСредствоID    = CarId,
                                    ВодительID      = int.Parse(el.Element("Водитель").Attribute("id").Value),
                                    СостояниеID     = int.Parse(el.Element("СостояниеЗаказа").Attribute("id").Value),
                                    КлиентID        = clientId
                                };
                                context1.Заказы.Add(addOrder);
                                context1.SaveChanges();
                                orderId = addOrder.ЗаказID;
                            }
                            else
                            {
                                Заказы addOrder = new Заказы
                                {
                                    СрокПоставки    = DateTime.Parse(el.Element("СрокПоставки").Value).Date,
                                    ДатаЗаказа      = DateTime.Parse(el.Element("ДатаЗаказа").Value).Date,
                                    МестоНазначения = el.Element("МестоНазначения").Value,
                                    ВодительID      = int.Parse(el.Element("Водитель").Attribute("id").Value),
                                    СостояниеID     = int.Parse(el.Element("СостояниеЗаказа").Attribute("id").Value),
                                    ТрСредствоID    = CarId,
                                    КлиентID        = clientId
                                };

                                context1.Заказы.Add(addOrder);
                                context1.SaveChanges();
                                orderId = addOrder.ЗаказID;
                            }
                        }
                        //Добавляем товары к заказу
                        //Ищем товары в заказе с текущим id
                        var items = from xe in xdoc.Element("Заказы").Elements("Заказ")
                                    where xe.Attribute("id").Value == item.ToString()
                                    select xe.Element("Товар");

                        //Перебираем найденные товары и добавляем в заказ

                        foreach (var i in items)
                        {
                            ЗаказаноТоваров addingGoods = new ЗаказаноТоваров
                            {
                                ЗаказID         = orderId,
                                КодТовара       = int.Parse(i.Attribute("id").Value),
                                асценкаТоннЗаКм = decimal.Parse(i.Element("РасценкаТоннЗаКм").Value, CultureInfo.CreateSpecificCulture("en-US")),
                                Количество      = int.Parse(i.Element("Количество").Value),
                                Масса           = int.Parse(i.Element("Масса").Value)
                            };
                            context1.ЗаказаноТоваров.Add(addingGoods);
                            context1.SaveChanges();
                        }

                        await context1.SaveChangesAsync();

                        MessageBox.Show("Так как товара в базе нет, вставляем новый заказ.", "Внимание!");
                    }
                }



                MessageBox.Show("Данные были успешно импортированы.", "Окей", MessageBoxButton.OK, MessageBoxImage.Information);
                DialogResult = true;
            }
        }