PaymentOptionsRequestValidator¶
Validates a PaymentOptionsRequest's check-issue date against three constraints layered together: the date must be present, must not be more than 28 days in the future, must not fall before the next available check-run date for manual ("MA") payment transactions (looked up via IRepositoryFactory), and must land on a working day as determined by IWorkCalendarService. It depends on IRepositoryFactory for repository access to PaymentTransactionTypeCode records and on IWorkCalendarService for business-day determination.
Purpose¶
- Requires
IssueDateto be non-empty (not the default value). - When
IssueDateis set, requires it to be on or after the next available check-run date for the"MA"payment transaction type, looked up viafactory.GetRepository<PaymentTransactionTypeCode>(). - Requires
IssueDateto be no more than 28 days beyond today. - When
IssueDateis set, requires it to fall on a working day viaIWorkCalendarService.IsWorkingDay.
Context¶
- Namespace:
SAIF.Services.Claims.Bills.Validators - Assembly/package:
SAIF.Services(packaged inside theSAIF.SAIFCode.CoreNuGet package)
Public members¶
| Member | Signature | Purpose |
|---|---|---|
| PaymentOptionsRequestValidator | PaymentOptionsRequestValidator(IRepositoryFactory factory, IWorkCalendarService workCalendarService) |
Wires required, upper-bound, next-issue-date, and working-day rules for IssueDate using repository lookups and calendar service checks.* |
Behavioral notes¶
- Validation is enforced via FluentValidation's
AbstractValidator<T>base.* - The next-issue-date and working-day rules are both gated behind
When(request => request.IssueDate > DateTime.MinValue, ...), so a default/unset date skips those two checks (only theNotEmptyand upper-bound rules apply unconditionally).* - The next-issue-date rule performs a repository query filtered to the
"MA"payment transaction type code, so its outcome depends on external configuration data rather than only the request's fields.*
Constraints and usage notes¶
- Requires both
IRepositoryFactoryandIWorkCalendarServiceimplementations to be supplied via constructor injection.
Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with ** could not be confirmed; treat as unknown until verified.
Sources¶
- Services/SAIF.Services/Claims/Bills/Validators/PaymentOptionsRequestValidator.cs