예제 #1
0
        private void button1_Click(object sender, EventArgs e)                   //Кнопка Сформировать
        {
            finalAddString = "";
            SetTempData();

            #region Проверки даты и заполнения
            if (((dateTimePicker2.Value > dateTimePicker3.Value) &&
                 (checkBox5.Checked == true)) || (dateTimePicker3.Value > DateTime.Now) || dateTimePicker1.Value > DateTime.Now ||
                ((dateTimePicker5.Value > dateTimePicker6.Value) && dateChargeCheckB.Checked))
            {
                MessageBox.Show("Неверно заданы границы диапазона даты", "Ошибка заполнения формы", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (((comboBox1.SelectedIndex == -1) && (checkBox2.Checked == true)) ||
                ((comboBox2.SelectedIndex == -1) && (checkBox1.Checked == true)) ||
                ((comboBox3.SelectedIndex == -1) && (checkBox3.Checked == true)) ||
                ((comboBox4.SelectedIndex == -1) && (checkBox6.Checked == true)) ||
                ((textBox1.Text == "") && (checkBox4.Checked == true)) ||
                ((costCheckB.Checked == true) && (costTB.Text == "")) ||
                (checkBox1.Checked == false) && (checkBox2.Checked == false) && (checkBox3.Checked == false) && (checkBox4.Checked == false) && (checkBox5.Checked == false) && (checkBox6.Checked == false) && (costCheckB.Checked == false) && (dateChargeCheckB.Checked == false))

            {
                MessageBox.Show("Выбранные поля не заполнены или заполнены неверно", "Ошибка заполнения формы", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            #endregion

            #region //Алгоритм любимой Валюши
            int iterator = 0;

            string _where = " WHERE ";
            string and_   = " AND ";

            CheckBox[] checkBoxsMass = { checkBox1, checkBox2, checkBox3, checkBox4, checkBox5, checkBox6, costCheckB, dateChargeCheckB };   //Массив чек боксов

            string cp0 = "Сотрудники.Фамилия = " + "'" + (comboBox2.Text) + "'";
            string cp1 = "Организации.Название = " + "'" + (comboBox1.Text) + "'";
            string cp2 = "Клиенты.ClientName = " + "'" + (comboBox3.Text) + "'";
            string cp3 = "Журнал.Memo LIKE " + "'%" + (textBox1.Text) + "%'";
            string cp4;
            if (radioButton1.Checked == true)
            {
                cp4 = "CAST(Журнал.Date as Date) = " + "'" + (dateTimePicker1.Value.ToString("yyyy-MM-dd")) + "'";
            }
            else
            {
                cp4 = "Журнал.Date > " + "'" + dateTimePicker2.Value.ToString("yyyy-MM-dd") + "'" + " AND Журнал.Date < DATEADD(day, 1," + "'" + dateTimePicker3.Value.ToString("yyyy-MM-dd") + "')";
            }
            string cp5 = "ТипДокумента.Name = " + "'" + (comboBox4.Text) + "'";
            string cp6 = "Журнал.Cost " + costSign.Text.Trim() + " " + costTB.Text;
            string cp7;
            if (dateChargeExactDateRadio.Checked)
            {
                cp7 = "DOCUMENTS.CHARGE_DATE = " + "'" + (dateTimePicker4.Value.ToString("yyyy-MM-dd")) + "'";
            }
            else
            {
                cp7 = "DOCUMENTS.CHARGE_DATE > " + "'" + dateTimePicker5.Value.ToString("yyyy-MM-dd") + "'" + " AND DOCUMENTS.CHARGE_DATE < DATEADD(day, 1," + "'" + dateTimePicker6.Value.ToString("yyyy-MM-dd") + "')";
            }

            string[] commandPartMass = { cp0, cp1, cp2, cp3, cp4, cp5, cp6, cp7 };

            for (int i = 0; i < commandPartMass.Length; i++)
            {
                if (checkBoxsMass[i].Checked == true)
                {
                    if (iterator == 0)
                    {
                        finalAddString += _where + commandPartMass[i];
                    }
                    if ((iterator > 0) && (iterator < 7))
                    {
                        finalAddString += and_ + commandPartMass[i];
                    }
                    if (iterator == 7)
                    {
                        finalAddString += and_ + commandPartMass[i];
                    }

                    iterator++;
                }
            }
            #endregion

            try
            {
                this.newGetDataString = @"SELECT DISTINCT Журнал.ID AS Номер, 
                                            ТипДокумента.Name AS Документ, 
                                            Журнал.Date AS Дата,
                                            Организации.Название As Организация, 
                                            Сотрудники.Фамилия AS Выдал, 
                                            Клиенты.ClientName,
                                            Memo, 
                                            Info_type.in_type,
                                            Cost, 
                                            MapCasesCount, 
                                            RequireConfirmAct,
                                            Журнал.Client_ID
                                      FROM Журнал 
                                            LEFT JOIN DOCUMENTS ON Журнал.ID = DOCUMENTS.FID_JOURNAL
                                            LEFT JOIN Организации ON Журнал.Organ_ID = Организации.ID
                                            LEFT JOIN ТипДокумента ON Журнал.TypeDoc = ТипДокумента.ID
                                            LEFT JOIN Сотрудники ON Журнал.Empl_ID = Сотрудники.ID
                                            LEFT JOIN Клиенты ON Журнал.Client_ID = Клиенты.ID
                                            LEFT JOIN Info_type ON Журнал.in_id = Info_type.ID " + finalAddString +
                                        "ORDER BY Журнал.ID";
                button2Shower = true;
                //DialogResult = DialogResult.OK;
                callback.Invoke(DialogResult.OK);
                // this.Close();
            }
            catch
            {
                MessageBox.Show("Некорректно сформирован запрос. Повторите попытку", "Ошибка формирования запроса");
                // DialogResult = DialogResult.OK;
                goto RepeatEnter;
            }
            Close();
            RepeatEnter :;
        }
예제 #2
0
        private void SaveItem_Click(object sender, EventArgs e)
        {
            #region Проверки заполнения
            if (((radioButton1.Checked == false) && (radioButton2.Checked == false)) || ((organizationsCB.Text == "") || organizationsCB.Text == "Начните вводить имя организации") || ((checkBox1.Checked == false) && (checkBox2.Checked == false)) || (clientsCB.Text == "") || (costTB.Text == "") || (memoTB.Text == ""))
            {
                MessageBox.Show("Не все поля формы заполнены. \nВнесите всю необходимую информацию и повторите попытку.", "Ошибка заполнения формы", MessageBoxButtons.OK, MessageBoxIcon.Information);
                DialogResult = DialogResult.None;
                return;
            }

            if (((organizationsCB.SelectedIndex == -1) && (organizationsCB.Text != "Частное лицо")) || (clientsCB.SelectedIndex == -1))
            {
                MessageBox.Show("Выбран несуществующий клиент или организация. Проверьте правильность ввода.", "Ошибка заполнения формы", MessageBoxButtons.OK, MessageBoxIcon.Information);
                DialogResult = DialogResult.None;
                return;
            }

            //if (dateTimePicker1.Value > DateTime.Now)
            //{
            //    MessageBox.Show("Дата документа задана не верно.", "Ошибка заполнения формы", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            //    return;
            //}

            if (typeDocCB.SelectedIndex == -1)
            {
                MessageBox.Show("Не выбран тип документа.", "Ошибка заполнения формы", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            int chBoxIndx = 1;

            if ((checkBox1.Checked == true) && (checkBox2.Checked == false))
            {
                chBoxIndx = 2;
            }
            if ((checkBox1.Checked == false) && (checkBox2.Checked == true))
            {
                chBoxIndx = 3;
            }
            if ((checkBox1.Checked == true) && (checkBox2.Checked == true))
            {
                chBoxIndx = 4;
            }
            string chBoxIndxStr = Convert.ToString(chBoxIndx);
            if (memoTB.Text.Length > 4000)
            {
                if (MessageBox.Show("Слишком большой объем поля описания.\n\nСохранить введенное значение?", "Внимание", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) != DialogResult.OK)
                {
                    return;
                }
            }
            #endregion
            SaveItem.Enabled = false;
            Cursor           = Cursors.AppStarting;
            //Подготавливаем переменые даты для передачи на sql server
            DateTime dateNow = Convert.ToDateTime(textBox3.Text);

            //Отправляем текст на Regex-анализ, чтобы узнать количество выданных планшетов
            int mapCasesCount = RegexAnalys.MapCasesCount(memoTB.Text);

            var        cn      = dm.DBConnection;
            SqlCommand command = cn.CreateCommand();

            //Добавление новой строки со случайными значениями.
            //Подготавливаем значения
            //'04-02-2017' формат передаваемой в sql даты
            //SqlCommand orgIndex = cn.CreateCommand();

            int orgId    = dm.FindFirstOrganizationId(organizationsCB.Text);
            int clientId = (int)clientsCB.SelectedValue;
            //MessageBox.Show(clientsCB.SelectedValue.ToString());
            command.CommandText = "INSERT INTO Журнал (TypeDoc, Date, Memo, Organ_ID, Empl_ID, Client_ID, in_id, Cost, mapCasesCount, RequireConfirmAct) VALUES ('" + (typeDocCB.SelectedIndex + 1) + "', '" + dateNow.ToString("yyyy - MM - dd HH:mm:ss") + "' , '" + memoTB.Text + "', '" + orgId + "', '" + (employCB.SelectedIndex + 1) + "', '" + clientId + "', '" + chBoxIndxStr + "', '" + Convert.ToInt32(costTB.Text) + "', '" + mapCasesCount + "', '" + mapCasesCount + "')";

            #region ==========СОЗДАЕМ БАЗОВОГО КЛИЕНТА============
            SqlCommand baseClient = cn.CreateCommand();
            if (topClientCheckB.Checked == true)
            {
                baseClient.CommandText = "UPDATE Организации SET ОсновнойКлиент =" + clientId + " WHERE Организации.ID = " + orgId;
                try
                {
                    baseClient.Transaction = cn.BeginTransaction(IsolationLevel.Serializable);
                    baseClient.ExecuteNonQuery();
                    baseClient.Transaction.Commit();
                }
                catch
                {
                    baseClient.Transaction.Rollback();
                    MessageBox.Show("Данный клиент не был назначен основным", "Ошибка при изменении статуса клиента", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            #endregion

            //========================COMMIT==============================
            try
            {
                command.Transaction = cn.BeginTransaction(IsolationLevel.Serializable);
                command.ExecuteNonQuery();
                command.Transaction.Commit();

                lastID = Convert.ToInt32(SqlQueryBuilder.LastId(cn).ExecuteScalar());

                // Вставка документов в БД
                if (docsForInsert != null)
                {
                    docsForInsert.ForEach(x => x.FidJournal = lastID);
                    //docsForInsert.ForEach(x => x.Type = (DocType)comboBox2.SelectedIndex + 1);
                }
                //else if (comboBox2.Text == "Обращение")
                //{
                //    docsForInsert = new List<Document>();
                //    docsForInsert.Add(new Document((DocType)comboBox2.SelectedIndex + 1)
                //    {
                //        FidJournal = lastID,
                //        TicketNumber = textBox1.Text,
                //        TicketDate = dateTimePicker1.Value,
                //        NumRazresh = null,
                //        DateRazresh = null,
                //        //Type = (DocType)comboBox2.SelectedIndex + 1
                //    });
                //}
                bool isAdded = dm.CreateDocuments(docsForInsert);
                DialogResult = DialogResult.OK;
            }
            catch
            {
                command.Transaction.Rollback();

                DialogResult = DialogResult.Abort;
                MessageBox.Show("Транзакция отменена. Данные не добавлены в базу данных. \nОбратитесь к администратору.", "Системный сбой", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
            }


            //В таблицу Организации в поле количество прибавляем выданные планшеты
            if (mapCasesCount > 0)
            {
                MapCasesManager.SetDBMapCasesSumm(organizationsCB.Text, mapCasesCount);
            }

            int allMapCases = MapCasesManager.GetMapCasesSum(organizationsCB.Text);
            if (allMapCases >= 200)
            {
                MessageBox.Show(String.Format("Количество планшетов, выданных организации {0} составляет {1}.\nНеобходимо получить от организации акты об удалении, после чего изменить сумму в таблице Выданные планшеты\n(Данные - Выданные планшеты).", organizationsCB.Text, allMapCases), "Информация", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

            if (checkBox3.Checked == true)
            {
                try
                {
                    _printingService.Print(lastID,
                                           Convert.ToDateTime(textBox3.Text),
                                           docsForInsert ?? new List <Document> (),
                                           organizationsCB.Text,
                                           dm.GetClientName(Convert.ToInt32(clientsCB.SelectedValue)),
                                           clientsCB.Text,
                                           costTB.Text,
                                           memoTB.Text,
                                           GetInfoType(),
                                           employCB.Text,
                                           _employeeService.GetActiveSign(),
                                           entryType: typeDocCB.Text);
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }

            Close();
            callback.Invoke(DialogResult);
            RepeatEnter : Cursor = Cursors.Default; SaveItem.Enabled = true;
        }