/// <summary> /// Lösche diese Serienbrief-Vorlage aus der Datenbank /// </summary> public void deleteThisFormletterPattern() { // Zuerst die Spaltenzuweisungen IEnumerable <ColumnAssignment> assignments = ColumnAssignment.GetColumnAssignments(null, pID); foreach (var assignment in assignments) { int id = assignment.ColumnAssignmentID; ColumnAssignment.Delete(id); } // dann die FilterSets IEnumerable <FilterSet> filterSets = FilterSet.GetFilterSets(null, pID); foreach (var set in filterSets) { // Hole die IDs alle Filter dieses FilterSets int fsID = set.FilterSetID; IEnumerable <Filter> filters = Filter.GetFilters(null, fsID); foreach (var filter in filters) { int fid = filter.FilterID; Filter.Delete(fid); } FilterSet.Delete(fsID); } // dann das formletterPattern FormletterPattern.Delete(this.pID); }
/// <summary> /// Liste mit Serienbriefen (formletter_pattern) aktualisieren /// </summary> private void refreshFormletterPatternList() { // Fülle Liste mit Serienbriefen List <FormletterPattern> formletterPatterns = FormletterPattern.GetFormletterPatterns().ToList <FormletterPattern>(); List <FormletterPatternItem> formletterPatternItems = new List <FormletterPatternItem>(); foreach (var pattern in formletterPatterns) { formletterPatternItems.Add(new FormletterPatternItem(pattern.Name, pattern.FormletterPatternID)); } DataContext = formletterPatternItems; }
/// <summary> /// Bestätigung Druck /// Generiert Daten und öffnet LibreOFfice /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnConfirm_Click(object sender, RoutedEventArgs e) { FormletterPattern frmltrPattern = FormletterPattern.GetFormletterPatterns(formletterPatternID).ToList().FirstOrDefault(); FormletterFilterData formletterFilterData = new FormletterFilterData(formletterPatternID); bool success = formletterFilterData.fillCsvFile(); if (success) { LibreOffice.openWithWriter(frmltrPattern.FileName, false, false); } // Generiere wieder die Druckseite KPage formletterPrint = new pFormletterPrint(); SinglePage formletter = new SinglePage(IniParser.GetSetting("FORMLETTER", "formletterPrint"), formletterPrint); }
/// <summary> /// Button-Klick-Funktion für "Serienbrief-Vorlage speichern"-Button /// </summary> /// <param name="senderButton">die Instanz des sendenden Buttons</param> private void saveFormletterTemplate(Button senderButton) { try { // When using tabs, you can retrieve a page instance included in a tab using this function, giving the page type pFormletterFilterSelection pageFilter = getPageFromTabs <pFormletterFilterSelection>(); pFormletterFileLinking pageFile = getPageFromTabs <pFormletterFileLinking>(); pFormletterTextFields pageText = getPageFromTabs <pFormletterTextFields>(); // Prüfe ob alle Eingaben richtig sind if (pageFilter.allFilterSets.Count == 0) { MessageBoxEnhanced.Error(IniParser.GetSetting("ERRORMSG", "noFilterSet")); pageFilter.parentTabControl.SelectedIndex = 0; return; } if (pageFile.lbFileName.Content.Equals("")) { MessageBoxEnhanced.Error(IniParser.GetSetting("ERRORMSG", "noFormletter")); pageFile.parentTabControl.SelectedIndex = 1; return; } if (!pageFile.validateLinkings()) { MessageBoxEnhanced.Error(IniParser.GetSetting("ERRORMSG", "noAssignment")); pageFile.parentTabControl.SelectedIndex = 1; return; } if (!pageText.validateTextFields()) { MessageBoxEnhanced.Error(IniParser.GetSetting("ERRORMSG", "noTextField")); pageText.parentTabControl.SelectedIndex = 2; return; } // Hole alle Filter-Sets List <FilterSetModel> filterSets = pageFilter.allFilterSets; // Neues FormletterPatternModelDB (Serienbriefvorlage) anlegen string pName = pageText.tbPatternName.Text; string saluationM = pageText.tbSaluationM.Text; string saluationF = pageText.tbSaluationF.Text; string saluationN = pageText.tbSaluationN.Text; string filename = pageFile.tbFileName.Text.Replace(System.IO.Directory.GetCurrentDirectory(), "%PROGRAMPATH%"); string text = ""; int frmltrPatternID = FormletterPattern.Add(pName, saluationM, saluationF, saluationN, filename, text); // Bearbeite alle FilterSets foreach (var set in filterSets) { string name = ""; // Für Filter-Sets leer, nur von Listen/Statistiken verwendet string linking = set.linkingType; int filterSetID = FilterSet.Add(name, linking, frmltrPatternID); // Bearbeite alle Filter zu jedem Set foreach (var filter in set.filterList) { string table = filter.group.ToString(); string type = filter.criterion.ToString(); string operation = filter.operation.ToString(); string value = filter.value; int filterID = Filter.Add(filterSetID, table, type, operation, value); } } // Hole alle Spaltenzuordnungen List <FormletterColumnCsvDocumentAssignment> list = pageFile.getAssignments(); // Schreibe Spaltenzuordnungen in die Datenbank foreach (var assignment in list) { string csvColumn = assignment.csv_col_name; string databaseTable = assignment.formletterTableAssignment.group.ToString(); string databaseColumn = assignment.formletterTableAssignment.field.ToString(); ColumnAssignment.Add(frmltrPatternID, csvColumn, databaseTable, databaseColumn); } //Leere Formular pageFilter.resetEverything(); pageFile.resetEverything(); pageText.resetEverything(); KPage pageFormletterAdmin = new KöTaf.WPFApplication.Views.Formletter.pFormletterAdministration(); SinglePage singlePage = new SinglePage(IniParser.GetSetting("FORMLETTER", "formletterAdmin"), pageFormletterAdmin); } catch { MessageBoxEnhanced.Error(IniParser.GetSetting("ERRORMSG", "formletterCreate")); } }
/// <summary> /// Erzeugt neues Filter-Datenbankobjekt anhand einer formletter_pattern-ID /// </summary> /// <param name="patternID"></param> public FormletterPatternModelDB(int patternID) { filterSetModels = new List <FilterSetModel>(); //formletterTableAssignments = new List<FormletterTableAssignment>(); formletterColumnCsvDocumentAssignments = new List <FormletterColumnCsvDocumentAssignment>(); // Lese zurück IList <FormletterPattern> patterns = FormletterPattern.GetFormletterPatterns(patternID).ToList <FormletterPattern>(); // Es gibt genau einen formletterPattern FormletterPattern pattern = patterns[0]; // Strings füllen this.name = SafeStringParser.safeParseToStr(pattern.Name); this.saluation_m = SafeStringParser.safeParseToStr(pattern.SaluationM); this.saluation_f = SafeStringParser.safeParseToStr(pattern.SaluationF); this.saluation_n = SafeStringParser.safeParseToStr(pattern.SaluationNT); this.formletter_filename = SafeStringParser.safeParseToStr(pattern.FileName); this.csv_filename = SafeStringParser.safeParseToStr(pattern.FileName).Replace(".odt", ".csv"); this.letterText = SafeStringParser.safeParseToStr(pattern.Text); // pattern ID pID = pattern.FormletterPatternID; // füge diesem formletterPattern alle filterSets hinzu IEnumerable <FilterSet> filterSets = FilterSet.GetFilterSets(null, pID); foreach (var set in filterSets) { // Hole die IDs alle Filter dieses FilterSets int fsID = set.FilterSetID; IEnumerable <Filter> filters = Filter.GetFilters(null, fsID); // Name des FilterSets FilterSetModel filterSetModel = new FilterSetModel(set.Linking); filterSetModel.name = set.Name; // füge diesem filterSet alle filter hinzu foreach (var filter in filters) { FilterModel filterModel = new FilterModel(); // konvertiere die strings aus der datenbank in enums filterModel.group = (FilterModel.Groups)Enum.Parse(typeof(FilterModel.Groups), filter.Table); filterModel.criterion = (FilterModel.Criterions)Enum.Parse(typeof(FilterModel.Criterions), filter.Type); filterModel.operation = (FilterModel.Operations)Enum.Parse(typeof(FilterModel.Operations), filter.Operation); filterModel.value = SafeStringParser.safeParseToStr(filter.Value); filterSetModel.filterList.Add(filterModel); } filterSetModels.Add(filterSetModel); } // Füge alle Spaltenverknüpfungen hinzu IEnumerable <ColumnAssignment> assignments = ColumnAssignment.GetColumnAssignments(null, pID); foreach (var assignment in assignments) { string csvCol = SafeStringParser.safeParseToStr(assignment.CsvColumn); string dbTable = SafeStringParser.safeParseToStr(assignment.DatabaseTable); string dbCol = SafeStringParser.safeParseToStr(assignment.DatabaseColumn); // parse diese strings in ihre Enum-Äquivalente FormletterTableAssignment.Groups eDbTable = (FormletterTableAssignment.Groups)Enum.Parse(typeof(FormletterTableAssignment.Groups), dbTable); FormletterTableAssignment.Fields eDbCol = (FormletterTableAssignment.Fields)Enum.Parse(typeof(FormletterTableAssignment.Fields), dbCol); // erstelle eine enum-basierte tabellen-spalten-verknüpfung damit FormletterTableAssignment fta = new FormletterTableAssignment(eDbTable, eDbCol); // jetzt haben wir ein komplettes csv-datenbank-spaltenverknüpfungs-objekt FormletterColumnCsvDocumentAssignment colAssignment = new FormletterColumnCsvDocumentAssignment(csvCol, fta); this.formletterColumnCsvDocumentAssignments.Add(colAssignment); } }