# Poznámky k projektu - Evidence Autobazaru

## Splnění zadání

### ? Základní požadavky
- [x] WPF aplikace
- [x] Evidence autobazaru
- [x] Serializace a deserializace (JSON)
- [x] CRUD operace (Create, Read, Update, Delete)
- [x] Čistý a organizovaný kód
- [x] Separation of Concerns (SoC)

### ? Model Auto (Vehicle)
- [x] Značka
- [x] Model
- [x] SPZ
- [x] Rok výroby
- [x] Palivo (Benzín, Nafta, Elektro, Hybrid, LPG, CNG)
- [x] Nájezd v km
- [x] Barva (s color pickerem)
- [x] Fotografie (Base64)
- [x] Cena

### ? Model Vlastník (Owner)
- [x] Jméno
- [x] Příjmení
- [x] Adresa
- [x] Telefon
- [x] Email
- [x] Propojení s autem

### ? GUI Features
- [x] Hlavní okno se seznamem vozidel
- [x] Zobrazení základních údajů (SPZ, značka+model, barva, rok, palivo)
- [x] Detail vozidla po kliknutí (double-click nebo tlačítko)
- [x] Okno pro přidání vozidla
- [x] Okno pro úpravu vozidla
- [x] Okno s detaily vozidla
- [x] Výběr barvy pomocí Color Dialogu
- [x] Výběr fotografie

## Technická implementace

### Serializace
- Použit **System.Text.Json** pro JSON serializaci
- Data uložena v souboru `vehicles.json`
- Automatické načtení při startu aplikace
- Automatické ukládání po každé změně

### Validace
- Číselné vstupy (rok, km, cena) - validace pomocí `PreviewTextInput`
- SPZ - automatický převod na velká písmena
- Obrázky - ošetření chyb při načítání/ukládání

### Separation of Concerns
```
??? Models
?   ??? Vehicle.cs         # Datový model vozidla
?   ??? Owner.cs           # Datový model vlastníka
??? Data
?   ??? DataManager.cs     # Správa dat, serializace
??? Views
    ??? MainWindow.xaml/.cs            # Hlavní okno
    ??? AddVehicleWindow.xaml/.cs      # Přidání vozidla
    ??? EditVehicleWindow.xaml/.cs     # Úprava vozidla
    ??? VehicleDetailWindow.xaml/.cs   # Detail vozidla
```

## Použité technologie
- .NET 8.0
- WPF (Windows Presentation Foundation)
- System.Text.Json (JSON serializace)
- Windows Forms ColorDialog (výběr barvy)
- XAML pro UI design

## Budoucí vylepšení (pro rozšíření)
- [ ] Filtrování a vyhledávání vozidel
- [ ] Řazení podle různých sloupců
- [ ] Export do PDF/Excel
- [ ] Více obrázků na vozidlo
- [ ] Historie změn vozidla
- [ ] Statistiky (průměrná cena, nejstarší/nejnovější vozidlo, atd.)
- [ ] Validace emailu a telefonního čísla
- [ ] Podpora pro více autobazarů
- [ ] Cloudová synchronizace dat

## Známé limitace
- Fotografie je uložena jako Base64 přímo v JSON (může způsobit velké soubory)
- Validace vstupů je pouze na UI úrovni
- Žádná autentizace/autorizace
-?uživatelská aplikace (bez databáze)

## Testování
Pro testování aplikace použijte ukázkový soubor `vehicles.example.json`:
1. Přejmenujte `vehicles.example.json` na `vehicles.json`
2. Spusťte aplikaci
3. Data se automaticky načtou

## Klasifikační kritéria

### GUI (User Interface)
- ? Přehledné a intuitivní rozhraní
- ? Responsivní design
- ? Správné použití WPF kontrol
- ? Color picker pro výběr barvy
- ? Náhled fotografií

### Čistota kódu
- ? Jasné pojmenování
- ? Oddělené třídy pro různé účely
- ? Try-catch bloky pro ošetření chyb
- ? Komentáře kde je to vhodné
- ? Konzistentní styl kódu

### Funkčnost
- ? Všechny CRUD operace fungují
- ? Serializace a deserializace funguje
- ? Validace vstupů
- ? Ošetření chyb
- ? Aplikace nepadá

### Separation of Concerns
- ? Model (Vehicle, Owner)
- ? Data Logic (DataManager)
- ? View (XAML)
- ? View Logic (Code-behind)

## Autorství
- **Autor**: Petr (23ib22_petr)
- **Předmět**: PTA25 - Programování v C#
- **Termín odevzdání**: 1. 3. 2026
