コード例 #1
0
        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();
            }
        }