【发布时间】:2019-12-07 22:56:04
【问题描述】:
我有一个休假管理系统的要求,用户可以根据他们的分配申请休假,并使用Angular 和ASP.NET Web Api。示例:
UserId - Leave - Allotment - Year
1001 - Casual - 20 - 2019
1001 - Sick - 20 - 2019
1002 - Annual - 10 - 2019
这是非常基本的。因此,每当用户尝试申请休假时,我都在做什么,系统从开始日期和结束日期获取总天数,最后检查总天数的分配。在前端,用户需要选择一个类型,具体的分配号要扣除如下:
<label for="leaveType">Leave Type</label>
<select [(ngModel)]="leaveType" [ngModelOptions]="{standalone: true}" class="form-control">
<option value="">Please select leave</option>
<option *ngFor="let value of leaveType" [ngValue]="value.LeaveType">
{{value.LeaveType}}
</option>
</select>
我正在使用ASP.NET Web Api 为特定用户完美地获取休假分配详细信息,这就是我所做的:
leaveType: string;
chkLeave: number = 0;
userLeave: any;
this.dataservice.GetLeaveInfo(selectedValue).subscribe(result => { //selectedValue is another drop down value where users are being selected with user id
this.userLeave = result;
}, error => console.error(error));
最后,在另一个使用Angular 的方法中,我尝试验证是否有可用的休假分配用于该特定休假类型,如下所示:
chkAllotment() {
var startDate = new Date(Result[0]);
var endDate = new Date(Result[1]);
const diff = endDate.getDate() - startDate.getDate();
debugger;
for(let i = 0; i < this.userLeave.length; i++) {
if(userLeave[i].LeaveName = this.leaveType && userLeave[i].LeaveRemains >= diff)
this.chkLeave = 1;
}
};
最后我这样做是为了检查休假类型分配是否可供用户使用:
if(this.chkLeave == 1) {
alert("You can have the leave.");
} else {
alert("Oops! You can't have the leave.");
}
现在的问题是多次休假分配,该方法运行良好,并验证了单次分配的分配,如 Annual。假设用户 1001,它有两个休假类型分配。因此,当我选择临时休假时,它第一次根据分配完美检查用户是否有资格获得休假,但是当我选择第二种休假类型时卡住了,比如生病并且休假天数超过了分配数(基本上分配是总愉快的日子)。它保持第一次休假的状态,变量 chkLeave 根据第一次选择的休假类型保存数字 0 或 1。在浏览器的检查元素中,我可以在数组中查看休假分配的详细信息,但是在验证时,循环以某种方式没有给出预期的输出。 for循环有什么问题吗?
【问题讨论】:
-
注意:您可以将 LeaveRemains 视为条件语句中的分配,带有休假名称和差异 (diff)。
标签: c# angular asp.net-web-api