private void ActionsWithDoc(int mode) { switch (mode) { case 1: // Create if (SelectedCompany != null) { // Set default params SelectedOtherDoc = null; DocCompanyName = SelectedCompany.name; SelectedBroker = BrokersList.FirstOrDefault(bl => bl.id == SelectedDefBroker.id); DocCreateDate = DateTime.Now; SelectedDocType = DocTypesList[0]; DocNumber = ""; DocInPost = false; DocQuantity = 1; // Show detials form IncludeVis = Visibility.Visible; ExcludeVis = Visibility.Collapsed; DocDetailsVis = Visibility.Visible; } else { MessagesService.Show("Оповещение", "Не выбрана компания"); } break; case 2: // Edit // Fill form DocCompanyName = SelectedOtherDoc.company.name; SelectedBroker = BrokersList.FirstOrDefault(b => b.id == SelectedOtherDoc.brokerid); DocCreateDate = SelectedOtherDoc.createdate; SelectedDocType = DocTypesList.FirstOrDefault(d => d.id == SelectedOtherDoc.documenttypeid); DocNumber = SelectedOtherDoc.number; DocInPost = SelectedOtherDoc.inpost; DocQuantity = SelectedOtherDoc.quantity; if (DocInPost) { IncludeVis = Visibility.Collapsed; ExcludeVis = Visibility.Visible; } else { IncludeVis = Visibility.Visible; ExcludeVis = Visibility.Collapsed; } DocDetailsVis = Visibility.Visible; break; case 3: // Delete if (SelectedOtherDoc != null) { try { DataBaseClient.DeleteOtherDoc(SelectedOtherDoc.id); } catch { MessagesService.Show("Оповещение", "Ошибка при удалении записи из базы"); } } else { MessagesService.Show("Оповещение", "Не выбран документ"); } break; case 4: // Include // Save otherDoc if need if (SelectedOtherDoc == null) { SaveDoc(); } // Search opened registral var listServ = DataBaseClient.ReadListServ(SelectedOtherDoc.brokerid, 12); int listServId = 0; var listServNumber = DataBaseClient.ReadListServ(); if (listServ == null) { // Create list serv with status opened ListServEF listServItem = new ListServEF() { brokerid = SelectedOtherDoc.brokerid, createdate = DateTime.Now, number = listServNumber.Count > 0 ? listServNumber.Max(l => l.number) + 1 : 1, statusid = 12 }; listServId = DataBaseClient.CreateListServ(listServItem); } else { listServId = listServ.id; } // Search company in envelop var envelop = DataBaseClient.ReadEnvelop(listServId, SelectedOtherDoc.companyid); int envelopId = 0; if (envelop == null) { // Create envelop EnvelopEF envelopItem = new EnvelopEF() { listservid = listServId, companyid = SelectedOtherDoc.companyid, }; envelopId = DataBaseClient.CreateEnvelop(envelopItem); } else { envelopId = envelop.id; } // Create envelop content EnvelopContentEF envelopContent = new EnvelopContentEF() { listservid = listServId, envelopid = envelopId, otherdocid = SelectedOtherDoc.id }; DataBaseClient.CreateEnvelopContent(envelopContent); // Change status inpost SelectedOtherDoc.inpost = true; SelectedOtherDoc.listservnumber = DataBaseClient.ReadListServ(listServId).number; DataBaseClient.UpdateOtherDoc(SelectedOtherDoc); // Update view try { OtherDocsList = new ObservableCollection <OtherDocsEF>(DataBaseClient.ReadOtherDocs(SelectedCompany.id, DateStart, DateEnd)); SelectedOtherDoc = null; DocDetailsVis = Visibility.Collapsed; } catch { } break; case 5: // Exclude int selOthDoc = SelectedOtherDoc.id; var listServStatus = DataBaseClient.ReadEnvelopContentList(); if (listServStatus != null) { if (listServStatus.FirstOrDefault(l => l.otherdocid == selOthDoc).listserv.statusid != 14) { if (!DataBaseClient.DeleteEnvelopContent(selOthDoc)) { MessagesService.Show("Оповещение", "Произошла ошибка при исключении документа из реестра."); } else { try { OtherDocsList = new ObservableCollection <OtherDocsEF>(DataBaseClient.ReadOtherDocs(SelectedCompany.id, DateStart, DateEnd)); SelectedOtherDoc = OtherDocsList.FirstOrDefault(o => o.id == selOthDoc); DocDetailsVis = Visibility.Collapsed; } catch { } } } else { MessagesService.Show("Оповещение", "Конверт в статусе отправлен."); } } break; } }