示例#1
0
        //DbHelper.ActAndRes ahelper,
        private void PopulateClasses(CustomPrincipal user)
        {
            using (var ahelper = new DbHelper.ActAndRes())
            {
                var actres = ahelper.GetActivityResource(true, (byte)(Enums.Activities.Assignment + 1), AssignmentId);

                if (actres != null)
                {
                    ahelper.SetActivityResourceView(actres.Id, SubjectId, user.Id);
                    var submitButtonVisiblity = true;
                    var colorChange           = false;
                    //Color backColor = Color.White;
                    //Color foreColor = Color.Black;
                    var status  = "";
                    var grade   = "N/A";
                    var remarks = "";

                    var assignmentId = AssignmentId;

                    #region Restriction and all codes

                    var elligible = false;
                    var roles     = user.GetRoles();
                    if (roles.Contains(DbHelper.StaticValues.Roles.CourseEditor.ToString()) ||
                        roles.Contains(DbHelper.StaticValues.Roles.Manager.ToString()) ||
                        roles.Contains(DbHelper.StaticValues.Roles.Admin) ||
                        roles.Contains("teacher"))
                    {
                        elligible = true;
                    }

                    var canView = elligible;
                    if (!canView)
                    {
                        canView = ahelper.EvaluateRestriction(null, actres.Restriction, user.Id);
                    }
                    //else
                    //    submitButtonVisiblity = false;

                    if (canView)
                    {
                        #region Assignment Load

                        var date = DateTime.Now;
                        var ass  = ahelper.GetAssignment(assignmentId);
                        if (ass != null)
                        {
                            var timeRemaining = "N/A";
                            //actres will be used for restriction n class
                            lblName.Text        = ass.Name;
                            lblPageTitle.Text   = ass.Name;
                            lblDescription.Text = ass.Description;

                            #region Date and time Calculation

                            if (ass.SubmissionFrom != null)
                            {
                                if (ass.SubmissionFrom > date)
                                {
                                    var rem = (ass.SubmissionFrom.Value - date);
                                    timeRemaining = (rem.Days > 0 ? (rem.Days + " days ") : "")
                                                    + (rem.Hours > 0 ? (rem.Hours + " hours ") : "")
                                                    + (rem.Minutes > 0 ? (rem.Minutes + " minutes ") : "")
                                                    + " for submission start.";
                                    submitButtonVisiblity = false;
                                }
                            }

                            if (ass.DueDate != null)
                            {
                                lblDueDate.Text = ass.DueDate.Value.ToString("f");
                                if (ass.DueDate < date)
                                {
                                    var rem = (date - ass.DueDate.Value);
                                    timeRemaining = (rem.Days > 0 ? (rem.Days + " days ") : "")
                                                    + (rem.Hours > 0 ? (rem.Hours + " hours ") : "")
                                                    + (rem.Minutes > 0 ? (rem.Minutes + " minutes ") : "")
                                                    + " elapsed since due date.";
                                    //timeRemaining = "Due date finished on " + ass.DueDate.Value.ToString("f");
                                    colorChange = true;
                                    //backColor = Color.DeepPink;
                                    //foreColor = Color.White;
                                }
                                else
                                {
                                    var rem = (ass.DueDate.Value - date);
                                    timeRemaining = (rem.Days > 0 ? (rem.Days + " days ") : "")
                                                    + (rem.Hours > 0 ? (rem.Hours + " hours ") : "")
                                                    + (rem.Minutes > 0 ? (rem.Minutes + " minutes ") : "")
                                                    + " for submission end.";
                                }
                            }
                            else
                            {
                                lblDueDate.Text = "N/A";
                            }
                            if (ass.CutOffDate != null && ass.CutOffDate < date)
                            {
                                timeRemaining         = "Sumission period end.";
                                submitButtonVisiblity = false;
                            }
                            lblTimeRemaining.Text = timeRemaining;


                            #endregion


                            #endregion

                            foreach (var c in actres.ActivityClasses)
                            {
                                var userclass = c.SubjectClass.ClassUsers.FirstOrDefault(y => y.UserId == user.Id);
                                if (userclass != null)
                                {
                                    #region Each class view initialize

                                    var subCls  = c.SubjectClass;
                                    var classUc = (ClassGradeDisplayUc)
                                                  Page.LoadControl("~/Views/ActivityResource/Grading/ClassGradeDisplayUc.ascx");
                                    classUc.SetData(subCls.IsRegular ? subCls.GetName : subCls.Name);
                                    if (subCls.SessionComplete ?? false)
                                    {
                                        classUc.Enable = false;
                                    }
                                    pnlGradeList.Controls.Add(classUc);
                                    // pnlGradeList.Controls.Add(new Literal() {Text = "<br />"});
                                    //pnlGradeList.Controls.Add(new Literal() {Text = "<br />"});

                                    #endregion

                                    if (userclass.Role.RoleName == "student")
                                    {
                                        #region submit view display

                                        classUc.ShowStudentListTableHeading = false;
                                        if (!(subCls.SessionComplete ?? false))
                                        {
                                            //disable the submit button
                                            var stdGradeUc = (StudentGradeDispalyUc)
                                                             Page.LoadControl(
                                                "~/Views/ActivityResource/Grading/StudentGradeDispalyUc.ascx");

                                            //stdGradeUc.RedirectUrl = "~/Views/ActivityResource/Grading/?actResId=" + actres.Id +
                                            //                                "&SubId=" + SubjectId +
                                            //                                "&secId=" + SectionId;

                                            stdGradeUc.RedirectUrl = "~/Views/ActivityResource/Assignments/SubmitAssignmentCreate.aspx?arId="
                                                                     + AssignmentId + "&SubId=" + SubjectId + "&secId=" +
                                                                     SectionId + "&ucId=" + userclass.Id;

                                            stdGradeUc.SubmitButtonVisible = ass.FileSubmission || ass.OnlineText;

                                            #region Submissions

                                            var subm = ass.Submissions.FirstOrDefault(x => x.UserClass.UserId == user.Id);
                                            var submissionEnabled = true;
                                            if (subm != null)
                                            {
                                                status = "Submitted on : "
                                                         +
                                                         ((subm.ModifiedDate == null)
                                                             ? subm.SubmittedDate.ToString("f")
                                                             : subm.ModifiedDate.Value.ToString("f"));
                                                stdGradeUc.SubmitButtonText = "Edit Submission";
                                                var obtgrade = actres.ActivityGradings.FirstOrDefault(
                                                    x => x.UserClassId == subm.UserClassId);
                                                if (obtgrade != null)
                                                {
                                                    if (obtgrade.ObtainedGradeId != null)
                                                    {
                                                        grade = obtgrade.ObtainedGrade.Value;
                                                    }
                                                    else
                                                    {
                                                        grade = (obtgrade.ObtainedGradeMarks ?? 0).ToString("F");
                                                    }
                                                    submissionEnabled = false;//since already graded
                                                    remarks           = obtgrade.Remarks;
                                                }
                                            }
                                            else
                                            {
                                                status = "Not submitted yet";
                                            }



                                            #endregion

                                            classUc.AddControlsOusideOfTable(stdGradeUc);
                                            stdGradeUc.SubmitButtonVisible = submitButtonVisiblity;
                                            if (colorChange)
                                            {
                                                stdGradeUc.SubmitDueIndicator = true;

                                                lblTimeRemaining.ForeColor = Color.Red;

                                                //lblTimeRemaining.ForeColor = foreColor;

                                                //stdGradeUc.SubmitButtonBackColor = backColor;
                                                //stdGradeUc.SubmitButtonForeColor = foreColor;
                                            }
                                            stdGradeUc.SetData(status, grade, remarks, submissionEnabled, ass.ShowGradeToStudents);
                                        }


                                        #endregion

                                        //ucStdRole.Add(userclass);
                                    }
                                    else if (userclass.Role.RoleName == "teacher" ||
                                             userclass.Role.RoleName == "manager")
                                    {
                                        //grade uc display for that class

                                        #region Grading view display , start of teacher role

                                        classUc.ShowStudentListTableHeading = true;
                                        var any = false;
                                        foreach (var clsUser in subCls.ClassUsers.Where(x => !(x.Void ?? false)))
                                        {
                                            //initialize each user uc
                                            if (clsUser.Role.RoleName == "student" && !(clsUser.Void ?? false))
                                            {
                                                var userUc = (UserGradeDisplayUc)
                                                             Page.LoadControl(
                                                    "~/Views/ActivityResource/Grading/UserGradeDisplayUc.ascx");
                                                userUc.SectionId = SectionId;
                                                userUc.SubjectId = SubjectId;
                                                userUc.SetData(clsUser, actres.Id, ass.Id, actres.ActivityResourceType);
                                                classUc.AddControls(userUc);
                                                any = true;
                                            }
                                        }

                                        if (!any)
                                        {
                                            classUc.AddControlsInsideTable(new Literal()
                                            {
                                                Text = "<tr>" +
                                                       "<td>" +
                                                       "No students found." +
                                                       "</td>" +
                                                       "</tr>"
                                            }, false);
                                        }

                                        #endregion of teacher role
                                    }
                                }
                            } //foreach end
                        }
                        else
                        {
                            Response.Redirect("~/");
                        }
                    }
                    else
                    {
                        Response.Redirect("~/");
                    }

                    #endregion
                }
                else
                {
                    Response.Redirect("~/");
                }
            }
        }