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 })); } }