Esempio n. 1
0
 private void Delete_LitTurnover_Click(object sender, EventArgs e)
 {
     if (dgv_LitTurnover.Rows.Count > 0)
     {
         LiteratureTurnoverClass litTurnover = dgv_LitTurnover.Rows[0].Tag as LiteratureTurnoverClass;
         DbModel.init().LiteratureTurnover.Remove(litTurnover);
         DbModel.init().SaveChanges();
         updatData();
     }
 }
Esempio n. 2
0
        private void bt_PlusBookListPurchase_Click(object sender, EventArgs e)
        {
            //Заполнение таблицы про закупку одной книги
            PurchaseAccountingClass purchaseAccounting = new PurchaseAccountingClass
            {
                price = Convert.ToDecimal(tb_PricePurchase.Text),
                count = Convert.ToInt32(tb_CountPurchase.Text),
            };

            //
            purchaseAccounting.literatureTurnover = LiteratureTurnoverClass.addNewLitherature(cb_BookPurchase.SelectedItem as BookClass, purchaseAccounting.count);
            //выдадим в dgv информацию о закупаемой книге: количество, цену, стоимость
            int r = dgv_PurchaseList.Rows.Add((cb_BookPurchase.SelectedItem as BookClass).ToString(), purchaseAccounting.count, purchaseAccounting.price, (purchaseAccounting.count * purchaseAccounting.price));

            //получаем тег строки (её номер)
            dgv_PurchaseList.Rows[r].Tag = purchaseAccounting;

            updateResult();
        }
Esempio n. 3
0
        private void bt_import_Purchase_Click(object sender, EventArgs e)
        {
            if (ofd_load_Purchase.ShowDialog() == DialogResult.OK)//Вызываем диалог выбора файла и проверяем, что полльзователь выбрал файл
            {
                DataTable table;
                if (ExcelClass.loadExcel(ofd_load_Purchase.FileName, out table))//Если загрузка данных(ИмяФайла,ТаблицаСРезультатом) прошел успешно
                {
                    PurchaseListClass purchaseList = new PurchaseListClass {
                        datePurchase = DateTime.Now
                    };
                    foreach (DataRow row in table.Rows)//перебираем полученные строки
                    {
                        StringBuilder builder = new StringBuilder();
                        //Проверка на наличие такого типа литературы с такими данными
                        string    typename = row["Тип"].ToString();
                        TypeClass type     = DbModel.init().Types.Where(t =>
                                                                        t.type == typename).FirstOrDefault();

                        //Если книга не существует, то выдается сообщение об ошибке
                        if (type == null)
                        {
                            type = new TypeClass {
                                type = Convert.ToString(typename)
                            };
                        }

                        //проверка на наличие авторов в базе
                        List <AuthorClass> authors = new List <AuthorClass>();
                        //разделение авторов сначала на двух разных, а затем каждого на инициалы
                        string   FIO_Authors  = Convert.ToString(row["Автор"]);
                        string[] split_Author = FIO_Authors.Split(',');
                        //перебираем инициаллы
                        foreach (string strF_IO in split_Author)
                        {
                            string[]    F_I_O = strF_IO.Split(' ', '.');
                            AuthorClass author = null;
                            string      fam = F_I_O[0], name = F_I_O[1], otch = F_I_O[2];
                            //сравниваем инициалы на наличие соотношениий в базе. Инициалы И.О. сверяются с первыми бууквами значений.
                            author = DbModel.init().Authors.Where(a => a.family_name.StartsWith(fam) && a.first_name.StartsWith(name) && a.middle_name.StartsWith(otch)).FirstOrDefault();
                            //если такой автор в базе найден, то.....

                            if (author != null)
                            {
                                //в класс (таблицу) автора добавляется новой значение
                                authors.Add(author);
                            }
                            else
                            {
                                //если данные не найдены, то открывается форма "AddAvtor" для того, чтобы пользователь расшифровал значение.
                                //От формы данные добавляются в базу
                                AddAvtorForm addAvtor = new AddAvtorForm(fam, name, otch);
                                if (addAvtor.ShowDialog() != DialogResult.OK)
                                {
                                    builder.AppendLine(String.Format("Fio author {0} not found!", strF_IO));
                                }
                                else
                                {
                                    author = addAvtor.GetAuthor();
                                    authors.Add(author);
                                }
                            }
                        }



                        //Проверка на наличие издательства с такими данными. !!!!!!!!!Действия схожи с данными об авторах!!!!!!!
                        List <PublisherClass> publishers = new List <PublisherClass>();
                        string         publicher_str = Convert.ToString(row["Издательство"]);
                        string[]       split_publisher = publicher_str.Split(':');
                        PublisherClass publisher = null;
                        string         publisher_name = split_publisher[1], publisher_city = split_publisher[0];
                        publisher = DbModel.init().Publishers.Where(p =>
                                                                    p.city.StartsWith(publisher_city) && p.name.StartsWith(publisher_name)).FirstOrDefault();
                        if (publisher != null)
                        {
                            publishers.Add(publisher);
                        }
                        else
                        {
                            AddPublisherForm addPublisher = new AddPublisherForm(publisher_city, publisher_name);
                            if (addPublisher.ShowDialog() != DialogResult.OK)
                            {
                                builder.AppendLine(String.Format("Издательство не найдено!", publicher_str));
                            }
                            else
                            {
                                publisher = addPublisher.GetPublisher();
                                publishers.Add(publisher);
                            }
                        }


                        //Проверка на наличие данной литературы
                        BookClass book     = null;
                        string    bookname = row["Название"].ToString();
                        int?      bookclassnum = null;
                        try
                        {
                            bookclassnum = Convert.ToInt32(row["Класс"]);
                        }
                        catch { }
                        book = DbModel.init().Books.Include(b => b.publisher).Include(b => b.type).Include(b => b.Authors)
                               .Where(b =>
                                      b.classnum == bookclassnum &&
                                      b.name_book == bookname &&
                                      b.publisher.idPublisher == publisher.idPublisher &&
                                      b.type.idType == type.idType
                                      ).FirstOrDefault();

                        if (book == null)
                        {
                            AddBookForm addBook = new AddBookForm(bookclassnum, bookname, publisher, type, authors);
                            if (addBook.ShowDialog() != DialogResult.OK)
                            {
                                builder.AppendLine(String.Format("Литература не найдена!", bookname));
                            }
                            book = addBook.GetBook();
                        }

                        int Litheraturecount = Convert.ToInt32(row["Количество"]);
                        purchaseList.purchaseAccountings.Add(
                            new PurchaseAccountingClass
                        {
                            count = Litheraturecount,
                            price = Convert.ToDecimal(row["Цена"]),
                            literatureTurnover = LiteratureTurnoverClass.addNewLitherature(book, Litheraturecount)
                        }
                            );
                    }
                    AddPurchaseForm addPurchase = new AddPurchaseForm(purchaseList);
                    addPurchase.ShowDialog();
                    MessageBox.Show("Boooozhe! ONO RABOTAET!");
                }
            }
        }
Esempio n. 4
0
        private void bt_Import_Issuance_Click(object sender, EventArgs e)
        {
            if (ofd_load_Issuance.ShowDialog() == DialogResult.OK)//Вызываем диалог выбора файла и проверяем, что полльзователь выбрал файл
            {
                DataTable table;
                if (ExcelClass.loadExcel(ofd_load_Issuance.FileName, out table)) //Если загрузка данных(ИмяФайла,ТаблицаСРезультатом) прошел успешно
                {
                    StringBuilder stringBuilder = new StringBuilder();           //конструктор ошибок
                    foreach (DataRow row in table.Rows)                          //перебираем полученные строки
                    {
                        //Проверка на наличие обучающегося с такими данными
                        TrainessClass trainess = DbModel.init().Trainesses.Where(t =>
                                                                                 t.classTrainess == Convert.ToInt32(row["Класс"]) &&
                                                                                 t.family_name == Convert.ToString(row["фамилия"]) &&
                                                                                 t.first_name == Convert.ToString(row["Имя"])
                                                                                 ).FirstOrDefault();

                        //Проверка на наличие книги с такими данными
                        BookClass book = DbModel.init().Books.Where(b => b.name_book == Convert.ToString(row["Название книги"])).FirstOrDefault();

                        //Если книга не существует, то выдается сообщение об ошибке
                        if (book == null)
                        {
                            stringBuilder.AppendLine(String.Format("Book with name {0} not found!", Convert.ToString(row["Название книги"])));
                            continue;
                        }
                        LiteratureTurnoverClass literature = (book.literatureTurnovers.Where(l => l.status == LiteratureTurnoverClass.e_literature_state.storage).FirstOrDefault());
                        if (literature == null)
                        {
                            stringBuilder.AppendLine("Book not found in storage!");
                            continue;
                        }

                        //Если такого обучающегося не существует, то он создаётся
                        if (trainess == null)
                        {
                            trainess = new TrainessClass
                            {
                                classTrainess = Convert.ToInt32(row["Класс"]),
                                family_name   = Convert.ToString(row["Фамилия"]),
                                first_name    = Convert.ToString(row["Имя"])
                            };
                        }

                        //Когда подбор данных осуществлен, происходит импорт (добавление данных)
                        DbModel.init().Issuances.Add(
                            new IssuanceClass
                        {
                            user          = Authmanager.user,
                            date_of_issue = Convert.ToDateTime(row["Дата выдачи"]),
                            trainess      = trainess,
                            literature    = literature
                        }
                            );
                    }

                    //Если найдена ошибка, то выдается сообщение и обращение к ползователю, где спрашивается его согласие на сохранение данных с ошибкой
                    if (stringBuilder.Length > 0)
                    {
                        MessageBox.Show(stringBuilder.ToString());
                        if (MessageBox.Show("Save?", "save", MessageBoxButtons.YesNo) == DialogResult.Yes)
                        {
                            DbModel.init().SaveChanges();
                            updatData();
                        }
                    }
                    else
                    {
                        DbModel.init().SaveChanges();
                        updatData();
                    }
                }
            }
        }