我是一名新的ASP.NET开发人员,我正在尝试在Global.asax文件中开发一个预定方法。这个方法会创建一个 上周忘记创建或提交工作表的任何用户的工作表,它将使该工作表的状态为“待定”
我有以下表格:
Task Table: TaskId, Title
Sheet Table: SheetId, UserId, StatusId, WeekNum, Year
SheetEntry Table: SheetEntryId, SheetId, TaskId
Status Table: StatusId, Title
User Table: UserId, Name, GroupId
Group Table: GroupId, Name
例如,假设我们有三个用户;约翰,玛丽亚和艾尔文。他们都在同一组。
然后结果应如下所示:
提交了sheet = 1 --->的用户约翰
未提交工作表的用户= 2 --->玛丽亚和艾尔文
未创建工作表的用户= 1 --->阿尔文
请注意,其中一个用户可能无法提交表单超过一周。所以该方法应该 显示特定组织中所有用户的所有未创建/未提交工作表的列表。
我现在正在努力恢复特定组织中所有用户的正确数量的非创建/未提交的工作表。 那么如何获取未创建或提交其工作表的所有用户的列表?该列表应包含他未创建的工作表的userId,周和年份或者提交。
这是我的代码:
public void createPendingSheet()
{
DateTime currentDate = DateTime.Now;
int currentWeekNum = SheetManager.getWeekNumber(currentDate);
int currentYear = currentDate.Year;
using (TestEntities dbContext = new TestEntities())
{
var listOfUsers = from user in dbContext.User
where user.GroupId == "Group3"
select new { user.UserId };
var listOfSheets = from sheet in dbContext.Sheet
where sheet.Year <= currentYear
&& sheet.Week <= currentWeekNum
&& sheet.StatusId != Constants.SHEET_SUBMITTED
&& sheet.StatusId != Constants.SHEET_APPROVED
select new { sheet.UserId };
//To show the list of users who didn't create their sheets
var query = from u in listOfUsers
where !listOfSheets.Contains(u)
select new { u.UserId };
if (query != null)
{
gvPendingSheets.DataSource = query.ToList();
gvPendingSheets.DataBind();
lblInfo.Text = "Number of users who didn't create their sheets: " + query.Count().ToString();
}
else
{
lblInfo.Text = "No Data";
}
}
}