Skip to content

Commit 89ea676

Browse files
authored
Merge pull request #157 from thomasramm/develop
Version 1.2.34
2 parents 2f3dafa + 0e5a3b8 commit 89ea676

12 files changed

Lines changed: 134 additions & 32 deletions

Changelog.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
### Version 1.2.34 (25.02.2024) ###
2+
* Leser und Vorsitz -Personen können gelöscht werden.
3+
* Vorträge 42, 70, 108 aktualisiert.
4+
* Meine Redner: neuer Filter "nur gewähltes Jahr anzeigen"
5+
* Excel Kontaktliste: Einträge am 31.12. wurden nicht ausgegeben
6+
* Bug behoben: Wenn ein Vortrag von einem Redner gelöscht wird, er aber noch Einladungen zu diesem Thema hat, wurde der Vortrag nicht mehr gespeichert. Diese Vorträge wurden erstmal auf "Unbekannt" gesetzt. Du kannst den Fehler beheben, indem du unter [Historie] -> [Aktivitäten] -> [Mein Plan] -> nach der jeweiligen Versammlung des eingeladenen Redners filterst und dir die Aktivitäten Historie anschaust. Sollte es bei dir zu diesem Fehler gekommen sein, wirst du beim Update darauf hingewiesen und die betroffenen Wochen werden dir angezeigt.
7+
18
### Version 1.2.33 (30.09.2023) ###
29
* Vorträge 112 und 131 gesperrt
310
* Vorträge 104,107,111 aktualisiert

Vortragsmanager/DataModels/MyGloabalSettings.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,11 @@ public void RefreshTitle()
9696

9797
public bool ThemeIsDark { get; set; } = true;
9898

99+
public bool MeineRednerHistory { get; set; } = false;
100+
101+
public bool MeineRednerOneYearOnly { get; set; } = false;
102+
103+
99104
public void Read()
100105
{
101106
var configFile = Helper.Helper.AppFolderPath + "Settings.xml";

Vortragsmanager/Datamodels/DataContainer.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
using DevExpress.Mvvm;
2-
using DevExpress.Xpf.Core;
1+
using DevExpress.Xpf.Core;
32
using System;
43
using System.Collections.Generic;
54
using System.Collections.ObjectModel;
6-
using System.IO;
75
using System.Linq;
86
using System.Windows;
9-
using System.Xml.Serialization;
107
using Vortragsmanager.Enums;
118
using Vortragsmanager.Helper;
129
using Vortragsmanager.Interface;
@@ -381,7 +378,7 @@ public static ObservableCollection<AufgabenZuordnung> AufgabenPersonZuordnung
381378

382379
public static bool IsInitialized { get; set; }
383380

384-
public static bool IsDemo { get; set; }
381+
public static bool IsDemo { get; set; }
385382

386383
public static Conregation MeineVersammlung
387384
{

Vortragsmanager/Module/Initialize.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public static List<Talk> LoadDefaultTalks()
9191
new Talk(39, "Jesus Christus hat die Welt besiegt – wie und wann?"),
9292
new Talk(40, "Was die nahe Zukunft bringt"), //Dieser Vortrag sollte nicht mehr gehalten werden -> Neue Disposition
9393
new Talk(41, "„Bleibt stehen und seht, wie Jehova euch rettet“"),
94-
new Talk(42, "Wie wirkt sich Gottes Königreich auf unser Leben aus?"),
94+
new Talk(42, "Kann Liebe Hass besiegen?"),
9595
new Talk(43, "Tue ich, was Gott von mir erwartet?"),
9696
new Talk(44, "Was bringen uns die Lehren Jesu?"),
9797
new Talk(45, "Den „Weg zum Leben“ gehen"),
@@ -119,7 +119,7 @@ public static List<Talk> LoadDefaultTalks()
119119
new Talk(67, "Über Gottes Wort und die Schöpfung intensiv nachdenken"),
120120
new Talk(68, "Vergeben wir einander weiterhin großzügig"),
121121
new Talk(69, "Warum ist es wichtig, dass wir selbstlose Liebe zeigen?"),
122-
new Talk(70, "Voll und ganz auf Jehova vertrauen", false), //Dieser Vortrag sollte nicht mehr gehalten werden
122+
new Talk(70, "Warum Gott unser ganzes Vertrauen verdient", true), //Dieser Vortrag wurde ersetzt
123123
new Talk(71, "Warum wir „wach bleiben“ müssen"),
124124
new Talk(72, "Liebe – das Kennzeichen wahrer Christen"),
125125
new Talk(73, "„Ein weises Herz bekommen“ – wie?"),
@@ -157,7 +157,7 @@ public static List<Talk> LoadDefaultTalks()
157157
new Talk(105, "In allen unseren Prüfungen Trost finden"),
158158
new Talk(106, "Die Zerstörung der Erde wird von Gott bestraft"),
159159
new Talk(107, "Was bringt mir ein gut geschultes Gewissen?"),
160-
new Talk(108, "Die Angst vor der Zukunft überwinden"),
160+
new Talk(108, "Wir können zuversichtlich in die Zukunft schauen!"),
161161
new Talk(109, "Das Königreich Gottes ist nah"),
162162
new Talk(110, "Gott steht in einer glücklichen Familie an erster Stelle"),
163163
new Talk(111, "Kann die Menschheit vollständig geheilt werden?"),
@@ -244,9 +244,9 @@ public static List<Talk> LoadDefaultTalks()
244244
new Talk(192, "Bin ich auf dem Weg zum ewigen Leben?"),
245245
new Talk(193, "In der „schweren Zeit“ gerettet werden"),
246246
new Talk(194, "Wie göttliche Weisheit uns zugutekommt"),
247-
new Talk(12322, "Echte Hoffnung - wo zu finden?"),
248-
new Talk(12323, "Wir können zuversichtlich in die Zukunft schauen!"),
249-
new Talk(12324, "Die Auferstehung – der Sieg über den Tod"),
247+
new Talk(12322, "Echte Hoffnung - wo zu finden?"), //ToDo: wurde zu Vortrag #62
248+
new Talk(12323, "Wir können zuversichtlich in die Zukunft schauen!"), //wurde zu Vortrag #108
249+
new Talk(12324, "Die Auferstehung – der Sieg über den Tod"), //wird zu Vortrag #132
250250
new Talk(-1, "Unbekannt", false),
251251
new Talk(-24, "Was Gottes Herrschaft für uns bewirken kann", false)
252252
};

Vortragsmanager/Module/IoExcel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -878,7 +878,7 @@ internal static void ContactList(bool openReport)
878878
while ((int)startDate.DayOfWeek != (int)DateCalcuation.Wochentag)
879879
startDate = startDate.AddDays(1);
880880
var row = 2;
881-
while (startDate < endDate)
881+
while (startDate <= endDate)
882882
{
883883
try
884884
{

Vortragsmanager/Module/IoSqlite.cs

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Linq;
66
using System.Windows.Media.Imaging;
77
using DevExpress.Mvvm;
8+
using DevExpress.Xpf.Core;
89
using Vortragsmanager.DataModels;
910
using Vortragsmanager.Enums;
1011
using Vortragsmanager.Helper;
@@ -374,7 +375,32 @@ private static void UpdateDatabase(SQLiteConnection db)
374375
{
375376
UpdateCommand(DataContainer.Version, db, @"ALTER TABLE Speaker ADD Foto BLOB");
376377
}
377-
//Aktuelle Version = 25, siehe auch Module.Update
378+
379+
if (DataContainer.Version < 30)
380+
{
381+
UpdateCommand(DataContainer.Version, db, @"UPDATE Invitation SET IdVortrag = -1 WHERE IdVortrag IS NULL AND Datum < " + DateCalcuation.CurrentWeek);
382+
383+
using (var cmd = new SQLiteCommand("SELECT DISTINCT Datum FROM Invitation WHERE IdVortrag IS NULL ORDER BY Datum", db))
384+
{
385+
SQLiteDataReader rdr = cmd.ExecuteReader();
386+
var wochen = string.Empty;
387+
388+
while (rdr.Read())
389+
{
390+
var kw = rdr.GetInt32(0);
391+
var datum = DateCalcuation.CalculateWeek(kw);
392+
wochen += datum.ToShortDateString() + ", ";
393+
}
394+
395+
rdr.Close();
396+
397+
if (!string.IsNullOrEmpty(wochen))
398+
ThemedMessageBox.Show("ACHTUNG!", "Durch einen Programmfehler ist leider bei einigen Einladungen das Vortragsthema verloren gegangen!\n\nDu kannst den Vortrag herausfinden, indem du unter [Historie] -> [Aktivitäten] -> [Mein Plan] -> nach der jeweiligen Versammlung des eingeladenen Redners filterst und dir die Aktivitäten Historie anschaust.\n\nBitte prüfe die Einladungen für folgende Wochen:\n" + wochen, System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Error);
399+
}
400+
401+
UpdateCommand(DataContainer.Version, db, @"UPDATE Invitation SET IdVortrag = -1 WHERE IdVortrag IS NULL");
402+
}
403+
//Aktuelle Version = 30, siehe auch Module.Update
378404
}
379405

380406
private static void UpdateV12DateColumn(SQLiteConnection db, string tablename, string columname)
@@ -659,7 +685,7 @@ private static void ReadMeinPlan(SQLiteConnection db)
659685
if (!(idVortrag is null))
660686
{
661687
i.Vortrag = i.Ältester.Vorträge.FirstOrDefault(x => x.Vortrag.Nummer == idVortrag);
662-
if (!(i.Vortrag is null))
688+
if (i.Vortrag is null)
663689
i.Vortrag = new TalkSong(TalkList.Find((int)idVortrag), -1, -1);
664690
}
665691
if (!(idConregation is null))

Vortragsmanager/Module/Update.cs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ internal static class Update
1818
/// Module.Update für C# Updates (Inhalte)
1919
/// Changelog.md
2020
/// </summary>
21-
public static int CurrentVersion => 29;
21+
public static int CurrentVersion => 30;
2222

2323
public static void Process()
2424
{
@@ -49,8 +49,16 @@ public static void Process()
4949
}
5050
}
5151

52+
//Vorträge die nicht mehr gehalten werden sollen
53+
if (DataContainer.Version < 29)
54+
{
55+
FindFutureTalk(112, new DateTime(2023,6,1));
56+
FindFutureTalk(131, new DateTime(2023,9,1));
57+
FindFutureTalk(132, new DateTime(2023,9,1));
58+
}
59+
5260
//Aktualisierte Vorträge, hier kann der Updatebefehl mehrfach genutzt werden. Einfach die neue Programmversion in der nächsten Zeile eintragen.
53-
if (DataContainer.Version < 28)
61+
if (DataContainer.Version < 30)
5462
{
5563
var inhalt = "Es gibt geänderte Vortragsthemen. Du kannst die Themen jetzt aktualisieren. Damit werden individuelle Änderungen die du in der Vergangenheit an den Vortragsthemen vorgenommen hast gelöscht." + Environment.NewLine +
5664
"Du kannst die Änderung auch später unter 'Vorträge' -> 'Zurücksetzen' durchführen." + Environment.NewLine +
@@ -61,14 +69,8 @@ public static void Process()
6169
{
6270
TalkList.Reset();
6371
}
64-
}
6572

66-
//Vorträge die nicht mehr gehalten werden sollen
67-
if (DataContainer.Version < 29)
68-
{
69-
FindFutureTalk(112, new DateTime(2023,6,1));
70-
FindFutureTalk(131, new DateTime(2023,9,1));
71-
FindFutureTalk(132, new DateTime(2023,9,1));
73+
7274
}
7375

7476
//auf aktuellste Version setzen = 25 (siehe oben)

Vortragsmanager/PageModels/MeinPlanVorsitzUndLeserEinstellungenPage.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using System.Collections.ObjectModel;
22
using System.Linq;
3+
using System.Windows.Forms;
34
using DevExpress.Mvvm;
5+
using DevExpress.Xpf.Core;
46
using Vortragsmanager.DataModels;
57
using Vortragsmanager.UserControls;
68

@@ -16,20 +18,48 @@ public MeinPlanVorsitzUndLeserEinstellungenPage()
1618
}
1719

1820
ButtonNewCommand = new DelegateCommand(ButtonNew);
21+
ButtonDeleteCommand = new DelegateCommand(ButtonDelete);
1922
}
2023

2124
public ObservableCollection<SonntagEinstellungenItem> Personen { get; } = new ObservableCollection<SonntagEinstellungenItem>();
2225

26+
public SonntagEinstellungenItem SelectedPerson { get; set; }
27+
2328
public static Conregation Versammlung => DataContainer.MeineVersammlung;
2429

2530
public DelegateCommand ButtonNewCommand { get; }
2631

32+
public DelegateCommand ButtonDeleteCommand { get; }
33+
2734
private void ButtonNew()
2835
{
2936
var az = DataContainer.AufgabenZuordnungAdd();
3037
Personen.Add(new SonntagEinstellungenItem(az));
3138
}
3239

40+
private void ButtonDelete()
41+
{
42+
if (SelectedPerson == null)
43+
{
44+
ThemedMessageBox.Show("Information", "Bitte die zu löschende Person auswählen", System.Windows.MessageBoxButton.OK);
45+
return;
46+
}
47+
48+
//Alle Zuordnungen der Person entfernen, dann die Person selber entfernen
49+
foreach (var p in DataContainer.AufgabenPersonKalender.Where(x=> x.Vorsitz == SelectedPerson.Person))
50+
{
51+
p.Vorsitz = null;
52+
}
53+
foreach (var p in DataContainer.AufgabenPersonKalender.Where(x => x.Leser == SelectedPerson.Person))
54+
{
55+
p.Leser = null;
56+
}
57+
58+
var apz = DataContainer.AufgabenPersonZuordnung.First(x => x == SelectedPerson.Person);
59+
DataContainer.AufgabenPersonZuordnung.Remove(apz);
60+
Personen.Remove(SelectedPerson);
61+
}
62+
3363
public int MonateAnzahlAnzeige
3464
{
3565
get => Helper.Helper.GlobalSettings.SonntagAnzeigeMonate;

Vortragsmanager/PageModels/MeineRednerKalenderPageModel.cs

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Vortragsmanager.DataModels;
77
using Vortragsmanager.Enums;
88
using Vortragsmanager.Helper;
9+
using Vortragsmanager.Properties;
910
using Vortragsmanager.Windows;
1011

1112
namespace Vortragsmanager.PageModels
@@ -37,6 +38,8 @@ public MeineRednerKalenderPageModel()
3738
Redner.Add(box);
3839
}
3940
//Talks = Core.DataContainer.ExternerPlan;//.Where(x => x.Datum.Year == CurrentYear);
41+
//Laden der Optionen
42+
4043
ChangeCurrentYear(0);
4144
}
4245

@@ -82,6 +85,12 @@ public void ApplyFilter()
8285
listIntern = listIntern.Where(x => x.Kw >= DateCalcuation.CurrentWeek);
8386
}
8487

88+
if (OneYearOnly)
89+
{
90+
list = list.Where(x => x.Datum.Year == CurrentYear).ToList();
91+
listIntern = listIntern.Where(x => x.Kw < CurrentYear*100).ToList();
92+
}
93+
8594
foreach (var item in listIntern)
8695
{
8796
list.Add(new Outside()
@@ -160,8 +169,26 @@ public Outside SelectedTalk
160169

161170
public bool History
162171
{
163-
get { return GetProperty(() => History); }
164-
set { SetProperty(() => History, value, ApplyFilter); }
172+
get => Helper.Helper.GlobalSettings.MeineRednerHistory;
173+
set
174+
{
175+
Helper.Helper.GlobalSettings.MeineRednerHistory = value;
176+
Helper.Helper.GlobalSettings.Save();
177+
RaisePropertiesChanged();
178+
ApplyFilter();
179+
}
180+
}
181+
182+
public bool OneYearOnly
183+
{
184+
get => Helper.Helper.GlobalSettings.MeineRednerOneYearOnly;
185+
set
186+
{
187+
Helper.Helper.GlobalSettings.MeineRednerOneYearOnly = value;
188+
Helper.Helper.GlobalSettings.Save();
189+
RaisePropertiesChanged();
190+
ApplyFilter();
191+
}
165192
}
166193

167194
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822")]

Vortragsmanager/Pages/MeinPlanVorsitzUndLeserEinstellungenPage.xaml

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,20 @@
3030
</StackPanel>
3131
<ListBox Grid.Row="1" Grid.Column="0"
3232
ItemsSource="{Binding Personen, Mode=OneWay}"
33+
SelectedItem="{Binding SelectedPerson, Mode=TwoWay}"
3334
BorderThickness="0"
3435
MaxWidth="680"
3536
HorizontalAlignment="Left"/>
36-
<Button Grid.Row="2" Grid.Column="0"
37-
Content="Person hinzufügen"
38-
Command="{Binding ButtonNewCommand}"
39-
Width="150"
40-
HorizontalAlignment="Left"
41-
Margin="10,5,0,0"/>
37+
<StackPanel Orientation="Horizontal" Grid.Row="2" Grid.Column="0" Margin="10,5,0,0">
38+
<Button Content="Person hinzufügen"
39+
Command="{Binding ButtonNewCommand}"
40+
Width="150" />
41+
<Button Grid.Row="2" Grid.Column="0"
42+
Content="Person löschen"
43+
Command="{Binding ButtonDeleteCommand}"
44+
Margin="10,0,0,0"
45+
Width="150" />
46+
</StackPanel>
4247
<!-- Sonstige Einstellungen -->
4348
<Label Grid.Column="1"
4449
Grid.Row="0"

0 commit comments

Comments
 (0)