public IActionResult WaitScreen(int id, int sessionId) { //Already chose a group CheckForCurrentGroup(sessionId); BoBSession session = _boBSessionRepository.GetById(sessionId); ViewData["freejoin"] = session.IsFreeJoinEnabled; //Make sure the chosen groupId is from the current session BoBGroup group = _boBSessionRepository.GetSpecificGroupFromSession(sessionId, id); //Chosen group is not from this session if (group == null) { TempData["bruteforce"] = "Groep is niet van de geselecteerde sessie"; return(RedirectToAction("Index", "Home")); } //Chosen group has already been chosen try { session.SelectGroup(group); } catch (InvalidOperationException ex) { TempData["groupchosen"] = ex.Message; return(RedirectToAction("Index", null)); } //Save Changes to database _boBSessionRepository.SaveChanges(); HttpContext.Session.SetInt32("groupId", group.Id); return(RedirectToAction("WaitScreen")); }
public IActionResult ValidateAccessCode(int sessionId, int groupId, int accessCode) { BoBGroup group = _bobSessionRepository.GetSpecificGroupFromSession(sessionId, groupId); //Get next assignment Assignment assignment = group.NextAssignment; //Code is wrong try { if (!assignment.ValidateCode(accessCode)) { //Try again TempData["wrongaccess"] = true; return(RedirectToAction("Action", new RouteValueDictionary { { "referenceNumber", assignment.ReferenceNr } })); } } catch (InvalidOperationException ex) { //Groupstate not valid TempData["blocked"] = "Roep de leerkracht om te vragen om je te deblokkeren"; return(RedirectToAction("Index")); } _bobSessionRepository.SaveChanges(); return(RedirectToAction("Index")); }
public IActionResult ValidateAnswer(int sessionId, int groupId, String answer) { //Get session and group from repo BoBSession session = _bobSessionRepository.GetById(sessionId); BoBGroup group = _bobSessionRepository.GetSpecificGroupFromSession(sessionId, groupId); bool correct = false; //Get the next assignment, cannot use assignment method from repo because we need the groupstate to check Assignment assignment = group.NextAssignment; try { //Validate answer correct = session.ValidateAnswer(group, assignment, answer); } catch (InvalidOperationException ex) { //Groupstate not valid TempData["blocked"] = "Roep de leerkracht om te vragen om je te deblokkeren"; return(RedirectToAction("Index")); } _bobSessionRepository.SaveChanges(); //Is the answer incorrect? if (!correct) { //Show last answer TempData["wronganswer"] = answer + " was niet het juiste antwoord"; //Is group blocked? if (group.Status == GroupStatus.Blocked) { //yep TempData["blocked"] = "Je bent geblokkeerd"; } //Is feedback enabled and answercount higher than 3? if (session.IsFeedbackEnabled && group.NextAssignment.WrongCount >= 3) { TempData["feedback"] = "Bekijk de feedback om dit hoofdstuk terug op te helderen"; } //Try again return(RedirectToAction("Index")); } //Answer is correct, check if we need to show the next action if (session.AreActionsEnabled && !session.IsDistant) { return(RedirectToAction("Action", new RouteValueDictionary { { "referenceNumber", assignment.ReferenceNr } })); } //Answer is correct, actions not enabled, show next assignment return(RedirectToAction("Index")); }
public IActionResult BlockGroup(int groupId, int sessionId) { BoBGroup group = _boBSessionRepository.GetSpecificGroupFromSession(sessionId, groupId); group.Block(); _boBSessionRepository.SaveChanges(); return(RedirectToAction("SessionDetail", "Session")); }
public IActionResult DeblockGroup(int groupId, int sessionId) { BoBGroup group = _boBSessionRepository.GetSpecificGroupFromSession(sessionId, groupId); if (group.Status == GroupStatus.Blocked) { group.Deblock(); _boBSessionRepository.SaveChanges(); } return(RedirectToAction("SessionDetail", "Session")); }
public IActionResult BlockCurrentGroup(int groupId, int sessionId) { //Get group BoBGroup group = _bobSessionRepository.GetSpecificGroupFromSession(sessionId, groupId); //Block group, no need for try catch, method only called when group would be in 1 of 2 states, blocked and Locked both states implement Block group.Block(); _bobSessionRepository.SaveChanges(); //Go back to the assignment return(RedirectToAction("Index", "Assignment")); }
public DummyApplicationDbContext() { //Invullen this._sessions = new BoBSession[4]; _sessions[0] = new BoBSession(); //invalid _sessions[1] = new BoBSession(); _sessions[2] = new BoBSession(); _sessions[3] = new BoBSession(); _sessions[0].SessionStatus = SessionStatus.Scheduled; _sessions[1].SessionStatus = SessionStatus.Activated; _sessions[2].SessionStatus = SessionStatus.Closed; _sessions[3].SessionStatus = SessionStatus.Started; Assignment1 = new Assignment { Exercise = new Exercise() { Answer = "10" }, GroupOperation = new GroupOperation() { AnswerBehaviour = new MinBehaviour(), ValueString = "5" } }; LazyAssignment = new Assignment { Exercise = new Exercise() { Answer = "10" }, GroupOperation = new GroupOperation() { GroupOperationCategory = GroupOperationCategory.Min, ValueString = "5" } }; SelectedGroup = new BoBGroup { Path = new SessionPath { Assignments = new List <Assignment>() { Assignment1 } }, }; SelectedGroup.GroupState = new LockedState(SelectedGroup); }
public void TripleWrong_BlocksGroup() { BoBGroup group = _dummyContext.SelectedGroup; Assignment assignment = _dummyContext.Assignment1; for (int i = 1; i <= 3; i++) { Assert.False(group.ValidateAnswer(assignment, "nope", true, true)); Assert.Equal(i, assignment.WrongCount); } Assert.Equal(GroupStatus.Blocked, group.Status); Assert.Equal(typeof(BlockedState), group.GroupState.GetType()); Assert.Throws <InvalidOperationException>(() => group.ValidateAnswer(assignment, "5", true, true)); }
private int?CheckForCurrentGroup(int sessionId) { //Get current groupId int? groupId = HttpContext.Session.GetInt32("groupId"); BoBSession session = _boBSessionRepository.GetById(sessionId); //Deselect current group, there is a current group if (groupId.HasValue) { int groupIdVal = groupId.Value; BoBGroup group = _boBGroupRepository.GetById(groupIdVal); session.DeselectGroup(group); _boBGroupRepository.SaveChanges(); TempData["groupchosen"] = "De vorig geselecteerde groep is nu niet meer geselecteerd!"; HttpContext.Session.Remove("groupId"); } return(groupId); }
public IActionResult WaitScreen(int sessionId) { BoBSession boBSession = _boBSessionRepository.GetById(sessionId); //Are students able to join? ViewData["freejoin"] = boBSession.IsFreeJoinEnabled; //Could use filter int?groupId = HttpContext.Session.GetInt32("groupId"); if (!groupId.HasValue) { TempData["groupchosen"] = "Kies een groep aub"; return(RedirectToAction("Index")); } BoBGroup group = _boBGroupRepository.GetById(groupId.Value); return(View(group)); }
public IActionResult AddToGroup(int sessionId, int groupId, String studentId) { //Get student from class from session Student student = _boBSessionRepository.GetStudentFromSession(sessionId, studentId); if (student == null) { TempData["nostudent"] = "Student bestaat niet :'("; return(RedirectToAction("WaitScreen")); } //If null redirect and tempdat //Add student from "" to group if (_boBSessionRepository.IsStudentInGroup(sessionId, studentId)) { TempData["nostudent"] = "Student zit al in een groep:'("; return(RedirectToAction("WaitScreen")); } BoBGroup group = _boBSessionRepository.GetSpecificGroupFromSession(sessionId, groupId); group.AddStudent(student); //Save changes _boBSessionRepository.SaveChanges(); return(RedirectToAction("WaitScreen")); }
public static GroupState CreateState(BoBGroup group, GroupStatus status) { GroupState state = null; switch (status) { case GroupStatus.NotSelected: state = new NotSelectedState(group); break; case GroupStatus.Selected: state = new SelectedState(group); break;; case GroupStatus.Locked: state = new LockedState(group); break; case GroupStatus.Blocked: state = new BlockedState(group); break; } return(state); }
public override bool ValidateAnswer(BoBGroup group, Assignment assignment, string answer) { return(group.ValidateAnswer(assignment, answer, !Session.IsDistant && Session.AreActionsEnabled, !Session.IsFeedbackEnabled)); }
public LockedState(BoBGroup group) : base(group) { }
public override void DeselectGroup(BoBGroup group) { group.Deselect(); }
public override void SelectGroup(BoBGroup group) { group.Select(); }
public override bool ValidateCode(BoBGroup group, Assignment assignment, int code) { return(group.ValidateCode(assignment, code)); }
public virtual void SelectGroup(BoBGroup group) => throw new InvalidOperationException("De sessie is momenteel niet actief");
public virtual void DeselectGroup(BoBGroup group) => throw new InvalidOperationException("De sessie is momenteel bezig dus kan de groep niet gewijzigd worden");
protected GroupState(BoBGroup group) { Group = group; }
public virtual Boolean ValidateCode(BoBGroup group, Assignment assignment, int code) => throw new InvalidOperationException();
public virtual Boolean ValidateAnswer(BoBGroup group, Assignment assignment, String answer) => throw new InvalidOperationException();
public SelectedState(BoBGroup group) : base(group) { }
public GroupTest() { _group = new BoBGroup(); }