private void button1_Click(object sender, EventArgs e)
        {
            if (estimatesCBList.SelectedItem == null)
            {
                NotificationHelper.ShowError("Ви не вибрали кошторис");
                return;
            }

            if (mainKekv.SelectedItem == null)
            {
                NotificationHelper.ShowError("Ви не вибрали основний КЕКВ");
                return;
            }

            if (altKekv.SelectedItem == null)
            {
                NotificationHelper.ShowError("Ви не вибрали старий КЕКВ");
                return;
            }

            if (dkCodeSum.Value == 0 && planRecord == null)
            {
                NotificationHelper.ShowError("Сума повинна бути більша за 0");
                return;
            }

            if (string.IsNullOrWhiteSpace(conctretePlanItemName.Text.Trim()))
            {
                NotificationHelper.ShowError("Ви не вказали конкретну назву предмету");
                return;
            }

            if (dkCodesCBList.SelectedItem == null)
            {
                NotificationHelper.ShowError("Ви не вибрали код за ДК");
                return;
            }

            if (isCodeRepeatCheckBox.Checked && string.IsNullOrWhiteSpace(codeRepeatReasonTextBox.Text))
            {
                NotificationHelper.ShowError("Ви не вказали причину створення ще одного запису з існуючим кодом");
                return;
            }

            string msg = string.Empty;
            string actionDescriptionPrefix = string.Empty;

            if (planRecord != null)
            {
                msg = "Вкажіть причину вказаної зміни коду";
                actionDescriptionPrefix = "[ЗМІНА КОДУ]";
            }
            else
            {
                msg = "Прокоментуйте створення коду (необов'язково)";
                actionDescriptionPrefix = "[СТВОРЕННЯ КОДУ]";
            }

            ActionCommentForm af = new ActionCommentForm(msg);

            af.ShowDialog();

            string actionDescription = af.ReasonDescription;

            // Для изменение кода указание причины необходимо
            if (planRecord != null && actionDescription == null)
            {
                NotificationHelper.ShowError("Зміна коду без зазначення причини неможлива");
                return;
            }

            if (planRecord == null)
            {
                planRecord = new TenderPlanRecord();
            }

            using (TenderContext tc = new TenderContext())
            {
                if (planRecord.Id != 0)
                {
                    tc.TenderPlanRecords.Attach(planRecord);
                    tc.Entry <TenderPlanRecord>(planRecord).State = System.Data.Entity.EntityState.Modified;
                }
                else
                {
                    tc.TenderPlanRecords.Add(planRecord);
                }

                Estimate selectedEstimate    = estimatesCBList.SelectedItem as Estimate;
                KekvCode selectedPrimaryKekv = (mainKekv.SelectedItem as KekvRemain).Kekv;
                KekvCode selectedAltKekv     = (altKekv.SelectedItem as KekvRemain).Kekv;

                planRecord.EstimateId      = selectedEstimate.Id;
                planRecord.DkCodeId        = Convert.ToInt32(dkCodesCBList.SelectedValue);
                planRecord.PrimaryKekvId   = selectedPrimaryKekv.Id;
                planRecord.SecondaryKekvId = selectedAltKekv.Id;
                planRecord.DateOfCreating  = planRecord.DateOfLastChange = DateTime.Now;
                planRecord.ProcedureType   = (ProcedureType)procedureTypeCBList.SelectedValue;

                planRecord.CodeRepeatReason = isCodeRepeatCheckBox.Checked ? codeRepeatReasonTextBox.Text.Trim() : null;

                decimal changeOfSum = dkCodeSum.Value;
                planRecord.IsTenderComplete = isProcedureComplete.Checked;
                planRecord.TenderBeginDate  = tenderBeginDate.Value;
                planRecord.PlannedSum       = dkCodeSum.Value;
                planRecord.ConcreteName     = conctretePlanItemName.Text;
                planRecord.DateOfLastChange = DateTime.Now;
                planRecord.ProtocolNum      = protocolNum.Text.Trim();
                planRecord.ProtocolDate     = protocolDate.Value;
                planRecord.BasedOnNeed      = basedOnNeed.Checked;

                TenderPlanRecordChange tpChange = new TenderPlanRecordChange();
                if (!string.IsNullOrWhiteSpace(actionDescription))
                {
                    tpChange.Description = actionDescriptionPrefix + '\n' + actionDescription;
                }
                else
                {
                    tpChange.Description = actionDescriptionPrefix;
                }
                tpChange.DateOfChange        = DateTime.Now;
                tpChange.TenderPlanRecordId  = planRecord.Id;
                tpChange.ChangeOfSum         = changeOfSum;
                tpChange.ChangedConcreteName = planRecord.ConcreteName;

                tc.SaveChanges();

                FileManager.UpdateRelatedFilesOfEntity(tc, planRecord.RelatedFiles, relatedFiles, deletingFiles);

                planRecord.Changes.Add(tpChange);
                tc.TenderPlanRecordChanges.Add(tpChange);
                tc.SaveChanges();

                NotificationHelper.ShowInfo("Зміни до річного плану успішно внесено");
                dbWasChanged = true;
                Close();
            }
        }
Exemple #2
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();
            }
        }