示例#1
0
        public ActionResult CreateNewSession(SessionViewModel sessionVM)
        {
            if (ModelState.IsValid)
            {
                // create session model
                sessionVM.TeacherUserName = Session["Username"] as string;
                Session sessionModel = Services.ConverterService.ToSessionModel(sessionVM);

                // hours must be at least 1
                var hours = sessionVM.SumHoursPerSession;
                if (hours < 1)
                {
                    this.SetErrorMsg("מס שעות תקין בפגישה הוא לפחות 1");
                    return(RedirectToAction("CreateNewSession", new { RefundID = sessionVM.RefundID }));
                }

                // check session by refund type
                // type can be: 0 - single form, 1 - group form
                var valid = false;
                switch (Convert.ToInt32(sessionVM.IsGrouped))
                {
                case 0:
                    Debug.WriteLine("is single");
                    valid = CheckSingleForm(sessionModel);
                    break;

                case 1:
                    Debug.WriteLine("is multi");
                    valid = CheckGroupForm(sessionModel, sessionVM.Students);
                    break;

                default:
                    break;
                }
                // in case single or group form is not valid
                if (!valid)
                {
                    return(RedirectToAction("CreateNewSession", new { RefundID = sessionVM.RefundID }));
                }

                // check if teacher dont have already session in this date
                BussinesLayer  bl         = new BussinesLayer(new FinalDB());
                List <Session> duplicates = bl.GetDuplicateSessions(sessionModel);
                if (duplicates.Count() > 0)
                {
                    this.SetErrorMsg(this.GetDuplicateMsg(duplicates));
                    return(RedirectToAction("CreateNewSession", new { RefundID = sessionVM.RefundID }));
                }

                // add session to db
                if (sessionVM.IsGrouped)
                {
                    foreach (var item in sessionVM.Students)
                    {
                        sessionModel.StudentUserName = item;
                        bl.AddSession(sessionModel);
                    }
                }
                else
                {
                    bl.AddSession(sessionModel);
                }
                return(RedirectToAction("ShowSessions"));
            }
            else
            {
                this.SetErrorMsg("שדות לא תקינים");
                return(RedirectToAction("CreateNewSession", new { RefundID = sessionVM.RefundID }));
            }
        }