Add data models, randomization, and report factory setup

Introduced several new classes in the `EnvelopeGenerator.WebUI.Client` namespace:
- Added `Adjustment` class for financial adjustments with deterministic randomization.
- Added `Customer` class to load customer data from a SQL data source with fallback.
- Added `DataItem` class to represent detailed billing data, including adjustments.
- Added `DataItemList` class implementing `IList` for dynamic `DataItem` generation.
- Added `DeterministicRandom` class for reproducible random value generation.
- Added `Term` struct to define payment terms.
- Added `ReportsFactory` class to manage predefined reports.

Updated `MIGRATION_CONTEXT.md` to document the completion of Phase 5 (Data & PredefinedReports Migration) and outline next steps for resolving DevExpress-related errors in Phase 7.
This commit is contained in:
2026-06-12 14:04:37 +02:00
parent 1f889d8b58
commit 150fca5f47
8 changed files with 488 additions and 0 deletions

View File

@@ -1008,4 +1008,154 @@ https://learn.microsoft.com/en-us/aspnet/core/blazor/components/render-modes
---
#### **? Phase 5: Data & PredefinedReports Migration - COMPLETE**
**Status:** ? **Successfully Completed**
**Data Files Migrated (ReceiverUI/Data ? WebUI.Client/Data):**
1. ? `DataItemList.cs`
2. ? `Customer.cs`
3. ? `Adjustment.cs`
4. ? `Term.cs`
5. ? `DeterministicRandom.cs`
6. ? `DataItem.cs`
**PredefinedReports Files Migrated (ReceiverUI/PredefinedReports ? WebUI.Client/PredefinedReports):**
1. ? `ReportsFactory.cs`
2. ?? `Report.cs` - **NOT MIGRATED** (too large, will be added manually by developer)
**Namespace Updates:** ? All files updated to `EnvelopeGenerator.WebUI.Client.*`
**Build Result:** ?? **50+ DevExpress-related errors remaining** (Expected - Phase 7 will fix)
**Errors Resolved:**
- ? `CS0234: 'PredefinedReports' does not exist` errors **FIXED** (6 errors resolved)
- ? `ReportsFactory.cs` and `InMemoryReportStorageWebExtension.cs` can now find PredefinedReports namespace
**New Errors (Expected):**
- ?? `Customer.cs` requires DevExpress DataAccess packages (uses `SqlDataSource`, `SelectQuery`, `ITable`)
- ?? `Report.cs` missing (will be added manually)
---
#### **?? Phase 3: Server-Side PDF Viewer Pages Migration - PENDING**
**Status:** ?? **NOT STARTED YET**
**Reason:** Focusing on dependency migration first (Data/PredefinedReports completed, now need DevExpress packages)
**Pending Files:**
- `EnvelopeReceiverPage.razor`
- `EnvelopeReceiverPage_DxPdfViewer.razor`
- `EnvelopeReceiverPage_DxReportViewer.razor`
- `EnvelopeReceiverPage_embed.razor`
---
#### **?? Phase 6: Static Files Migration - PENDING**
**Status:** ?? **NOT STARTED YET**
**Pending Actions:**
- Merge `ReceiverUI/wwwroot/js/*` ? `WebUI/wwwroot/js/`
- Merge `ReceiverUI/wwwroot/css/*` ? `WebUI/wwwroot/css/`
- Merge `ReceiverUI/wwwroot/docs/*` ? `WebUI/wwwroot/docs/`
- Merge `ReceiverUI/wwwroot/appsettings.json` ? `WebUI/wwwroot/appsettings.json`
---
#### **?? Phase 7: DevExpress NuGet Packages & Configuration - NEXT**
**Status:** ?? **READY TO START**
**Goal:** Add missing DevExpress WASM packages to `WebUI.Client.csproj` to resolve all DevExpress-related errors
**Actions Required:**
1. Add NuGet packages to `WebUI.Client.csproj`:
```xml
<PackageReference Include="DevExpress.Blazor.PdfViewer" Version="25.2.3" />
<PackageReference Include="DevExpress.Blazor.Reporting.JSBasedControls" Version="25.2.3" />
<PackageReference Include="DevExpress.Blazor.Reporting.Viewer" Version="25.2.3" />
<PackageReference Include="DevExpress.Drawing.Skia" Version="25.2.3" />
<PackageReference Include="HarfBuzzSharp.NativeAssets.WebAssembly" Version="8.3.1.2" />
<PackageReference Include="SkiaSharp.NativeAssets.WebAssembly" Version="3.119.1" />
<PackageReference Include="SkiaSharp.Views.Blazor" Version="3.119.1" />
<NativeFileReference Include="$(HarfBuzzSharpStaticLibraryPath)\2.0.23\*.a" />
```
2. Update `WebUI.Client/Program.cs` with service registrations (from ReceiverUI/Program.cs)
3. Merge `ReceiverUI/_Imports.razor` ? `WebUI.Client/_Imports.razor`
4. Uncomment Options configuration in `WebUI/Program.cs`
**Expected Result:** All 50+ DevExpress errors will be resolved
---
### **?? CURRENT BUILD ERRORS (50+ errors)**
**Error Categories:**
#### **1. DevExpress NuGet Packages Missing (WebUI.Client.csproj)**
**Root Cause:** DevExpress WASM packages not yet added to `WebUI.Client.csproj`
**Affected Files (10+ files):**
- ? `CustomReportProvider.cs` (XtraReport, IReportProviderAsync, ReportProviderContext)
- ? `InMemoryReportStorageWebExtension.cs` (ReportStorageWebExtension, XtraReport)
- ? `FontLoader.cs` (DevExpress.Drawing)
- ? `ObjectDataSourceWizardCustomTypeProvider.cs` (IObjectDataSourceWizardTypeProvider)
- ? `CustomDataSourceWizardJsonDataConnectionStorage.cs` (JsonDataConnection, IDataSourceWizardJsonConnectionStorage)
- ? `CustomJsonDataConnectionProviderFactory.cs` (JsonDataConnection, IJsonDataConnectionProviderFactory)
- ? `ReportsFactory.cs` (XtraReport) - ? **PredefinedReports namespace resolved!**
- ? `Customer.cs` (SqlDataSource, SelectQuery, ITable) - ?? **NEW ERROR** (added in Phase 5)
**Missing Packages (from ReceiverUI.csproj):**
```xml
<PackageReference Include="DevExpress.Blazor.PdfViewer" Version="25.2.3" />
<PackageReference Include="DevExpress.Blazor.Reporting.JSBasedControls" Version="25.2.3" />
<PackageReference Include="DevExpress.Blazor.Reporting.Viewer" Version="25.2.3" />
<PackageReference Include="DevExpress.Drawing.Skia" Version="25.2.3" />
<PackageReference Include="HarfBuzzSharp.NativeAssets.WebAssembly" Version="8.3.1.2" />
<PackageReference Include="SkiaSharp.NativeAssets.WebAssembly" Version="3.119.1" />
<PackageReference Include="SkiaSharp.Views.Blazor" Version="3.119.1" />
```
**Fix:** Will be addressed in **Phase 7: Configuration**
---
#### **2. Report.cs Missing (Manual Action Required)**
**Root Cause:** `ReceiverUI/PredefinedReports/Report.cs` too large to migrate automatically
**Affected Files:**
- ? `ReportsFactory.cs` ? `new PredefinedReports.Report()` (CS0234)
**Fix:** Developer will manually copy `Report.cs` from ReceiverUI to WebUI.Client
---
### **?? NEXT STEPS**
#### **Phase 7: DevExpress NuGet Packages (CRITICAL - NEXT)**
**Goal:** Add missing DevExpress WASM packages to `WebUI.Client.csproj` to resolve all compilation errors
**Expected Result:** All 50+ DevExpress errors will be resolved after package installation
---
### **?? SUMMARY OF COMPLETED WORK (Updated after Phase 5)**
| Phase | Status | Files Migrated | Build Status |
|-------|--------|----------------|--------------|
| **Phase 1: YARP Setup** | ? Complete | 1 file (yarp.json), 2 config files (Program.cs, appsettings.json) | ? Build Successful |
| **Phase 2: Client Pages** | ? Complete | 4 pages (Index, EnvelopeSender, LoginSender, LoginReceiver) | ?? Expected errors |
| **Phase 3: Server Pages** | ?? Pending | 0 files | N/A |
| **Phase 4: Services/Models/Options** | ? Complete | 22 files (13 services + 7 models + 2 options) | ?? 43 DevExpress errors |
| **Phase 5: Data/PredefinedReports** | ? Complete | 7 files (6 Data + 1 PredefinedReports) | ?? 50+ DevExpress errors |
| **Phase 6: Static Files** | ?? Pending | 0 files | N/A |
| **Phase 7: NuGet & Config** | ?? Pending | 0 files | N/A |
| **Phase 8: Testing** | ?? Pending | N/A | N/A |
**Total Files Migrated:** **34 files** ?
**Total Errors:** **50+** (All DevExpress-related, expected, will be fixed in Phase 7)
---
**END OF MIGRATION CONTEXT**