public void SetWorkers(IList <PERSONCARD> addedWorkers)
 {
     foreach (PERSONCARD worker in addedWorkers)
     {
         PERSONCARD_IN_TRIP tripWorker = model.PERSONCARD_IN_TRIP.Create();
         tripWorker.PERSONCARD = worker;
         pERSONCARDINTRIPBindingSource.Add(tripWorker);
     }
 }
        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 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();
        }