private void dgvDocs_CellValueChanged(object sender, DataGridViewCellEventArgs e) { if (docsType == DocType.Permission & dgvDocs.CurrentCell.OwningColumn.Name == "NUM_RAZRESH" & e.RowIndex == 0 & dgvDocs.Rows[0].Cells[0].Value != null) { recognizedDiapasone = RegexAnalys.ParseNumbersDiapasone(dgvDocs.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()); if (recognizedDiapasone != null) { FillColumn(recognizedDiapasone.Distinct().ToList()); } } }
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; }
private void SaveEditingBtn_Click(object sender, EventArgs e) { string in_type = null; if (checkBox1.Checked == true) { in_type = "В электронном виде"; } if (checkBox2.Checked == true) { in_type = "На бумажном носителе"; } if ((checkBox1.Checked == true) && (checkBox2.Checked == true)) { in_type = "На электронном и бумажном носителе"; } #region Проверки заполнения if (clientsCB.SelectedValue == null) { MessageBox.Show("Не выбран клиент или организация. Повторите ввод.", "Ошибка заполнения", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (((organizationsCB.Text == "") || organizationsCB.Text == "Начните вводить имя организации") || (in_type == null) || (clientsCB.Text == "") || (costTBox.Text == "")) { MessageBox.Show("Не все поля формы заполнены. \nВнесите всю необходимую информацию и повторите попытку.", "Ошибка заполнения формы", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (((organizationsCB.SelectedIndex == -1) && (organizationsCB.Text != "Частное лицо")) || (clientsCB.SelectedIndex == -1)) { MessageBox.Show("Выбран несуществующий клиент или организация. Проверьте правильность ввода.", "Ошибка заполнения формы", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //if (dateTimePicker1.Value > DateTime.Now) //{ // MessageBox.Show("Дата документа задана не верно", "Ошибка заполнения", MessageBoxButtons.OK, MessageBoxIcon.Warning); // goto RepeatEnter; //} if (memoTB.Text.Length > 4000) { if (MessageBox.Show("Слишком большой объем поля описания.\n\nСохранить введенное значение?", "Внимание", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) != DialogResult.OK) { return; } } #endregion //Если пользователь изменил колличество лпаншетов в списке. Вызовем метод пересчета планшетов. //И запишем, сколько планшетов было ДО редактирования //А также запишем организацию которая была в начале редактирования. Потомучто если пользователь изменить организацию, приплюсоваь планшеты уже нужно будет ей string organization_before = rowToEdit["Организация"].ToString(); int mapCasesBeforeEdit = 0; int requireConfirmActBeforeEdit = 0; if (rowToEdit["MapCasesCount"] != DBNull.Value) { mapCasesBeforeEdit = Convert.ToInt32(rowToEdit["MapCasesCount"]); } if (rowToEdit["RequireConfirmAct"] != DBNull.Value) { requireConfirmActBeforeEdit = Convert.ToInt32(rowToEdit["RequireConfirmAct"]); } int mapCasesCount = RegexAnalys.MapCasesCount(memoTB.Text); try { // if (textBox1.Text != "") // rowToEdit["NumRazresh"] = textBox1.Text; // else rowToEdit["NumRazresh"] = DBNull.Value; rowToEdit["Memo"] = memoTB.Text; rowToEdit["Выдал"] = comboBox3.Text; rowToEdit["Организация"] = organizationsCB.SelectedValue; rowToEdit["Документ"] = typeDocCB.Text; //if (dateTimePicker1.Value != new DateTime(2000, 01, 01)) // rowToEdit["DateRazresh"] = dateTimePicker1.Value; // else rowToEdit["DateRazresh"] = DBNull.Value; rowToEdit["Дата"] = Convert.ToDateTime(textBox3.Text); rowToEdit["in_type"] = in_type; rowToEdit["ClientName"] = clientsCB.Text; rowToEdit["Cost"] = costTBox.Text; rowToEdit["MapCasesCount"] = mapCasesCount; rowToEdit["Client_ID"] = clientsCB.SelectedValue.ToString(); // В сумму планшетов прибавим разностьтого что стало после редактирования и до int actual_RequestToDel = MapCasesManager.GetActualRequireAct(Convert.ToInt32(rowToEdit["Номер"])); if ((organization_before != rowToEdit["Организация"].ToString())) { MapCasesManager.SetDBMapCasesSumm(organization_before, -requireConfirmActBeforeEdit); //у старой организации удаляем все ее планшеты из этой записи MapCasesManager.SetDBMapCasesSumm(organizationsCB.Text, mapCasesCount); //а новой прибавляем то что введено rowToEdit["RequireConfirmAct"] = mapCasesCount; } else { MapCasesManager.SetDBMapCasesSumm(organizationsCB.Text, mapCasesCount - mapCasesBeforeEdit); rowToEdit["RequireConfirmAct"] = (requireConfirmActBeforeEdit + (mapCasesCount - mapCasesBeforeEdit) >= 0) ? requireConfirmActBeforeEdit + (mapCasesCount - mapCasesBeforeEdit) : 0; } var docsForChange = GetDocsAfterEdit(); bool insertSucsedeed = false, deleteSucsedeed = false; deleteSucsedeed = dm.DeleteDocsForId(editId); if (deleteSucsedeed) { insertSucsedeed = dm.InsertDocuments(docsForChange); } if (deleteSucsedeed & insertSucsedeed) { RowEdit.ChangeRow(rowToEdit); } else { throw new Exception("Не удалось записать документы в базу данных. Изменение записи отменено."); } } catch (Exception ex) { MessageBox.Show(ex.Message); } this.Close(); callback(DialogResult.OK); }