private void button1_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(number.Text)) { NotificationHelper.ShowError("Ви не вказали номер договору"); return; } if (tenderPlanRecordPicker1.SelectedRecord == null) { NotificationHelper.ShowError("Для реєстрації договору потрібно обрати запис у річному плані."); return; } if ((currentContract.Id == 0) && (fullSum.Value == 0)) { NotificationHelper.ShowError("Сума договору повинна бути більша за нуль"); return; } if (contractorCBList.SelectedItem == null) { NotificationHelper.ShowError("Ви не обрали контрагента"); return; } StringBuilder contractChanges = new StringBuilder(string.Empty); using (TenderContext tc = new TenderContext()) { if (currentContract.Id > 0) { tc.Contracts.Attach(currentContract); // Записываем изменения внесённые пользователем if (currentContract.Sum != fullSum.Value) { contractChanges.Append(string.Format("[Сумма договору змінена з '{0}' на '{1}']\n", currentContract.Sum, fullSum.Value)); } if (!currentContract.Number.Equals(number.Text)) { contractChanges.Append(string.Format("[Номер договору змінений з '{0}' на '{1}']\n", currentContract.Number, number.Text)); } if (currentContract.SignDate != dateOfSigning.Value) { contractChanges.Append(string.Format("[Дата підписання договору змінена з '{0}' на '{1}']\n", currentContract.SignDate.ToShortDateString(), dateOfSigning.Value.ToShortDateString())); } if (currentContract.BeginDate != dateOfStart.Value) { contractChanges.Append(string.Format("[Дата набуття чинності договору змінена з '{0}' на '{1}']\n", currentContract.BeginDate.ToShortDateString(), dateOfStart.Value.ToShortDateString())); } if (currentContract.EndDate != dateOfEnd.Value) { contractChanges.Append(string.Format("[Дата закінчення договору змінена з '{0}' на '{1}']\n", currentContract.EndDate.ToShortDateString(), dateOfEnd.Value.ToShortDateString())); } // Если были изменения - необходимо указать причину изменений if (!string.IsNullOrWhiteSpace(contractChanges.ToString())) { ActionCommentForm af = new ActionCommentForm(); af.ShowDialog(); if (af.ReasonDescription == null) { NotificationHelper.ShowError("Без зазначення причини змін вони не будуть внесені в базу даних!"); return; } else { contractChanges.Append(string.Format("Причина: {0}", af.ReasonDescription)); currentContract.ContractChanges.Add(new ContractChange { DateOfChange = DateTime.Now, ContractId = currentContract.Id, Description = contractChanges.ToString() }); } } } currentContract.Number = number.Text.Trim(); currentContract.SignDate = dateOfSigning.Value; currentContract.BeginDate = dateOfStart.Value; currentContract.EndDate = dateOfEnd.Value; currentContract.ContractorId = (contractorCBList.SelectedItem as Contractor).Id; currentContract.TenderPlanRecordId = tenderPlanRecordPicker1.SelectedRecord.Id; currentContract.Description = description.Text.Trim(); currentContract.Sum = fullSum.Value; if (currentContract.Id == 0) { tc.Contracts.Add(currentContract); } else { tc.Entry <Contract>(currentContract).State = System.Data.Entity.EntityState.Modified; } tc.SaveChanges(); FileManager.UpdateRelatedFilesOfEntity(tc, currentContract.RelatedFiles, relatedFiles, deletingFiles); dbWasChanged = true; NotificationHelper.ShowInfo("Дані успішно збережено до бази!"); this.Close(); } }