public bool checkDateOnNull(DateTime?date, string nameDate) { if (date == null) { MyMsgBox.showError($"{nameDate} не установлена"); return(false); } return(true); }
/* * Для получения инфы по командировке UPDTRIP c перв.ключом == pk_UPDTRIP, её редактирования и удаления * **/ public void SetTrip(decimal pkUpdtrip) { try { trip = model.UPDTRIP.Find(pkUpdtrip); if (trip == null) { throw new Exception("Командировки с таким ключом не найдено!"); } } catch (Exception except) { MyMsgBox.showError("Не удалось найти подробную информацию"); Console.Error.WriteLine(except.Message); return; } SetWorkers(trip.PERSONCARD_IN_TRIP); foreach (TRIP_ORG org in trip.TRIP_ORG) { AddOrgTrip(org); } if (trip.PRIKAZ != null) { NumPrikazTextBox.Text = trip.PRIKAZ.NUMDOC; DatePrikaz.Value = trip.PRIKAZ.CREATEDATE ?? DateTime.Now; IsProject.Checked = trip.PRIKAZ.ISPROJECT.Equals("1"); // По-умолчанию для режима редактирования GenNumPrikaz.Checked = false; try { // Если мы сами генерировали GenNumPrikaz.Checked = Decimal.Parse(trip.PRIKAZ.NUMDOC) == trip.PRIKAZ.PK_PRIKAZ; } catch (Exception) { // Забить } GenNumPrikaz_CheckedChanged(null, null); } ReasonTextBox.Text = trip.OSNOVANIE ?? ""; if (trip.OSNOVANIEDATE != null) { isDateReasonCheckBox.Checked = true; isDateReasonCheckBox_CheckedChanged(null, null); DateReason.Value = (DateTime)trip.OSNOVANIEDATE; } else { isDateReasonCheckBox.Checked = false; } NoteTextBox.Text = trip.NOTE ?? ""; }
private void button3_Click(object sender, EventArgs e) { pERSONCARDBindingSource.Clear(); var surname = SurNameTextBox.Text; var name = NameTextBox.Text; var midname = MidNameTextBox.Text; var tabNum = TabNumTextBox.Text; if (string.IsNullOrWhiteSpace(surname) && string.IsNullOrWhiteSpace(name) && string.IsNullOrWhiteSpace(midname) && string.IsNullOrWhiteSpace(tabNum)) { MyMsgBox.showError("Заполните хотя бы 1 поле"); return; } IQueryable <PERSONCARD> query = model.PERSONCARD; if (!string.IsNullOrWhiteSpace(surname)) { query = query.Where(worker => worker.SURNAME == surname); } if (!string.IsNullOrWhiteSpace(name)) { query = query.Where(worker => worker.NAME == name); } if (!string.IsNullOrWhiteSpace(midname)) { query = query.Where(worker => worker.MIDDLENAME == midname); } if (!string.IsNullOrWhiteSpace(tabNum)) { decimal tabNumInt; try { tabNumInt = Decimal.Parse(tabNum); Console.WriteLine(tabNumInt); }catch (Exception expr) { MyMsgBox.showError("Табельный номер должен содержать только числа"); Console.WriteLine(expr.Message); return; } query = query.Where(worker => worker.TABEL_NUM == tabNumInt); } if (query.Count() == 0) { MyMsgBox.showInfo("Ничего не найдено"); return; } result = new List <PERSONCARD>(query.Count()); foreach (PERSONCARD worker in query) { result.Add(worker); pERSONCARDBindingSource.Add(worker); } }
public bool checkedDates(DateTime?start, DateTime?finish, bool showMsg = true) { if (!checkDateOnNull(start, "Дата начала") || !checkDateOnNull(finish, "Дата окончания") || ((DateTime)start).CompareTo(finish) > 0) { if (showMsg && ((DateTime)start).CompareTo(finish) > 0) { MyMsgBox.showError("Дата начала не может быть позже даты окончания"); } return(false); } return(true); }
public bool checkString(string str, string msg = "") { if (string.IsNullOrWhiteSpace(str)) { if (msg != "") { MyMsgBox.showError(msg); } return(false); } return(true); }
/* * Для добавления командировки из личной карточки сотрудника * **/ public void SetOneWorker(decimal pkPerson) { // Нужно найти именно текущей моделью try { SetWorkers(new List <PERSONCARD> { model.PERSONCARD.Find(pkPerson) }); } catch (Exception exception) { Console.Error.WriteLine(exception.Message); MyMsgBox.showError("Не удалось открыть форму. Скорее всего, такого работника нет в базе"); } }
/* * Для открытия командировки по приказу * **/ public void SetPrikaz(long selectedPrikazPkPrikaz) { UPDTRIP trip = null; try{ trip = model.UPDTRIP.First(t => t.PK_PRIKAZ == selectedPrikazPkPrikaz); if (trip == null) { throw new NullReferenceException("С этим приказом не связано ни одной командировки"); } } catch (Exception exception) { MyMsgBox.showError(exception.Message); return; } SetTrip(trip.PK_TRIP); }
private void DeleteButton_Click(object sender, EventArgs e) { if (trip == null) { MyMsgBox.showError("Нельзя удалить ещё не добавленную командировку"); return; } else if (MyMsgBox.showAsk("Вы уверены, что хотите удалить командировку ?")) { model.UPDTRIP.Remove(trip); try { model.SaveChanges(); MyMsgBox.showInfo("Удалено!"); } catch (Exception exc) { Console.Error.WriteLine(exc); MyMsgBox.showError("Ошибка при удалении"); } } }
private void button1_Click(object sender, EventArgs e) { var rows = dataGridView1.SelectedRows; if (rows.Count == 0) { MyMsgBox.showError("Ничего не выделено"); return; } List <PERSONCARD> selected = new List <PERSONCARD>(); foreach (DataGridViewRow row in rows) { selected.Add(result[row.Index]); } komandirovkaForm.SetWorkers(selected); MyMsgBox.showInfo("Добавлено!"); this.Close(); komandirovkaForm.Show(); }
/* * Для добавления командировки из личной карточки сотрудника * **/ public void SetOneWorkerByTabelNumber(decimal tabNumber) { PERSONCARD personcard; try { personcard = model.PERSONCARD.First(p => p.TABEL_NUM == tabNumber); if (personcard == null) { throw new NullReferenceException("personcard == null"); } } catch (Exception exception) { Console.Error.WriteLine(exception.Message); MyMsgBox.showError("Не удалось открыть форму. Скорее всего, такого работника нет в базе"); return; } SetWorkers(new List <PERSONCARD> { personcard }); }
public bool checkWorker(PERSONCARD_IN_TRIP worker) { if (worker == null || worker.PERSONCARD == null) { return(false); } if (!checkedDates(worker.STARTDATE, worker.ENDDATE, false)) { MyMsgBox.showError($"Для рабоника №{worker.TABEL_NUM} некорректные даты"); return(false); } if (!checkString(worker.FINANCE, $"Для рабоника №{worker.TABEL_NUM} некорректный источник финансов")) { return(false); } if (!checkString(worker.GOAL, $"Для рабоника №{worker.TABEL_NUM} некорректная цель")) { return(false); } return(true); }
private void SaveButton_Click(object sender, EventArgs e) { var country = CountryComboBox.SelectedValue; if (country == null) { MyMsgBox.showError("Страна не выбрана!"); return; } var city = CityTextBox.Text; if (city == null) { MyMsgBox.showError("Введите город"); return; } var org = OrganizationTextBox.Text; if (string.IsNullOrEmpty(org)) { MyMsgBox.showError("Введите название организации"); return; } var places = model.PLACE_TRIP; //Вдруг такое уже есть PLACE_TRIP neededPlace = null; foreach (PLACE_TRIP place in places) { if (String.Compare(place.City, city, StringComparison.OrdinalIgnoreCase) == 0) { neededPlace = place; break; } } if (neededPlace == null) { PLACE_TRIP newPlace = new PLACE_TRIP(); string test = country as string; newPlace.Country = test; newPlace.City = city; newPlace.createName(); model.PLACE_TRIP.Add(newPlace); model.SaveChanges(); neededPlace = newPlace; Console.WriteLine($"id = {neededPlace.PK_PLACE_TRIP}"); //neededPlace = model.PLACE_TRIP.FirstOrDefault(place => place.NAME == newPlace.NAME); } TRIP_ORG trip_org = model.TRIP_ORG.Create(); trip_org.NAME = org; trip_org.PLACE_TRIP = neededPlace; model.TRIP_ORG.Add(trip_org); model.SaveChanges(); komandirovkaForm.UpdatePlaces(); Console.WriteLine($"id org = {trip_org.PK_TRIP_ORG}"); komandirovkaForm.AddOrgTrip(trip_org); MyMsgBox.showInfo("Добавлено!"); this.Close(); komandirovkaForm.Show(); }
private void ExportButton_Click(object sender, EventArgs e) { Application exApp; try { exApp = new Application(); } catch (Exception) { MyMsgBox.showError("Не удалось открыть Excel для заполения данных."); return; } string PATH_TO_T9 = "templates\\T-9.xls"; string PATH_TO_T9A = "templates\\T-9A.xls"; if (!Directory.Exists("templates")) { Directory.CreateDirectory("templates"); } // спешл фор Астахова ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; // try // { // // спешл фор 7 винда // //if(Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName", "").ToString().Contains("7")) // System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12; // }catch(Exception){} try { if (!File.Exists(PATH_TO_T9)) { new WebClient().DownloadFile(new Uri("https://github.com/pi62/templates/raw/master/T-9.xls"), PATH_TO_T9); } if (!File.Exists(PATH_TO_T9A)) { new WebClient().DownloadFile(new Uri("https://github.com/pi62/templates/raw/master/T-9A.xls"), PATH_TO_T9A); } } catch (Exception) { MyMsgBox.showError("Не удалось скачать шаблоны для заполнения."); return; } var saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.InitialDirectory = Directory.GetCurrentDirectory(); saveFileDialog1.DefaultExt = "xls"; saveFileDialog1.ShowDialog(); var savePath = saveFileDialog1.FileName; if (String.IsNullOrWhiteSpace(savePath)) { return; } if (!Save() || trip == null) { MyMsgBox.showError("Не удалось сохранить командировку. Экспорт невозможен. Проверьте данные и попробуйте ещё раз"); return; } Workbook excelappworkbooks; try { if (trip.PERSONCARD_IN_TRIP.Count > 1) { excelappworkbooks = exApp.Workbooks.Open(Directory.GetCurrentDirectory() + "\\" + PATH_TO_T9A, Type.Missing, false, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); } else { excelappworkbooks = exApp.Workbooks.Open(Directory.GetCurrentDirectory() + "\\" + PATH_TO_T9, Type.Missing, false, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); } } catch (Exception except) { Console.Error.WriteLine(except.Message); MyMsgBox.showError("Не удалось открыть шаблон"); return; } if (excelappworkbooks == null) { MyMsgBox.showError("Не удалось открыть шаблон"); return; } try { if (trip.PERSONCARD_IN_TRIP.Count > 1) { Worksheet excelsheets = excelappworkbooks.Worksheets.Item[1]; OUR_ORG org = model.OUR_ORG.First <OUR_ORG>(); if (trip.PRIKAZ.ISPROJECT.Equals("1")) { excelsheets.Cells[9, 34].Value = "ПРОЕКТ ПРИКАЗА"; excelsheets.Cells[10, 34].Value = "(распоряжения)"; } else { excelsheets.Cells[9, 34].Value = "ПРИКАЗ"; excelsheets.Cells[10, 34].Value = "(распоряжение)"; } excelsheets.Cells[5, 1].Value = org.NAME; excelsheets.Cells[5, 93] = org.OKPO; excelsheets.Cells[9, 61] = trip.PRIKAZ.NUMDOC; if (trip.PRIKAZ.CREATEDATE != null) { excelsheets.Cells[9, 80] = trip.PRIKAZ.CREATEDATE.Value.ToString("dd.MM.yyyy"); } int i = 0; foreach (PERSONCARD_IN_TRIP person in trip.PERSONCARD_IN_TRIP) { if (i == 3) { MyMsgBox.showError("В одном приказе не больше 3х человек"); break; } excelsheets.Cells[15, 44 + 22 * i].Value = person.SURNAME + " " + person.NAME + " " + person.MIDDLENAME; excelsheets.Cells[16, 44 + 22 * i].Value = person.TABEL_NUM; if (person.PODRAZDELORG != null) { excelsheets.Cells[17, 44 + 22 * i].Value = person.PODRAZDELORG.NAME; } excelsheets.Cells[18, 44 + 22 * i].Value = person.JOB_POS.NAME; excelsheets.Cells[21, 44 + 22 * i].Value = person.STARTDATE.Value.ToString("dd.MM.yyyy"); excelsheets.Cells[22, 44 + 22 * i].Value = person.ENDDATE.Value.ToString("dd.MM.yyyy"); excelsheets.Cells[23, 44 + 22 * i].Value = (int)person.ENDDATE.Value.Subtract(person.STARTDATE.Value).TotalDays; excelsheets.Cells[24, 44 + 22 * i].Value = person.GOAL; excelsheets.Cells[25, 44 + 22 * i].Value = person.FINANCE; i++; } foreach (TRIP_ORG tripOrg in trip.TRIP_ORG) { excelsheets.Cells[19, 44].Value += tripOrg.PLACE_TRIP.NAME; excelsheets.Cells[19, 44].Value += ", " + tripOrg.NAME; excelsheets.Cells[19, 44].Value += "; "; } if (trip.OSNOVANIEDATE != null) { excelsheets.Cells[30, 36].Value = trip.OSNOVANIE + " от " + trip.OSNOVANIEDATE.Value.ToString("dd.MM.yyyy"); } else { excelsheets.Cells[30, 36].Value = trip.OSNOVANIE; } } else { Worksheet excelsheets = excelappworkbooks.Worksheets.Item[1]; OUR_ORG org = model.OUR_ORG.First(); if (trip.PRIKAZ.ISPROJECT.Equals("1")) { excelsheets.Cells[13, 19].Value = "ПРОЕКТ ПРИКАЗА"; excelsheets.Cells[14, 19].Value = "(распоряжения)"; } else { excelsheets.Cells[13, 19].Value = "ПРИКАЗ"; excelsheets.Cells[14, 19].Value = "(распоряжение)"; } excelsheets.Cells[7, 1].Value = org.NAME; excelsheets.Cells[7, 45] = org.OKPO; excelsheets.Cells[13, 35] = trip.PRIKAZ.NUMDOC; if (trip.PRIKAZ.CREATEDATE != null) { excelsheets.Cells[13, 48] = trip.PRIKAZ.CREATEDATE.Value.ToString("dd.MM.yyyy"); } PERSONCARD_IN_TRIP person = trip.PERSONCARD_IN_TRIP.First(); excelsheets.Cells[18, 1].Value = person.SURNAME + " " + person.NAME + " " + person.MIDDLENAME; excelsheets.Cells[18, 47].Value = person.TABEL_NUM; if (person.PODRAZDELORG != null) { excelsheets.Cells[20, 1].Value = person.PODRAZDELORG.NAME; } excelsheets.Cells[22, 1].Value = person.JOB_POS.NAME; int i = 0; foreach (TRIP_ORG tripOrg in trip.TRIP_ORG) { if (excelsheets.Cells[24 + i, 1].Text.Length > 100) { if (i == 0) { i += 2; } else { i++; } } excelsheets.Cells[24 + i, 1].Value += tripOrg.PLACE_TRIP.NAME; excelsheets.Cells[24 + i, 1].Value += ", " + tripOrg.NAME; excelsheets.Cells[24 + i, 1].Value += " ; "; } excelsheets.Cells[33, 3].Value = person.STARTDATE.Value.Day; excelsheets.Cells[33, 7].Value = person.STARTDATE.Value.ToString("MMMM"); excelsheets.Cells[33, 21].Value = person.STARTDATE.Value.ToString("yy"); excelsheets.Cells[33, 30].Value = person.ENDDATE.Value.Day; excelsheets.Cells[33, 34].Value = person.ENDDATE.Value.ToString("MMMM"); excelsheets.Cells[33, 48].Value = person.ENDDATE.Value.ToString("yy"); excelsheets.Cells[31, 8].Value = (int)person.ENDDATE.Value.Subtract(person.STARTDATE.Value).TotalDays; excelsheets.Cells[35, 6].Value = person.GOAL; excelsheets.Cells[38, 18].Value = person.FINANCE; if (trip.OSNOVANIEDATE != null) { excelsheets.Cells[42, 15].Value = trip.OSNOVANIE + " от " + trip.OSNOVANIEDATE.Value.ToString("dd.MM.yyyy"); } else { excelsheets.Cells[42, 15].Value = trip.OSNOVANIE; } } } catch (Exception except) { Console.Error.WriteLine(except.Message); } MyMsgBox.showInfo("Готово!"); excelappworkbooks.SaveAs(savePath); exApp.Quit(); }
private void WorkersGridView_DataError(object sender, DataGridViewDataErrorEventArgs e) { MyMsgBox.showError("Дата должна быть в формате дд.мм.гггг"); }
/* * Сохранение * * */ public bool Save() { if (trip == null) { trip = new UPDTRIP(); } DateTime allStartDate = DateTime.Now, allFinishDate = DateTime.Now; String allPurpose = "", allFinance = ""; if (isSameDatesCheckBox.Checked) { allStartDate = startDate.Value; allFinishDate = finishDate.Value; if (!checkedDates(allStartDate, allFinishDate)) { return(false); } } if (PurposeCheckBox.Checked) { allPurpose = PurposeTextBox.Text; if (!checkString(allPurpose, "Цель - пустая строка")) { return(false); } } if (FinanceCheckBox.Checked) { allFinance = FinanceTextBox.Text; if (!checkString(allFinance, "Источник финансов - пустая строка")) { return(false); } } String numPrikaz, reason, note; DateTime datePrikaz; // Основание reason = ReasonTextBox.Text; if (!checkString(reason, "Основание - пустая строка")) { return(false); } trip.OSNOVANIE = reason; if (isDateReasonCheckBox.Checked) { if (checkDateOnNull(DateReason.Value, "Дата основания")) { trip.OSNOVANIEDATE = DateReason.Value; } else { return(false); } } // Примечание note = NoteTextBox.Text; trip.NOTE = note; // Организации List <TRIP_ORG> addedOrgs = new List <TRIP_ORG>(); int countOrgs = 0; foreach (DataGridViewRow row in placesView.Rows) { decimal pk_org; try { if ((row.Cells[2] as DataGridViewComboBoxCell).Value == null) { throw new Exception(); } pk_org = (Decimal)(row.Cells[2] as DataGridViewComboBoxCell).Value; } catch (Exception) { //Игнорируем continue; } if (pk_org == 0) { Console.WriteLine("пк орг = 0"); continue; } TRIP_ORG org = model.TRIP_ORG.Find(pk_org); if (org == null) { Console.WriteLine("орг = 0, но пкОрг != 0"); continue; } addedOrgs.Add(org); if (trip.TRIP_ORG.Contains(org) == false) { trip.TRIP_ORG.Add(org); } countOrgs++; } if (countOrgs == 0) { MyMsgBox.showError("Добавьте хотя бы 1 организацию"); return(false); } DeleteFromList <TRIP_ORG>(addedOrgs, trip.TRIP_ORG); //Люди //Костылёк PERSONCARD workerForAddInPrikaz = null; List <PERSONCARD_IN_TRIP> addedWorkers = new List <PERSONCARD_IN_TRIP>(); foreach (PERSONCARD_IN_TRIP worker in pERSONCARDINTRIPBindingSource) { if (isSameDatesCheckBox.Checked) { worker.STARTDATE = allStartDate; worker.ENDDATE = allFinishDate; } if (PurposeCheckBox.Checked) { worker.GOAL = allPurpose; } if (FinanceCheckBox.Checked) { worker.FINANCE = allFinance; } if (checkWorker(worker)) { if (workerForAddInPrikaz == null) { workerForAddInPrikaz = worker.PERSONCARD; } addedWorkers.Add(worker); if (trip.PERSONCARD_IN_TRIP.Contains <PERSONCARD_IN_TRIP>(worker) == false) { trip.PERSONCARD_IN_TRIP.Add(worker); } } else { if (!MyMsgBox.showAsk("Найдены работники с невалидными данными. Пропустить их(ДА) или остановить сохранение(НЕТ)")) { return(false); } } } if (workerForAddInPrikaz == null) { MyMsgBox.showError("Добавьте хотя бы 1 человека"); return(false); } DeleteFromList <PERSONCARD_IN_TRIP>(addedWorkers, trip.PERSONCARD_IN_TRIP); //Приказ datePrikaz = DatePrikaz.Value; if (trip.PRIKAZ == null) { trip.PRIKAZ = new PRIKAZ(); trip.PRIKAZ.PK_TYPE_PRIKAZ = 2; trip.PRIKAZ.PK_OUR_ORG = 1; if (trip.PERSONCARD_IN_TRIP.Count > 1) { trip.PRIKAZ.OKUD = "0301023"; } else { trip.PRIKAZ.OKUD = "0301022"; } trip.PRIKAZ.OKPO = model.OUR_ORG.First().OKPO ?? ""; } //Костылёк if (workerForAddInPrikaz != null) { trip.PRIKAZ.PK_PERSONCARD = workerForAddInPrikaz.PK_PERSONCARD; } if (checkDateOnNull(DatePrikaz.Value, "Дата приказа")) { trip.PRIKAZ.CREATEDATE = datePrikaz; } else { return(false); } trip.PRIKAZ.ISPROJECT = IsProject.Checked ? "1" : "0"; if (GenNumPrikaz.Checked) { if (trip.PRIKAZ.PK_PRIKAZ != 0) { numPrikaz = trip.PRIKAZ.PK_PRIKAZ.ToString(); } else { long sequenceGen = model.Database.SqlQuery <long>("Select ADMIN.prikaz_seq.NEXTVAL from dual") .SingleOrDefault(); numPrikaz = sequenceGen.ToString(); trip.PRIKAZ.PK_PRIKAZ = sequenceGen; } } else { numPrikaz = NumPrikazTextBox.Text; } if (!checkString(numPrikaz, "Номер приказа - пустая строка")) { return(false); } trip.PRIKAZ.NUMDOC = numPrikaz; //Новая или старая if (trip.PK_TRIP != 0) { model.Entry <UPDTRIP>(trip).State = EntityState.Modified; } else { model.UPDTRIP.Add(trip); } try { model.SaveChanges(); } catch (Exception except) { Console.Error.WriteLine(except.Message); return(false); } return(true); }