a0313687da
- File: WebApp/ChapterSettings.cs - Change: Renamed StateContainer.UserId to ScheduledTeams - Impact: Property name now accurately reflects what it stores 2. ✅ Added Structured Logging with Serilog - Packages Added: - Serilog.AspNetCore - Serilog.Sinks.Console - Serilog.Sinks.File - Files Modified: - Program.cs - Added Serilog configuration with console and file logging - appsettings.json - Added Serilog minimum log levels - appsettings.Development.json - Added Debug level logging for development - Benefits: - Structured log output for better parsing/analysis - Automatic file rotation (daily, 30 days retention) - Logs stored in logs/webapp-.txt - Better formatted console output 3. ✅ Added Global Error Handling - File Created: WebApp/Components/Shared/AppErrorBoundary.razor - File Modified: WebApp/Components/App.razor - Features: - Catches unhandled exceptions throughout the app - Shows detailed error info in Development environment - Shows user-friendly message in Production - Logs errors automatically - Provides "Return to Home" button 4. ✅ Enhanced Input Validation - File Modified: WebApp/Components/Login.razor - Validations Added: - Email: Required, valid email format, max 100 chars, regex validation - Password: Required, min 8 chars, max 100 chars - Benefits: - Client-side validation before submission - Clear error messages for users - Prevents invalid data submission
24 lines
482 B
C#
24 lines
482 B
C#
using System.ComponentModel.DataAnnotations;
|
|
|
|
namespace WebApp
|
|
{
|
|
public class StateContainer
|
|
{
|
|
private int[]? _scheduledTeams;
|
|
|
|
public int[] ScheduledTeams
|
|
{
|
|
get => _scheduledTeams ?? [];
|
|
set
|
|
{
|
|
_scheduledTeams = value;
|
|
NotifyStateChanged();
|
|
}
|
|
}
|
|
|
|
public event Action? OnChange;
|
|
|
|
private void NotifyStateChanged() => OnChange?.Invoke();
|
|
}
|
|
}
|