private void DeleteWorkerButton_Click(object sender, EventArgs e)
        {
            var rows = WorkersGridView.SelectedRows;

            if (rows.Count < 1)
            {
                MyMsgBox.showInfo("Вы не выделили строку");
                return;
            }
            if (MyMsgBox.showAsk("Вы точно хотите удалить?") == false)
            {
                return;
            }

            for (int i = 0; i < rows.Count; i++)
            {
                WorkersGridView.Rows.Remove(rows[i]);
            }
        }
 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 KomandirovkaForm_FormClosing(object sender, FormClosingEventArgs e)
 {
     e.Cancel = !MyMsgBox.showAsk("Вы точно хотите закрыть окно? Все несохранённые изменения будут утеряны!");
 }
        /*
         * Сохранение
         *
         * */
        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);
        }