Skip to content

Commit

Permalink
lepší práce s usneseními
Browse files Browse the repository at this point in the history
  • Loading branch information
martinrotter committed Oct 2, 2024
1 parent 9419de5 commit ed831da
Show file tree
Hide file tree
Showing 9 changed files with 87 additions and 78 deletions.
15 changes: 13 additions & 2 deletions ZZZO/ZZZO.Common/API/BodProgramu.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,27 @@ public enum TypBoduProgramu
BodZasedani = 2,

[Description("Doplněný bod zasedání")]
DoplnenyBodZasedani = 3
DoplnenyBodZasedani = 3,

[Description("Kontrola minulého zápisu")]
KontrolaMinulehoZapisu = 4,
}

#endregion

public bool JeEditovatelny
public bool MuzeEditovatUsneseni
{
get => Typ == TypBoduProgramu.DoplnenyBodZasedani ||
Typ == TypBoduProgramu.BodZasedani;
}

public bool JeEditovatelny
{
get => Typ == TypBoduProgramu.DoplnenyBodZasedani ||
Typ == TypBoduProgramu.BodZasedani ||
Typ == TypBoduProgramu.KontrolaMinulehoZapisu;
}

#region Proměnné

private bool _jePodbod;
Expand Down Expand Up @@ -117,6 +127,7 @@ public TypBoduProgramu Typ

OnPropertyChanged();
OnPropertyChanged(nameof(JeEditovatelny));
OnPropertyChanged(nameof(MuzeEditovatUsneseni));
}
}

Expand Down
16 changes: 14 additions & 2 deletions ZZZO/ZZZO.Common/API/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public ObservableCollection<BodProgramu> BodyProgramu

#region Metody

public BodProgramu VygenerovatBodProgramu(Zasedani zas, BodProgramu.TypBoduProgramu typProgramu)
public BodProgramu VygenerovatBodProgramu(Zasedani zas, BodProgramu.TypBoduProgramu typProgramu, bool bezUsneseni = false)
{
BodProgramu bod = new BodProgramu();

Expand Down Expand Up @@ -59,9 +59,16 @@ public BodProgramu VygenerovatBodProgramu(Zasedani zas, BodProgramu.TypBoduProgr

break;

case BodProgramu.TypBoduProgramu.KontrolaMinulehoZapisu:
bod.Nadpis = "Kontrola zápisu a plnění usnesení z minulého zasedání ZO";
bod.Text = "Starosta obce zhodnotil program z minulého jednání ZO a " +
"informoval přítomné zastupitele i veřejnost o " +
"projednaných bodech a splněných úkolech.";
break;

case BodProgramu.TypBoduProgramu.BodZasedani:
case BodProgramu.TypBoduProgramu.DoplnenyBodZasedani:
bod.Nadpis = "Řádný bod zasedání";
bod.Nadpis = "Bod zasedání";

zas.AddUsneseni(bod, new Usneseni
{
Expand All @@ -71,6 +78,11 @@ public BodProgramu VygenerovatBodProgramu(Zasedani zas, BodProgramu.TypBoduProgr
break;
}

if (bezUsneseni)
{
bod.Usneseni.Clear();
}

return bod;
}

Expand Down
100 changes: 40 additions & 60 deletions ZZZO/ZZZO.Common/API/Zasedani.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Collections.ObjectModel;
using System.IO;
using System.Text;
using System.Windows.Markup;
using System.Windows.Media.Imaging;
using Newtonsoft.Json;

Expand Down Expand Up @@ -369,13 +370,6 @@ public static Zasedani GenerateSample()
JePritomen = true
});

zas.AddZastupitel(new Zastupitel
{
Prijmeni = "Fialový",
Jmeno = "Alex",
JePritomen = true
});

zas.AddZastupitel(new Zastupitel
{
Prijmeni = "Zelený",
Expand Down Expand Up @@ -403,70 +397,56 @@ public static Zasedani GenerateSample()
PopisMista = "zasedací místnosti"
};

var schvaleniZapisovatele = new BodProgramu
{
Typ = BodProgramu.TypBoduProgramu.SchvaleniZapisOver,
Nadpis = "Schvalování zapisovatele"
};
zas.Program.BodyProgramu.Add(zas.Program.VygenerovatBodProgramu(
zas,
BodProgramu.TypBoduProgramu.SchvaleniZapisOver));

zas.Program.BodyProgramu.Add(schvaleniZapisovatele);
zas.Program.BodyProgramu.Add(zas.Program.VygenerovatBodProgramu(
zas,
BodProgramu.TypBoduProgramu.SchvaleniProgramu));

zas.AddUsneseni(schvaleniZapisovatele, new Usneseni
{
Text = "Hlasování o zapisovateli/ověřovatelích"
});
zas.Program.BodyProgramu.Add(zas.Program.VygenerovatBodProgramu(
zas,
BodProgramu.TypBoduProgramu.KontrolaMinulehoZapisu));

var schvaleniProgramu = new BodProgramu
{
Typ = BodProgramu.TypBoduProgramu.SchvaleniProgramu,
Nadpis = "Schvalování programu"
};
zas.Program.BodyProgramu.Add(zas.Program.VygenerovatBodProgramu(
zas,
BodProgramu.TypBoduProgramu.BodZasedani));

zas.Program.BodyProgramu.Add(schvaleniProgramu);
zas.Program.BodyProgramu.Add(zas.Program.VygenerovatBodProgramu(
zas,
BodProgramu.TypBoduProgramu.BodZasedani));

zas.AddUsneseni(schvaleniProgramu, new Usneseni
{
Text = "Hlasování o programu"
});

zas.Program.BodyProgramu.Add(new BodProgramu
{
Nadpis = "První",
Text = "Detailní popis bodu programu."
});
zas.Program.BodyProgramu.Add(zas.Program.VygenerovatBodProgramu(
zas,
BodProgramu.TypBoduProgramu.DoplnenyBodZasedani));

zas.Program.BodyProgramu.Add(new BodProgramu
{
Nadpis = "Druhý",
JePodbod = true
});
var bodRuzne = zas.Program.VygenerovatBodProgramu(
zas,
BodProgramu.TypBoduProgramu.BodZasedani,
true);

zas.Program.BodyProgramu.Add(new BodProgramu
{
Nadpis = "Třetí",
JePodbod = true
});
bodRuzne.Nadpis = "Různé";

zas.Program.BodyProgramu.Add(new BodProgramu
{
Nadpis = "Čtvrtý",
Typ = BodProgramu.TypBoduProgramu.DoplnenyBodZasedani
});
var bodDiskuse = zas.Program.VygenerovatBodProgramu(
zas,
BodProgramu.TypBoduProgramu.BodZasedani,
true);

zas.Program.BodyProgramu.Add(new BodProgramu
{
Nadpis = "Různé"
});
bodDiskuse.Nadpis = "Diskuse";
bodDiskuse.Text = "Proběhla diskuse k různým tématům.";

zas.Program.BodyProgramu.Add(new BodProgramu
{
Nadpis = "Diskuse"
});
var bodZaver = zas.Program.VygenerovatBodProgramu(
zas,
BodProgramu.TypBoduProgramu.BodZasedani,
true);

zas.Program.BodyProgramu.Add(new BodProgramu
{
Nadpis = "Závěr"
});
bodZaver.Nadpis = "Závěr";
bodZaver.Text = "Po skončení diskuse bylo toto zasedání zastupitelstva obce skončeno.";

zas.Program.BodyProgramu.Add(bodRuzne);
zas.Program.BodyProgramu.Add(bodDiskuse);
zas.Program.BodyProgramu.Add(bodZaver);

return zas;
}
Expand Down
17 changes: 9 additions & 8 deletions ZZZO/ZZZO.Common/Generators/GeneratorHtml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ private void GenerateInvitationBody(XmlElement html, Zasedani zas, IProgress<int

BodProgramu schvaleniProgramu = zas.Program.BodyProgramu.FirstOrDefault(prog => prog.Typ == BodProgramu.TypBoduProgramu.SchvaleniProgramu);
BodProgramu schvaleniZapisovatele = zas.Program.BodyProgramu.FirstOrDefault(prog => prog.Typ == BodProgramu.TypBoduProgramu.SchvaleniZapisOver);

if (schvaleniProgramu?.Usneseni == null || schvaleniProgramu.Usneseni.Count == 0)
{
throw new Exception("v programu chybí bod a usnesení pro schválení programu jako takového");
Expand All @@ -168,7 +168,7 @@ private void GenerateInvitationBody(XmlElement html, Zasedani zas, IProgress<int
}

List<BodProgramu> bodyProgramu = zas.Program.BodyProgramu.Where(prog => prog.Typ == BodProgramu.TypBoduProgramu.BodZasedani ||
prog.Typ == BodProgramu.TypBoduProgramu.DoplnenyBodZasedani).ToList();
prog.Typ == BodProgramu.TypBoduProgramu.DoplnenyBodZasedani).ToList();

GenerateProgramEntries(body, bodyProgramu);
}
Expand Down Expand Up @@ -207,6 +207,7 @@ private void GenerateRecordBody(XmlElement html, Zasedani zas, IProgress<int> pr

BodProgramu schvaleniProgramu = zas.Program.BodyProgramu.FirstOrDefault(prog => prog.Typ == BodProgramu.TypBoduProgramu.SchvaleniProgramu);
BodProgramu schvaleniZapisovatele = zas.Program.BodyProgramu.FirstOrDefault(prog => prog.Typ == BodProgramu.TypBoduProgramu.SchvaleniZapisOver);
BodProgramu minulyZapis = zas.Program.BodyProgramu.FirstOrDefault(prog => prog.Typ == BodProgramu.TypBoduProgramu.KontrolaMinulehoZapisu);

if (schvaleniProgramu?.Usneseni == null || schvaleniProgramu.Usneseni.Count == 0)
{
Expand Down Expand Up @@ -314,11 +315,9 @@ private void GenerateRecordBody(XmlElement html, Zasedani zas, IProgress<int> pr
///
/// Kontrola zápisu.
///
body.AppendElem("h2").InnerText = "Kontrola zápisu a plnění usnesení z minulého zasedání ZO";
body.AppendElem("h2").InnerText = minulyZapis.Nadpis;

body.AppendElem("p").InnerText = "Starosta obce zhodnotil program z minulého jednání ZO a " +
"informoval přítomné zastupitele i veřejnost o " +
"projednaných bodech a splněných úkolech.";
body.AppendElem("p").InnerText = minulyZapis.Text;

foreach (BodProgramu bodProgramu in bodyProgramu.Where(prog => prog.Typ == BodProgramu.TypBoduProgramu.BodZasedani ||
prog.Typ == BodProgramu.TypBoduProgramu.DoplnenyBodZasedani))
Expand Down Expand Up @@ -417,7 +416,8 @@ private void GenerateProgramEntries(XmlElement body, IEnumerable<BodProgramu> bo
foreach (BodProgramu thisEntry in bodyProgramu)
{
if (thisEntry.Typ == BodProgramu.TypBoduProgramu.SchvaleniProgramu ||
thisEntry.Typ == BodProgramu.TypBoduProgramu.SchvaleniZapisOver)
thisEntry.Typ == BodProgramu.TypBoduProgramu.SchvaleniZapisOver ||
thisEntry.Typ == BodProgramu.TypBoduProgramu.KontrolaMinulehoZapisu)
{
// Schvalování programu není v "programu" jako takovém.
continue;
Expand Down Expand Up @@ -450,7 +450,8 @@ private string GenerateResolution(
XmlElement root = body.AppendElem("div").AppendClass("resolution-container");

if (programEntry.Typ != BodProgramu.TypBoduProgramu.SchvaleniProgramu &&
programEntry.Typ != BodProgramu.TypBoduProgramu.SchvaleniZapisOver)
programEntry.Typ != BodProgramu.TypBoduProgramu.SchvaleniZapisOver &&
programEntry.Typ != BodProgramu.TypBoduProgramu.KontrolaMinulehoZapisu)
{
if (resolution.ZoBereNaVedomi)
{
Expand Down
5 changes: 5 additions & 0 deletions ZZZO/ZZZO/Controls/Program.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,11 @@
Command="{Binding AddProgramEntryCmd}"
CommandParameter="{x:Static api:BodProgramu+TypBoduProgramu.SchvaleniProgramu}"
Content="Schválení programu" />
<Button
Style="{StaticResource PopupButton}"
Command="{Binding AddProgramEntryCmd}"
CommandParameter="{x:Static api:BodProgramu+TypBoduProgramu.KontrolaMinulehoZapisu}"
Content="Kontrola minulého zápisu" />
<Button
Style="{StaticResource PopupButton}"
Command="{Binding AddProgramEntryCmd}"
Expand Down
4 changes: 2 additions & 2 deletions ZZZO/ZZZO/Controls/ProgramEntry.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,12 @@
<StackPanel Orientation="Vertical">
<WrapPanel Orientation="Horizontal">
<Button Command="{Binding AddUsneseniCmd}"
IsEnabled="{Binding ProgramEntry.JeEditovatelny}"
IsEnabled="{Binding ProgramEntry.MuzeEditovatUsneseni}"
ToolTip="Přidat nové usnesení">
<materialDesign:PackIcon Kind="PlusCircle" />
</Button>
<Button ToolTip="Smazat vybrané usnesení"
IsEnabled="{Binding ProgramEntry.JeEditovatelny}"
IsEnabled="{Binding ProgramEntry.MuzeEditovatUsneseni}"
Command="{Binding RemoveUsneseniCmd}">
<materialDesign:PackIcon Kind="MinusCircle" />
</Button>
Expand Down
2 changes: 1 addition & 1 deletion ZZZO/ZZZO/Controls/Resolution.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
Text="{Binding Usneseni.Text, UpdateSourceTrigger=PropertyChanged}" />
<CheckBox Name="CbBereNaVedomi"
Content="ZO bere na vědomí"
IsEnabled="{Binding ProgramEntry.JeEditovatelny}"
IsEnabled="{Binding ProgramEntry.MuzeEditovatUsneseni}"
IsChecked="{Binding Usneseni.ZoBereNaVedomi, UpdateSourceTrigger=PropertyChanged}" />
<GroupBox Header="Hlasování"
Visibility="{Binding Usneseni.ZoNebereNaVedomi, Converter={StaticResource BooleanToVisibilityConverter}}">
Expand Down
4 changes: 2 additions & 2 deletions ZZZO/ZZZO/ViewModels/ProgramEntryViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public IEnumerable<BodProgramu.TypBoduProgramu> TypyBoduProgramu

public bool LzeEditovatUsneseni
{
get => _programEntry != null && _programEntry.JeEditovatelny && _programEntry.Usneseni.Count > 0;
get => _programEntry?.MuzeEditovatUsneseni == true && _programEntry.Usneseni.Count > 0;
}

public Usneseni ChosenUsneseni
Expand Down Expand Up @@ -97,7 +97,7 @@ public BodProgramu ProgramEntry
{
_programEntry.PropertyChanged += (sender, args) =>
{
if (args.PropertyName == nameof(BodProgramu.JeEditovatelny))
if (args.PropertyName == nameof(BodProgramu.MuzeEditovatUsneseni))
{
OnPropertyChanged(nameof(LzeEditovatUsneseni));
}
Expand Down
2 changes: 1 addition & 1 deletion ZZZO/ZZZO/ViewModels/ResolutionViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public ICommand AllDisagreeCmd

public bool JeEditovatelne
{
get => ProgramEntry != null && ProgramEntry.JeEditovatelny &&
get => ProgramEntry?.JeEditovatelny == true &&
(Usneseni == null || !Usneseni.ZoBereNaVedomi);
}

Expand Down

0 comments on commit ed831da

Please sign in to comment.