如何获取未创建或提交工作表的所有用户的列表?

时间:2015-01-23 18:46:54

标签: c# asp.net linq-to-entities

我是一名新的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

例如,假设我们有三个用户;约翰,玛丽亚和艾尔文。他们都在同一组。

  • John已经提交了他的工作表(状态:已提交)
  • Maria创建了她的工作表,但她没有提交(状态:已保存)
  • Alvin忘记在过去两周内制作他的床单

然后结果应如下所示:

  

提交了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";
            }
        }

}

0 个答案:

没有答案