public AddEditDkCodeForm(DkCode code)
 {
     wasDbUpdated = false;
     InitializeComponent();
     codeRecord       = code;
     codeTextBox.Text = codeRecord.Code;
     nameTextBox.Text = codeRecord.Name;
 }
        private void button1_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(codeTextBox.Text))
            {
                NotificationHelper.ShowError("Ви не зазначили код");
                return;
            }
            if (!Regex.IsMatch(codeTextBox.Text.Trim(), "[0-9]{8}-[0-9]"))
            {
                NotificationHelper.ShowError("Неправильний формат коду. Код повинен відповідати формату ХХХХХХХХ-Х. Де Х - число від 0 до 9");
                return;
            }
            if (string.IsNullOrWhiteSpace(nameTextBox.Text))
            {
                NotificationHelper.ShowError("Ви не зазначили назву для кода");
                return;
            }

            using (TenderContext tc = new TenderContext())
            {
                if (codeRecord == null)
                {
                    codeRecord = new DkCode();
                }
                else
                {
                    tc.DkCodes.Attach(codeRecord);
                }

                bool codeExist = tc.DkCodes.Where(p => p.Code.Equals(codeTextBox.Text.Trim())).Any();
                if (codeExist && (codeRecord.Id == 0))
                {
                    NotificationHelper.ShowError("Такий код вже існує");
                    return;
                }

                codeRecord.Code = codeTextBox.Text.Trim();
                codeRecord.Name = nameTextBox.Text.Trim();

                if (codeRecord.Id == 0)
                {
                    tc.DkCodes.Add(codeRecord);
                }
                else
                {
                    tc.Entry <DkCode>(codeRecord).State = System.Data.Entity.EntityState.Modified;
                }

                tc.SaveChanges();
                wasDbUpdated = true;
                this.Close();
            }
        }
        private void dkCodesTable_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            DkCode            selectedCode = dkCodesTable.SelectedRows[0].DataBoundItem as DkCode;
            AddEditDkCodeForm af           = new AddEditDkCodeForm(selectedCode);

            af.ShowDialog();

            if (af.WasDbUpdated)
            {
                using (TenderContext tc = new TenderContext())
                {
                    codesList = new BindingList <DkCode>(tc.DkCodes.OrderBy(p => p.Code).ToList());
                    dkCodesTable.DataSource = codesList;
                }
                wasDbUpdated = true;
            }
        }
        private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            DkCode selectedCode = dkCodesTable.SelectedRows[0].DataBoundItem as DkCode;

            using (TenderContext tc = new TenderContext())
            {
                bool codeHasReferences = tc.TenderPlanRecords.Where(p => (p.DkCodeId == selectedCode.Id)).Any();
                if (codeHasReferences)
                {
                    NotificationHelper.ShowError("Неможливо видалити код, оскільки під нього існують записи у річних планах закупівель");
                    return;
                }
                else
                {
                    tc.DkCodes.Attach(selectedCode);
                    tc.DkCodes.Remove(selectedCode);
                    tc.SaveChanges();

                    codesList.Remove(selectedCode);
                    NotificationHelper.ShowInfo("Код успішно видалений!");
                    wasDbUpdated = true;
                }
            }
        }