Skip to content

refactor(core): TimeProvider migration Phase 3 — Services, ETL, DateRange#712

Merged
cct08311github merged 1 commit intodotnet10from
refactor/timeprovider-phase3-711
Mar 21, 2026
Merged

refactor(core): TimeProvider migration Phase 3 — Services, ETL, DateRange#712
cct08311github merged 1 commit intodotnet10from
refactor/timeprovider-phase3-711

Conversation

@cct08311github
Copy link
Owner

Summary

  • Migrate remaining DateTime.Now/UtcNow to TimeProvider across 9 files (Core services, ETL, DateRange, FrameworkFilter cleanup)
  • EmptyContext (DataContext base): new TimeProvider property for ApplyAuditFields()
  • JsonFileDashboardService: constructor-injected TimeProvider
  • DateRange: 6 new CreateUtc*() factory methods with optional TimeProvider? param — existing static properties preserved as backward-compatible wrappers
  • Clean up Phase 2 FrameworkFilter fallbacks (?? DateTime.Now?? TimeProvider.System)

Skipped (by design)

  • AnalysisExcelExporter — static class, display timestamp only
  • LoginUserInfo.TimeTick — property initializer, no DI
  • DashboardDefinition property initializers — no DI at construction
  • EtlPipelineExecutor — progress reporting only
  • QuartzHostService — Quartz trigger API
  • .cshtml, TypeExtension, codegen templates — unchanged from Phase 2

Test plan

  • dotnet build -c Release — 0 new errors (BlazorDemo pre-existing)
  • Core tests: 1101 passed
  • Admin tests: 75 passed
  • ETL tests: 174 passed (17 skipped)
  • Total: 1350 passed, 0 failed

Closes #711

🤖 Generated with Claude Code

…— Services, ETL, DateRange)

Replace direct DateTime.Now/UtcNow calls with TimeProvider across 9 files:

- Core: DataContext (new TimeProvider property on EmptyContext), WTMLogger
  (resolve from DI), WtmFileProvider, WtmDataBaseFileHandler
- Dashboard: JsonFileDashboardService (constructor-injected TimeProvider)
- ETL: EtlQuartzJob (6 occurrences via Wtm.TimeProvider),
  EtlSchedulerService (resolve from DI)
- DateRange: 6 static factory methods with optional TimeProvider? param
  (backward-compatible — existing static properties delegate to new methods)
- FrameworkFilter: clean up Phase 2 fallbacks to use TimeProvider.System

Skipped (by design):
- AnalysisExcelExporter (static class, display timestamp only)
- LoginUserInfo.TimeTick (property initializer, no DI)
- DashboardDefinition property initializers (no DI at construction)
- EtlPipelineExecutor (progress reporting only)
- QuartzHostService (Quartz trigger API)

Closes #711

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@cct08311github cct08311github merged commit 8b7aa63 into dotnet10 Mar 21, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor(core): [P0-06c] TimeProvider migration Phase 3 — Services, ETL, DateRange

1 participant