Exemple #1
0
        public async Task CanAddClassCanBookClassCanRemoveClass()
        {
            await gymRepository.addGym(new Gym {
                GymId     = 10,
                GymName   = "Temp",
                GymBranch = "Gym"
            });

            await userRepository.addUser(new Users {
                Username        = "******",
                GymIdForeignKey = 10,
                UserType        = UserTypes.Instructor
            });

            await userRepository.addUser(new Users {
                Username        = "******",
                GymIdForeignKey = 10,
                UserType        = UserTypes.Manager
            });

            GymClassRequest request = new GymClassRequest {
                Username = "******",
                NewClass = new GymClassResponse {
                    ClassId     = 3,
                    GymId       = 10,
                    Instructor  = "instructor",
                    Name        = "Test",
                    Description = "Desc",
                    Day         = "Wednesday",
                    StartTime   = "11:00",
                    EndTime     = "12:00",
                    MaxCapacity = 10
                }
            };

            var response = await classesController.addClass(request);

            Assert.IsType <OkObjectResult>(response.Result);

            /* Book */
            RegisterUserForClassRequest request1 = new RegisterUserForClassRequest {
                Username = "******",
                ClassId  = 3
            };

            response = await classesController.signUpUserToClass(request1);

            Assert.IsType <OkObjectResult>(response.Result);

            GymClassRemoveRequest request2 = new GymClassRemoveRequest {
                Username = "******",
                ClassId  = 3
            };

            response = await classesController.removeClass(request2);

            Assert.IsType <OkObjectResult>(response.Result);
        }
Exemple #2
0
        public async Task <ActionResult <bool> > removeClass(GymClassRemoveRequest removeClass)
        {
            Users user = await userRepository.getUser(removeClass.Username);

            if (user == null)
            {
                return(StatusCode(StatusCodes.Status404NotFound, "The user requesting for the class to be removed could not be found!"));
            }

            if (user.UserType == UserTypes.Manager)
            {
                GymClasses targetClass = await classRepository.getClassById(removeClass.ClassId);

                if (targetClass == null)
                {
                    return(StatusCode(StatusCodes.Status404NotFound, "The class being removed was not found!"));
                }

                if (targetClass.GymIdForeignKey != user.GymIdForeignKey)
                {
                    return(StatusCode(StatusCodes.Status401Unauthorized, "Managers can only remove class for their own gym!"));
                }

                /* Multithread remove and notifying users */

                await classAttendanceRepository.removeClass(targetClass.ClassId);

                if (await classRepository.removeClass(targetClass) == true)
                {
                    return(Ok(true));
                }
                else
                {
                    return(StatusCode(StatusCodes.Status500InternalServerError, "Something went wrong removing the class from the database!"));
                }
            }

            return(StatusCode(StatusCodes.Status401Unauthorized, "Only managers can remove classes!"));
        }