Exemple #1
0
        /// <summary>
        /// Метод загрузки измененных данных в БД
        /// </summary>
        /// <param name="temp"></param>
        public static void UpdateBills(InclusionModel temp)
        {
            TestBankLocalDBEntities billToSql = new TestBankLocalDBEntities();

            // Получение определенного счета
            var newBill = billToSql.Bills.Where(x => x.BillNum == temp.Bill).FirstOrDefault();

            if (newBill != null)
            {
                // Тут пытался заполнить свойства рефлексией, но, ели я правильно понял, то работать это будет только для однотипных объектов.
                #region Попытка изменения свойств рефлексией
                //foreach (var t in temp.GetType().GetProperties())
                //{
                //    t.SetValue(newBill, t.GetValue(temp));
                //}
                #endregion

                // Изменение значений для отдельного счета в БД
                newBill.InclusionDateEnd = temp.DateEndInclusion;
                newBill.InclusionSum     = temp.Inclusion;
                newBill.Percents         = temp.Percents;
                newBill.Capitalize       = temp.Capitalize;
                newBill.Total            = Convert.ToInt32(temp.Sum);
                newBill.StatusInclusion  = temp.StatusInclusion;
            }

            try
            {
                // Сохранение данных в БД
                billToSql.SaveChanges();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }

            #region Запрос на изменение данных в БД

            //SqlCommand sqlCommand = new SqlCommand($"UPDATE Bills SET InclusionDateEnd='{temp.DateEndInclusion}', " +
            //    $"InclusionSum='{temp.Inclusion}', " +
            //    $"Percents='{temp.Percents}', " +
            //    $"Capitalize='{temp.Capitalize}', " +
            //    $"Total='{Convert.ToInt32(temp.Sum)}', " +
            //    $"StatusInclusion='{temp.StatusInclusion}' WHERE BillNum={temp.Bill}", ConnectionInfo.connection);

            //sqlCommand.ExecuteNonQuery();

            #endregion
        }
Exemple #2
0
        /// <summary>
        /// Метод заполнения БД тестовыми клиентами
        /// </summary>
        private void FillDB()
        {
            Random random = new Random();

            List <string> LastNames = new List <string>()
            {
                "Иванов", "Петров", "Сидоров", "Кузнецов", "Попов", "Бобров", "Лопатов", "Семенов", "Смирнов"
            };
            List <string> Names = new List <string>()
            {
                "Иван", "Владимир", "Олег", "Сергей", "Виктор", "Андрей", "Ярослав", "Дмитрий", "Семен"
            };
            List <string> Patronymics = new List <string>()
            {
                "Евгеньевич", "Андреевич", "Александрович", "Иванович", "Семенович", "Сергеевич", "Викторович", "Дмитриевич", "Геннадьевич"
            };
            List <string> ClientStatus = new List <string>()
            {
                "Обычный", "VIP", "Корпоративный"
            };

            TestBankLocalDBEntities clientsToSql = new TestBankLocalDBEntities();

            for (int i = 0; i < 1000; i++)
            {
                try
                {
                    #region Добавление записей в БД

                    //// Добавление клиента в тестовую бд
                    //sqlCommand = new SqlCommand($"INSERT INTO Clients (LastName, Name, Patronymic, ClientStatus, RegistrationDate)" +
                    //    $" VALUES (N'{LastNames[random.Next(0, 9)]}', N'{Names[random.Next(0, 9)]}', N'{Patronymics[random.Next(0, 9)]}', " +
                    //    $"N'{ClientStatus[random.Next(0, 3)]}', " +
                    //    $"'{DateTime.Now.AddDays(-random.Next(1, 32)).AddMonths(-random.Next(1, 37)).ToString("dd.MM.yyyy")}')", ConnectionInfo.connection);

                    //sqlCommand.ExecuteNonQuery();

                    #endregion

                    // Заполнение экземпляра класса для создания случайного клиента
                    var clients = new Clients
                    {
                        LastName         = LastNames[random.Next(0, 9)],
                        Name             = Names[random.Next(0, 9)],
                        Patronymic       = Patronymics[random.Next(0, 9)],
                        ClientStatus     = ClientStatus[random.Next(0, 3)],
                        RegistrationDate = DateTime.Now.AddDays(-random.Next(1, 32)).AddMonths(-random.Next(1, 37)).ToString("dd.MM.yyyy")
                    };

                    // Добавление данных для записи в БД
                    clientsToSql.Clients.Add(clients);

                    ProgressBarStatus = $"записей: {i}";
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

            // Сохранение данных в БД
            clientsToSql.SaveChangesAsync();

            ProgressBarStatus = $"Запись в БД завершена";
        }
Exemple #3
0
        /// <summary>
        /// Метод выгрузки данных по клиентам и их счетов из БД
        /// </summary>
        Task <bool> AddLoadClientsToDB()
        {
            // Используйте метод FillDB() если нужно заполнить БД
            //FillDB();

            TestBankLocalDBEntities takeClints = new TestBankLocalDBEntities();

            try
            {
                //SqlDataReader reader;

                ProgressBarStatus = "Загрузка данных из бд. Ожидайте.";

                #region Запрос на получение клиентов

                //// Запрос на выгрузку данных из таблицы клиентов
                //sqlCommand = new SqlCommand($"SELECT * FROM Clients", ConnectionInfo.connection);

                //reader = sqlCommand.ExecuteReader();

                //// Цикл загрузки данных клиентов
                //while (reader.Read())
                //{
                //    Application.Current.Dispatcher.Invoke(() => AllClients.Add(new Client(reader.GetInt32(0), reader.GetString(1),
                //        reader.GetString(2), reader.GetString(3), reader.GetString(4), reader.GetString(5))));
                //}

                //reader.Close();

                #endregion

                // Получение данных из таблицы клиентов
                var tempCLients = takeClints.Clients;

                foreach (var t in tempCLients)
                {
                    Application.Current.Dispatcher.Invoke(() => AllClients.Add(new Client
                                                                                   (t.Id, t.LastName, t.Name,
                                                                                   t.Patronymic, t.ClientStatus,
                                                                                   t.RegistrationDate)));
                }

                #region Запрос на получение счетов

                //// Запрос на выгрузку данных из таблицы счетов
                //sqlCommand = new SqlCommand($"SELECT * FROM Bills", ConnectionInfo.connection);

                //reader = sqlCommand.ExecuteReader();

                //// Цикл выгрузки данных по счетам клиентов
                //while (reader.Read())
                //{
                //    Application.Current.Dispatcher.Invoke(() => allInclusions.Add(new InclusionModel(reader.GetInt32(1), reader.GetInt32(2),
                //    reader.GetString(3), reader.GetString(4), reader.GetDouble(5), reader.GetDouble(6), reader.GetBoolean(7), reader.GetInt32(8),
                //    reader.GetString(9))));
                //}

                //reader.Close();

                #endregion

                // Получение данных из таблицы счетов
                var tempBills = takeClints.Bills;

                foreach (var t in tempBills)
                {
                    Application.Current.Dispatcher.Invoke(() => allInclusions.Add(new InclusionModel
                                                                                      (t.ClientID, t.BillNum, t.InclusionDate,
                                                                                      t.InclusionDateEnd, t.InclusionSum, t.Percents,
                                                                                      t.Capitalize, t.Total, t.StatusInclusion)));
                }

                // Определение количества счетов для каждого клиента
                foreach (var t in AllClients)
                {
                    t.Inclusions = new ObservableCollection <InclusionModel>(allInclusions.Where(x => x.ClientID == t.Id));

                    t.ColBills = t.Inclusions.Count;
                }

                ProgressBarStatus = $"Загрузка завершена.";

                return(Task.FromResult(true));
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);

                return(Task.FromResult(false));
            }
        }