我正在撰写一份时间表申请表,供员工使用,并由主管批准/拒绝。时间表具有各种权限,只有具有特定角色的人才能执行某些操作(例如,只有主管可以批准时间表,并且只有当它属于主管员工列表下的员工时)。
我正在试图弄清楚如何构建我的业务对象(模型)列表。在调用GetTimesheet或SaveTimesheet或ApproveTimesheet等方法之前,我需要做各种验证。请参阅以下psuedo-code以了解我的应用程序应如何工作:
GetTimesheetByUserIdAndMonth:
-Validate parameters like UserId, Month-Year value
-Check Permissions:
- If Logged In User is A Supervisor, then see if Timesheet belongs to either this user or to a user under Supervisor's list of Employees
- Else, check if Timesheet belongs to logged in User
SaveTimesheet
-Validate parameters like UserId, Month-Year value
-Check Permissions (same as above)
-Check if user has write ability for timesheet (for example if user had already submitted timesheet before then he can't re-save or re-submit)
SubmitTimesheet
-See if user has a supervisor assigned
ApproveTimesheet, RejectTimesheet
-Logged in User must be a Supervisor, otherwise throw an error
我想我需要一个MyAccount类用于登录的人,一个User类来表示时间表所属的人,Timesheet类,以及某种Validation类。
有人能告诉我如何最好地构建这个代码以及我应该拥有哪种类和验证方法?我已经有这个代码在100%的程序代码中工作......它很难阅读和维护。我不是在寻找完整的实现细节,只是一个整体的类架构/结构。请给我一些想法,并为我提供一些伪代码如何完成上述任务。如有必要,我可以提供更多细节。
提前致谢。