beo3000
ea237183f9
K17 fertig.
...
Erweitert: src/Koogle.Application/Services/CashBookExportService.cs
PDF-Struktur (QuestPDF 2025.12.1):
- Header: Titel, Vereinsname, Berichtszeitraum
- Zusammenfassung: Salden-Tabelle (Anfang/Einnahmen/Ausgaben/End)
- Kategorien: Einnahmen + Ausgaben mit farbigen Tabellen
- Footer: Erstelldatum + Seitenzahlen
2026-01-03 22:03:17 +01:00
beo3000
5bd0e19f06
K16 fertig.
...
Erstellte Dateien:
- src/Koogle.Application/Interfaces/ICashBookExportService.cs - Interface mit ExportToExcelAsync + ExportToPdfAsync
- src/Koogle.Application/Services/CashBookExportService.cs - Excel-Export via ClosedXML
Excel-Struktur (3 Sheets):
1. Zusammenfassung - Salden, Summen, Statistik
2. Kategorien - Einnahmen/Ausgaben nach Kategorie
3. Buchungen - Alle Einträge mit Summenzeile
NuGet: ClosedXML 0.105.0 hinzugefügt.
2026-01-03 21:59:13 +01:00
beo3000
dfe74adf01
● K15 fertig. Erstellte Dateien:
...
- src/Koogle.Web/Components/Pages/CashBook/Reports.razor - UI mit Monat/Jahr-Auswahl, Saldo-Karten, Donut-Charts für Kategorien, expandierbare Buchungsliste
- src/Koogle.Web/Components/Pages/CashBook/Reports.razor.cs - Code-behind
Route: /cashbook/reports | Policy: ClubViewer
Export-Buttons (Excel/PDF) zeigen Info-Message - werden in K16/K17 implementiert.
2026-01-03 21:55:02 +01:00
beo3000
e1f73691c4
Complete phase K14: Categories UI
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 21:49:40 +01:00
beo3000
d0beb200b3
Complete phase K13: CashBook UI
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 21:43:24 +01:00
beo3000
14b76d39a9
Complete phase K12: Fluxor CashBookState
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 21:36:03 +01:00
beo3000
6917fa6bed
K11: add Fluxor CategoryState
...
- CategoryState: categories list, loading, error
- CategoryActions: CRUD + select/clear
- CategoryReducers: state transitions
- CategoryEffects: async service calls
2026-01-03 15:05:29 +01:00
beo3000
595c92df76
K10: create penalty entries on day close
...
- ICashBookService.CreatePenaltyEntriesForDayAsync
- Groups PersonExpenses by person, sums amounts
- Marks PersonExpenses as Done
- DayService calls after SaveChanges
2026-01-03 15:00:42 +01:00
beo3000
21c3d03c61
K9: seed system categories on club creation
...
- EnsureSystemCategoriesAsync accepts optional clubId
- ClubService calls seeder after GIF seeding
2026-01-03 14:56:50 +01:00
beo3000
2c09cfa991
K8: add cashbook service implementations
...
- BookingCategoryService: CRUD + EnsureSystemCategoriesAsync
- CashBookService: entries, balance, reports, membership fees
- CashBookMappingProfile: entity to DTO mappings
- DI registration for both services
2026-01-03 14:53:48 +01:00
beo3000
1a7ba8837d
K7: add cashbook service interfaces
...
- IBookingCategoryService: CRUD + EnsureSystemCategories
- ICashBookService: entries, balance, report, membership fees
2026-01-03 14:45:07 +01:00
beo3000
96c5b4d196
K6: add cashbook DTOs
...
- BookingCategoryDto, CreateBookingCategoryDto, UpdateBookingCategoryDto
- CashBookEntryDto, CreateCashBookEntryDto, UpdateCashBookEntryDto
- CashBookReportDto, CategorySummaryDto, CreateMembershipFeesDto
2026-01-03 14:39:40 +01:00
beo3000
9c4a6f2ab6
K5: add cashbook repositories
...
- IBookingCategoryRepository + implementation
- ICashBookEntryRepository + implementation
- GetBalanceAsync calculates income - expense + initial
- ExistsMembershipFeeForMonthAsync for duplicate check
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 14:34:57 +01:00
beo3000
2f2e93ffce
K4: add Kassenwart role + policy
...
- UserRole.Treasurer = "Kassenwart"
- IdentityRoleSeeder: seed Kassenwart role
- ClubRoleRequirement: rank Admin=4, Kassenwart=3
- ClubTreasurer policy in DI
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 14:28:45 +01:00
beo3000
9719667cb7
K3: add Kassenbuch migration
...
- BookingCategories table with unique name per club
- CashBookEntries table with FK to Category, Day, Person
- Club: InitialBalance, MonthlyMembershipFee columns
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 14:24:17 +01:00
beo3000
0280e0e05e
K2: add EF configurations for cashbook
...
- BookingCategoryConfiguration with unique index
- CashBookEntryConfiguration with FK relationships
- ClubConfiguration: InitialBalance, MonthlyMembershipFee
- AppDbContext: BookingCategories, CashBookEntries DbSets
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 14:21:59 +01:00
beo3000
012548e8db
K1: add cashbook domain entities + enums
...
- BookingCategoryType enum (Income/Expense)
- CashBookEntryType enum (Income/Expense)
- BookingCategory entity
- CashBookEntry entity
- Club: InitialBalance, MonthlyMembershipFee, navigation props
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 14:16:59 +01:00
beo3000
4dae965c98
added cashbook planning
2026-01-03 10:59:18 +01:00
beo3000
cafd38519f
add deathbox
2025-12-28 21:25:04 +01:00
beo3000
e40e1a40ab
Complete phase H10: game logic tests
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 17:54:57 +01:00
beo3000
954c2589e6
added Trigger and Trigger/Expense Releations
2025-12-28 10:18:39 +01:00
beo3000
cc4486dca7
complete phase H9b: SignalR live updates
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 16:37:47 +01:00
beo3000
a84b192055
Complete phase H9: DB Persistence & Recovery
...
- Extend Game entity with GameType, Status, StartedAt, CompletedAt, RowVersion
- Add GameConfiguration with RowVersion for optimistic concurrency
- Create IGamePersistenceService interface
- Implement GamePersistenceService with CRUD operations
- Create GameStateSerializationDto for JSON serialization
- Extend GameEffects with full persistence lifecycle:
- HandleStartGame: Creates game in DB
- HandleEndGame: Updates status to Completed/Aborted
- HandleLoadActiveGame: Recovery from page reload
- HandleRecordThrow: Debounced save (500ms)
- HandleSaveGameState: Explicit save with concurrency check
- Add migration ExtendGameEntity
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 09:23:58 +01:00
beo3000
e436ee2754
Complete phase H8: Undo functionality (unbegrenzt)
...
- Add UndoButton.razor as reusable component
- Refactor GameInputPanel to use UndoButton component
- Enhance GameEffects with proper UndoThrowAction handler
- IState injection for state access in effects
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 09:11:40 +01:00
beo3000
23a1008a31
Complete phase H7: DayDetails Tabs Integration
...
- GameBoardPanel: Dynamic board component rendering
- CompletedGamesList: Shows game history for day
- DayDetails: 3 tabs (Details/Eingabe/Tafel) + Start/End Game buttons
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 08:33:34 +01:00
beo3000
5afc8fd251
Complete phase H6: Game Setup Dialog
...
- GameTypeSelector: Select game type from registry
- ParticipantSelector: Multi-select participants from day
- CommonSetupOptions: ThrowMode, ThrowsPerRound, ParticipantsMode
- GameSetupDialog: Full setup wizard with DynamicComponent
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 08:24:52 +01:00
beo3000
264f91d543
Complete phase H5: Scheiss-Spiel + Trigger-Integration
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 08:16:22 +01:00
beo3000
5d2bfae674
Complete phase H4: Training Game
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 14:49:55 +01:00
beo3000
8f4cc740a1
Complete phase H3: Game Definition Framework
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 14:38:57 +01:00
beo3000
d59005f6df
Complete phase H2: Pin Input Components
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 14:29:53 +01:00
beo3000
1ef6c984db
Complete phase H1: GameState Foundation
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 14:20:01 +01:00
beo3000
c4baf55c91
Complete phase H0: Trigger-Engine
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 14:10:57 +01:00
beo3000
7a96cf0cc4
update planning
2025-12-26 12:28:00 +01:00
beo3000
fab82fcde8
mod planning
2025-12-26 10:47:53 +01:00
beo3000
d2ee1c5193
game planning
2025-12-26 10:43:14 +01:00
beo3000
033a3ebd4e
mark phase G8 complete
2025-12-25 21:17:42 +01:00
beo3000
637a3b120c
mark phase G7 complete
2025-12-25 21:08:06 +01:00
beo3000
e8b2154f69
mark phase G6 complete
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-25 20:59:51 +01:00
beo3000
c48a518dda
mark phase G5 complete
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-25 20:54:04 +01:00
beo3000
12fcac3d83
mod impl-plan
2025-12-25 18:40:06 +01:00
beo3000
baa3fe7c1e
upd Claude anweisungen
2025-12-25 18:36:36 +01:00
beo3000
0a9205a2f3
Complete phase G4: Membership Services
...
- UserService: RequestClubMembership (by ID, name, invite token),
ApproveMembership, RejectMembership, GetPendingMemberships
- ClubService: CreateInvitation, GetInvitationByToken, ValidateInvitation,
IncrementInvitationUsage, GetInvitationsByClub, GetByName
- Add PendingMembershipDto, ClubInvitationDto, CreateClubInvitationDto
- Update tests to pass AppDbContext to ClubService
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-25 18:27:40 +01:00
beo3000
1484550939
Complete phase G3: IEmailService Stub
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-25 17:57:41 +01:00
beo3000
264119695f
Complete phase G2: ClubInvitation Entity
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-25 17:50:22 +01:00
beo3000
aae41d42a0
Complete phase G1: MembershipStatus + UserProfileClub
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-25 17:41:54 +01:00
beo3000
08b4edd1a5
Complete phase F3: Navigation finalisieren
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-25 16:43:36 +01:00
beo3000
f71ff46d13
Complete phase F2: Evaluation Components
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-25 16:33:22 +01:00
beo3000
1cbd4c17e7
Complete phase F1: Dashboard Page
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-25 15:27:24 +01:00
beo3000
005bfebe6d
Complete phase E4: PersonExpense Management
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-25 15:15:01 +01:00
beo3000
705f8a0da8
Complete phase E3: Day Details Page
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-25 13:55:32 +01:00