public async Task <IActionResult> SignIn([FromBody] KioskSignInDTO signIn)
        {
            var person = await _personRepo.Find(x => x.Id == signIn.PersonId);

            if (person.PersonType == PersonType.Teacher)
            {
                var teacherSession = new Session()
                {
                    InTime       = DateTime.Now,
                    PersonId     = signIn.PersonId,
                    SemesterCode = _semesterRepo.GetAll().Last().Code
                };
                var teacherResult = await _sessionRepo.Create(teacherSession);

                if (teacherResult is Session)
                {
                    return(Created($"sessions/{teacherResult.Id}", teacherResult));
                }
                throw new TCSException("Something went wrong");
            }

            if (!signIn.Tutoring && signIn.SelectedReasons.Count() < 1)
            {
                throw new TCSException("Must select 1 or more reasons for visiting.");
            }

            var alreadySignedIn = await _sessionRepo.Exist(x => x.PersonId == signIn.PersonId && x.OutTime == null);

            if (alreadySignedIn)
            {
                throw new TCSException("You are already signed in.");
            }

            var session = new Session()
            {
                InTime         = DateTime.Now,
                SessionClasses = signIn.SelectedClasses.Select(x => new SessionClass()
                {
                    ClassId = x
                }).ToList(),
                SessionReasons = signIn.SelectedReasons.Select(x => new SessionReason()
                {
                    ReasonId = x
                }).ToList(),
                PersonId     = signIn.PersonId,
                SemesterCode = _semesterRepo.GetAll().Last().Code,
                Tutoring     = signIn.Tutoring
            };

            var result = await _sessionRepo.Create(session);

            if (result is Session)
            {
                return(Created($"sessions/{result.Id}", result));
            }
            throw new TCSException("Something went wrong");
        }
Beispiel #2
0
        public async Task <BannerPersonInfo> GetBannerInfo(string identifier)
        {
            var person = await personRepo.Find(x => x.Email == identifier || x.Id.ToString() == identifier);

            if (person is Person)
            {
                var currentSemester = semesterRepo.GetAll().Last();
                var rand            = new Random(person.Id);
                var takeCount       = Math.Ceiling(rand.NextDouble() * 5) + 1;
                var randomCourses   = classRepo.GetAll().ToList().Take((int)takeCount);
                if (person.PersonType == PersonType.Student)
                {
                    return(new BannerPersonInfo()
                    {
                        EmailAddress = person.Email,
                        FirstName = person.FirstName,
                        LastName = person.LastName,
                        WVUPID = person.Id,
                        Teacher = false,
                        TermCode = currentSemester.Code,
                        Courses = randomCourses.Select(x => new BannerClass()
                        {
                            CourseName = x.Name,
                            CRN = x.CRN,
                            ShortName = x.ShortName,
                            Department = new BannerDepartment()
                            {
                                Code = x.Department.Code,
                                Name = x.Department.Name
                            }
                        })
                    });
                }
                else
                {
                    return(new BannerPersonInfo()
                    {
                        EmailAddress = person.Email,
                        FirstName = person.FirstName,
                        LastName = person.LastName,
                        WVUPID = person.Id,
                        Teacher = true,
                        TermCode = currentSemester.Code,
                    });
                }
            }
            throw new TCSException($"Person was not found with: {identifier}");
        }
Beispiel #3
0
 public IActionResult Semesters()
 {
     return(Ok(_iRepo.GetAll()));
 }