示例#1
0
        public IActionResult ScheduleChoise()
        {
            var guid = m_userManager.GetUserId(User);

            var availablePracticeClasses = m_classData.GetAll().
                                           Where(c => c.Type == ClassType.PracticeDrive && c.State == ClassState.New);
            var selectedPracticeClasses = m_studentData.Get(guid).
                                          AttendedClasses.Where(c => c.Type == ClassType.PracticeDrive);

            var theoryClasses         = m_theoryClasses.GetAll().Where(c => c.Seats > 0);
            var selectedTheoryClasses = m_studentData.Get(guid).TheoryClasses;

            var practiceExams        = m_classData.GetAll().Where(c => c.Type == ClassType.PracticeExam);
            var selectedPracticeExam = m_studentData.Get(guid).
                                       AttendedClasses.Where(c => c.Type == ClassType.PracticeExam).FirstOrDefault();

            var theoryExams        = m_classData.GetAll().Where(c => c.Type == ClassType.TheoryExam);
            var selectedTheoryExam = m_studentData.Get(guid).
                                     AttendedClasses.Where(c => c.Type == ClassType.TheoryExam).FirstOrDefault();

            var backAction = Request.Headers["Referer"].ToString().Split('/').Reverse().First();

            var model = new ScheduleChoiseViewModel
            {
                SelectedClasses  = new SelectList(selectedPracticeClasses),
                AvailableClasses = new SelectList(availablePracticeClasses),
                TheoryClasses    = new SelectList(new[] { "None" }.
                                                  Concat(theoryClasses.Select(c => c.ToString()))),
                TheoryClassesId = selectedTheoryClasses?.ToString() ?? "None",
                PracticeExam    = new SelectList(new[] { "None" }.
                                                 Concat(practiceExams.Select(c => c.ToString()))),
                PracticeExamId = selectedPracticeExam?.ToString() ?? "None",
                TheoryExam     = new SelectList(new[] { "None" }.
                                                Concat(theoryExams.Select(c => c.ToString()))),
                TheoryExamId = selectedTheoryExam?.ToString() ?? "None",
                BackAction   = backAction == "ScheduleView" ? "ScheduleView" :
                               backAction == "ScheduleClassList" ? "ScheduleClassList" : "ScheduleEntry"
            };

            return(View(model));
        }
示例#2
0
        public async Task <IActionResult> ScheduleChoise(ScheduleChoiseViewModel model,
                                                         string submit)
        {
            var guid = m_userManager.GetUserId(User);
            var user = m_studentData.Get(guid);

            if (submit == "Select")
            {
                await Task.Run(() =>
                {
                    int classId;
                    if (int.TryParse(model.AvailableClassesId?.Split('.')[0], out classId))
                    {
                        var @class     = m_classData.Get(classId);
                        @class.Student = user;
                        @class.State   = ClassState.Locked;
                    }

                    m_classData.SaveChanges();
                });

                return(RedirectToAction("ScheduleChoise", "Schedule"));
            }
            else if (submit == "Deselect")
            {
                await Task.Run(() =>
                {
                    int classId;
                    if (int.TryParse(model.SelectedClassesId?.Split('.')[0], out classId))
                    {
                        var @class     = m_classData.Get(classId);
                        @class.Student = null;
                        @class.State   = ClassState.New;
                    }

                    m_classData.SaveChanges();
                });

                return(RedirectToAction("ScheduleChoise", "Schedule"));
            }
            else
            {
                await Task.Run(() =>
                {
                    int theoryClassesId;
                    if (user.TheoryClasses != null)
                    {
                        user.TheoryClasses.Seats++;
                    }

                    if (int.TryParse(model.TheoryClassesId?.Split('.')[0], out theoryClassesId))
                    {
                        var @class = m_theoryClasses.Get(theoryClassesId);
                        @class.Seats--;
                        @class.State       = @class.Seats == 0 ? ClassState.Locked : ClassState.New;
                        user.TheoryClasses = @class;
                    }
                    else
                    {
                        user.TheoryClasses = null;
                    }

                    m_classData.SaveChanges();
                });

                await Task.Run(() =>
                {
                    int practiceExamId;
                    var currentClass = user.AttendedClasses.
                                       Where(c => c.Type == ClassType.PracticeExam).FirstOrDefault();

                    if (currentClass != null)
                    {
                        currentClass.State   = ClassState.New;
                        currentClass.Student = null;
                    }

                    if (int.TryParse(model.PracticeExamId?.Split('.')[0], out practiceExamId))
                    {
                        var @class     = m_classData.Get(practiceExamId);
                        @class.Student = user;
                        @class.State   = ClassState.Locked;
                    }

                    m_classData.SaveChanges();
                });

                await Task.Run(() =>
                {
                    int theoryExamId;
                    var currentClass = user.AttendedClasses.
                                       Where(c => c.Type == ClassType.TheoryExam).FirstOrDefault();

                    if (currentClass != null)
                    {
                        currentClass.State   = ClassState.New;
                        currentClass.Student = null;
                    }

                    if (int.TryParse(model.TheoryExamId?.Split('.')[0], out theoryExamId))
                    {
                        var @class     = m_classData.Get(theoryExamId);
                        @class.Student = user;
                        @class.State   = ClassState.Locked;
                    }

                    m_classData.SaveChanges();
                });

                return(RedirectToAction("ScheduleClassList", "Schedule"));
            }
        }