Skip to content

Commit c7be5df

Browse files
committed
Urkunde für die Jüngste Gruppe
1 parent b0e5be0 commit c7be5df

File tree

9 files changed

+270
-4
lines changed

9 files changed

+270
-4
lines changed

BWB-Auswertung/IO/Excel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ public static bool WriteWertungsbogenToExcel(string filePath, List<Gruppe> grupp
364364

365365
foreach (Gruppe gruppe in gruppen)
366366
{
367-
string excelpath = System.IO.Path.Combine(filePath, $"Wertungsbogen-{gruppe.GruppenName}.xlsx");
367+
string excelpath = System.IO.Path.Combine(filePath, $"Wertungsbogen-{gruppe.GruppennameOhneSonderzeichen}.xlsx");
368368
WriteFile.ByteArrayToFile(excelpath, BWB_Auswertung.Properties.Resources.Auswertungsbogen);
369369
using (SpreadsheetDocument document = SpreadsheetDocument.Open(excelpath, true))
370370
{

BWB-Auswertung/Models/Gruppe.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.ComponentModel;
44
using System.Linq;
5+
using System.Text.RegularExpressions;
56

67
namespace BWB_Auswertung.Models
78
{
@@ -668,6 +669,21 @@ public double SollZeitBTeilInSekunden
668669
}
669670
}
670671
}
672+
public string GruppennameOhneSonderzeichen
673+
{
674+
get {
675+
Regex rgx = new Regex("[^a-zA-Z0-9öäüÄÜÖß ]");
676+
return rgx.Replace(GruppenName, "");
677+
}
678+
}
679+
public string FeuerwehrOhneSonderzeichen
680+
{
681+
get
682+
{
683+
Regex rgx = new Regex("[^a-zA-Z0-9öäüÄÜÖß ]");
684+
return rgx.Replace(Feuerwehr, "");
685+
}
686+
}
671687

672688
public string SollZeitBTeilInMinutenString
673689
{

BWB-Auswertung/Properties/Resources.Designer.cs

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

BWB-Auswertung/Properties/Resources.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,9 @@
178178
<data name="UrkundeOverlay" type="System.Resources.ResXFileRef, System.Windows.Forms">
179179
<value>..\Resources\Vorlagen\UrkundeOverlay.html;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
180180
</data>
181+
<data name="UrkundeOverlayJuengsteGruppe" type="System.Resources.ResXFileRef, System.Windows.Forms">
182+
<value>..\Resources\Vorlagen\UrkundeOverlayJuengsteGruppe.html;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
183+
</data>
181184
<data name="UrkundeOverlayTheme1" type="System.Resources.ResXFileRef, System.Windows.Forms">
182185
<value>..\Resources\Vorlagen\UrkundeOverlayTheme1.html;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
183186
</data>
Binary file not shown.
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
3+
<head>
4+
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet" type="text/css">
5+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6+
<style>
7+
@page {
8+
size: A4;
9+
margin: 0cm
10+
}
11+
12+
@media print {
13+
html, body {
14+
height: 99%;
15+
page-break-after: avoid;
16+
page-break-before: avoid;
17+
}
18+
}
19+
20+
html {
21+
width: auto;
22+
height: 297mm;
23+
margin: 0;
24+
-webkit-print-color-adjust: exact;
25+
}
26+
27+
body {
28+
width: 210mm;
29+
height: 297mm;
30+
box-sizing: border-box;
31+
margin: 0;
32+
padding: 10mm;
33+
}
34+
35+
h1 {
36+
font-family: 'Open Sans';
37+
color: black;
38+
font-size: 54pt;
39+
}
40+
41+
h2 {
42+
font-family: 'Open Sans';
43+
color: black;
44+
font-size: 36pt;
45+
}
46+
47+
h3 {
48+
font-family: 'Open Sans';
49+
color: black;
50+
font-size: 24pt;
51+
}
52+
53+
p {
54+
font-family: 'Open Sans';
55+
color: black;
56+
margin: 2mm 0 0 0;
57+
font-size: 16pt;
58+
}
59+
60+
61+
.row {
62+
display: flex;
63+
}
64+
65+
.column80 {
66+
width: 80%;
67+
}
68+
69+
.column60 {
70+
width: 60%;
71+
}
72+
73+
.column50 {
74+
width: 50%;
75+
}
76+
77+
.column40 {
78+
width: 40%;
79+
}
80+
81+
.column20 {
82+
width: 20%;
83+
}
84+
85+
.column10 {
86+
width: 10%;
87+
}
88+
89+
.line-clamp {
90+
overflow: hidden;
91+
display: -webkit-box;
92+
-webkit-line-clamp: 4;
93+
line-clamp: 4;
94+
-webkit-box-orient: vertical;
95+
}
96+
97+
.one-line {
98+
white-space: nowrap;
99+
text-overflow: ellipsis;
100+
overflow: hidden;
101+
}
102+
</style>
103+
</head>
104+
<body>
105+
<div style="position: absolute; top: 10mm; left: 10mm; bottom: 10mm; right: 10mm; width: 190mm; height: 277mm; border: solid black 3px;">
106+
<div style="width: 98.3%; margin: 1mm; height: 99%; border: solid black 2px;">
107+
<h1 style="text-align:center;margin-top: 64mm">Urkunde</h1>
108+
<p style="text-align:center">Die Jugendfeuerwehr</p>
109+
<h2 style="text-align: center;">
110+
{jugendfeuerwehr}
111+
</h2>
112+
<p style="text-align:center">wurde beim</p>
113+
<p style="text-align:center">{veranstaltungstitel}</p>
114+
<p style="text-align:center">mit</p>
115+
<h2 style="text-align: center">
116+
{jahre} Jahren
117+
</h2>
118+
<p style="text-align:center">die jüngste Gruppe.</p>
119+
<p style="margin-top:10mm; text-align:center; font-size:14px;">{veranstaltungsort}, den {veranstaltungsdatum}</p>
120+
121+
<div class="row" style="width: 100%; margin-bottom: 10mm; margin-top: 0mm;">
122+
<div style="width:50%;">
123+
<div style="text-align: center;">
124+
<img src="{unterschriftlinks}" alt="{namelinks} - {funktionlinks}" style="height: 20mm;max-width: 300px">
125+
</div>
126+
<p style="text-align: center; font-size:14px;">
127+
{namelinks}
128+
</p>
129+
<p style="text-align: center; font-size:14px;">
130+
{funktionlinks}
131+
</p>
132+
</div>
133+
<div style="width: 50%">
134+
<div style="text-align: center;">
135+
<img src="{unterschriftrechts}" alt="{namerechts} - {funktionrechts}" style="height: 20mm;max-width: 300px">
136+
</div>
137+
<p style="text-align: center; font-size:14px;">
138+
{namerechts}
139+
</p>
140+
<p style="text-align: center; font-size:14px;">
141+
{funktionrechts}
142+
</p>
143+
144+
</div>
145+
</div>
146+
</div>
147+
</div>
148+
</body>
149+
</html>

BWB-Auswertung/Views/EvaluationView.xaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,25 @@
119119
Margin="-15,10,10,10"
120120
FontSize="16"
121121
VerticalAlignment="Top" />
122+
<Button Content="Export Jüngste Gruppe"
123+
ToolTip="Erstellt eine Urkunde für die Jüngste Gruppe als PDF"
124+
Margin="10,10,10,10"
125+
Click="ExportUrkundeJuengsteGruppe_Click"
126+
x:Name="ExportJuengsteGruppe_Button">
127+
<Button.ContentTemplate>
128+
<DataTemplate>
129+
<StackPanel Orientation="Horizontal">
130+
<iconPacks:PackIconFontAwesome Width="22"
131+
Height="22"
132+
VerticalAlignment="Center"
133+
Kind="BabyCarriageSolid" />
134+
<TextBlock Margin="4 0 0 0"
135+
VerticalAlignment="Center"
136+
Text="{Binding}" />
137+
</StackPanel>
138+
</DataTemplate>
139+
</Button.ContentTemplate>
140+
</Button>
122141
</StackPanel>
123142
<StackPanel Orientation="Horizontal"
124143
Margin="0,-10,0,0">

BWB-Auswertung/Views/EvaluationView.xaml.cs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using System.Windows.Data;
1010
using BWB_Auswertung.IO;
1111
using System.Windows.Controls;
12+
using System.Text.RegularExpressions;
1213

1314
namespace BWB_Auswertung.Views
1415
{
@@ -538,6 +539,68 @@ private async void ExportUrkunden_Click(object sender, RoutedEventArgs e)
538539
}
539540
}
540541

542+
private async void ExportUrkundeJuengsteGruppe_Click(object sender, RoutedEventArgs e)
543+
{
544+
try
545+
{
546+
((Button)sender).IsEnabled = false;
547+
MainViewModel viewModel = (MainViewModel)this.DataContext;
548+
PDF pDF = new PDF();
549+
550+
string urkundeOverlayPfad = System.IO.Path.Combine(vorlagenPath, "UrkundeOverlayJuengsteGruppe.html");
551+
string urkundeOverlay = string.Empty;
552+
if (File.Exists(urkundeOverlayPfad))
553+
{
554+
urkundeOverlay = File.ReadAllText(urkundeOverlayPfad);
555+
}
556+
else
557+
{
558+
urkundeOverlay = BWB_Auswertung.Properties.Resources.UrkundeOverlayJuengsteGruppe; //default
559+
MessageBox.Show("Die Vorlage für die Urkunde(Jüngste Gruppe) wurde nicht gefunden. Es wird der Standard benutzt.", "Export Urkunde", MessageBoxButton.OK, MessageBoxImage.Information);
560+
}
561+
562+
//Allgemeines ersetzen
563+
urkundeOverlay = urkundeOverlay.Replace("{veranstaltungstitel}", viewModel.Einstellungen.Veranstaltungstitel);
564+
urkundeOverlay = urkundeOverlay.Replace("{veranstaltungsort}", viewModel.Einstellungen.Veranstaltungsort);
565+
urkundeOverlay = urkundeOverlay.Replace("{veranstaltungsleitung}", viewModel.Einstellungen.Veranstaltungsleitung);
566+
urkundeOverlay = urkundeOverlay.Replace("{veranstaltungsdatum}", viewModel.Einstellungen.Veranstaltungsdatum.ToString("d"));
567+
urkundeOverlay = urkundeOverlay.Replace("{namelinks}", viewModel.Einstellungen.Namelinks);
568+
urkundeOverlay = urkundeOverlay.Replace("{namerechts}", viewModel.Einstellungen.Namerechts);
569+
urkundeOverlay = urkundeOverlay.Replace("{funktionlinks}", viewModel.Einstellungen.Funktionlinks);
570+
urkundeOverlay = urkundeOverlay.Replace("{funktionrechts}", viewModel.Einstellungen.Funktionrechts);
571+
572+
if (File.Exists(viewModel.Einstellungen.Unterschriftlinks))
573+
{
574+
urkundeOverlay = urkundeOverlay.Replace("{unterschriftlinks}", $"data:image/jpeg;base64,{Bilder.readBase64(viewModel.Einstellungen.Unterschriftlinks)}");
575+
urkundeOverlay = urkundeOverlay.Replace("{unterschriftrechts}", $"data:image/jpeg;base64,{Bilder.readBase64(viewModel.Einstellungen.Unterschriftrechts)}");
576+
}
577+
578+
var juengsteGruppe = viewModel.Gruppen.OrderBy(x => x.GesamtAlterinTagen).First();
579+
580+
urkundeOverlay = urkundeOverlay.Replace("{jugendfeuerwehr}", juengsteGruppe.GruppenName);
581+
urkundeOverlay = urkundeOverlay.Replace("{jahre}", juengsteGruppe.GesamtAlter.ToString());
582+
583+
string pfad = System.IO.Path.Combine(exportPath, $"UrkundeJuengsteGruppe.pdf");
584+
bool erfolgreich = await pDF.ConvertHtmlFileToPdf(urkundeOverlay, pfad);
585+
586+
if (!erfolgreich)
587+
{
588+
MessageBox.Show($"Export der Jüngsten Gruppe fehlgeschlagen!", "Fehler: Export Jüngste Gruppe", MessageBoxButton.OK, MessageBoxImage.Error);
589+
return;
590+
}
591+
592+
ShowExportMessageBox("Export der Jüngsten Gruppe abgeschlossen!\nZielverzeichnis öffnen?",
593+
"Export Urkunden", exportPath);
594+
((Button)sender).IsEnabled = true;
595+
}
596+
catch (Exception ex)
597+
{
598+
((Button)sender).IsEnabled = true;
599+
LOGGING.Write(ex.Message, System.Reflection.MethodBase.GetCurrentMethod().Name, System.Diagnostics.EventLogEntryType.Error);
600+
MessageBox.Show($"Export der Jüngsten Gruppe fehlgeschlagen!\n{ex}", "Fehler: Export Jüngste Gruppe", MessageBoxButton.OK, MessageBoxImage.Error);
601+
}
602+
}
603+
541604
private void ExportGruppenExcel_Click(object sender, RoutedEventArgs e)
542605
{
543606
try
@@ -593,6 +656,7 @@ private void ExportUrkundenvorlage_Click(object sender, RoutedEventArgs e)
593656
WriteFile.ByteArrayToFile(System.IO.Path.Combine(vorlagenPath, "Urkunde_Original.indd"), BWB_Auswertung.Properties.Resources.UrkundeOriginalTheme1);
594657
WriteFile.writeText(System.IO.Path.Combine(vorlagenPath, "UrkundeOverlay.html"), BWB_Auswertung.Properties.Resources.UrkundeOverlay);
595658
WriteFile.writeText(System.IO.Path.Combine(vorlagenPath, "UrkundeOverlayTheme1.html"), BWB_Auswertung.Properties.Resources.UrkundeOverlayTheme1);
659+
WriteFile.writeText(System.IO.Path.Combine(vorlagenPath, "UrkundeOverlayJuengsteGruppe.html"), BWB_Auswertung.Properties.Resources.UrkundeOverlayJuengsteGruppe);
596660
WriteFile.ByteArrayToFile(System.IO.Path.Combine(vorlagenPath, "Urkundenpapier-Beispiel.pdf"), BWB_Auswertung.Properties.Resources.Urkundenpapier_BeispielDruck);
597661
WriteFile.ByteArrayToFile(System.IO.Path.Combine(vorlagenPath, "Urkundenpapier-Beispiel.indd"), BWB_Auswertung.Properties.Resources.Urkundenpapier_BeispielIndesign);
598662

BWB-Auswertung/Views/MainWindow.xaml.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -462,11 +462,9 @@ private void SaveData(string savePath, bool deleteOld = false)
462462
List<string> aktuelleDateien = new List<string>();
463463
MainViewModel viewModel = (MainViewModel)this.DataContext;
464464

465-
Regex rgx = new Regex("[^a-zA-Z0-9öäüÄÜÖß ]");
466-
467465
foreach (var gruppe in viewModel.Gruppen)
468466
{
469-
string datei = System.IO.Path.Combine($"{rgx.Replace(gruppe.Feuerwehr, "")} - {rgx.Replace(gruppe.GruppenName, "")}.xml");
467+
string datei = System.IO.Path.Combine($"{gruppe.FeuerwehrOhneSonderzeichen} - {gruppe.GruppennameOhneSonderzeichen}.xml");
470468
WriteFile.writeText(System.IO.Path.Combine(savePath, datei), SerializeXML<Gruppe>.Serialize(gruppe));
471469

472470
//Dateinamen merken um alte löschen zu können

0 commit comments

Comments
 (0)