Attendance Validation
Summary
Validation is distributed across presentation parsing, application services, domain methods, repository lookups, and selected persistence constraints.
Audience
Backend developers, QA engineers, security engineers, and architects.
Validation layers
Request DTO binding supplies basic shape conversion. Application services check required rows, employee/date/status/reason values, local employee activity and joining date, weekly offs, references, assignment overlap, policy/default constraints, pending reopen uniqueness, and the Payroll lock for reopen approval. Domain constructors and methods enforce required tenant/employee context, non-negative values, supported state transitions, effective ranges, and active/default invariants. Persistence adds tenant filters and selected uniqueness constraints.
No FluentValidation or custom application-validator classes are present. Validation is invoked inline, which makes behavior use-case-specific and sometimes duplicated. Holiday and approved-Leave conflicts are not validated by Attendance Service. Ordinary save/approve does not show the same Payroll-lock guard as reopen approval. Future-date validation is explicit for reopen requests but not universal across normal save paths.
These differences are documented as confirmed boundaries, not security findings. QA should test each use case independently rather than assume a universal validation pipeline.
Source References
microservices/src/attendance-service/Application/Services/AttendanceCommands.csmicroservices/src/attendance-service/Application/Services/PunchWorkflow.csmicroservices/src/attendance-service/Application/Services/ReopenRequestWorkflow.csmicroservices/src/attendance-service/Application/Services/ShiftPolicyCommands.csmicroservices/src/attendance-service/Domain/Attendance/AttendanceRecord.csmicroservices/src/attendance-service/Domain/TimeOffice/EmployeeShiftAssignment.cs
Related Articles
See Also
Keywords
- Attendance Service
- Attendance Validation
Revision Information
- Status: Draft
- Last reviewed: 2026-07-15
- Review cycle: Quarterly