예제 #1
0
        private void newNumber()
        {
            using (var context = new ExamEntities())
            {
                var            rand     = new Random();
                var            numbers  = new List <long>();
                long           number   = 0;
                List <Clients> clients  = context.Clients.ToList();
                var            tariffes = context.Tariff.ToList();

                do
                {
                    number = (long)(rand.NextDouble() * long.MaxValue);
                } while (numbers.Contains(number) || number < Math.Pow(10, 11) - 1);
                numbers.Add(number);

                var num = new PhoneNumber()
                {
                    Num      = number,
                    ClientId = passNum,
                    TariffId = tariffes[rand.Next(1, tariffes.Count)].Id,
                    Balance  = rand.Next(100, 20000)
                };

                context.PhoneNumber.Add(num);
                context.SaveChanges();
            }
        }
예제 #2
0
 private void tafirrBtn_Click(object sender, EventArgs e)
 {
     using (var context = new ExamEntities())
     {
         context.Configuration.LazyLoadingEnabled = false;
         var tar = context.Tariff.ToList();
         dataGridView1.DataSource = tar;
         dataGridView1.Columns["PhoneNumber"].Visible = false;
     }
 }
예제 #3
0
 private void numberBtn_Click(object sender, EventArgs e)
 {
     using (var context = new ExamEntities())
     {
         context.Configuration.LazyLoadingEnabled = false;
         var num = context.PhoneNumber.ToList();
         dataGridView1.DataSource = num;
         dataGridView1.Columns["Clients"].Visible = false;
         dataGridView1.Columns["Tariff"].Visible  = false;
     }
 }
예제 #4
0
 private void button1_Click(object sender, EventArgs e)
 {
     using (var context = new ExamEntities())
     {
         var currentNum = long.Parse(num_cb.SelectedItem.ToString());
         var number     = context.PhoneNumber.Where((num) => num.Num == currentNum).FirstOrDefault();
         var tariff     = context.Tariff.Where((t) => t.Name == tariffCb.Text).FirstOrDefault();
         number.TariffId = tariff.Id;
         context.SaveChanges();
     }
 }
예제 #5
0
 private void fillNames()
 {
     using (var context = new ExamEntities())
     {
         var clients = context.Clients.ToList();
         foreach (var c in clients)
         {
             comboBox1.Items.Add(c.Name);
         }
     }
 }
예제 #6
0
        //хочу чтобы в выборе нового тарифа не было текущего
        private void num_cb_SelectedIndexChanged_1(object sender, EventArgs e)
        {
            using (var context = new ExamEntities())
            {
                //поиск текущего тарифа через номер
                var currentNum = long.Parse(num_cb.SelectedItem.ToString());

                //{var currentTariff = context.Tariff.Where(
                //        (ct) => ct.Id == context.PhoneNumber.Where(
                //            (num) => num.Num == currentNum).FirstOrDefault().TariffId).FirstOrDefault();
                // Это был изначальный вариант как вытащить текущий тариф, я его оставил чтобы узнать действительно ли он
                // проще читается чем вариант ниже}

                //создание таблицы, в которой есть только номера и их тарифы
                var TariffAndHisNum = context.Tariff.Join(context.PhoneNumber,
                                                          t => t.Id,
                                                          pn => pn.TariffId,
                                                          (t, pn) => new
                {
                    PhoneNumber = pn.Num,
                    Name        = t.Name
                });

                //ну и тут получение, собственно, названия текущего тарифа
                var    currentTariffAndNum = TariffAndHisNum.Where((ct) => ct.PhoneNumber == currentNum).FirstOrDefault();
                string currentTariffName   = currentTariffAndNum.Name;

                //текущий тариф уже из таблицы тарифы
                var currentTariff = context.Tariff.Where((t) => t.Name.Equals(currentTariffName)).FirstOrDefault();

                //если для данного номера "новый тариф == старому" нужно стереть выбранный тариф
                if (currentTariff.Name == tariffCb.SelectedItem.ToString())
                {
                    tariffCb.SelectedItem = null;
                }

                //перезаполнение comboBox с учетом текущего тарифа
                tariffCb.Items.Clear();

                var tariff = context.Tariff.ToList();
                foreach (var t in tariff)
                {
                    if (t.Id == currentTariff.Id)
                    {
                        continue;
                    }
                    tariffCb.Items.Add(t.Name);
                }
            }
        }
예제 #7
0
        private void button1_Click(object sender, EventArgs e)
        {
            string name = comboBox1.SelectedItem.ToString();

            using (var context = new ExamEntities())
            {
                context.Configuration.LazyLoadingEnabled = false;

                var clientid = context.Clients.Where((c) => c.Name == comboBox1.SelectedItem.ToString()).FirstOrDefault().PassNum;
                var num      = context.PhoneNumber.Where((n) => n.ClientId == clientid).FirstOrDefault();

                try//случайно попал в ошибку, суть которой в том что клиент был, а его номера нет - перезаполнил бд, вроде все норм
                   //но на всякий сделал try
                {
                    //вот эти поля у num по совершенно непонятным мне причинам удалялись при удалении num из бд,
                    //поэтому я их просто записал
                    var clientId = num.ClientId;
                    var clients  = num.Clients;
                    var tariff   = num.Tariff;
                    var tariffId = num.TariffId;

                    context.PhoneNumber.Remove(num);
                    context.SaveChanges();

                    try
                    {
                        num.Balance += Decimal.Parse(textBox1.Text);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Incorrect sum for reffiling");
                        return;
                    }

                    num.ClientId = clientId;
                    num.Clients  = clients;
                    num.Tariff   = tariff;
                    num.TariffId = tariffId;
                    context.PhoneNumber.Add(num);
                    context.SaveChanges();

                    MessageBox.Show("Balance has been refilled");
                }
                catch (NullReferenceException ex)
                {
                    MessageBox.Show("Choose another client");
                }
            }
        }
예제 #8
0
 public AddClient()
 {
     InitializeComponent();
     //загрузка номеров и серий пасспортов для проверки на уникальность при создании
     using (var context = new ExamEntities())
     {
         checkPasNum = new List <long>();
         checkPasSer = new List <int>();
         var clients = context.Clients.ToList();
         foreach (var c in clients)
         {
             checkPasNum.Add(c.PassNum);
             checkPasSer.Add(passSer);
         }
     }
 }
예제 #9
0
        private void fillCb()//заполнение combobox-ов
        {
            using (var context = new ExamEntities())
            {
                var numbers = context.PhoneNumber.ToList();
                foreach (var num in numbers)
                {
                    num_cb.Items.Add(num.Num);
                }

                var tariff = context.Tariff.ToList();
                foreach (var t in tariff)
                {
                    tariffCb.Items.Add(t.Name);
                }
            }
        }
예제 #10
0
        private bool UniqName()//проверка имени на уникальность
        {
            var checkName = new List <String>();

            using (var context = new ExamEntities())
            {
                var names = context.Tariff.ToList();
                foreach (var n in names)
                {
                    checkName.Add(n.Name);
                }
                if (checkName.Contains(name))
                {
                    return(false);
                }
                return(true);
            }
        }
예제 #11
0
        private void AddBtn_Click(object sender, EventArgs e)
        {
            using (var context = new ExamEntities())
            {
                var names = context.Tariff.ToList();


                try
                {
                    monthPay    = Decimal.Parse(MonthPayTb.Text);
                    connectPay  = Decimal.Parse(ConnectPayTb.Text);
                    name        = nameTb.Text;
                    description = DescriptionTb.Text;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Incorrect data");
                    return;
                }

                if (string.IsNullOrEmpty(name) ||
                    string.IsNullOrEmpty(description) ||
                    !UniqName() ||
                    monthPay < 0 ||
                    connectPay < 0)
                {
                    MessageBox.Show("Incorrect data");
                    return;
                }

                Tariff tariff = new Tariff()
                {
                    Name           = name,
                    Description    = description,
                    ConnectPayment = connectPay,
                    MonthPayment   = monthPay
                };

                context.Tariff.Add(tariff);
                context.SaveChanges();
                MessageBox.Show("Tariff has been added");
            }
        }
예제 #12
0
        private void addClientBtn_Click(object sender, EventArgs e)
        {
            try
            {
                name    = nameTb.Text;
                surname = SurnameTb.Text;
                int.TryParse(seriesTb.Text, out passSer);
                long.TryParse(numberTb.Text, out passNum);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Incorrect data");
                return;
            }

            //проверка имени/фамилии на корректность
            bool correctString = false;

            if (!string.IsNullOrEmpty(name) &&
                !string.IsNullOrEmpty(surname) &&
                !string.IsNullOrWhiteSpace(name) &&
                !string.IsNullOrWhiteSpace(surname) &&
                !name.Any(char.IsDigit) &&
                !surname.Any(char.IsDigit))
            {
                correctString = true;
            }

            //проверка данных пасспорта на корректность
            bool correctNum = false;

            if (!checkPasNum.Contains(passNum) &&
                !checkPasSer.Contains(passSer) &&
                passNum > (long)(Math.Pow(10, 9) + 1) &&
                passSer > 1)
            {
                correctNum = true;
            }

            if (correctNum && correctString)
            {
                Clients client = new Clients()
                {
                    Name       = name,
                    Surname    = surname,
                    PassNum    = passNum,
                    PassSeries = passSer
                };
                using (var context = new ExamEntities())
                {
                    context.Clients.Add(client);
                    context.SaveChanges();
                    MessageBox.Show("Client has been added");

                    //Создание номера новому клиенту
                    newNumber();
                }
                checkPasNum.Add(passNum);
                checkPasSer.Add(passSer);
            }
            else
            {
                MessageBox.Show("Incorrect data");
            }
        }