From 189e7a23296c6993e175d0ec0363c8856aa1174e Mon Sep 17 00:00:00 2001 From: Matthias Hinrichs Date: Tue, 26 Aug 2025 03:17:49 +0200 Subject: [PATCH] first commit --- .github/copilot-instructions.md | 103 ++ .vscode/tasks.json | 13 + README.md | 177 +++ TODO.md | 199 +++ config.yaml | 7 + go.mod | 67 + go.sum | 156 ++ internal/config/config.go | 50 + internal/database/database.go | 23 + internal/handlers/handlers.go | 1964 ++++++++++++++++++++++++++ internal/models/models.go | 336 +++++ internal/views/accounts.templ | 265 ++++ internal/views/accounts_templ.go | 254 ++++ internal/views/dashboard.templ | 138 ++ internal/views/dashboard_templ.go | 320 +++++ internal/views/layout.templ | 16 + internal/views/layout_templ.go | 61 + internal/views/login.templ | 66 + internal/views/login_templ.go | 81 ++ internal/views/navigation.templ | 129 ++ internal/views/navigation_templ.go | 79 ++ internal/views/recurring.templ | 324 +++++ internal/views/recurring_templ.go | 504 +++++++ internal/views/register.templ | 65 + internal/views/register_templ.go | 81 ++ internal/views/settings.templ | 312 ++++ internal/views/settings_templ.go | 195 +++ internal/views/transactions.templ | 1228 ++++++++++++++++ internal/views/transactions_templ.go | 1221 ++++++++++++++++ main.go | 85 ++ static/css/style.css | 0 static/js/dashboard-charts.js | 316 +++++ whereismymoney | Bin 0 -> 18481890 bytes whereismymoney.db | Bin 0 -> 61440 bytes 34 files changed, 8835 insertions(+) create mode 100644 .github/copilot-instructions.md create mode 100644 .vscode/tasks.json create mode 100644 README.md create mode 100644 TODO.md create mode 100644 config.yaml create mode 100644 go.mod create mode 100644 go.sum create mode 100644 internal/config/config.go create mode 100644 internal/database/database.go create mode 100644 internal/handlers/handlers.go create mode 100644 internal/models/models.go create mode 100644 internal/views/accounts.templ create mode 100644 internal/views/accounts_templ.go create mode 100644 internal/views/dashboard.templ create mode 100644 internal/views/dashboard_templ.go create mode 100644 internal/views/layout.templ create mode 100644 internal/views/layout_templ.go create mode 100644 internal/views/login.templ create mode 100644 internal/views/login_templ.go create mode 100644 internal/views/navigation.templ create mode 100644 internal/views/navigation_templ.go create mode 100644 internal/views/recurring.templ create mode 100644 internal/views/recurring_templ.go create mode 100644 internal/views/register.templ create mode 100644 internal/views/register_templ.go create mode 100644 internal/views/settings.templ create mode 100644 internal/views/settings_templ.go create mode 100644 internal/views/transactions.templ create mode 100644 internal/views/transactions_templ.go create mode 100644 main.go create mode 100644 static/css/style.css create mode 100644 static/js/dashboard-charts.js create mode 100755 whereismymoney create mode 100644 whereismymoney.db diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000..36f1488 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,103 @@ +WhereIsMyMoney - Personal Finance Management + +## Project Overview +A Go web application for personal finance management using modern frameworks. Features include comprehensive transaction management, multi-edit/delete capabilities, advanced filtering, user authentication, bank account & depot management, and a responsive UI with interactive dashboards. + +## Tech Stack +- **Backend**: Go 1.23 with Gin web framework +- **Templates**: a-h/templ for type-safe HTML templates +- **Database**: GORM with SQLite +- **Configuration**: Viper for config management +- **Sessions**: Gorilla Sessions for user sessions (Safari-compatible) +- **Authentication**: bcrypt for password hashing +- **Frontend**: Tailwind CSS for styling with modular template structure, Chart.js for data visualization +- **JavaScript**: Vanilla JS for dynamic interactions, AJAX operations, and form handling + +## Key Features +- **Transaction Management**: Full CRUD operations with pagination, advanced filtering, multi-edit/delete functionality +- **Recurring Transactions**: Automated generation of recurring transactions with flexible intervals +- **User Management**: Registration, login, logout with secure session handling and settings management +- **Bank Account Management**: Create and manage multiple bank accounts (checking, savings, credit) +- **Depot Management**: Create and manage investment depots with different brokers +- **Advanced Filtering**: Multi-criteria filtering (date range, description, category, account, type, amount) +- **Batch Operations**: Multi-select transactions for bulk editing and deletion +- **Interactive Dashboard**: Charts and graphs for financial overview using Chart.js +- **Responsive Design**: Mobile-friendly navigation with dropdown menus +- **Modular Templates**: Separate components for reusability and maintainability + +## Development +- Run server: `go run main.go` or use VS Code task "Run Server" +- Generate templates: `templ generate` +- Build: `go build -o app .` +- Server runs on http://localhost:8080 + +## API Routes +### Authentication +- **Auth**: `/login`, `/register`, `/logout` + +### Main Pages +- **Dashboard**: `/` (protected) - Financial overview with interactive charts +- **Transactions**: `/transactions` (protected) - Transaction list with filtering, pagination, and multi-operations +- **Accounts**: `/accounts` (protected) - Bank account & depot management +- **Recurring**: `/recurring` (protected) - Recurring transaction management +- **Settings**: `/settings` (protected) - User settings and password management + +### Transaction API +- **GET** `/transactions` - Transaction list with pagination and filtering +- **POST** `/transactions` - Create new transaction +- **PUT** `/transactions/:id` - Update transaction +- **DELETE** `/transactions/:id` - Delete transaction +- **PUT** `/transactions/multi-update` - Batch update multiple transactions +- **DELETE** `/transactions/multi-delete` - Batch delete multiple transactions + +### Recurring Transactions API +- **GET** `/recurring` - List recurring transactions +- **POST** `/recurring` - Create recurring transaction +- **PUT** `/recurring/:id` - Update recurring transaction +- **DELETE** `/recurring/:id` - Delete recurring transaction + +### Account Management API +- **GET** `/accounts` - View accounts overview +- **POST** `/accounts/bank` - Create bank account +- **POST** `/accounts/depot` - Create depot + +### User Management API +- **PUT** `/settings/profile` - Update user profile (name only) +- **PUT** `/settings/password` - Change user password + +## Database Models +- **User**: Authentication and user data with relationships to accounts/depots/transactions +- **Transaction**: Complete transaction data (amount, description, date, category, account, type) +- **RecurringTransaction**: Templates for automated recurring transactions with flexible intervals +- **BankAccount**: Bank account details (name, bank, IBAN, balance, account type) +- **Depot**: Investment depot details (name, broker, depot number, total value) +- **Category**: Transaction categories with icons for visual organization + +## Project Structure +``` +whereismymoney/ +├── main.go # Application entry point with routes +├── config.yaml # Configuration file +├── whereismymoney.db # SQLite database +├── static/ +│ ├── css/ +│ │ └── style.css # Custom CSS styles +│ └── js/ +│ └── dashboard-charts.js # Chart.js configuration +├── internal/ +│ ├── config/ # Configuration management +│ ├── database/ # Database connection and migrations +│ ├── handlers/ # HTTP handlers (auth, transactions, accounts, etc.) +│ ├── models/ # GORM models (User, Transaction, BankAccount, etc.) +│ └── views/ # Templ templates +│ ├── layout.templ # Base layout +│ ├── navigation.templ # Reusable navigation component +│ ├── dashboard.templ # Main dashboard with charts +│ ├── transactions.templ # Transaction list with filtering and multi-ops +│ ├── accounts.templ # Bank accounts & depots management +│ ├── recurring.templ # Recurring transactions management +│ ├── settings.templ # User settings and password management +│ ├── login.templ # Login page +│ └── register.templ # Registration page +└── README.md # Documentation +``` diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..761ba8e --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,13 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "Run Server", + "type": "shell", + "command": "go run main.go", + "isBackground": true, + "problemMatcher": [], + "group": "build" + } + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..524d6e5 --- /dev/null +++ b/README.md @@ -0,0 +1,177 @@ +# WhereIsMyMoney + +Eine moderne Webanwendung zur persönlichen Finanzverwaltung mit umfassenden Funktionen für Transaktionsmanagement und Finanzübersicht. + +## Features + +### Transaktionsmanagement +- **Vollständige CRUD-Operationen**: Erstellen, Bearbeiten, Löschen von Transaktionen +- **Multi-Edit-Funktionalität**: Mehrere Transaktionen gleichzeitig bearbeiten +- **Multi-Delete-Funktionalität**: Mehrere Transaktionen gleichzeitig löschen +- **Erweiterte Filter**: Nach Datum, Beschreibung, Kategorie, Konto, Typ und Betrag filtern +- **Paginierung**: Übersichtliche Navigation durch große Transaktionslisten +- **Regelmäßige Transaktionen**: Automatische Generierung wiederkehrender Transaktionen + +### Konten & Kategorien +- **Bankkonten-Management**: Verwaltung mehrerer Bankkonten mit verschiedenen Typen +- **Depot-Management**: Verwaltung von Investment-Depots verschiedener Broker +- **Kategorien-System**: Flexible Kategorisierung mit Icons für bessere Übersicht +- **Übersicht über Einnahmen und Ausgaben**: Detaillierte Finanzanalyse + +### Benutzerfreundlichkeit +- **Responsive Design**: Optimiert für Desktop und Mobile +- **Interaktive Dashboards**: Grafische Darstellung der Finanzdaten mit Chart.js +- **Benutzereinstellungen**: Passwort-Management und Profilverwaltung +- **Session-Management**: Sichere Benutzeranmeldung mit Safari-Kompatibilität + +### Technische Features +- **Type-safe Templates**: a-h/templ für sichere HTML-Generierung +- **Moderne Architektur**: GORM für Datenbankoperationen +- **RESTful API**: JSON-basierte Endpunkte für AJAX-Operationen +- **Filter-Persistierung**: URL-Parameter bleiben bei Navigation erhalten + +## Technologien + +- **Backend**: Go 1.23 mit Gin Framework +- **Templates**: a-h/templ für type-safe HTML Templates +- **Database**: GORM mit SQLite +- **Configuration**: Viper für Konfigurationsmanagement +- **Sessions**: Gorilla Sessions +- **Frontend**: Tailwind CSS + +## Installation + +1. Repository klonen oder herunterladen +2. In das Projektverzeichnis wechseln: + ```bash + cd whereismymoney + ``` +3. Dependencies installieren: + ```bash + go mod tidy + ``` +4. Templates generieren: + ```bash + templ generate + ``` +5. Server starten: + ```bash + go run main.go + ``` +## API Routes + +### Authentifizierung +- **Auth**: `/login`, `/register`, `/logout` + +### Hauptseiten +- **Dashboard**: `/` (geschützt) - Finanzübersicht mit Grafiken +- **Transaktionen**: `/transactions` (geschützt) - Transaktionsliste mit Filtern +- **Konten**: `/accounts` (geschützt) - Bank- und Depot-Verwaltung +- **Einstellungen**: `/settings` (geschützt) - Benutzereinstellungen + +### Transaktions-API +- **GET** `/transactions` - Transaktionsliste mit Paginierung und Filtern +- **POST** `/transactions` - Neue Transaktion erstellen +- **PUT** `/transactions/:id` - Transaktion bearbeiten +- **DELETE** `/transactions/:id` - Transaktion löschen +- **PUT** `/transactions/multi-update` - Mehrere Transaktionen bearbeiten +- **DELETE** `/transactions/multi-delete` - Mehrere Transaktionen löschen + +### Recurring Transactions +- **GET** `/recurring` - Regelmäßige Transaktionen anzeigen +- **POST** `/recurring` - Neue regelmäßige Transaktion erstellen +- **PUT** `/recurring/:id` - Regelmäßige Transaktion bearbeiten +- **DELETE** `/recurring/:id` - Regelmäßige Transaktion löschen + +6. Browser öffnen: http://localhost:8080 + +## Entwicklung + +### Templates generieren +```bash +templ generate +``` + +### Server starten +```bash +go run main.go +``` + +### Build erstellen +```bash +go build -o app . +./app +``` + +## Konfiguration + +Die App verwendet eine `config.yaml` Datei für die Konfiguration: + +```yaml +server: + host: localhost + port: "8080" + +database: + type: sqlite + path: "./whereismymoney.db" +``` + +## Projekt-Struktur + +``` +whereismymoney/ +├── main.go # Hauptanwendung mit Routing +├── config.yaml # Konfigurationsdatei +├── whereismymoney.db # SQLite Datenbank +├── static/ +│ ├── css/ +│ │ └── style.css # Custom CSS +│ └── js/ +│ └── dashboard-charts.js # Chart.js Konfiguration +├── internal/ +│ ├── config/ +│ │ └── config.go # Konfigurationsverwaltung +│ ├── database/ +│ │ └── database.go # Datenbankverbindung und Migrationen +│ ├── handlers/ +│ │ └── handlers.go # HTTP Handler (Auth, Transaktionen, etc.) +│ ├── models/ +│ │ └── models.go # GORM Modelle (User, Transaction, etc.) +│ └── views/ # Templ Templates +│ ├── layout.templ # Basis-Layout +│ ├── navigation.templ # Navigation-Komponente +│ ├── dashboard.templ # Dashboard mit Grafiken +│ ├── transactions.templ # Transaktionsliste mit Filtern +│ ├── accounts.templ # Konten-Management +│ ├── recurring.templ # Regelmäßige Transaktionen +│ ├── settings.templ # Benutzereinstellungen +│ ├── login.templ # Login-Seite +│ └── register.templ # Registrierung +└── README.md # Diese Datei +``` + +## Datenbank-Modelle + +### User +- Benutzerauthentifizierung mit bcrypt +- Beziehungen zu Konten, Depots und Transaktionen + +### Transaction +- Vollständige Transaktionsdaten (Betrag, Beschreibung, Datum, etc.) +- Verknüpfung zu Benutzern, Kategorien und Konten +- Unterstützung für Ein- und Ausgaben + +### RecurringTransaction +- Vorlage für regelmäßige Transaktionen +- Flexible Intervalle (täglich, wöchentlich, monatlich, jährlich) +- Automatische Generierung neuer Transaktionen + +### BankAccount & Depot +- Verschiedene Kontotypen (Girokonto, Sparkonto, Kreditkarte) +- Depot-Management für verschiedene Broker +- Saldo-Verfolgung + +### Category +- Kategorisierung mit Icons +- Flexible Zuordnung zu Transaktionen diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..855061e --- /dev/null +++ b/TODO.md @@ -0,0 +1,199 @@ +# WhereIsMyMoney - Feature Roadmap & TODO Liste + +## 🎯 Priorität: Hoch + +### 📊 Dashboard & Analytics +- [ ] **Erweiterte Statistiken** + - Monatliche Trends und Vergleiche + - Ausgaben nach Kategorien (Pie Chart) + - Ein-/Ausgaben Verlauf (Line Chart) + - Durchschnittliche monatliche Ausgaben + - Sparrate berechnen und anzeigen + +- [ ] **Budget-Management** + - Monatliche Budgets pro Kategorie festlegen + - Budget-Fortschritt anzeigen (Progress Bars) + - Warnungen bei Budget-Überschreitung + - Budget vs. tatsächliche Ausgaben Vergleich + +### 📱 Mobile Optimierung +- [ ] **Progressive Web App (PWA)** + - Service Worker für Offline-Funktionalität + - App Manifest für "Add to Home Screen" + - Push-Benachrichtigungen für Budget-Warnungen + - Touch-optimierte Eingabefelder + +- [ ] **Mobile UI Verbesserungen** + - Swipe-Gesten für Transaktionsaktionen + - Floating Action Button für neue Transaktionen + - Verbessertes Touch-Interface für Filter + - Optimierte Tabellen für kleine Bildschirme + +## 🎯 Priorität: Mittel + +### 🔄 Import/Export Funktionen +- [ ] **CSV Import** + - Bank-CSV Dateien importieren + - Mapping-Interface für Spalten + - Duplikat-Erkennung und -Behandlung + - Vorschau vor dem Import + +- [ ] **Export Funktionen** + - Transaktionen als CSV exportieren + - PDF-Reports generieren + - Jahresabschluss-Reports + - Kategorien-Reports + +### 🏦 Erweiterte Konten-Features +- [ ] **Kontostand-Tracking** + - Automatische Saldo-Berechnung + - Kontostand-Historie + - Überziehungskredit-Verwaltung + - Multi-Währungs-Unterstützung + +- [ ] **Depot-Erweiterungen** + - Aktien/ETF Positionen verwalten + - Performance-Tracking + - Dividenden-Tracking + - Portfolio-Diversifikation anzeigen + +### 🔍 Erweiterte Suche & Filter +- [ ] **Volltext-Suche** + - Suche in Transaktionsbeschreibungen + - Fuzzy Search für Tippfehler + - Gespeicherte Suchanfragen + - Quick-Filter Buttons + +- [ ] **Erweiterte Filter** + - Betragsbereiche (von/bis) + - Kombinierte Filter (UND/ODER) + - Filter-Presets speichern + - Erweiterte Datumsfilter (letzte 30 Tage, etc.) + +## 🎯 Priorität: Niedrig + +### 🔔 Benachrichtigungen & Erinnerungen +- [ ] **Recurring Transaction Alerts** + - E-Mail-Benachrichtigungen für fällige Transaktionen + - Push-Notifications im Browser + - Erinnerungen für unregelmäßige Ausgaben + - Budget-Warnungen + +### 🎨 UI/UX Verbesserungen +- [ ] **Themes & Personalisierung** + - Dark/Light Mode Toggle + - Anpassbare Farben + - Benutzer-definierte Kategorien-Icons + - Anpassbare Dashboard-Widgets + +- [ ] **Keyboard Shortcuts** + - Schnelle Navigation (Strg+1, Strg+2, etc.) + - Neue Transaktion anlegen (Strg+N) + - Filter öffnen (Strg+F) + - Suche fokussieren (/) + +### 🔒 Sicherheit & Backup +- [ ] **Backup & Restore** + - Automatische Datenbank-Backups + - Cloud-Backup Integration + - Import/Export der gesamten Datenbank + - Backup-Zeitplan konfigurieren + +- [ ] **Erweiterte Sicherheit** + - Two-Factor Authentication (2FA) + - Session-Timeout konfigurierbar + - Login-Versuche limitieren + - Passwort-Stärke-Meter + +### 📈 Reporting & Analysis +- [ ] **Erweiterte Reports** + - Jahresübersicht generieren + - Steuer-relevante Ausgaben filtern + - Ausgaben-Trends analysieren + - Vergleich zwischen Zeiträumen + +- [ ] **Data Visualization** + - Interaktive Charts (Zoom, Filter) + - Heatmap für Ausgaben-Muster + - Sankey-Diagramm für Geldfluss + - Forecast-Modelle für zukünftige Ausgaben + +### 🌐 Integration & API +- [ ] **Bank-Integration** + - Open Banking APIs + - Automatischer Transaction Import + - Real-time Kontostand-Updates + - Bank-spezifische Kategorisierung + +- [ ] **Externe Tools** + - YNAB Import/Export + - Mint.com Migration + - Excel/Google Sheets Sync + - Webhook-Support für externe Apps + +## 🔧 Technische Verbesserungen + +### 🏗️ Architektur +- [ ] **Performance Optimierung** + - Datenbankindexierung verbessern + - Lazy Loading für große Datensätze + - Caching für häufige Abfragen + - API Response Komprimierung + +- [ ] **Testing & Quality** + - Unit Tests für alle Handler + - Integration Tests für API Endpoints + - Frontend Testing mit Playwright + - Performance Tests für große Datenmengen + +### 🚀 Deployment & DevOps +- [ ] **Docker Containerization** + - Multi-stage Dockerfile + - Docker Compose für Development + - Health Checks implementieren + - Environment-basierte Konfiguration + +- [ ] **CI/CD Pipeline** + - GitHub Actions Setup + - Automatische Tests bei Push + - Security Scanning + - Automated Deployment + +## 📋 Kleine Verbesserungen + +### 🎯 Quick Wins +- [ ] **Benutzerfreundlichkeit** + - Lade-Spinner für AJAX-Requests + - Toast-Nachrichten für Erfolgsmeldungen + - Bessere Fehlermeldungen + - Auto-complete für Beschreibungen + +- [ ] **Validation & Error Handling** + - Client-side Formvalidierung + - Bessere Error Messages + - Input-Sanitization verbessern + - Graceful Error Recovery + +--- + +## 📝 Notizen + +### Aktuell implementierte Features ✅ +- ✅ Transaktions-CRUD mit Paginierung +- ✅ Multi-Edit und Multi-Delete +- ✅ Erweiterte Filter-Funktionen +- ✅ Recurring Transactions +- ✅ Benutzer-Management mit Settings +- ✅ Bank- und Depot-Verwaltung +- ✅ Responsive Design mit Tailwind CSS +- ✅ Dashboard mit Chart.js Integration + +### Nächste Schritte Empfehlung +1. **Dashboard Analytics erweitern** - Mehr Charts und Statistiken +2. **CSV Import implementieren** - Praktischer Nutzen für Benutzer +3. **Mobile Optimierung** - PWA Features hinzufügen +4. **Budget-Management** - Core Feature für Finanz-Apps + +--- + +*Letzte Aktualisierung: 26. August 2025* diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000..24abd49 --- /dev/null +++ b/config.yaml @@ -0,0 +1,7 @@ +server: + host: localhost + port: "8080" + +database: + type: sqlite + path: "./whereismymoney.db" diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..2c76c82 --- /dev/null +++ b/go.mod @@ -0,0 +1,67 @@ +module whereismymoney + +go 1.23.0 + +require ( + github.com/a-h/templ v0.3.943 + github.com/gin-gonic/gin v1.10.1 + github.com/gorilla/sessions v1.4.0 + github.com/spf13/viper v1.20.1 + gorm.io/driver/sqlite v1.6.0 + gorm.io/gorm v1.30.1 +) + +require ( + github.com/a-h/parse v0.0.0-20250122154542-74294addb73e // indirect + github.com/andybalholm/brotli v1.1.0 // indirect + github.com/bytedance/sonic v1.11.6 // indirect + github.com/bytedance/sonic/loader v0.1.1 // indirect + github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/cli/browser v1.3.0 // indirect + github.com/cloudwego/base64x v0.1.4 // indirect + github.com/cloudwego/iasm v0.2.0 // indirect + github.com/fatih/color v1.16.0 // indirect + github.com/fsnotify/fsnotify v1.8.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.3 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.20.0 // indirect + github.com/go-viper/mapstructure/v2 v2.2.1 // indirect + github.com/goccy/go-json v0.10.2 // indirect + github.com/gorilla/securecookie v1.1.2 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.2.7 // indirect + github.com/leodido/go-urn v1.4.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-sqlite3 v1.14.22 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/natefinch/atomic v1.0.1 // indirect + github.com/pelletier/go-toml/v2 v2.2.3 // indirect + github.com/sagikazarmark/locafero v0.7.0 // indirect + github.com/sourcegraph/conc v0.3.0 // indirect + github.com/spf13/afero v1.12.0 // indirect + github.com/spf13/cast v1.7.1 // indirect + github.com/spf13/pflag v1.0.6 // indirect + github.com/subosito/gotenv v1.6.0 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ugorji/go/codec v1.2.12 // indirect + go.uber.org/atomic v1.9.0 // indirect + go.uber.org/multierr v1.9.0 // indirect + golang.org/x/arch v0.8.0 // indirect + golang.org/x/crypto v0.41.0 // indirect + golang.org/x/mod v0.26.0 // indirect + golang.org/x/net v0.42.0 // indirect + golang.org/x/sync v0.16.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/text v0.28.0 // indirect + golang.org/x/tools v0.35.0 // indirect + google.golang.org/protobuf v1.36.1 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) + +tool github.com/a-h/templ/cmd/templ diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..d1a2736 --- /dev/null +++ b/go.sum @@ -0,0 +1,156 @@ +github.com/a-h/parse v0.0.0-20250122154542-74294addb73e h1:HjVbSQHy+dnlS6C3XajZ69NYAb5jbGNfHanvm1+iYlo= +github.com/a-h/parse v0.0.0-20250122154542-74294addb73e/go.mod h1:3mnrkvGpurZ4ZrTDbYU84xhwXW2TjTKShSwjRi2ihfQ= +github.com/a-h/templ v0.3.943 h1:o+mT/4yqhZ33F3ootBiHwaY4HM5EVaOJfIshvd5UNTY= +github.com/a-h/templ v0.3.943/go.mod h1:oCZcnKRf5jjsGpf2yELzQfodLphd2mwecwG4Crk5HBo= +github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= +github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= +github.com/bytedance/sonic v1.11.6 h1:oUp34TzMlL+OY1OUWxHqsdkgC/Zfc85zGqw9siXjrc0= +github.com/bytedance/sonic v1.11.6/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4= +github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3zCYjJFNM= +github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cli/browser v1.3.0 h1:LejqCrpWr+1pRqmEPDGnTZOjsMe7sehifLynZJuqJpo= +github.com/cli/browser v1.3.0/go.mod h1:HH8s+fOAxjhQoBUAsKuPCbqUuxZDhQ2/aD+SzsEfBTk= +github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= +github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= +github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= +github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= +github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.10.1 h1:T0ujvqyCSqRopADpgPgiTT63DUQVSfojyME59Ei63pQ= +github.com/gin-gonic/gin v1.10.1/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.20.0 h1:K9ISHbSaI0lyB2eWMPJo+kOS/FBExVwjEviJTixqxL8= +github.com/go-playground/validator/v10 v10.20.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= +github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= +github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/gorilla/securecookie v1.1.2 h1:YCIWL56dvtr73r6715mJs5ZvhtnY73hBvEF8kXD8ePA= +github.com/gorilla/securecookie v1.1.2/go.mod h1:NfCASbcHqRSY+3a8tlWJwsQap2VX5pwzwo4h3eOamfo= +github.com/gorilla/sessions v1.4.0 h1:kpIYOp/oi6MG/p5PgxApU8srsSw9tuFbt46Lt7auzqQ= +github.com/gorilla/sessions v1.4.0/go.mod h1:FLWm50oby91+hl7p/wRxDth9bWSuk0qVL2emc7lT5ik= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= +github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= +github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/natefinch/atomic v1.0.1 h1:ZPYKxkqQOx3KZ+RsbnP/YsgvxWQPGxjC0oBt2AhwV0A= +github.com/natefinch/atomic v1.0.1/go.mod h1:N/D/ELrljoqDyT3rZrsUmtsuzvHkeB/wWjHV22AZRbM= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo= +github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= +github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= +github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= +github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= +github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4= +github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= +github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= +go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= +go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc= +golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= +golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= +golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/sqlite v1.6.0 h1:WHRRrIiulaPiPFmDcod6prc4l2VGVWHz80KspNsxSfQ= +gorm.io/driver/sqlite v1.6.0/go.mod h1:AO9V1qIQddBESngQUKWL9yoH93HIeA1X6V633rBwyT8= +gorm.io/gorm v1.30.1 h1:lSHg33jJTBxs2mgJRfRZeLDG+WZaHYCk3Wtfl6Ngzo4= +gorm.io/gorm v1.30.1/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/internal/config/config.go b/internal/config/config.go new file mode 100644 index 0000000..18b7973 --- /dev/null +++ b/internal/config/config.go @@ -0,0 +1,50 @@ +package config + +import ( + "github.com/spf13/viper" +) + +type Config struct { + Server ServerConfig `mapstructure:"server"` + Database DatabaseConfig `mapstructure:"database"` +} + +type ServerConfig struct { + Port string `mapstructure:"port"` + Host string `mapstructure:"host"` +} + +type DatabaseConfig struct { + Type string `mapstructure:"type"` + Path string `mapstructure:"path"` +} + +func Load() (*Config, error) { + viper.SetConfigName("config") + viper.SetConfigType("yaml") + viper.AddConfigPath(".") + viper.AddConfigPath("./config") + + // Defaults + viper.SetDefault("server.port", "8080") + viper.SetDefault("server.host", "localhost") + viper.SetDefault("database.type", "sqlite") + viper.SetDefault("database.path", "./data.db") + + // Environment variables + viper.AutomaticEnv() + + if err := viper.ReadInConfig(); err != nil { + // Config file not found, use defaults + if _, ok := err.(viper.ConfigFileNotFoundError); !ok { + return nil, err + } + } + + var config Config + if err := viper.Unmarshal(&config); err != nil { + return nil, err + } + + return &config, nil +} diff --git a/internal/database/database.go b/internal/database/database.go new file mode 100644 index 0000000..a2dfa45 --- /dev/null +++ b/internal/database/database.go @@ -0,0 +1,23 @@ +package database + +import ( + "whereismymoney/internal/config" + "whereismymoney/internal/models" + + "gorm.io/driver/sqlite" + "gorm.io/gorm" +) + +func Connect(cfg *config.Config) (*gorm.DB, error) { + db, err := gorm.Open(sqlite.Open(cfg.Database.Path), &gorm.Config{}) + if err != nil { + return nil, err + } + + // Auto-migrate the schema + if err := models.Migrate(db); err != nil { + return nil, err + } + + return db, nil +} diff --git a/internal/handlers/handlers.go b/internal/handlers/handlers.go new file mode 100644 index 0000000..e9d5c53 --- /dev/null +++ b/internal/handlers/handlers.go @@ -0,0 +1,1964 @@ +package handlers + +import ( + "fmt" + "net/http" + "strconv" + "time" + "whereismymoney/internal/models" + "whereismymoney/internal/views" + + "github.com/gin-gonic/gin" + "github.com/gorilla/sessions" + "golang.org/x/crypto/bcrypt" + "gorm.io/gorm" +) + +type Handler struct { + DB *gorm.DB + Store *sessions.CookieStore +} + +func NewHandler(db *gorm.DB) *Handler { + store := sessions.NewCookieStore([]byte("your-secret-key-here")) + + // Session-Optionen für Safari-Kompatibilität + store.Options = &sessions.Options{ + Path: "/", + MaxAge: 86400 * 7, // 7 Tage + HttpOnly: true, + Secure: false, // Für localhost Development + SameSite: http.SameSiteLaxMode, // Safari-kompatibel + } + + return &Handler{ + DB: db, + Store: store, + } +} + +// Dashboard zeigt das Hauptdashboard (nur für angemeldete Benutzer) +func (h *Handler) Dashboard(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.Redirect(http.StatusSeeOther, "/login?error=required") + return + } + + // Benutzer aus der Datenbank laden + var user models.User + if err := h.DB.First(&user, userID).Error; err != nil { + c.Redirect(http.StatusSeeOther, "/login?error=required") + return + } + + // Testdaten generieren falls nötig + h.generateTestData(userID.(uint)) + + // Wiederkehrende Transaktionen generieren + h.processRecurringTransactions(userID.(uint)) + + // Dashboard-Daten sammeln + dashboardData, err := h.generateDashboardData(userID.(uint)) + if err != nil { + c.String(http.StatusInternalServerError, "Fehler beim Laden der Dashboard-Daten: %v", err) + return + } + + // Dashboard rendern + component := views.Dashboard(dashboardData) + component.Render(c.Request.Context(), c.Writer) +} + +// DashboardDataAPI liefert Dashboard-Daten als JSON für AJAX-Anfragen +func (h *Handler) DashboardDataAPI(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.JSON(http.StatusUnauthorized, gin.H{"error": "Nicht angemeldet"}) + return + } + + // Testdaten generieren falls nötig + h.generateTestData(userID.(uint)) + + // Wiederkehrende Transaktionen generieren + h.processRecurringTransactions(userID.(uint)) + + // Dashboard-Daten generieren + data, err := h.generateDashboardData(userID.(uint)) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Fehler beim Laden der Dashboard-Daten"}) + return + } + + // Daten als JSON zurückgeben + c.JSON(http.StatusOK, data) +} + +// generateDashboardData sammelt alle Daten für das Dashboard +func (h *Handler) generateDashboardData(userID uint) (*models.DashboardData, error) { + data := &models.DashboardData{} + + // Wiederkehrende Transaktionen verarbeiten BEVOR Dashboard-Daten generiert werden + if err := h.processRecurringTransactions(userID); err != nil { + // Fehler loggen, aber nicht den gesamten Dashboard-Aufruf fehlschlagen lassen + fmt.Printf("Fehler beim Verarbeiten wiederkehrender Transaktionen: %v\n", err) + } + + // Benutzer laden + var user models.User + if err := h.DB.First(&user, userID).Error; err != nil { + return nil, err + } + data.UserName = user.Name + + // Vermögensübersicht generieren + assetOverview, err := h.generateAssetOverview(userID) + if err != nil { + return nil, err + } + data.AssetOverview = *assetOverview + + // Monatliche Statistiken generieren + monthlyStats, err := h.generateMonthlyStats(userID) + if err != nil { + return nil, err + } + data.MonthlyStats = monthlyStats + + // Kategorie-Statistiken generieren + categoryStats, err := h.generateCategoryStats(userID) + if err != nil { + return nil, err + } + data.CategoryStats = categoryStats + + // Transaktionstrends generieren + transactionTrend, err := h.generateTransactionTrend(userID) + if err != nil { + return nil, err + } + data.TransactionTrend = transactionTrend + + // Aktuelle Transaktionen laden + recentTransactions, err := h.getRecentTransactions(userID) + if err != nil { + return nil, err + } + data.RecentTransactions = recentTransactions + + // Wöchentliche Statistiken generieren + weeklyStats, err := h.generateWeeklyStats(userID) + if err != nil { + return nil, err + } + data.WeeklyStats = weeklyStats + + return data, nil +} + +// generateAssetOverview erstellt eine Vermögensübersicht +func (h *Handler) generateAssetOverview(userID uint) (*models.AssetOverview, error) { + overview := &models.AssetOverview{} + + // Bank-Konten laden + var bankAccounts []models.BankAccount + if err := h.DB.Where("user_id = ?", userID).Find(&bankAccounts).Error; err != nil { + return nil, err + } + + totalBankBalance := 0.0 + bankSummaries := make([]models.BankAccountSummary, len(bankAccounts)) + for i, account := range bankAccounts { + totalBankBalance += account.Balance + bankSummaries[i] = models.BankAccountSummary{ + ID: account.ID, + Name: account.Name, + Bank: account.Bank, + AccountType: account.AccountType, + Balance: account.Balance, + } + } + + // Depots laden + var depots []models.Depot + if err := h.DB.Where("user_id = ?", userID).Find(&depots).Error; err != nil { + return nil, err + } + + totalDepotValue := 0.0 + depotSummaries := make([]models.DepotSummary, len(depots)) + for i, depot := range depots { + totalDepotValue += depot.TotalValue + depotSummaries[i] = models.DepotSummary{ + ID: depot.ID, + Name: depot.Name, + Broker: depot.Broker, + TotalValue: depot.TotalValue, + } + } + + overview.TotalBankBalance = totalBankBalance + overview.TotalDepotValue = totalDepotValue + overview.TotalAssets = totalBankBalance + totalDepotValue + overview.BankAccounts = bankSummaries + overview.Depots = depotSummaries + + return overview, nil +} + +// generateMonthlyStats erstellt monatliche Statistiken +func (h *Handler) generateMonthlyStats(userID uint) ([]models.MonthlyStats, error) { + var stats []models.MonthlyStats + + // Letzte 12 Monate + now := time.Now() + for i := 11; i >= 0; i-- { + month := now.AddDate(0, -i, 0) + startOfMonth := time.Date(month.Year(), month.Month(), 1, 0, 0, 0, 0, month.Location()) + endOfMonth := startOfMonth.AddDate(0, 1, 0).Add(-time.Nanosecond) + + var income, expenses float64 + + // Einnahmen berechnen + h.DB.Model(&models.Transaction{}). + Where("user_id = ? AND type = ? AND date >= ? AND date <= ?", userID, "income", startOfMonth, endOfMonth). + Select("COALESCE(SUM(amount), 0)").Scan(&income) + + // Ausgaben berechnen + h.DB.Model(&models.Transaction{}). + Where("user_id = ? AND type = ? AND date >= ? AND date <= ?", userID, "expense", startOfMonth, endOfMonth). + Select("COALESCE(SUM(amount), 0)").Scan(&expenses) + + netChange := income - expenses + + // Balance zu diesem Zeitpunkt (vereinfacht) + var balance float64 + h.DB.Model(&models.Transaction{}). + Where("user_id = ? AND date <= ?", userID, endOfMonth). + Select("COALESCE(SUM(CASE WHEN type = 'income' THEN amount ELSE -amount END), 0)").Scan(&balance) + + stats = append(stats, models.MonthlyStats{ + Month: month.Format("2006-01"), + Income: income, + Expenses: expenses, + NetChange: netChange, + Balance: balance, + }) + } + + return stats, nil +} + +// generateCategoryStats erstellt Kategorie-Statistiken +func (h *Handler) generateCategoryStats(userID uint) ([]models.CategoryStats, error) { + var stats []models.CategoryStats + + // Letzte 90 Tage für bessere Relevanz + ninetyDaysAgo := time.Now().AddDate(0, 0, -90) + + type categoryResult struct { + CategoryID *uint + CategoryName *string + TotalAmount float64 + Count int64 + } + + var results []categoryResult + + query := ` + SELECT + t.category_id, + c.name as category_name, + SUM(t.amount) as total_amount, + COUNT(*) as count + FROM transactions t + LEFT JOIN categories c ON t.category_id = c.id + WHERE t.user_id = ? AND t.date >= ? AND t.type = 'expense' + GROUP BY t.category_id, c.name + ORDER BY total_amount DESC + ` + + if err := h.DB.Raw(query, userID, ninetyDaysAgo).Scan(&results).Error; err != nil { + return nil, err + } + + // Gesamtsumme für Prozentberechnung + var totalExpenses float64 + for _, result := range results { + totalExpenses += result.TotalAmount + } + + for _, result := range results { + categoryName := "Ohne Kategorie" + var categoryID uint = 0 + + if result.CategoryID != nil { + categoryID = *result.CategoryID + } + if result.CategoryName != nil { + categoryName = *result.CategoryName + } + + percentage := 0.0 + if totalExpenses > 0 { + percentage = (result.TotalAmount / totalExpenses) * 100 + } + + stats = append(stats, models.CategoryStats{ + CategoryID: categoryID, + CategoryName: categoryName, + TotalAmount: result.TotalAmount, + Count: int(result.Count), + Percentage: percentage, + }) + } + + return stats, nil +} + +// generateTransactionTrend erstellt Verlaufsdaten für Charts +func (h *Handler) generateTransactionTrend(userID uint) ([]models.TransactionTrend, error) { + var trends []models.TransactionTrend + + // Nächste 12 Monate (für Trend mit wiederkehrenden Transaktionen) + now := time.Now() + + // 12 Monate gruppiert nach Monaten + for i := 0; i < 12; i++ { + // Erster Tag des Monats + monthStart := time.Date(now.Year(), now.Month(), 1, 0, 0, 0, 0, now.Location()).AddDate(0, i, 0) + // Letzter Tag des Monats + monthEnd := monthStart.AddDate(0, 1, 0).Add(-time.Nanosecond) + + var income, expense float64 + + // Einnahmen für diesen Monat (mit DATE-Funktion) + h.DB.Model(&models.Transaction{}). + Where("user_id = ? AND type = ? AND date >= ? AND date < ?", userID, "income", monthStart, monthEnd.AddDate(0, 0, 1)). + Select("COALESCE(SUM(amount), 0)").Scan(&income) + + // Ausgaben für diesen Monat (mit DATE-Funktion) + h.DB.Model(&models.Transaction{}). + Where("user_id = ? AND type = ? AND date >= ? AND date < ?", userID, "expense", monthStart, monthEnd.AddDate(0, 0, 1)). + Select("COALESCE(SUM(amount), 0)").Scan(&expense) + + // Aktueller Kontostand berechnen + var balance float64 + if i == 0 { + // Für den ersten Monat: Aktueller Stand aus allen vergangenen Transaktionen + h.DB.Model(&models.Transaction{}). + Where("user_id = ? AND date <= ?", userID, monthEnd). + Select("COALESCE(SUM(CASE WHEN type = 'income' THEN amount ELSE -amount END), 0)").Scan(&balance) + } else { + // Für zukünftige Monate: Vorheriger Balance + heutige Einnahmen - heutige Ausgaben + if len(trends) > 0 { + balance = trends[len(trends)-1].Balance + income - expense + } + } + + trends = append(trends, models.TransactionTrend{ + Date: monthStart, + Income: income, + Expense: expense, + Balance: balance, + }) + } + + return trends, nil +} + +// getRecentTransactions lädt die neuesten Transaktionen +func (h *Handler) getRecentTransactions(userID uint) ([]models.Transaction, error) { + var transactions []models.Transaction + + err := h.DB.Where("user_id = ?", userID). + Preload("Category"). + Preload("BankAccount"). + Order("date DESC, created_at DESC"). + Limit(10). + Find(&transactions).Error + + return transactions, err +} + +// generateWeeklyStats erstellt wöchentliche Statistiken +func (h *Handler) generateWeeklyStats(userID uint) ([]models.WeeklyStats, error) { + var stats []models.WeeklyStats + + // Letzte 4 Wochen + now := time.Now() + for i := 3; i >= 0; i-- { + // Wochenstart (Montag) + weekStart := now.AddDate(0, 0, -7*i) + for weekStart.Weekday() != time.Monday { + weekStart = weekStart.AddDate(0, 0, -1) + } + weekStart = time.Date(weekStart.Year(), weekStart.Month(), weekStart.Day(), 0, 0, 0, 0, weekStart.Location()) + weekEnd := weekStart.AddDate(0, 0, 6).Add(23*time.Hour + 59*time.Minute + 59*time.Second) + + var income, expenses float64 + + // Einnahmen berechnen + h.DB.Model(&models.Transaction{}). + Where("user_id = ? AND type = ? AND date >= ? AND date <= ?", userID, "income", weekStart, weekEnd). + Select("COALESCE(SUM(amount), 0)").Scan(&income) + + // Ausgaben berechnen + h.DB.Model(&models.Transaction{}). + Where("user_id = ? AND type = ? AND date >= ? AND date <= ?", userID, "expense", weekStart, weekEnd). + Select("COALESCE(SUM(amount), 0)").Scan(&expenses) + + netChange := income - expenses + weekLabel := fmt.Sprintf("KW %d", getWeekNumber(weekStart)) + + stats = append(stats, models.WeeklyStats{ + Week: weekLabel, + Income: income, + Expenses: expenses, + NetChange: netChange, + StartDate: weekStart, + EndDate: weekEnd, + }) + } + + return stats, nil +} + +// getWeekNumber berechnet die Kalenderwoche +func getWeekNumber(date time.Time) int { + _, week := date.ISOWeek() + return week +} + +// ShowLogin zeigt die Login-Seite +func (h *Handler) ShowLogin(c *gin.Context) { + errorMsg := "" + switch c.Query("error") { + case "invalid": + errorMsg = "Ungültige E-Mail-Adresse oder Passwort" + case "session": + errorMsg = "Fehler beim Erstellen der Sitzung. Bitte versuchen Sie es erneut." + case "required": + errorMsg = "Bitte melden Sie sich an, um diese Seite zu besuchen" + } + + component := views.LoginPage(errorMsg) + component.Render(c.Request.Context(), c.Writer) +} + +// ShowRegister zeigt die Registrierungs-Seite +func (h *Handler) ShowRegister(c *gin.Context) { + errorMsg := "" + switch c.Query("error") { + case "password_mismatch": + errorMsg = "Die Passwörter stimmen nicht überein" + case "email_exists": + errorMsg = "Ein Konto mit dieser E-Mail-Adresse existiert bereits" + case "server": + errorMsg = "Ein Server-Fehler ist aufgetreten. Bitte versuchen Sie es erneut." + case "session": + errorMsg = "Fehler beim Erstellen der Sitzung. Bitte versuchen Sie es erneut." + } + + component := views.RegisterPage(errorMsg) + component.Render(c.Request.Context(), c.Writer) +} + +// Login verarbeitet die Anmeldung +func (h *Handler) Login(c *gin.Context) { + email := c.PostForm("email") + password := c.PostForm("password") + + // Benutzer in der Datenbank finden + var user models.User + if err := h.DB.Where("email = ?", email).First(&user).Error; err != nil { + c.Redirect(http.StatusSeeOther, "/login?error=invalid") + return + } + + // Passwort überprüfen + if !user.CheckPassword(password) { + c.Redirect(http.StatusSeeOther, "/login?error=invalid") + return + } + + // Session erstellen + session, _ := h.Store.Get(c.Request, "user-session") + session.Values["user_id"] = user.ID + session.Values["user_name"] = user.Name + + // Session explizit speichern mit Fehlerbehandlung + if err := session.Save(c.Request, c.Writer); err != nil { + c.Redirect(http.StatusSeeOther, "/login?error=session") + return + } + + c.Redirect(http.StatusSeeOther, "/") +} + +// Register verarbeitet die Registrierung +func (h *Handler) Register(c *gin.Context) { + name := c.PostForm("name") + email := c.PostForm("email") + password := c.PostForm("password") + passwordConfirm := c.PostForm("password_confirm") + + // Passwort-Bestätigung überprüfen + if password != passwordConfirm { + c.Redirect(http.StatusSeeOther, "/register?error=password_mismatch") + return + } + + // Neuen Benutzer erstellen + user := models.User{ + Name: name, + Email: email, + } + + // Passwort hashen + if err := user.HashPassword(password); err != nil { + c.Redirect(http.StatusSeeOther, "/register?error=server") + return + } + + // Benutzer in der Datenbank speichern + if err := h.DB.Create(&user).Error; err != nil { + c.Redirect(http.StatusSeeOther, "/register?error=email_exists") + return + } + + // Session erstellen + session, _ := h.Store.Get(c.Request, "user-session") + session.Values["user_id"] = user.ID + session.Values["user_name"] = user.Name + + // Session explizit speichern mit Fehlerbehandlung + if err := session.Save(c.Request, c.Writer); err != nil { + c.Redirect(http.StatusSeeOther, "/register?error=session") + return + } + + c.Redirect(http.StatusSeeOther, "/") +} + +// Logout meldet den Benutzer ab +func (h *Handler) Logout(c *gin.Context) { + session, _ := h.Store.Get(c.Request, "user-session") + session.Values["user_id"] = nil + session.Values["user_name"] = nil + session.Options.MaxAge = -1 + session.Save(c.Request, c.Writer) + + c.Redirect(http.StatusSeeOther, "/login") +} + +// ShowAccounts zeigt die Konten- und Depot-Verwaltung +func (h *Handler) ShowAccounts(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.Redirect(http.StatusSeeOther, "/login?error=required") + return + } + + userName, _ := session.Values["user_name"].(string) + + // Bankkonten laden + var bankAccounts []models.BankAccount + h.DB.Where("user_id = ?", userID).Find(&bankAccounts) + + // Depots laden + var depots []models.Depot + h.DB.Where("user_id = ?", userID).Find(&depots) + + // Template rendern + views.Accounts(userName, bankAccounts, depots).Render(c.Request.Context(), c.Writer) +} + +// CreateBankAccount erstellt ein neues Bankkonto +func (h *Handler) CreateBankAccount(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.Redirect(http.StatusSeeOther, "/login?error=required") + return + } + + // Formulardaten lesen + name := c.PostForm("name") + bankName := c.PostForm("bank_name") + accountType := c.PostForm("account_type") + iban := c.PostForm("iban") + + // Balance parsen + var balance float64 + if balanceStr := c.PostForm("balance"); balanceStr != "" { + if parsed, err := parseFloat(balanceStr); err == nil { + balance = parsed + } + } + + // Validierung + if name == "" || bankName == "" || accountType == "" { + c.Redirect(http.StatusSeeOther, "/accounts?error=required_fields") + return + } + + // Bankkonto erstellen + bankAccount := models.BankAccount{ + UserID: userID.(uint), + Name: name, + Bank: bankName, + AccountType: accountType, + IBAN: iban, + Balance: balance, + } + + if err := h.DB.Create(&bankAccount).Error; err != nil { + c.Redirect(http.StatusSeeOther, "/accounts?error=create_failed") + return + } + + c.Redirect(http.StatusSeeOther, "/accounts?success=bank_created") +} + +// CreateDepot erstellt ein neues Depot +func (h *Handler) CreateDepot(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.Redirect(http.StatusSeeOther, "/login?error=required") + return + } + + // Formulardaten lesen + name := c.PostForm("name") + brokerName := c.PostForm("broker_name") + depotNumber := c.PostForm("depot_number") + + // Total Value parsen + var totalValue float64 + if valueStr := c.PostForm("total_value"); valueStr != "" { + if parsed, err := parseFloat(valueStr); err == nil { + totalValue = parsed + } + } + + // Validierung + if name == "" || brokerName == "" { + c.Redirect(http.StatusSeeOther, "/accounts?error=required_fields") + return + } + + // Depot erstellen + depot := models.Depot{ + UserID: userID.(uint), + Name: name, + Broker: brokerName, + DepotNumber: depotNumber, + TotalValue: totalValue, + } + + if err := h.DB.Create(&depot).Error; err != nil { + c.Redirect(http.StatusSeeOther, "/accounts?error=create_failed") + return + } + + c.Redirect(http.StatusSeeOther, "/accounts?success=depot_created") +} + +// parseFloat ist eine Hilfsfunktion zum sicheren Parsen von Float-Werten +func parseFloat(s string) (float64, error) { + if s == "" { + return 0, nil + } + return strconv.ParseFloat(s, 64) +} + +// ShowTransactions zeigt die Transaktionsübersicht +func (h *Handler) ShowTransactions(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.Redirect(http.StatusSeeOther, "/login?error=required") + return + } + + userName, _ := session.Values["user_name"].(string) + + // Paginierung Parameter + page := 1 + if pageStr := c.Query("page"); pageStr != "" { + if p, err := strconv.Atoi(pageStr); err == nil && p > 0 { + page = p + } + } + + pageSize := 20 + offset := (page - 1) * pageSize + + // Filter Parameter + dateFrom := c.Query("date_from") + dateTo := c.Query("date_to") + searchDescription := c.Query("search_description") + filterCategory := c.Query("filter_category") + filterAccount := c.Query("filter_account") + filterType := c.Query("filter_type") + amountMin := c.Query("amount_min") + amountMax := c.Query("amount_max") + + // Base Query für Transaktionen + query := h.DB.Model(&models.Transaction{}).Where("user_id = ?", userID) + + // Filter anwenden + if dateFrom != "" { + if parsedDate, err := time.Parse("2006-01-02", dateFrom); err == nil { + query = query.Where("date >= ?", parsedDate) + } + } + if dateTo != "" { + if parsedDate, err := time.Parse("2006-01-02", dateTo); err == nil { + query = query.Where("date <= ?", parsedDate) + } + } + if searchDescription != "" { + query = query.Where("description LIKE ?", "%"+searchDescription+"%") + } + if filterCategory != "" { + if filterCategory == "none" { + query = query.Where("category_id IS NULL") + } else if categoryID, err := strconv.Atoi(filterCategory); err == nil { + query = query.Where("category_id = ?", categoryID) + } + } + if filterAccount != "" { + if accountID, err := strconv.Atoi(filterAccount); err == nil { + query = query.Where("bank_account_id = ?", accountID) + } + } + if filterType != "" { + query = query.Where("type = ?", filterType) + } + if amountMin != "" { + if minAmount, err := strconv.ParseFloat(amountMin, 64); err == nil { + query = query.Where("amount >= ?", minAmount) + } + } + if amountMax != "" { + if maxAmount, err := strconv.ParseFloat(amountMax, 64); err == nil { + query = query.Where("amount <= ?", maxAmount) + } + } + + // Gesamtanzahl der gefilterten Transaktionen für Paginierung + var totalCount int64 + query.Count(&totalCount) + + totalPages := int((totalCount + int64(pageSize) - 1) / int64(pageSize)) + + // Transaktionen laden (neueste zuerst, mit Paginierung und Filtern) + var transactions []models.Transaction + query.Preload("Category"). + Preload("BankAccount"). + Preload("RecurrenceRule"). + Order("date DESC"). + Limit(pageSize). + Offset(offset). + Find(&transactions) + + // Bankkonten für Dropdown laden + var bankAccounts []models.BankAccount + h.DB.Where("user_id = ?", userID).Find(&bankAccounts) + + // Kategorien laden + var categories []models.Category + h.DB.Where("user_id = ?", userID).Find(&categories) + + // Regelmäßige Transaktionen laden + var recurrenceRules []models.RecurrenceRule + h.DB.Where("user_id = ? AND is_active = ?", userID, true). + Preload("Category"). + Preload("BankAccount"). + Find(&recurrenceRules) + + // Template rendern + views.Transactions(userName, transactions, bankAccounts, categories, recurrenceRules, page, totalPages, totalCount).Render(c.Request.Context(), c.Writer) +} + +// CreateTransaction erstellt eine neue Transaktion +func (h *Handler) CreateTransaction(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.Redirect(http.StatusSeeOther, "/login?error=required") + return + } + + // Formulardaten lesen + description := c.PostForm("description") + amountStr := c.PostForm("amount") + transactionType := c.PostForm("type") // "income" or "expense" + dateStr := c.PostForm("date") + categoryIDStr := c.PostForm("category_id") + bankAccountIDStr := c.PostForm("bank_account_id") + + // Validierung + if description == "" || amountStr == "" || transactionType == "" || dateStr == "" { + c.Redirect(http.StatusSeeOther, "/transactions?error=required_fields") + return + } + + // Amount parsen + amount, err := strconv.ParseFloat(amountStr, 64) + if err != nil { + c.Redirect(http.StatusSeeOther, "/transactions?error=invalid_amount") + return + } + + // Datum parsen + date, err := time.Parse("2006-01-02", dateStr) + if err != nil { + c.Redirect(http.StatusSeeOther, "/transactions?error=invalid_date") + return + } + + // Optional: Category ID parsen + var categoryID *uint + if categoryIDStr != "" && categoryIDStr != "0" { + if parsed, err := strconv.ParseUint(categoryIDStr, 10, 32); err == nil { + id := uint(parsed) + categoryID = &id + } + } + + // Optional: Bank Account ID parsen + var bankAccountID *uint + if bankAccountIDStr != "" && bankAccountIDStr != "0" { + if parsed, err := strconv.ParseUint(bankAccountIDStr, 10, 32); err == nil { + id := uint(parsed) + bankAccountID = &id + } + } + + // Transaktion erstellen + transaction := models.Transaction{ + UserID: userID.(uint), + Amount: amount, + Description: description, + Type: transactionType, + Date: date, + CategoryID: categoryID, + BankAccountID: bankAccountID, + IsRecurring: false, + } + + if err := h.DB.Create(&transaction).Error; err != nil { + c.Redirect(http.StatusSeeOther, "/transactions?error=create_failed") + return + } + + c.Redirect(http.StatusSeeOther, "/transactions?success=transaction_created") +} + +// CreateRecurringTransaction erstellt eine neue regelmäßige Transaktion +func (h *Handler) CreateRecurringTransaction(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.Redirect(http.StatusSeeOther, "/login?error=required") + return + } + + // Formulardaten lesen + description := c.PostForm("description") + amountStr := c.PostForm("amount") + transactionType := c.PostForm("type") + startDateStr := c.PostForm("start_date") + endDateStr := c.PostForm("end_date") + interval := c.PostForm("interval") + intervalCountStr := c.PostForm("interval_count") + categoryIDStr := c.PostForm("category_id") + bankAccountIDStr := c.PostForm("bank_account_id") + dayOfMonthStr := c.PostForm("day_of_month") + dayOfWeekStr := c.PostForm("day_of_week") + + // Validierung + if description == "" || amountStr == "" || transactionType == "" || startDateStr == "" || interval == "" { + c.Redirect(http.StatusSeeOther, "/transactions?error=required_fields") + return + } + + // Amount parsen + amount, err := strconv.ParseFloat(amountStr, 64) + if err != nil { + c.Redirect(http.StatusSeeOther, "/transactions?error=invalid_amount") + return + } + + // Start-Datum parsen + startDate, err := time.Parse("2006-01-02", startDateStr) + if err != nil { + c.Redirect(http.StatusSeeOther, "/transactions?error=invalid_date") + return + } + + // End-Datum parsen (optional) + var endDate *time.Time + if endDateStr != "" { + if parsed, err := time.Parse("2006-01-02", endDateStr); err == nil { + endDate = &parsed + } + } + + // Interval Count parsen + intervalCount := 1 + if intervalCountStr != "" { + if parsed, err := strconv.Atoi(intervalCountStr); err == nil && parsed > 0 { + intervalCount = parsed + } + } + + // Optional: Category ID parsen + var categoryID *uint + if categoryIDStr != "" && categoryIDStr != "0" { + if parsed, err := strconv.ParseUint(categoryIDStr, 10, 32); err == nil { + id := uint(parsed) + categoryID = &id + } + } + + // Optional: Bank Account ID parsen + var bankAccountID *uint + if bankAccountIDStr != "" && bankAccountIDStr != "0" { + if parsed, err := strconv.ParseUint(bankAccountIDStr, 10, 32); err == nil { + id := uint(parsed) + bankAccountID = &id + } + } + + // Optional: Day of Month parsen + var dayOfMonth *int + if dayOfMonthStr != "" { + if parsed, err := strconv.Atoi(dayOfMonthStr); err == nil && parsed >= 1 && parsed <= 31 { + dayOfMonth = &parsed + } + } + + // Optional: Day of Week parsen + var dayOfWeek *int + if dayOfWeekStr != "" { + if parsed, err := strconv.Atoi(dayOfWeekStr); err == nil && parsed >= 0 && parsed <= 6 { + dayOfWeek = &parsed + } + } + + // RecurrenceRule erstellen + recurrenceRule := models.RecurrenceRule{ + UserID: userID.(uint), + Amount: amount, + Description: description, + Type: transactionType, + CategoryID: categoryID, + BankAccountID: bankAccountID, + Interval: interval, + IntervalCount: intervalCount, + StartDate: startDate, + EndDate: endDate, + DayOfMonth: dayOfMonth, + DayOfWeek: dayOfWeek, + IsActive: true, + } + + if err := h.DB.Create(&recurrenceRule).Error; err != nil { + c.Redirect(http.StatusSeeOther, "/transactions?error=create_failed") + return + } + + c.Redirect(http.StatusSeeOther, "/transactions?success=recurring_created") +} + +// DeleteTransaction löscht eine Transaktion +func (h *Handler) DeleteTransaction(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.JSON(http.StatusUnauthorized, gin.H{"error": "Nicht angemeldet"}) + return + } + + // Transaction ID aus URL Parameter + transactionIDStr := c.Param("id") + transactionID, err := strconv.ParseUint(transactionIDStr, 10, 32) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültige Transaktions-ID"}) + return + } + + // Transaktion löschen (nur wenn sie dem Benutzer gehört) + result := h.DB.Where("id = ? AND user_id = ?", transactionID, userID).Delete(&models.Transaction{}) + if result.Error != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Fehler beim Löschen"}) + return + } + + if result.RowsAffected == 0 { + c.JSON(http.StatusNotFound, gin.H{"error": "Transaktion nicht gefunden"}) + return + } + + c.JSON(http.StatusOK, gin.H{"success": true}) +} + +// GetTransactionData gibt die Daten einer Transaktion für das Edit-Modal zurück +func (h *Handler) GetTransactionData(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.JSON(http.StatusUnauthorized, gin.H{"error": "Nicht angemeldet"}) + return + } + + // Transaction ID aus URL Parameter + transactionIDStr := c.Param("id") + transactionID, err := strconv.ParseUint(transactionIDStr, 10, 32) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültige Transaktions-ID"}) + return + } + + // Transaktion laden + var transaction models.Transaction + result := h.DB.Where("id = ? AND user_id = ?", transactionID, userID).First(&transaction) + if result.Error != nil { + c.JSON(http.StatusNotFound, gin.H{"error": "Transaktion nicht gefunden"}) + return + } + + // Daten für JavaScript formatieren + transactionData := gin.H{ + "id": transaction.ID, + "description": transaction.Description, + "amount": transaction.Amount, + "type": transaction.Type, + "date": transaction.Date.Format("2006-01-02"), + "category_id": transaction.CategoryID, + "bank_account_id": transaction.BankAccountID, + } + + c.JSON(http.StatusOK, transactionData) +} + +// UpdateTransaction aktualisiert eine existierende Transaktion +func (h *Handler) UpdateTransaction(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.JSON(http.StatusUnauthorized, gin.H{"error": "Nicht angemeldet"}) + return + } + + // Transaction ID aus URL Parameter + transactionIDStr := c.Param("id") + transactionID, err := strconv.ParseUint(transactionIDStr, 10, 32) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültige Transaktions-ID"}) + return + } + + // JSON Body parsen + var reqData struct { + Description string `json:"description"` + Amount string `json:"amount"` + Type string `json:"type"` + Date string `json:"date"` + CategoryID string `json:"category_id"` + BankAccountID string `json:"bank_account_id"` + } + + if err := c.ShouldBindJSON(&reqData); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültige Daten"}) + return + } + + // Daten validieren und konvertieren + amount, err := strconv.ParseFloat(reqData.Amount, 64) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültiger Betrag"}) + return + } + + date, err := time.Parse("2006-01-02", reqData.Date) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültiges Datum"}) + return + } + + bankAccountID, err := strconv.ParseUint(reqData.BankAccountID, 10, 32) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültige Konto-ID"}) + return + } + + // Optional: Category ID parsen + var categoryID *uint + if reqData.CategoryID != "" && reqData.CategoryID != "0" { + if parsed, err := strconv.ParseUint(reqData.CategoryID, 10, 32); err == nil { + id := uint(parsed) + categoryID = &id + } + } + + // Transaktion laden und aktualisieren + var transaction models.Transaction + result := h.DB.Where("id = ? AND user_id = ?", transactionID, userID).First(&transaction) + if result.Error != nil { + c.JSON(http.StatusNotFound, gin.H{"error": "Transaktion nicht gefunden"}) + return + } + + // Transaktion aktualisieren + transaction.Description = reqData.Description + transaction.Amount = amount + transaction.Type = reqData.Type + transaction.Date = date + transaction.CategoryID = categoryID + bankID := uint(bankAccountID) + transaction.BankAccountID = &bankID + + if err := h.DB.Save(&transaction).Error; err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Fehler beim Speichern"}) + return + } + + c.JSON(http.StatusOK, gin.H{"success": true}) +} + +// MultiUpdateTransactions aktualisiert mehrere Transaktionen gleichzeitig +func (h *Handler) MultiUpdateTransactions(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.JSON(http.StatusUnauthorized, gin.H{"error": "Nicht angemeldet"}) + return + } + + // JSON Request parsen + var reqData struct { + TransactionIDs []string `json:"transaction_ids"` + Description *string `json:"description,omitempty"` + Amount *string `json:"amount,omitempty"` + Type *string `json:"type,omitempty"` + Date *string `json:"date,omitempty"` + CategoryID *string `json:"category_id,omitempty"` + BankAccountID *string `json:"bank_account_id,omitempty"` + } + + if err := c.ShouldBindJSON(&reqData); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültige Anfrage"}) + return + } + + if len(reqData.TransactionIDs) == 0 { + c.JSON(http.StatusBadRequest, gin.H{"error": "Keine Transaktionen ausgewählt"}) + return + } + + // Updates vorbereiten + updates := make(map[string]interface{}) + + if reqData.Description != nil && *reqData.Description != "" { + updates["description"] = *reqData.Description + } + + if reqData.Amount != nil && *reqData.Amount != "" { + amount, err := strconv.ParseFloat(*reqData.Amount, 64) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültiger Betrag"}) + return + } + updates["amount"] = amount + } + + if reqData.Type != nil && *reqData.Type != "" { + if *reqData.Type != "income" && *reqData.Type != "expense" { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültiger Transaktionstyp"}) + return + } + updates["type"] = *reqData.Type + } + + if reqData.Date != nil && *reqData.Date != "" { + date, err := time.Parse("2006-01-02", *reqData.Date) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültiges Datum"}) + return + } + updates["date"] = date + } + + if reqData.CategoryID != nil { + if *reqData.CategoryID == "null" || *reqData.CategoryID == "" { + updates["category_id"] = nil + } else { + categoryID, err := strconv.ParseUint(*reqData.CategoryID, 10, 32) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültige Kategorie-ID"}) + return + } + updates["category_id"] = uint(categoryID) + } + } + + if reqData.BankAccountID != nil { + if *reqData.BankAccountID == "null" || *reqData.BankAccountID == "" { + updates["bank_account_id"] = nil + } else { + bankAccountID, err := strconv.ParseUint(*reqData.BankAccountID, 10, 32) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültige Konto-ID"}) + return + } + bankID := uint(bankAccountID) + updates["bank_account_id"] = &bankID + } + } + + if len(updates) == 0 { + c.JSON(http.StatusBadRequest, gin.H{"error": "Keine Änderungen angegeben"}) + return + } + + // Transaktionen aktualisieren + result := h.DB.Model(&models.Transaction{}). + Where("id IN ? AND user_id = ?", reqData.TransactionIDs, userID). + Updates(updates) + + if result.Error != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Fehler beim Aktualisieren der Transaktionen"}) + return + } + + c.JSON(http.StatusOK, gin.H{ + "success": true, + "updated": result.RowsAffected, + }) +} + +// MultiDeleteTransactions löscht mehrere Transaktionen gleichzeitig +func (h *Handler) MultiDeleteTransactions(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.JSON(http.StatusUnauthorized, gin.H{"error": "Nicht angemeldet"}) + return + } + + // JSON Request parsen + var reqData struct { + TransactionIDs []string `json:"transaction_ids"` + } + + if err := c.ShouldBindJSON(&reqData); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültige Anfrage"}) + return + } + + if len(reqData.TransactionIDs) == 0 { + c.JSON(http.StatusBadRequest, gin.H{"error": "Keine Transaktionen ausgewählt"}) + return + } + + // Transaktionen löschen (nur die des angemeldeten Users) + result := h.DB.Where("id IN ? AND user_id = ?", reqData.TransactionIDs, userID).Delete(&models.Transaction{}) + + if result.Error != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Fehler beim Löschen der Transaktionen"}) + return + } + + c.JSON(http.StatusOK, gin.H{ + "success": true, + "deleted": result.RowsAffected, + }) +} + +// ToggleRecurrenceRule aktiviert/deaktiviert eine regelmäßige Transaktion +func (h *Handler) ToggleRecurrenceRule(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.JSON(http.StatusUnauthorized, gin.H{"error": "Nicht angemeldet"}) + return + } + + // RecurrenceRule ID aus URL Parameter + ruleIDStr := c.Param("id") + ruleID, err := strconv.ParseUint(ruleIDStr, 10, 32) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültige Regel-ID"}) + return + } + + // Regel finden und Status umschalten + var rule models.RecurrenceRule + if err := h.DB.Where("id = ? AND user_id = ?", ruleID, userID).First(&rule).Error; err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": "Regel nicht gefunden"}) + return + } + + rule.IsActive = !rule.IsActive + if err := h.DB.Save(&rule).Error; err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Fehler beim Speichern"}) + return + } + + c.JSON(http.StatusOK, gin.H{"success": true, "is_active": rule.IsActive}) +} + +// generateTestData erstellt Testdaten für ein leeres Dashboard +func (h *Handler) generateTestData(userID uint) error { + // Prüfen, ob bereits Transaktionen vorhanden sind + var count int64 + h.DB.Model(&models.Transaction{}).Where("user_id = ?", userID).Count(&count) + if count > 0 { + return nil // Bereits Daten vorhanden + } + + // Prüfen, ob bereits wiederkehrende Regeln vorhanden sind + var ruleCount int64 + h.DB.Model(&models.RecurrenceRule{}).Where("user_id = ?", userID).Count(&ruleCount) + if ruleCount > 0 { + return nil // Bereits Regeln vorhanden + } + + // Beispielkategorien erstellen + categories := []models.Category{ + {UserID: userID, Name: "Gehalt", Description: "Monatliches Gehalt", Color: "#22c55e", Icon: "💰"}, + {UserID: userID, Name: "Lebensmittel", Description: "Einkäufe und Groceries", Color: "#f59e0b", Icon: "🛒"}, + {UserID: userID, Name: "Transport", Description: "ÖPNV, Benzin, etc.", Color: "#3b82f6", Icon: "🚗"}, + {UserID: userID, Name: "Unterhaltung", Description: "Kino, Restaurant, etc.", Color: "#8b5cf6", Icon: "🎬"}, + {UserID: userID, Name: "Miete", Description: "Wohnungsmiete", Color: "#ef4444", Icon: "🏠"}, + } + + for _, category := range categories { + if err := h.DB.Create(&category).Error; err != nil { + return err + } + } + + // Testdaten für die letzten 3 Monate generieren + now := time.Now() + transactions := []models.Transaction{} + + for i := 0; i < 90; i++ { // 90 Tage + date := now.AddDate(0, 0, -i) + + // Gehalt am ersten des Monats + if date.Day() == 1 { + transactions = append(transactions, models.Transaction{ + UserID: userID, + Amount: 3500.0, + Description: "Gehalt", + Type: "income", + Date: date, + CategoryID: &categories[0].ID, + }) + } + + // Miete am 1. des Monats + if date.Day() == 1 { + transactions = append(transactions, models.Transaction{ + UserID: userID, + Amount: 1200.0, + Description: "Wohnungsmiete", + Type: "expense", + Date: date, + CategoryID: &categories[4].ID, + }) + } + + // Zufällige tägliche Ausgaben + if i%3 == 0 { // Jeden 3. Tag + // Lebensmittel + transactions = append(transactions, models.Transaction{ + UserID: userID, + Amount: float64(15 + (i%50)), + Description: "Einkauf Supermarkt", + Type: "expense", + Date: date, + CategoryID: &categories[1].ID, + }) + } + + if i%7 == 0 { // Wöchentlich + // Transport + transactions = append(transactions, models.Transaction{ + UserID: userID, + Amount: float64(25 + (i%30)), + Description: "ÖPNV Ticket", + Type: "expense", + Date: date, + CategoryID: &categories[2].ID, + }) + } + + if i%10 == 0 { // Alle 10 Tage + // Unterhaltung + transactions = append(transactions, models.Transaction{ + UserID: userID, + Amount: float64(40 + (i%60)), + Description: "Restaurant / Kino", + Type: "expense", + Date: date, + CategoryID: &categories[3].ID, + }) + } + } + + // Alle Transaktionen in die Datenbank speichern + for _, transaction := range transactions { + if err := h.DB.Create(&transaction).Error; err != nil { + return err + } + } + + // Wiederkehrende Transaktionen erstellen + rules := []models.RecurrenceRule{ + { + UserID: userID, + Amount: 3500.0, + Description: "Monatliches Gehalt", + CategoryID: &categories[0].ID, + Type: "income", + Interval: "monthly", + IntervalCount: 1, + StartDate: time.Date(now.Year(), now.Month(), 1, 0, 0, 0, 0, now.Location()), + DayOfMonth: intPtr(1), + IsActive: true, + }, + { + UserID: userID, + Amount: 1200.0, + Description: "Wohnungsmiete", + CategoryID: &categories[4].ID, + Type: "expense", + Interval: "monthly", + IntervalCount: 1, + StartDate: time.Date(now.Year(), now.Month(), 1, 0, 0, 0, 0, now.Location()), + DayOfMonth: intPtr(1), + IsActive: true, + }, + { + UserID: userID, + Amount: 80.0, + Description: "Wöchentlicher Einkauf", + CategoryID: &categories[1].ID, + Type: "expense", + Interval: "weekly", + IntervalCount: 1, + StartDate: time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location()), + DayOfWeek: intPtr(6), // Samstag + IsActive: true, + }, + } + + // Wiederkehrende Regeln speichern + for _, rule := range rules { + if err := h.DB.Create(&rule).Error; err != nil { + return err + } + } + + return nil +} + +// intPtr gibt einen Pointer auf einen int zurück +func intPtr(i int) *int { + return &i +} + +// TestRecurringTransactions ist eine Test-Route für wiederkehrende Transaktionen +func (h *Handler) TestRecurringTransactions(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.JSON(http.StatusUnauthorized, gin.H{"error": "Nicht angemeldet"}) + return + } + + // Wiederkehrende Transaktionen verarbeiten + err := h.processRecurringTransactions(userID.(uint)) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + + // Aktuelle Transaktionen abfragen + var transactions []models.Transaction + h.DB.Where("user_id = ? AND is_recurring = ?", userID, true). + Preload("Category"). + Order("date DESC"). + Limit(20). + Find(&transactions) + + c.JSON(http.StatusOK, gin.H{ + "message": "Wiederkehrende Transaktionen verarbeitet", + "recurring_transactions": transactions, + }) +} + +// UpdateRecurrenceRule aktualisiert eine wiederkehrende Transaktion +func (h *Handler) UpdateRecurrenceRule(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.JSON(http.StatusUnauthorized, gin.H{"error": "Nicht angemeldet"}) + return + } + + // RecurrenceRule ID aus URL Parameter + ruleIDStr := c.Param("id") + ruleID, err := strconv.ParseUint(ruleIDStr, 10, 32) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültige Regel-ID"}) + return + } + + // Existierende Regel laden + var rule models.RecurrenceRule + if err := h.DB.Where("id = ? AND user_id = ?", ruleID, userID).First(&rule).Error; err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": "Regel nicht gefunden"}) + return + } + + // Request Body parsen + var updateData struct { + Amount *float64 `json:"amount"` + Description *string `json:"description"` + CategoryID *uint `json:"category_id"` + Type *string `json:"type"` + Interval *string `json:"interval"` + IntervalCount *int `json:"interval_count"` + DayOfWeek *int `json:"day_of_week"` + DayOfMonth *int `json:"day_of_month"` + IsActive *bool `json:"is_active"` + StartDate *string `json:"start_date"` + EndDate *string `json:"end_date"` + } + + if err := c.ShouldBindJSON(&updateData); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültige Daten"}) + return + } + + // Felder aktualisieren (nur wenn sie gesetzt sind) + if updateData.Amount != nil { + rule.Amount = *updateData.Amount + } + if updateData.Description != nil { + rule.Description = *updateData.Description + } + if updateData.CategoryID != nil { + rule.CategoryID = updateData.CategoryID + } + if updateData.Type != nil { + rule.Type = *updateData.Type + } + if updateData.Interval != nil { + rule.Interval = *updateData.Interval + } + if updateData.IntervalCount != nil { + rule.IntervalCount = *updateData.IntervalCount + } + if updateData.DayOfWeek != nil { + rule.DayOfWeek = updateData.DayOfWeek + } + if updateData.DayOfMonth != nil { + rule.DayOfMonth = updateData.DayOfMonth + } + if updateData.IsActive != nil { + rule.IsActive = *updateData.IsActive + } + if updateData.StartDate != nil { + if startDate, err := time.Parse("2006-01-02", *updateData.StartDate); err == nil { + rule.StartDate = startDate + } + } + if updateData.EndDate != nil { + if *updateData.EndDate == "" { + rule.EndDate = nil + } else { + if endDate, err := time.Parse("2006-01-02", *updateData.EndDate); err == nil { + rule.EndDate = &endDate + } + } + } + + // Regel speichern + if err := h.DB.Save(&rule).Error; err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Fehler beim Speichern"}) + return + } + + // Aktualisierte Regel mit Kategorie laden + h.DB.Preload("Category").First(&rule, rule.ID) + + c.JSON(http.StatusOK, gin.H{ + "success": true, + "rule": rule, + }) +} + +// GetRecurrenceRules lädt alle wiederkehrenden Transaktionen eines Benutzers +func (h *Handler) GetRecurrenceRules(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.JSON(http.StatusUnauthorized, gin.H{"error": "Nicht angemeldet"}) + return + } + + // Alle Regeln des Benutzers laden + var rules []models.RecurrenceRule + if err := h.DB.Where("user_id = ?", userID). + Preload("Category"). + Order("created_at DESC"). + Find(&rules).Error; err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Fehler beim Laden der Regeln"}) + return + } + + c.JSON(http.StatusOK, gin.H{ + "rules": rules, + }) +} + +// DeleteRecurrenceRule löscht eine wiederkehrende Transaktion +func (h *Handler) DeleteRecurrenceRule(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.JSON(http.StatusUnauthorized, gin.H{"error": "Nicht angemeldet"}) + return + } + + // RecurrenceRule ID aus URL Parameter + ruleIDStr := c.Param("id") + ruleID, err := strconv.ParseUint(ruleIDStr, 10, 32) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültige Regel-ID"}) + return + } + + // Regel löschen (nur wenn sie dem Benutzer gehört) + result := h.DB.Where("id = ? AND user_id = ?", ruleID, userID).Delete(&models.RecurrenceRule{}) + if result.Error != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Fehler beim Löschen"}) + return + } + + if result.RowsAffected == 0 { + c.JSON(http.StatusNotFound, gin.H{"error": "Regel nicht gefunden"}) + return + } + + c.JSON(http.StatusOK, gin.H{"success": true}) +} + +// processRecurringTransactions generiert alle fälligen wiederkehrenden Transaktionen +func (h *Handler) processRecurringTransactions(userID uint) error { + // Alle aktiven Wiederholungsregeln für den Benutzer laden + var rules []models.RecurrenceRule + if err := h.DB.Where("user_id = ? AND is_active = ?", userID, true).Find(&rules).Error; err != nil { + return err + } + + // Für jede Regel prüfen, ob neue Transaktionen generiert werden müssen + for _, rule := range rules { + // Bis zu 10 Transaktionen pro Regel generieren (um Endlosschleifen zu vermeiden) + for i := 0; i < 10; i++ { + transaction, err := rule.GenerateTransaction(h.DB) + if err != nil { + // Fehler loggen, aber weitermachen + fmt.Printf("Fehler beim Generieren einer wiederkehrenden Transaktion (Regel ID %d): %v\n", rule.ID, err) + break + } + + if transaction == nil { + // Keine weitere Transaktion zu generieren + break + } + + fmt.Printf("Wiederkehrende Transaktion generiert: %s (€%.2f) für %s\n", + transaction.Description, transaction.Amount, transaction.Date.Format("02.01.2006")) + } + } + + return nil +} + +// ShowRecurringTransactions zeigt die Verwaltungsseite für wiederkehrende Transaktionen +func (h *Handler) ShowRecurringTransactions(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.Redirect(http.StatusSeeOther, "/login?error=required") + return + } + + // Benutzer aus der Datenbank laden + var user models.User + if err := h.DB.First(&user, userID).Error; err != nil { + c.Redirect(http.StatusSeeOther, "/login?error=user_not_found") + return + } + + // Alle Regeln des Benutzers laden + var rules []models.RecurrenceRule + if err := h.DB.Where("user_id = ?", userID). + Preload("Category"). + Order("created_at DESC"). + Find(&rules).Error; err != nil { + c.String(http.StatusInternalServerError, "Fehler beim Laden der wiederkehrenden Transaktionen") + return + } + + // Template rendern + component := views.RecurringTransactions(user.Name, rules) + component.Render(c.Request.Context(), c.Writer) +} + +// ShowSettings zeigt die Einstellungsseite an +func (h *Handler) ShowSettings(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.Redirect(http.StatusSeeOther, "/login") + return + } + + // Benutzer laden + var user models.User + if err := h.DB.First(&user, userID).Error; err != nil { + c.String(http.StatusInternalServerError, "Fehler beim Laden der Benutzerdaten") + return + } + + // Kategorien laden + var categories []models.Category + h.DB.Where("user_id = ?", userID).Find(&categories) + + // Bankkonten laden + var bankAccounts []models.BankAccount + h.DB.Where("user_id = ?", userID).Find(&bankAccounts) + + // Template rendern + views.Settings(user.Name, user, categories, bankAccounts).Render(c.Request.Context(), c.Writer) +} + +// UpdateUserSettings aktualisiert die Benutzereinstellungen +func (h *Handler) UpdateUserSettings(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.JSON(http.StatusUnauthorized, gin.H{"error": "Nicht angemeldet"}) + return + } + + // JSON Body parsen + var reqData struct { + Username string `json:"username"` + } + + if err := c.ShouldBindJSON(&reqData); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültige Daten"}) + return + } + + // Benutzer aktualisieren (nur Name, E-Mail bleibt unverändert) + result := h.DB.Model(&models.User{}).Where("id = ?", userID).Update("name", reqData.Username) + + if result.Error != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Fehler beim Speichern"}) + return + } + + c.JSON(http.StatusOK, gin.H{"success": true}) +} + +// UpdatePassword ändert das Benutzerpasswort +func (h *Handler) UpdatePassword(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.JSON(http.StatusUnauthorized, gin.H{"error": "Nicht angemeldet"}) + return + } + + // JSON Body parsen + var reqData struct { + CurrentPassword string `json:"current_password"` + NewPassword string `json:"new_password"` + } + + if err := c.ShouldBindJSON(&reqData); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültige Daten"}) + return + } + + // Benutzer laden + var user models.User + if err := h.DB.First(&user, userID).Error; err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Fehler beim Laden der Benutzerdaten"}) + return + } + + // Aktuelles Passwort überprüfen + if err := bcrypt.CompareHashAndPassword([]byte(user.PasswordHash), []byte(reqData.CurrentPassword)); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Aktuelles Passwort ist falsch"}) + return + } + + // Neues Passwort hashen + hashedPassword, err := bcrypt.GenerateFromPassword([]byte(reqData.NewPassword), bcrypt.DefaultCost) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Fehler beim Hashen des Passworts"}) + return + } + + // Passwort aktualisieren + result := h.DB.Model(&user).Update("password_hash", string(hashedPassword)) + if result.Error != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Fehler beim Speichern des Passworts"}) + return + } + + c.JSON(http.StatusOK, gin.H{"success": true}) +} + +// CreateCategory erstellt eine neue Kategorie +func (h *Handler) CreateCategory(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.Redirect(http.StatusSeeOther, "/login") + return + } + + // Form-Daten lesen + name := c.PostForm("name") + icon := c.PostForm("icon") + color := c.PostForm("color") + + if name == "" || icon == "" { + c.Redirect(http.StatusSeeOther, "/settings?error=invalid_data") + return + } + + // Kategorie erstellen + category := models.Category{ + Name: name, + Icon: icon, + Color: color, + UserID: userID.(uint), + } + + if err := h.DB.Create(&category).Error; err != nil { + c.Redirect(http.StatusSeeOther, "/settings?error=create_failed") + return + } + + c.Redirect(http.StatusSeeOther, "/settings") +} + +// DeleteCategory löscht eine Kategorie +func (h *Handler) DeleteCategory(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.JSON(http.StatusUnauthorized, gin.H{"error": "Nicht angemeldet"}) + return + } + + // Category ID aus URL Parameter + categoryIDStr := c.Param("id") + categoryID, err := strconv.ParseUint(categoryIDStr, 10, 32) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültige Kategorie-ID"}) + return + } + + // Kategorie löschen (nur wenn sie dem Benutzer gehört) + result := h.DB.Where("id = ? AND user_id = ?", categoryID, userID).Delete(&models.Category{}) + if result.Error != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Fehler beim Löschen"}) + return + } + + if result.RowsAffected == 0 { + c.JSON(http.StatusNotFound, gin.H{"error": "Kategorie nicht gefunden"}) + return + } + + c.JSON(http.StatusOK, gin.H{"success": true}) +} + +// DeleteBankAccount löscht ein Bankkonto +func (h *Handler) DeleteBankAccount(c *gin.Context) { + // Session überprüfen + session, _ := h.Store.Get(c.Request, "user-session") + userID, ok := session.Values["user_id"] + if !ok { + c.JSON(http.StatusUnauthorized, gin.H{"error": "Nicht angemeldet"}) + return + } + + // Account ID aus URL Parameter + accountIDStr := c.Param("id") + accountID, err := strconv.ParseUint(accountIDStr, 10, 32) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "Ungültige Konto-ID"}) + return + } + + // Konto löschen (nur wenn es dem Benutzer gehört) + result := h.DB.Where("id = ? AND user_id = ?", accountID, userID).Delete(&models.BankAccount{}) + if result.Error != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Fehler beim Löschen"}) + return + } + + if result.RowsAffected == 0 { + c.JSON(http.StatusNotFound, gin.H{"error": "Konto nicht gefunden"}) + return + } + + c.JSON(http.StatusOK, gin.H{"success": true}) +} diff --git a/internal/models/models.go b/internal/models/models.go new file mode 100644 index 0000000..306c2ac --- /dev/null +++ b/internal/models/models.go @@ -0,0 +1,336 @@ +package models + +import ( + "time" + + "golang.org/x/crypto/bcrypt" + "gorm.io/gorm" +) + +// User repräsentiert einen Benutzer des Systems +type User struct { + ID uint `gorm:"primaryKey" json:"id"` + Name string `json:"name" gorm:"not null"` + Email string `json:"email" gorm:"uniqueIndex;not null"` + PasswordHash string `json:"-" gorm:"not null"` // JSON-Tag "-" versteckt das Feld in API-Responses + BankAccounts []BankAccount `gorm:"foreignKey:UserID" json:"bank_accounts,omitempty"` + Depots []Depot `gorm:"foreignKey:UserID" json:"depots,omitempty"` + Transactions []Transaction `gorm:"foreignKey:UserID" json:"transactions,omitempty"` + Categories []Category `gorm:"foreignKey:UserID" json:"categories,omitempty"` + RecurrenceRules []RecurrenceRule `gorm:"foreignKey:UserID" json:"recurrence_rules,omitempty"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` +} + +// BankAccount repräsentiert ein Bankkonto eines Benutzers +type BankAccount struct { + ID uint `gorm:"primaryKey" json:"id"` + UserID uint `json:"user_id" gorm:"not null"` + User User `gorm:"foreignKey:UserID" json:"user,omitempty"` + Name string `json:"name" gorm:"not null"` + Bank string `json:"bank" gorm:"not null"` + IBAN string `json:"iban"` + Balance float64 `json:"balance" gorm:"default:0"` + AccountType string `json:"account_type" gorm:"not null"` // "checking", "savings", "credit" + Transactions []Transaction `gorm:"foreignKey:BankAccountID" json:"transactions,omitempty"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` +} + +// Depot repräsentiert ein Wertpapierdepot eines Benutzers +type Depot struct { + ID uint `gorm:"primaryKey" json:"id"` + UserID uint `json:"user_id" gorm:"not null"` + User User `gorm:"foreignKey:UserID" json:"user,omitempty"` + Name string `json:"name" gorm:"not null"` + Broker string `json:"broker" gorm:"not null"` + DepotNumber string `json:"depot_number"` + TotalValue float64 `json:"total_value" gorm:"default:0"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` +} + +// Category repräsentiert eine Transaktionskategorie +type Category struct { + ID uint `gorm:"primaryKey" json:"id"` + UserID uint `json:"user_id" gorm:"not null"` + User User `gorm:"foreignKey:UserID" json:"user,omitempty"` + Name string `json:"name" gorm:"not null"` + Description string `json:"description"` + Color string `json:"color" gorm:"default:'#6B7280'"` // Default-Farbe + Icon string `json:"icon" gorm:"default:'💰'"` // Default-Icon + Transactions []Transaction `gorm:"foreignKey:CategoryID" json:"transactions,omitempty"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` +} + +// Transaction repräsentiert eine Finanztransaktion +type Transaction struct { + ID uint `gorm:"primaryKey" json:"id"` + UserID uint `json:"user_id" gorm:"not null"` + User User `gorm:"foreignKey:UserID" json:"user,omitempty"` + BankAccountID *uint `json:"bank_account_id"` // Optional: kann NULL sein für Depot-Transaktionen + BankAccount *BankAccount `gorm:"foreignKey:BankAccountID" json:"bank_account,omitempty"` + CategoryID *uint `json:"category_id"` // Optional + Category *Category `gorm:"foreignKey:CategoryID" json:"category,omitempty"` + Amount float64 `json:"amount" gorm:"not null"` + Description string `json:"description" gorm:"not null"` + Type string `json:"type" gorm:"not null"` // "income" oder "expense" + Date time.Time `json:"date" gorm:"not null"` + IsRecurring bool `json:"is_recurring" gorm:"default:false"` + RecurrenceRuleID *uint `json:"recurrence_rule_id"` // Optional: Link zur Wiederholungsregel + RecurrenceRule *RecurrenceRule `gorm:"foreignKey:RecurrenceRuleID" json:"recurrence_rule,omitempty"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` +} + +// RecurrenceRule definiert die Regeln für wiederkehrende Transaktionen +type RecurrenceRule struct { + ID uint `gorm:"primaryKey" json:"id"` + UserID uint `json:"user_id" gorm:"not null"` + User User `gorm:"foreignKey:UserID" json:"user,omitempty"` + + // Template-Informationen für neue Transaktionen + Amount float64 `json:"amount" gorm:"not null"` + Description string `json:"description" gorm:"not null"` + CategoryID *uint `json:"category_id"` + Category *Category `gorm:"foreignKey:CategoryID" json:"category,omitempty"` + Type string `json:"type" gorm:"not null"` // "income" or "expense" + BankAccountID *uint `json:"bank_account_id"` + BankAccount *BankAccount `gorm:"foreignKey:BankAccountID" json:"bank_account,omitempty"` + + // Wiederholungsregeln + Interval string `json:"interval" gorm:"not null"` // "daily", "weekly", "monthly", "yearly" + IntervalCount int `json:"interval_count" gorm:"default:1"` // z.B. alle 2 Wochen = weekly + 2 + StartDate time.Time `json:"start_date" gorm:"not null"` + EndDate *time.Time `json:"end_date"` // Optional: NULL bedeutet unbegrenzt + DayOfWeek *int `json:"day_of_week"` // 0=Sonntag, 1=Montag, etc. (für wöchentlich) + DayOfMonth *int `json:"day_of_month"` // 1-31 (für monatlich) + IsActive bool `json:"is_active" gorm:"default:true"` + LastGenerated *time.Time `json:"last_generated"` // Letztes generiertes Datum + + // Beziehungen zu generierten Transaktionen + Transactions []Transaction `gorm:"foreignKey:RecurrenceRuleID" json:"transactions,omitempty"` + + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` +} + +// Dashboard-spezifische Strukturen für Auswertungen + +// AssetOverview stellt eine Vermögensübersicht dar +type AssetOverview struct { + TotalBankBalance float64 `json:"total_bank_balance"` + TotalDepotValue float64 `json:"total_depot_value"` + TotalAssets float64 `json:"total_assets"` + BankAccounts []BankAccountSummary `json:"bank_accounts"` + Depots []DepotSummary `json:"depots"` +} + +// BankAccountSummary für Dashboard-Übersicht +type BankAccountSummary struct { + ID uint `json:"id"` + Name string `json:"name"` + Bank string `json:"bank"` + AccountType string `json:"account_type"` + Balance float64 `json:"balance"` +} + +// DepotSummary für Dashboard-Übersicht +type DepotSummary struct { + ID uint `json:"id"` + Name string `json:"name"` + Broker string `json:"broker"` + TotalValue float64 `json:"total_value"` +} + +// MonthlyStats für monatliche Statistiken +type MonthlyStats struct { + Month string `json:"month"` + Income float64 `json:"income"` + Expenses float64 `json:"expenses"` + NetChange float64 `json:"net_change"` + Balance float64 `json:"balance"` +} + +// WeeklyStats für wöchentliche Statistiken +type WeeklyStats struct { + Week string `json:"week"` + Income float64 `json:"income"` + Expenses float64 `json:"expenses"` + NetChange float64 `json:"net_change"` + StartDate time.Time `json:"start_date"` + EndDate time.Time `json:"end_date"` +} + +// CategoryStats für Kategorie-Auswertungen +type CategoryStats struct { + CategoryID uint `json:"category_id"` + CategoryName string `json:"category_name"` + TotalAmount float64 `json:"total_amount"` + Count int `json:"count"` + Percentage float64 `json:"percentage"` +} + +// TransactionTrend für Verlaufsdaten +type TransactionTrend struct { + Date time.Time `json:"date"` + Income float64 `json:"income"` + Expense float64 `json:"expense"` + Balance float64 `json:"balance"` +} + +// DashboardData kombiniert alle Dashboard-Daten +type DashboardData struct { + UserName string `json:"user_name"` + AssetOverview AssetOverview `json:"asset_overview"` + MonthlyStats []MonthlyStats `json:"monthly_stats"` + WeeklyStats []WeeklyStats `json:"weekly_stats"` + CategoryStats []CategoryStats `json:"category_stats"` + TransactionTrend []TransactionTrend `json:"transaction_trend"` + RecentTransactions []Transaction `json:"recent_transactions"` +} + +// HashPassword erstellt einen bcrypt Hash des Passworts +func (u *User) HashPassword(password string) error { + hashedBytes, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) + if err != nil { + return err + } + u.PasswordHash = string(hashedBytes) + return nil +} + +// CheckPassword vergleicht das eingegebene Passwort mit dem Hash +func (u *User) CheckPassword(password string) bool { + err := bcrypt.CompareHashAndPassword([]byte(u.PasswordHash), []byte(password)) + return err == nil +} + +// IsRecurringTransaction prüft, ob eine Transaktion wiederkehrend ist +func (t *Transaction) IsRecurringTransaction() bool { + return t.IsRecurring && t.RecurrenceRule != nil +} + +// GetNextOccurrence berechnet das nächste Auftreten einer wiederkehrenden Transaktion +func (r *RecurrenceRule) GetNextOccurrence(from time.Time) *time.Time { + if !r.IsActive { + return nil + } + + var next time.Time + + switch r.Interval { + case "daily": + next = from.AddDate(0, 0, r.IntervalCount) + case "weekly": + next = from.AddDate(0, 0, 7*r.IntervalCount) + // Wenn ein bestimmter Wochentag gewünscht ist + if r.DayOfWeek != nil { + daysUntilTargetDay := (*r.DayOfWeek - int(from.Weekday()) + 7) % 7 + if daysUntilTargetDay == 0 && from.Equal(r.StartDate) { + daysUntilTargetDay = 7 * r.IntervalCount + } + next = from.AddDate(0, 0, daysUntilTargetDay) + } + case "monthly": + next = from.AddDate(0, r.IntervalCount, 0) + // Wenn ein bestimmter Tag im Monat gewünscht ist + if r.DayOfMonth != nil && *r.DayOfMonth >= 1 && *r.DayOfMonth <= 31 { + next = time.Date(next.Year(), next.Month(), *r.DayOfMonth, next.Hour(), next.Minute(), next.Second(), next.Nanosecond(), next.Location()) + } + case "yearly": + next = from.AddDate(r.IntervalCount, 0, 0) + default: + return nil + } + + // Prüfen, ob das nächste Datum nach dem Enddatum liegt + if r.EndDate != nil && next.After(*r.EndDate) { + return nil + } + + return &next +} + +// CanGenerate prüft, ob eine neue Instanz der wiederkehrenden Transaktion generiert werden kann +func (r *RecurrenceRule) CanGenerate() bool { + if !r.IsActive { + return false + } + + now := time.Now() + + // Prüfen, ob wir noch vor dem Enddatum sind + if r.EndDate != nil && now.After(*r.EndDate) { + return false + } + + // Prüfen, ob es Zeit für die nächste Generierung ist + lastDate := r.StartDate + if r.LastGenerated != nil { + lastDate = *r.LastGenerated + } + + nextOccurrence := r.GetNextOccurrence(lastDate) + if nextOccurrence == nil { + return false + } + + // Geändert: Generiere Transaktionen für die nächsten 12 Monate (für Dashboard-Trend) + future12Months := now.AddDate(1, 0, 0) + if nextOccurrence.After(future12Months) { + return false + } + + return true +} + +// GenerateTransaction erstellt eine neue Transaktion basierend auf der Wiederholungsregel +func (r *RecurrenceRule) GenerateTransaction(db *gorm.DB) (*Transaction, error) { + if !r.CanGenerate() { + return nil, nil // Keine Transaktion zu generieren + } + + // Nächstes Datum berechnen + lastDate := r.StartDate + if r.LastGenerated != nil { + lastDate = *r.LastGenerated + } + + nextDate := r.GetNextOccurrence(lastDate) + if nextDate == nil { + return nil, nil + } + + // Neue Transaktion erstellen + transaction := &Transaction{ + UserID: r.UserID, + BankAccountID: r.BankAccountID, + Amount: r.Amount, + Description: r.Description, + CategoryID: r.CategoryID, + Type: r.Type, + Date: *nextDate, + IsRecurring: true, + RecurrenceRuleID: &r.ID, + } + + // Transaktion in der Datenbank speichern + if err := db.Create(transaction).Error; err != nil { + return nil, err + } + + // LastGenerated aktualisieren + r.LastGenerated = nextDate + if err := db.Save(r).Error; err != nil { + return nil, err + } + + return transaction, nil +} + +// Migrate führt die Datenbank-Migration durch +func Migrate(db *gorm.DB) error { + return db.AutoMigrate(&User{}, &Category{}, &Transaction{}, &BankAccount{}, &Depot{}, &RecurrenceRule{}) +} diff --git a/internal/views/accounts.templ b/internal/views/accounts.templ new file mode 100644 index 0000000..2c2fd12 --- /dev/null +++ b/internal/views/accounts.templ @@ -0,0 +1,265 @@ +package views + +import ( + "whereismymoney/internal/models" + "fmt" +) + +templ Accounts(userName string, bankAccounts []models.BankAccount, depots []models.Depot) { + @Layout("Konten & Depots - WhereIsMyMoney") { + @Navigation(userName) + + +
+
+
+ +
+

Konten & Depots

+

Verwalte deine Bankkonten und Wertpapierdepots

+
+ + +
+ + +
+ +
+ +
+

Bankkonten

+ if len(bankAccounts) == 0 { +
+ + + +

Keine Bankkonten

+

Füge dein erstes Bankkonto hinzu, um zu beginnen.

+
+ } else { +
+ for _, account := range bankAccounts { +
+
+
+

{ account.Name }

+

{ account.Bank }

+

{ account.AccountType }

+ if account.IBAN != "" { +

{ account.IBAN }

+ } +
+
+

+ { fmt.Sprintf("%.2f", account.Balance) } € +

+ + Aktiv + +
+
+
+ + +
+
+ } +
+ } +
+ + +
+

Depots

+ if len(depots) == 0 { +
+ + + +

Keine Depots

+

Füge dein erstes Depot hinzu, um zu beginnen.

+
+ } else { +
+ for _, depot := range depots { +
+
+
+

{ depot.Name }

+

{ depot.Broker }

+ if depot.DepotNumber != "" { +

Depot: { depot.DepotNumber }

+ } +
+
+

+ { fmt.Sprintf("%.2f", depot.TotalValue) } € +

+ + Aktiv + +
+
+
+ + +
+
+ } +
+ } +
+
+
+
+
+ + + + + + + + + } +} diff --git a/internal/views/accounts_templ.go b/internal/views/accounts_templ.go new file mode 100644 index 0000000..46ed8d1 --- /dev/null +++ b/internal/views/accounts_templ.go @@ -0,0 +1,254 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.778 +package views + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +import ( + "fmt" + "whereismymoney/internal/models" +) + +func Accounts(userName string, bankAccounts []models.BankAccount, depots []models.Depot) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Err = Navigation(userName).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Konten & Depots

Verwalte deine Bankkonten und Wertpapierdepots

Bankkonten

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if len(bankAccounts) == 0 { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Keine Bankkonten

Füge dein erstes Bankkonto hinzu, um zu beginnen.

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + for _, account := range bankAccounts { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var3 string + templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(account.Name) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/accounts.templ`, Line: 60, Col: 73} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var4 string + templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(account.Bank) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/accounts.templ`, Line: 61, Col: 60} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var5 string + templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(account.AccountType) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/accounts.templ`, Line: 62, Col: 78} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if account.IBAN != "" { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var6 string + templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(account.IBAN) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/accounts.templ`, Line: 64, Col: 66} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var7 string + templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%.2f", account.Balance)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/accounts.templ`, Line: 69, Col: 52} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" €

Aktiv
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Depots

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if len(depots) == 0 { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Keine Depots

Füge dein erstes Depot hinzu, um zu beginnen.

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + for _, depot := range depots { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var8 string + templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(depot.Name) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/accounts.templ`, Line: 107, Col: 71} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var9 string + templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(depot.Broker) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/accounts.templ`, Line: 108, Col: 60} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if depot.DepotNumber != "" { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Depot: ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var10 string + templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(depot.DepotNumber) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/accounts.templ`, Line: 110, Col: 78} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var11 string + templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%.2f", depot.TotalValue)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/accounts.templ`, Line: 115, Col: 53} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" €

Aktiv
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return templ_7745c5c3_Err + }) + templ_7745c5c3_Err = Layout("Konten & Depots - WhereIsMyMoney").Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return templ_7745c5c3_Err + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/internal/views/dashboard.templ b/internal/views/dashboard.templ new file mode 100644 index 0000000..7a90dce --- /dev/null +++ b/internal/views/dashboard.templ @@ -0,0 +1,138 @@ +package views + +import ( + "fmt" + "whereismymoney/internal/models" +) + +templ Dashboard(data *models.DashboardData) { + @Layout("WhereIsMyMoney") { + @Navigation(data.UserName) + + +
+
+
+ +
+

Dashboard

+

Willkommen zurück, { data.UserName }!

+
+ + +
+
+

Depots

+

€{ fmt.Sprintf("%.2f", data.AssetOverview.TotalDepotValue) }

+

{ fmt.Sprintf("%d Depots", len(data.AssetOverview.Depots)) }

+
+ +
+

Gesamtvermögen

+

€{ fmt.Sprintf("%.2f", data.AssetOverview.TotalAssets) }

+

Bank + Depot

+
+
+ + +
+ +
+

Monatliche Entwicklung

+
+ +
+
+ + +
+

Einnahmen vs Ausgaben

+
+ +
+
+
+ + +
+

12-Monats Vorausschau

+
+ +
+
+ + +
+ + if len(data.AssetOverview.Depots) > 0 { +
+
+

Depots

+
+
+ for _, depot := range data.AssetOverview.Depots { +
+
+
+

{ depot.Name }

+

{ depot.Broker }

+
+

€{ fmt.Sprintf("%.2f", depot.TotalValue) }

+
+
+ } +
+
+ } +
+ + + if len(data.RecentTransactions) > 0 { +
+
+

Aktuelle Transaktionen

+
+
+ for _, transaction := range data.RecentTransactions { +
+
+
+

{ transaction.Description }

+
+ { transaction.Date.Format("02.01.2006") } + if transaction.Category != nil { + + { transaction.Category.Name } + } + if transaction.BankAccount != nil { + + { transaction.BankAccount.Name } + } +
+
+
+ if transaction.Type == "income" { +

+€{ fmt.Sprintf("%.2f", transaction.Amount) }

+ } else { +

-€{ fmt.Sprintf("%.2f", transaction.Amount) }

+ } +

{ transaction.Type }

+
+
+
+ } +
+ +
+ } + + + + +
+
+
+ } +} diff --git a/internal/views/dashboard_templ.go b/internal/views/dashboard_templ.go new file mode 100644 index 0000000..32d6a20 --- /dev/null +++ b/internal/views/dashboard_templ.go @@ -0,0 +1,320 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.778 +package views + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +import ( + "fmt" + "whereismymoney/internal/models" +) + +func Dashboard(data *models.DashboardData) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Err = Navigation(data.UserName).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Dashboard

Willkommen zurück, ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var3 string + templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(data.UserName) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/dashboard.templ`, Line: 19, Col: 71} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("!

Depots

€") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var4 string + templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%.2f", data.AssetOverview.TotalDepotValue)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/dashboard.templ`, Line: 26, Col: 111} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var5 string + templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d Depots", len(data.AssetOverview.Depots))) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/dashboard.templ`, Line: 27, Col: 98} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Gesamtvermögen

€") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var6 string + templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%.2f", data.AssetOverview.TotalAssets)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/dashboard.templ`, Line: 32, Col: 109} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Bank + Depot

Monatliche Entwicklung

Einnahmen vs Ausgaben

12-Monats Vorausschau

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if len(data.AssetOverview.Depots) > 0 { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Depots

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + for _, depot := range data.AssetOverview.Depots { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var7 string + templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(depot.Name) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/dashboard.templ`, Line: 77, Col: 70} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var8 string + templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(depot.Broker) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/dashboard.templ`, Line: 78, Col: 60} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

€") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var9 string + templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%.2f", depot.TotalValue)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/dashboard.templ`, Line: 80, Col: 101} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if len(data.RecentTransactions) > 0 { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Aktuelle Transaktionen

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + for _, transaction := range data.RecentTransactions { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var10 string + templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(transaction.Description) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/dashboard.templ`, Line: 100, Col: 82} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var11 string + templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(transaction.Date.Format("02.01.2006")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/dashboard.templ`, Line: 102, Col: 58} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if transaction.Category != nil { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var12 string + templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(transaction.Category.Name) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/dashboard.templ`, Line: 105, Col: 47} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + if transaction.BankAccount != nil { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var13 string + templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(transaction.BankAccount.Name) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/dashboard.templ`, Line: 109, Col: 50} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if transaction.Type == "income" { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

+€") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var14 string + templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%.2f", transaction.Amount)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/dashboard.templ`, Line: 115, Col: 106} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

-€") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var15 string + templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%.2f", transaction.Amount)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/dashboard.templ`, Line: 117, Col: 104} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var16 string + templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(transaction.Type) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/dashboard.templ`, Line: 119, Col: 63} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return templ_7745c5c3_Err + }) + templ_7745c5c3_Err = Layout("WhereIsMyMoney").Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return templ_7745c5c3_Err + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/internal/views/layout.templ b/internal/views/layout.templ new file mode 100644 index 0000000..6738230 --- /dev/null +++ b/internal/views/layout.templ @@ -0,0 +1,16 @@ +package views + +templ Layout(title string) { + + + + + + { title } + + + + { children... } + + +} diff --git a/internal/views/layout_templ.go b/internal/views/layout_templ.go new file mode 100644 index 0000000..2ac33f6 --- /dev/null +++ b/internal/views/layout_templ.go @@ -0,0 +1,61 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.778 +package views + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +func Layout(title string) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var2 string + templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(title) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/layout.templ`, Line: 9, Col: 16} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return templ_7745c5c3_Err + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/internal/views/login.templ b/internal/views/login.templ new file mode 100644 index 0000000..399554d --- /dev/null +++ b/internal/views/login.templ @@ -0,0 +1,66 @@ +package views + +templ LoginPage(errorMsg string) { + @Layout("Anmelden") { +
+
+
+

+ Bei WhereIsMyMoney anmelden +

+

+ Oder + + neues Konto erstellen + +

+
+ + if errorMsg != "" { +
+
+
+ + + +
+
+

+ { errorMsg } +

+
+
+
+ } + +
+
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ +
+ +
+
+
+
+ } +} diff --git a/internal/views/login_templ.go b/internal/views/login_templ.go new file mode 100644 index 0000000..0e8a93b --- /dev/null +++ b/internal/views/login_templ.go @@ -0,0 +1,81 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.778 +package views + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +func LoginPage(errorMsg string) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Bei WhereIsMyMoney anmelden

Oder neues Konto erstellen

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if errorMsg != "" { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var3 string + templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(errorMsg) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/login.templ`, Line: 29, Col: 19} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return templ_7745c5c3_Err + }) + templ_7745c5c3_Err = Layout("Anmelden").Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return templ_7745c5c3_Err + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/internal/views/navigation.templ b/internal/views/navigation.templ new file mode 100644 index 0000000..8c8a7f8 --- /dev/null +++ b/internal/views/navigation.templ @@ -0,0 +1,129 @@ +package views + +templ Navigation(userName string) { + + + + +} diff --git a/internal/views/navigation_templ.go b/internal/views/navigation_templ.go new file mode 100644 index 0000000..557a946 --- /dev/null +++ b/internal/views/navigation_templ.go @@ -0,0 +1,79 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.778 +package views + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +func Navigation(userName string) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return templ_7745c5c3_Err + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/internal/views/recurring.templ b/internal/views/recurring.templ new file mode 100644 index 0000000..a1b4058 --- /dev/null +++ b/internal/views/recurring.templ @@ -0,0 +1,324 @@ +package views + +import ( + "fmt" + "whereismymoney/internal/models" +) + +templ RecurringTransactions(userName string, rules []models.RecurrenceRule) { + @Layout("Wiederkehrende Transaktionen - WhereIsMyMoney") { + @Navigation(userName) + + +
+
+
+ +
+

Wiederkehrende Transaktionen

+

Verwalten Sie Ihre regelmäßigen Ein- und Ausgaben

+
+ + +
+
+

Ihre wiederkehrenden Transaktionen

+
+ + if len(rules) == 0 { +
+

Noch keine wiederkehrenden Transaktionen vorhanden.

+
+ } else { +
+ for _, rule := range rules { +
+
+
+
+

{ rule.Description }

+ if rule.IsActive { + + Aktiv + + } else { + + Inaktiv + + } +
+ +
+
+ Betrag: + if rule.Type == "income" { + +€{ fmt.Sprintf("%.2f", rule.Amount) } + } else { + -€{ fmt.Sprintf("%.2f", rule.Amount) } + } +
+ +
+ Intervall: + + switch rule.Interval { + case "daily": + if rule.IntervalCount == 1 { + Täglich + } else { + Alle { fmt.Sprintf("%d", rule.IntervalCount) } Tage + } + case "weekly": + if rule.IntervalCount == 1 { + Wöchentlich + } else { + Alle { fmt.Sprintf("%d", rule.IntervalCount) } Wochen + } + case "monthly": + if rule.IntervalCount == 1 { + Monatlich + } else { + Alle { fmt.Sprintf("%d", rule.IntervalCount) } Monate + } + case "yearly": + if rule.IntervalCount == 1 { + Jährlich + } else { + Alle { fmt.Sprintf("%d", rule.IntervalCount) } Jahre + } + default: + { rule.Interval } + } + +
+ + if rule.Category != nil { +
+ Kategorie: + { rule.Category.Name } +
+ } + +
+ Start: + { rule.StartDate.Format("02.01.2006") } +
+ + if rule.EndDate != nil { +
+ Ende: + { rule.EndDate.Format("02.01.2006") } +
+ } +
+
+ +
+ + + + + +
+
+
+ } +
+ } +
+ + + + + + +
+
+
+ } +} diff --git a/internal/views/recurring_templ.go b/internal/views/recurring_templ.go new file mode 100644 index 0000000..5ec74ea --- /dev/null +++ b/internal/views/recurring_templ.go @@ -0,0 +1,504 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.778 +package views + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +import ( + "fmt" + "whereismymoney/internal/models" +) + +func RecurringTransactions(userName string, rules []models.RecurrenceRule) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Err = Navigation(userName).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Wiederkehrende Transaktionen

Verwalten Sie Ihre regelmäßigen Ein- und Ausgaben

Ihre wiederkehrenden Transaktionen

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if len(rules) == 0 { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Noch keine wiederkehrenden Transaktionen vorhanden.

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + for _, rule := range rules { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var4 string + templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(rule.Description) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/recurring.templ`, Line: 39, Col: 77} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if rule.IsActive { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Aktiv") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Inaktiv") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
Betrag: ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if rule.Type == "income" { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("+€") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var5 string + templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%.2f", rule.Amount)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/recurring.templ`, Line: 55, Col: 101} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("-€") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var6 string + templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%.2f", rule.Amount)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/recurring.templ`, Line: 57, Col: 99} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
Intervall: ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + switch rule.Interval { + case "daily": + if rule.IntervalCount == 1 { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Täglich") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Alle ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var7 string + templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", rule.IntervalCount)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/recurring.templ`, Line: 69, Col: 62} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" Tage") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + case "weekly": + if rule.IntervalCount == 1 { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Wöchentlich") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Alle ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var8 string + templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", rule.IntervalCount)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/recurring.templ`, Line: 75, Col: 62} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" Wochen") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + case "monthly": + if rule.IntervalCount == 1 { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Monatlich") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Alle ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var9 string + templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", rule.IntervalCount)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/recurring.templ`, Line: 81, Col: 62} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" Monate") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + case "yearly": + if rule.IntervalCount == 1 { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Jährlich") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Alle ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var10 string + templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", rule.IntervalCount)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/recurring.templ`, Line: 87, Col: 62} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" Jahre") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + default: + var templ_7745c5c3_Var11 string + templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(rule.Interval) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/recurring.templ`, Line: 90, Col: 32} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if rule.Category != nil { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
Kategorie: ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var12 string + templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(rule.Category.Name) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/recurring.templ`, Line: 98, Col: 54} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
Start: ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var13 string + templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(rule.StartDate.Format("02.01.2006")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/recurring.templ`, Line: 104, Col: 70} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if rule.EndDate != nil { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
Ende: ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var14 string + templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(rule.EndDate.Format("02.01.2006")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/recurring.templ`, Line: 110, Col: 69} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Wiederkehrende Transaktion bearbeiten

Leer lassen für unbegrenzte Laufzeit

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return templ_7745c5c3_Err + }) + templ_7745c5c3_Err = Layout("Wiederkehrende Transaktionen - WhereIsMyMoney").Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return templ_7745c5c3_Err + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/internal/views/register.templ b/internal/views/register.templ new file mode 100644 index 0000000..269a24e --- /dev/null +++ b/internal/views/register.templ @@ -0,0 +1,65 @@ +package views + +templ RegisterPage(errorMsg string) { + @Layout("Registrieren") { +
+
+
+

+ Neues Konto erstellen +

+

+ Oder + + mit bestehendem Konto anmelden + +

+
+ + if errorMsg != "" { +
+
+
+ + + +
+
+

+ { errorMsg } +

+
+
+
+ } + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ +
+
+
+
+ } +} diff --git a/internal/views/register_templ.go b/internal/views/register_templ.go new file mode 100644 index 0000000..a321069 --- /dev/null +++ b/internal/views/register_templ.go @@ -0,0 +1,81 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.778 +package views + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +func RegisterPage(errorMsg string) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Neues Konto erstellen

Oder mit bestehendem Konto anmelden

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if errorMsg != "" { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var3 string + templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(errorMsg) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/register.templ`, Line: 29, Col: 19} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return templ_7745c5c3_Err + }) + templ_7745c5c3_Err = Layout("Registrieren").Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return templ_7745c5c3_Err + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/internal/views/settings.templ b/internal/views/settings.templ new file mode 100644 index 0000000..0562158 --- /dev/null +++ b/internal/views/settings.templ @@ -0,0 +1,312 @@ +package views + +import ( + "whereismymoney/internal/models" + "fmt" +) + +templ Settings(userName string, user models.User, categories []models.Category, bankAccounts []models.BankAccount) { + @Layout("Einstellungen - WhereIsMyMoney") { +
+ @Navigation(userName) + +
+
+
+

Einstellungen

+

Verwalte deine Kontoinformationen und App-Einstellungen

+
+ +
+ +
+
+
+

Benutzereinstellungen

+
+
+
+
+ + +
+
+ + +

Die E-Mail-Adresse dient als eindeutige Benutzer-ID und kann nicht geändert werden.

+
+
+ +
+
+
+
+ + +
+
+

Passwort ändern

+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+ + +
+ +
+
+

Kategorien

+
+
+
+ for _, category := range categories { +
+ { category.Icon } { category.Name } + +
+ } +
+ +
+
+ + +
+
+

Bankkonten

+
+
+
+ for _, account := range bankAccounts { +
+
+
{ account.Name }
+
{ account.Bank }
+
+ +
+ } +
+ + Konten verwalten + +
+
+ + +
+
+

App-Informationen

+
+
+
Version: 1.0.0
+
Erstellt mit Go & Templ
+
© 2025 WhereIsMyMoney
+
+
+
+
+
+
+
+ + + + + + } +} diff --git a/internal/views/settings_templ.go b/internal/views/settings_templ.go new file mode 100644 index 0000000..105089d --- /dev/null +++ b/internal/views/settings_templ.go @@ -0,0 +1,195 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.778 +package views + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +import ( + "fmt" + "whereismymoney/internal/models" +) + +func Settings(userName string, user models.User, categories []models.Category, bankAccounts []models.BankAccount) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = Navigation(userName).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Einstellungen

Verwalte deine Kontoinformationen und App-Einstellungen

Benutzereinstellungen

Die E-Mail-Adresse dient als eindeutige Benutzer-ID und kann nicht geändert werden.

Passwort ändern

Kategorien

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + for _, category := range categories { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var5 string + templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(category.Icon) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/settings.templ`, Line: 87, Col: 49} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var6 string + templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(category.Name) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/settings.templ`, Line: 87, Col: 67} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Bankkonten

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + for _, account := range bankAccounts { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var8 string + templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(account.Name) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/settings.templ`, Line: 110, Col: 52} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var9 string + templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(account.Bank) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/settings.templ`, Line: 111, Col: 54} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
Konten verwalten

App-Informationen

Version: 1.0.0
Erstellt mit Go & Templ
© 2025 WhereIsMyMoney
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return templ_7745c5c3_Err + }) + templ_7745c5c3_Err = Layout("Einstellungen - WhereIsMyMoney").Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return templ_7745c5c3_Err + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/internal/views/transactions.templ b/internal/views/transactions.templ new file mode 100644 index 0000000..c9af05f --- /dev/null +++ b/internal/views/transactions.templ @@ -0,0 +1,1228 @@ +package views + +import ( + "whereismymoney/internal/models" + "fmt" + "time" +) + +func min(a, b int) int { + if a < b { + return a + } + return b +} + +func max(a, b int) int { + if a > b { + return a + } + return b +} + +templ Transactions(userName string, transactions []models.Transaction, bankAccounts []models.BankAccount, categories []models.Category, recurrenceRules []models.RecurrenceRule, currentPage int, totalPages int, totalCount int64) { + @Layout("Transaktionen - WhereIsMyMoney") { + @Navigation(userName) + + +
+
+
+ +
+

Transaktionen

+

Verwalte deine Einnahmen und Ausgaben

+
+ + +
+ + +
+ + +
+
+

Filter & Suche

+
+ +
+ + +
+
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ +
+ + +
+
+ + +
+ + +
+ Alle Transaktionen werden angezeigt +
+
+
+
+ + +
+
+ +
+
+ + +
+
+
+

Letzte Transaktionen

+ +
+
+ + + + + + + + + + + + + + if len(transactions) == 0 { + + + + } + for _, transaction := range transactions { + + + + + + + + + + } + +
+ + DatumBeschreibungKategorieKontoBetragAktionen
+ Noch keine Transaktionen vorhanden +
+ + + { transaction.Date.Format("02.01.2006") } + + { transaction.Description } + if transaction.IsRecurring { + + 🔄 Regelmäßig + + } + + if transaction.Category != nil { + + { transaction.Category.Icon } { transaction.Category.Name } + + } else { + Ohne Kategorie + } + + if transaction.BankAccount != nil { + { transaction.BankAccount.Name } + } else { + Ohne Konto + } + + if transaction.Type == "income" { + +{ fmt.Sprintf("%.2f", transaction.Amount) } € + } else { + -{ fmt.Sprintf("%.2f", transaction.Amount) } € + } + + + +
+
+ + if totalPages > 1 { +
+
+
+ Zeige { fmt.Sprintf("%d", (currentPage-1)*20+1) } bis { fmt.Sprintf("%d", min(currentPage*20, int(totalCount))) } von { fmt.Sprintf("%d", totalCount) } Transaktionen +
+
+ + if currentPage > 1 { + + Vorherige + + } else { + + Vorherige + + } + + +
+ if currentPage > 3 { + + 1 + + if currentPage > 4 { + ... + } + } + + for i := max(1, currentPage-2); i <= min(totalPages, currentPage+2); i++ { + if i == currentPage { + + { fmt.Sprintf("%d", i) } + + } else { + + { fmt.Sprintf("%d", i) } + + } + } + + if currentPage < totalPages-2 { + if currentPage < totalPages-3 { + ... + } + + { fmt.Sprintf("%d", totalPages) } + + } +
+ + + if currentPage < totalPages { + + Nächste + + } else { + + Nächste + + } +
+
+
+ } +
+
+ + + +
+
+
+ + + + + + + + + + + + + + + + + + } +} + +func getIntervalText(interval string, count int) string { + var base string + switch interval { + case "daily": + base = "Tag" + if count > 1 { + base = "Tage" + } + case "weekly": + base = "Woche" + if count > 1 { + base = "Wochen" + } + case "monthly": + base = "Monat" + if count > 1 { + base = "Monate" + } + case "yearly": + base = "Jahr" + if count > 1 { + base = "Jahre" + } + default: + return interval + } + + if count == 1 { + return fmt.Sprintf("Jeden %s", base) + } + return fmt.Sprintf("Alle %d %s", count, base) +} + +func getNextExecutionDate(rule models.RecurrenceRule) string { + if !rule.IsActive { + return "Pausiert" + } + + lastDate := rule.StartDate + if rule.LastGenerated != nil { + lastDate = *rule.LastGenerated + } + + nextDate := rule.GetNextOccurrence(lastDate) + if nextDate == nil { + return "Beendet" + } + + return nextDate.Format("02.01.2006") +} diff --git a/internal/views/transactions_templ.go b/internal/views/transactions_templ.go new file mode 100644 index 0000000..a7c970b --- /dev/null +++ b/internal/views/transactions_templ.go @@ -0,0 +1,1221 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.778 +package views + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +import ( + "fmt" + "time" + "whereismymoney/internal/models" +) + +func min(a, b int) int { + if a < b { + return a + } + return b +} + +func max(a, b int) int { + if a > b { + return a + } + return b +} + +func Transactions(userName string, transactions []models.Transaction, bankAccounts []models.BankAccount, categories []models.Category, recurrenceRules []models.RecurrenceRule, currentPage int, totalPages int, totalCount int64) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Err = Navigation(userName).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Transaktionen

Verwalte deine Einnahmen und Ausgaben

Filter & Suche

Alle Transaktionen werden angezeigt

Letzte Transaktionen

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if len(transactions) == 0 { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + for _, transaction := range transactions { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
DatumBeschreibungKategorieKontoBetragAktionen
Noch keine Transaktionen vorhanden
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var10 string + templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(transaction.Date.Format("02.01.2006")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 185, Col: 52} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var11 string + templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(transaction.Description) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 188, Col: 38} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if transaction.IsRecurring { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("🔄 Regelmäßig") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if transaction.Category != nil { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var12 string + templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(transaction.Category.Icon) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 198, Col: 42} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var13 string + templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(transaction.Category.Name) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 198, Col: 72} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Ohne Kategorie") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if transaction.BankAccount != nil { + var templ_7745c5c3_Var14 string + templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(transaction.BankAccount.Name) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 206, Col: 44} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Ohne Konto") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if transaction.Type == "income" { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("+") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var15 string + templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%.2f", transaction.Amount)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 213, Col: 97} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" €") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("-") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var16 string + templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%.2f", transaction.Amount)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 215, Col: 95} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" €") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if totalPages > 1 { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
Zeige ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var19 string + templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", (currentPage-1)*20+1)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 236, Col: 58} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" bis ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var20 string + templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", min(currentPage*20, int(totalCount)))) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 236, Col: 122} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" von ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var21 string + templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", totalCount)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 236, Col: 160} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" Transaktionen
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if currentPage > 1 { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Vorherige") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Vorherige") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if currentPage > 3 { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("1 ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if currentPage > 4 { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("... ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + } + for i := max(1, currentPage-2); i <= min(totalPages, currentPage+2); i++ { + if i == currentPage { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var24 string + templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", i)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 264, Col: 37} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var26 string + templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", i)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 268, Col: 37} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + } + if currentPage < totalPages-2 { + if currentPage < totalPages-3 { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("...") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var28 string + templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", totalPages)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 278, Col: 45} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var28)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if currentPage < totalPages { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Nächste") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Nächste") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Regelmäßige Transaktionen

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if len(recurrenceRules) == 0 { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + for _, rule := range recurrenceRules { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
BeschreibungIntervallNächste AusführungBetragStatusAktionen
Noch keine regelmäßigen Transaktionen vorhanden
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var30 string + templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs(rule.Description) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 329, Col: 31} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if rule.Category != nil { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var31 string + templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(rule.Category.Icon) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 332, Col: 35} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var32 string + templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(rule.Category.Name) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 332, Col: 58} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var33 string + templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(getIntervalText(rule.Interval, rule.IntervalCount)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 337, Col: 65} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var34 string + templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(getNextExecutionDate(rule)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 340, Col: 41} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if rule.Type == "income" { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("+") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var35 string + templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%.2f", rule.Amount)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 344, Col: 90} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" €") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("-") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var36 string + templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%.2f", rule.Amount)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/transactions.templ`, Line: 346, Col: 88} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var36)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" €") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if rule.IsActive { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Aktiv") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Pausiert") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Mehrere Transaktionen bearbeiten

Nur die Felder ausfüllen, die für alle ausgewählten Transaktionen geändert werden sollen. Leere Felder bleiben unverändert.

Leer lassen um unverändert zu lassen

Leer lassen um unverändert zu lassen

Leer lassen um unverändert zu lassen

Transaktionen löschen

Sind Sie sicher?

Sie sind dabei, 0 Transaktionen zu löschen. Diese Aktion kann nicht rückgängig gemacht werden.

Warnung: Alle ausgewählten Transaktionen werden permanent gelöscht. Stellen Sie sicher, dass Sie die richtigen Transaktionen ausgewählt haben.

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return templ_7745c5c3_Err + }) + templ_7745c5c3_Err = Layout("Transaktionen - WhereIsMyMoney").Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return templ_7745c5c3_Err + }) +} + +func getIntervalText(interval string, count int) string { + var base string + switch interval { + case "daily": + base = "Tag" + if count > 1 { + base = "Tage" + } + case "weekly": + base = "Woche" + if count > 1 { + base = "Wochen" + } + case "monthly": + base = "Monat" + if count > 1 { + base = "Monate" + } + case "yearly": + base = "Jahr" + if count > 1 { + base = "Jahre" + } + default: + return interval + } + + if count == 1 { + return fmt.Sprintf("Jeden %s", base) + } + return fmt.Sprintf("Alle %d %s", count, base) +} + +func getNextExecutionDate(rule models.RecurrenceRule) string { + if !rule.IsActive { + return "Pausiert" + } + + lastDate := rule.StartDate + if rule.LastGenerated != nil { + lastDate = *rule.LastGenerated + } + + nextDate := rule.GetNextOccurrence(lastDate) + if nextDate == nil { + return "Beendet" + } + + return nextDate.Format("02.01.2006") +} + +var _ = templruntime.GeneratedTemplate diff --git a/main.go b/main.go new file mode 100644 index 0000000..d6ba223 --- /dev/null +++ b/main.go @@ -0,0 +1,85 @@ +package main + +import ( + "log" + "whereismymoney/internal/config" + "whereismymoney/internal/database" + "whereismymoney/internal/handlers" + + "github.com/gin-gonic/gin" +) + +func main() { + // Load configuration + cfg, err := config.Load() + if err != nil { + log.Fatal("Fehler beim Laden der Konfiguration:", err) + } + + // Connect to database + db, err := database.Connect(cfg) + if err != nil { + log.Fatal("Fehler beim Verbinden zur Datenbank:", err) + } + + // Initialize handlers + h := handlers.NewHandler(db) + + // Setup Gin router + r := gin.Default() + + // Statische Dateien servieren + r.Static("/static", "./static") + + // Auth Routes + r.GET("/login", h.ShowLogin) + r.POST("/login", h.Login) + r.GET("/register", h.ShowRegister) + r.POST("/register", h.Register) + r.POST("/logout", h.Logout) + + // Protected Routes + r.GET("/", h.Dashboard) + r.GET("/api/dashboard-data", h.DashboardDataAPI) + r.GET("/accounts", h.ShowAccounts) + r.POST("/accounts/bank", h.CreateBankAccount) + r.POST("/accounts/depot", h.CreateDepot) + + // Test Route für wiederkehrende Transaktionen + r.GET("/test/recurring", h.TestRecurringTransactions) + + // Transaction Routes + r.GET("/transactions", h.ShowTransactions) + r.POST("/transactions", h.CreateTransaction) + r.POST("/transactions/recurring", h.CreateRecurringTransaction) + r.DELETE("/transactions/:id", h.DeleteTransaction) + r.GET("/transactions/:id/data", h.GetTransactionData) + r.PUT("/transactions/:id", h.UpdateTransaction) + r.PUT("/transactions/multi-update", h.MultiUpdateTransactions) + r.DELETE("/transactions/multi-delete", h.MultiDeleteTransactions) + r.POST("/transactions/recurring/:id/toggle", h.ToggleRecurrenceRule) + + // Recurring Transactions Management + r.GET("/recurring", h.ShowRecurringTransactions) + + // Recurring Transaction Management Routes + r.GET("/api/recurring-rules", h.GetRecurrenceRules) + r.PUT("/api/recurring-rules/:id", h.UpdateRecurrenceRule) + r.DELETE("/api/recurring-rules/:id", h.DeleteRecurrenceRule) + + // Settings Routes + r.GET("/settings", h.ShowSettings) + r.PUT("/settings/user", h.UpdateUserSettings) + r.PUT("/settings/password", h.UpdatePassword) + r.POST("/settings/categories", h.CreateCategory) + r.DELETE("/settings/categories/:id", h.DeleteCategory) + r.DELETE("/settings/accounts/:id", h.DeleteBankAccount) + + addr := cfg.Server.Host + ":" + cfg.Server.Port + log.Printf("Server startet auf %s...", addr) + log.Printf("Öffne http://%s in deinem Browser", addr) + + if err := r.Run(":" + cfg.Server.Port); err != nil { + log.Fatal("Server konnte nicht gestartet werden:", err) + } +} diff --git a/static/css/style.css b/static/css/style.css new file mode 100644 index 0000000..e69de29 diff --git a/static/js/dashboard-charts.js b/static/js/dashboard-charts.js new file mode 100644 index 0000000..8392cd8 --- /dev/null +++ b/static/js/dashboard-charts.js @@ -0,0 +1,316 @@ +// Dashboard Charts JavaScript - Mit echten Daten aus der API +document.addEventListener('DOMContentLoaded', function() { + console.log('Dashboard charts initializing...'); + + // Prüfe ob Chart.js geladen ist + if (typeof Chart === 'undefined') { + console.error('Chart.js not loaded!'); + return; + } + + console.log('Chart.js loaded, version:', Chart.version); + + // Dashboard-Daten über API laden + fetch('/api/dashboard-data') + .then(response => { + console.log('API Response status:', response.status); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + return response.json(); + }) + .then(data => { + console.log('Dashboard data loaded:', data); + initializeCharts(data); + }) + .catch(error => { + console.error('Error loading dashboard data:', error); + // Fallback mit Demo-Daten + console.log('Using fallback demo data...'); + initializeChartsWithDemoData(); + }); +}); + +function initializeChartsWithDemoData() { + console.log('Initializing charts with demo data...'); + + const demoData = { + monthly_stats: [ + { month: '2024-01', income: 3000, expenses: 2200, net_change: 800, balance: 5000 }, + { month: '2024-02', income: 3200, expenses: 2400, net_change: 800, balance: 5800 }, + { month: '2024-03', income: 2800, expenses: 2100, net_change: 700, balance: 6500 } + ], + category_stats: [ + { category_name: 'Lebensmittel', total_amount: 600, percentage: 27.3 }, + { category_name: 'Transport', total_amount: 250, percentage: 11.4 }, + { category_name: 'Unterhaltung', total_amount: 180, percentage: 8.2 }, + { category_name: 'Sonstiges', total_amount: 170, percentage: 7.7 } + ], + transaction_trend: [ + { date: '2024-03-01T00:00:00Z', income: 100, expense: 50, balance: 5000 }, + { date: '2024-03-02T00:00:00Z', income: 0, expense: 80, balance: 4920 }, + { date: '2024-03-03T00:00:00Z', income: 200, expense: 120, balance: 5000 }, + { date: '2024-03-04T00:00:00Z', income: 50, expense: 90, balance: 4960 }, + { date: '2024-03-05T00:00:00Z', income: 0, expense: 70, balance: 4890 } + ], + asset_overview: { + total_bank_balance: 15000, + total_depot_value: 25000 + } + }; + + initializeCharts(demoData); +} + +function initializeCharts(data) { + console.log('Initializing charts with data:', data); + + // Chart 1: Monatliche Statistiken + createMonthlyChart(data); + + // Chart 2: Einnahmen vs Ausgaben + createIncomeExpenseChart(data); + + // Chart 3: Trend-Chart + createTrendChart(data); + + console.log('All charts initialized'); +} + +function createMonthlyChart(data) { + const ctx = document.getElementById('monthlyChart'); + if (!ctx) { + console.warn('Monthly chart canvas not found'); + return; + } + + try { + // Echte Datenstruktur aus der API verwenden + const monthlyStats = data.monthly_stats || data.monthlyStats || []; + console.log('Monthly stats data:', monthlyStats); + + new Chart(ctx.getContext('2d'), { + type: 'bar', + data: { + labels: monthlyStats.map(d => { + // Month aus "2024-01" Format zu "Januar 2024" konvertieren + const [year, month] = d.month.split('-'); + const monthNames = ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', + 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']; + return `${monthNames[parseInt(month) - 1]} ${year}`; + }), + datasets: [{ + label: 'Einnahmen', + data: monthlyStats.map(d => parseFloat(d.income || 0)), + backgroundColor: 'rgba(34, 197, 94, 0.7)', + borderColor: 'rgba(34, 197, 94, 1)', + borderWidth: 1 + }, { + label: 'Ausgaben', + data: monthlyStats.map(d => parseFloat(d.expenses || 0)), + backgroundColor: 'rgba(239, 68, 68, 0.7)', + borderColor: 'rgba(239, 68, 68, 1)', + borderWidth: 1 + }] + }, + options: { + responsive: true, + maintainAspectRatio: false, + scales: { + y: { + beginAtZero: true, + ticks: { + callback: function(value) { + return '€' + value.toLocaleString(); + } + } + } + }, + plugins: { + title: { + display: true, + text: 'Monatliche Ein- und Ausgaben' + } + } + } + }); + console.log('Monthly chart created'); + } catch (error) { + console.error('Error creating monthly chart:', error); + } +} + +function createIncomeExpenseChart(data) { + const ctx = document.getElementById('incomeExpenseChart'); + if (!ctx) { + console.warn('Income/Expense chart canvas not found'); + return; + } + + try { + // Echte Datenstruktur verwenden + const monthlyStats = data.monthly_stats || data.monthlyStats || []; + console.log('Income/Expense stats data:', monthlyStats); + + const totalIncome = monthlyStats.reduce((sum, d) => sum + parseFloat(d.income || 0), 0); + const totalExpenses = monthlyStats.reduce((sum, d) => sum + parseFloat(d.expenses || 0), 0); + + new Chart(ctx.getContext('2d'), { + type: 'pie', + data: { + labels: ['Einnahmen', 'Ausgaben'], + datasets: [{ + data: [totalIncome, totalExpenses], + backgroundColor: ['#22c55e', '#ef4444'], + borderWidth: 2, + borderColor: '#ffffff' + }] + }, + options: { + responsive: true, + maintainAspectRatio: false, + plugins: { + title: { + display: true, + text: 'Einnahmen vs. Ausgaben' + }, + legend: { + position: 'bottom' + }, + tooltip: { + callbacks: { + label: function(context) { + return context.label + ': €' + context.parsed.toLocaleString(); + } + } + } + } + } + }); + console.log('Income/Expense chart created'); + } catch (error) { + console.error('Error creating income/expense chart:', error); + } +} + +function createTrendChart(data) { + const ctx = document.getElementById('trendChart'); + if (!ctx) { + console.warn('Trend chart canvas not found'); + return; + } + + try { + // Echte Datenstruktur verwenden + const trendData = data.transaction_trend || data.transactionTrend || []; + console.log('Trend data:', trendData); + + new Chart(ctx.getContext('2d'), { + type: 'bar', // Basis-Typ für Balken + data: { + labels: trendData.map(d => { + // Datum als Monat/Jahr formatieren für 12-Monats-Ansicht + const date = new Date(d.date); + return date.toLocaleDateString('de-DE', { month: 'short', year: 'numeric' }); + }), + datasets: [{ + label: 'Einnahmen', + type: 'bar', // Explizit als Bar definieren + data: trendData.map(d => parseFloat(d.income || 0)), + backgroundColor: 'rgba(34, 197, 94, 0.7)', + borderColor: 'rgba(34, 197, 94, 1)', + borderWidth: 1, + yAxisID: 'y' + }, { + label: 'Ausgaben', + type: 'bar', // Explizit als Bar definieren + data: trendData.map(d => parseFloat(d.expense || 0)), + backgroundColor: 'rgba(239, 68, 68, 0.7)', + borderColor: 'rgba(239, 68, 68, 1)', + borderWidth: 1, + yAxisID: 'y' + }, { + label: 'Saldo', + type: 'line', // Explizit als Linie definieren + data: trendData.map(d => parseFloat(d.balance || 0)), + backgroundColor: 'rgba(59, 130, 246, 0.1)', + borderColor: 'rgba(59, 130, 246, 1)', + borderWidth: 3, + fill: false, + tension: 0.1, + yAxisID: 'y1', + pointRadius: 3, + pointHoverRadius: 5 + }] + }, + options: { + responsive: true, + maintainAspectRatio: false, + interaction: { + mode: 'index', + intersect: false, + }, + scales: { + x: { + display: true, + title: { + display: true, + text: 'Datum' + } + }, + y: { + type: 'linear', + display: true, + position: 'left', + title: { + display: true, + text: 'Einnahmen/Ausgaben (€)' + }, + beginAtZero: true, + ticks: { + callback: function(value) { + return '€' + value.toLocaleString(); + } + } + }, + y1: { + type: 'linear', + display: true, + position: 'right', + title: { + display: true, + text: 'Saldo (€)' + }, + grid: { + drawOnChartArea: false, + }, + ticks: { + callback: function(value) { + return '€' + value.toLocaleString(); + } + } + } + }, + plugins: { + title: { + display: true, + text: '90-Tage Trend' + }, + legend: { + position: 'top' + }, + tooltip: { + callbacks: { + label: function(context) { + return context.dataset.label + ': €' + context.parsed.y.toLocaleString(); + } + } + } + } + } + }); + console.log('Trend chart created'); + } catch (error) { + console.error('Error creating trend chart:', error); + } +} diff --git a/whereismymoney b/whereismymoney new file mode 100755 index 0000000000000000000000000000000000000000..dd086e52bf7a7da49609d212b19efdb832c7ffdf GIT binary patch literal 18481890 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

_92Dt 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

0mZI>~%rKr+33w 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�zUZ?hW_d+O&7y@Vq<>2hLcWS+7{z2k$Wa<&?FN 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%0ACZ}t=-K1He_C?vYV%l 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