Beispiel #1
0
        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);
        }
Beispiel #3
0
        /// <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);
            }
        }