public async Task<IActionResult> UpdateSession([FromRoute] int id, [FromBody] SessionPostOrPutDTO sessionDTO) { var person = await _personRepo.Find(x => x.Id == sessionDTO.PersonId); var isTeacher = person.PersonType == PersonType.Teacher; if (id != sessionDTO.Id) { throw new TCSException("Session does not exist"); } if (!isTeacher) { if (sessionDTO.SelectedClasses.Count < 1) { throw new TCSException("Must select at least one class."); } if (sessionDTO.SelectedReasons.Count < 1 && !sessionDTO.Tutoring) { throw new TCSException("Must select at least one reason for visit."); } } try { var session = new Session() { Id = sessionDTO.Id, InTime = sessionDTO.InTime, OutTime = sessionDTO.OutTime, PersonId = sessionDTO.PersonId, SemesterCode = sessionDTO.SemesterCode, Tutoring = sessionDTO.Tutoring, }; await _sessionRepo.Update(session); if (!isTeacher) { await _sessionClassRepo.RemoveAll(x => x.SessionId == sessionDTO.Id); foreach (var x in sessionDTO.SelectedClasses) { await _sessionClassRepo.Create(new SessionClass() { SessionId = sessionDTO.Id, ClassId = x }); } await _sessionReasonRepo.RemoveAll(x => x.SessionId == sessionDTO.Id); foreach (var x in sessionDTO.SelectedReasons) { await _sessionReasonRepo.Create(new SessionReason() { SessionId = sessionDTO.Id, ReasonId = x }); } } var updatedSession = await _sessionRepo.Find(x => x.Id == sessionDTO.Id); return Ok(updatedSession); } catch (DbUpdateConcurrencyException) { return NotFound(new { message = "Something went wrong" }); } }
public void LogoutUser(string GUID) { Session s = sessionRepo.FindOneBy(x => x.GUID.Equals(GUID)); s.LogOutDateTime = DateTime.Now; sessionRepo.Update(s); }
/// <summary>Execute signing out all session that have not been signed out</summary> /// signs them out 2 hours after their inTime public async Task Execute(IJobExecutionContext context) { var signIns = _iRepo.GetAll(x => x.OutTime == null && x.InTime != null); foreach (var signIn in signIns) { signIn.OutTime = signIn.InTime.AddHours(2); await _iRepo.Update(signIn); } }