Files
marekandClaude Opus 5 a6377ab583 Baseline: současný stav projektu Rozpisky
První commit — WPF aplikace pro generování výkresových rohových razítek
(.NET 10, SkiaSharp, ACadSharp, ClosedXML) včetně xUnit testů, DXF šablony,
log a dokumentace. Build výstupy (bin/, obj/, .vs/) jsou ignorovány.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-07 09:45:49 +02:00

100 lines
6.0 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using Rozpisky.Models;
using Rozpisky.ViewModels;
namespace Rozpisky.Data;
/// <summary>
/// Ukázková data, aby byl po spuštění vidět styl i tok dat. Rozděleno na dvě části:
/// <see cref="SeedCiselniky"/> = výchozí obsah sdílených číselníků (nasází se jen když
/// vedle .exe ještě není <c>ciselniky.json</c>), a <see cref="SeedProjekt"/> = demo zakázka
/// (přílohy, revize) čistě demo, přepíše se otevřením reálného projektu.
/// </summary>
public static class DemoData
{
/// <summary>Výchozí obsah číselníků pro úplně první spuštění (než vznikne ciselniky.json).</summary>
public static void SeedCiselniky(Ciselniky c)
{
c.Organizace.Add(new Organizace { Nazev = "Správa železnic, s.o.", Adresa = "Dlážděná 1003/7, 110 00 Praha 1", Logo = "sprava_zeleznic.dxf" });
c.Organizace.Add(new Organizace { Nazev = "SŽ Stavební správa západ", Adresa = "Sokolovská 1955/278, 190 00 Praha 9" });
c.Firmy.Add(new Firma { Nazev = "EXPROJEKT a.s.", Adresa = "Nekonečná 8, 182 00 Praha 8", Telefon = "+420 222 333 444", Email = "info@exprojekt.cz", Logo = "exprojekt.dxf" });
c.Firmy.Add(new Firma { Nazev = "SUDOP PRAHA a.s.", Adresa = "Olšanská 2643/1a, 130 80 Praha 3", Telefon = "+420 267 094 111", Email = "sudop@sudop.cz" });
c.Firmy.Add(new Firma { Nazev = "METROPROJEKT Praha a.s.", Adresa = "Argentinská 1621/36, 170 00 Praha 7", Telefon = "+420 296 154 111", Email = "info@metroprojekt.cz" });
foreach (var j in new[] { "Ing. Jan Novák", "Ing. Petr Svoboda", "Ing. Eva Dvořáková", "Ing. Pavel Černý" })
c.Jmena.Add(new Jmeno { Hodnota = j });
foreach (var v in new[] { "DOS", "DUR", "DSP", "PDPS", "DPS", "RDS" })
c.VerzeDokumentace.Add(new VerzeDokumentace { Hodnota = v });
c.Casti.Add(new Cast { Oznaceni = "D", Nazev = "Dokumentace objektů" });
c.Casti.Add(new Cast { Oznaceni = "E", Nazev = "Dokladová část" });
SeedKraje(c);
}
/// <summary>Výchozí seznam krajů ČR (14 krajů). Nasází se jen do prázdného číselníku volá ho
/// jak první spuštění (<see cref="SeedCiselniky"/>), tak backfill starších <c>ciselniky.json</c>,
/// které kraje ještě neměly.</summary>
public static void SeedKraje(Ciselniky c)
{
if (c.Kraje.Count > 0) return;
foreach (var k in new[]
{
"Hlavní město Praha", "Středočeský", "Jihočeský", "Plzeňský", "Karlovarský",
"Ústecký", "Liberecký", "Královéhradecký", "Pardubický", "Kraj Vysočina",
"Jihomoravský", "Olomoucký", "Zlínský", "Moravskoslezský",
})
c.Kraje.Add(new Kraj { Nazev = k });
}
/// <summary>Demo zakázka (údaje projektu + pár příloh + revize). Reference do číselníků se
/// dohledávají podle hodnoty (FirstOrDefault), ať to funguje i s číselníky načtenými ze souboru.</summary>
public static void SeedProjekt(MainViewModel vm)
{
var c = vm.Ciselniky;
vm.Projekt.Stavba = "Modernizace traťového úseku Praha Beroun";
vm.Projekt.HIP = "Ing. Jan Novák";
vm.Projekt.Skod = "S123456789X";
vm.Projekt.CisloZakazky = "2026-014";
vm.SelectedInvestor = c.Organizace.FirstOrDefault();
vm.SelectedSlozkaSZ = c.Organizace.Skip(1).FirstOrDefault() ?? c.Organizace.FirstOrDefault();
vm.SelectedStupen = c.VerzeDokumentace.FirstOrDefault(v => v.Hodnota == "DPS") ?? c.VerzeDokumentace.FirstOrDefault();
vm.SelectedZhotovitelSOD = c.Firmy.FirstOrDefault();
vm.Projekt.SmluvniDatumZpracovani = "2026-03-15";
// Loga financujících institucí (DXF ve složce loga\ vedle .exe).
vm.Projekt.Logo1Soubor = "eu_op_doprava.dxf"; // dotační (vlevo)
vm.Projekt.Logo2Soubor = "md_sfdi.dxf"; // státní (vpravo)
// Demo: navázat loga na vybranou organizaci/firmu, ať se v náhledu ukážou i loga 3/4/5.
// (Stávající ciselniky.json vzniklý před polem Logo ho má prázdný doplníme, pokud chybí.)
if (vm.SelectedInvestor is { } inv && string.IsNullOrWhiteSpace(inv.Logo)) inv.Logo = "sprava_zeleznic.dxf";
if (vm.SelectedZhotovitelSOD is { } zh && string.IsNullOrWhiteSpace(zh.Logo)) zh.Logo = "exprojekt.dxf";
// Zhotovitel objektu = vybraná firma (aby se logo 5 spárovalo dle Priloha.ZhotovitelCasti).
string zhotovitelCasti = vm.SelectedZhotovitelSOD?.Nazev ?? "EXPROJEKT a.s.";
vm.Prilohy.Add(new Priloha
{
OznaceniCasti = "D", OznaceniDilciCasti = "D110", NazevObjektu = "Železniční svršek", CisloObjektu = "SO131.13.12.01",
TypPrilohy = "D.1", DilciPriloha = "1", PoradiPrilohy = "101",
NazevPrilohy = "Situace", Zkratka = "SIT", Vypracoval = "Ing. Petr Svoboda",
OdpovednyProjektant = "Ing. Jan Novák", R1 = "V00", KontrolovalR1 = "Ing. Pavel Černý",
ZhotovitelCasti = zhotovitelCasti, Meritko = "1:1000", Formaty = "4", Kraj = "Středočeský",
KatastralniUzemi = "viz textová část", Ltscale = "1.0", Ctb = "monochrome.ctb",
});
vm.Prilohy.Add(new Priloha
{
OznaceniCasti = "D", OznaceniDilciCasti = "D110", NazevObjektu = "Most v km 12,345", CisloObjektu = "SO201",
TypPrilohy = "D.1", DilciPriloha = "1", PoradiPrilohy = "201",
NazevPrilohy = "Podélný řez", Zkratka = "PR", Vypracoval = "Ing. Eva Dvořáková",
OdpovednyProjektant = "Ing. Jan Novák", R1 = "V00", KontrolovalR1 = "Ing. Pavel Černý",
ZhotovitelCasti = zhotovitelCasti, Meritko = "1:100", Formaty = "2", Kraj = "Středočeský",
KatastralniUzemi = "viz textová část", Ltscale = "1.0", Ctb = "monochrome.ctb",
});
vm.Revize.Add(new Revize { Cislo = "V00", Datum = "-", Popis = "Vyjádření, stanoviska, připomínky" });
vm.Revize.Add(new Revize { Cislo = "V01", Datum = "2026-03-15", Popis = "První vydání" });
}
}