Beispiel #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);
        }
Beispiel #2
0
        public async Task <ActionResult <bool> > addClass(GymClassRequest newClass)
        {
            Users personAdding = await userRepository.getUser(newClass.Username);

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

            if (personAdding.UserType == UserTypes.Manager)
            {
                if (personAdding.GymIdForeignKey == newClass.NewClass.GymId)
                {
                    GymClasses newClassModel = ClassMappers.reducedClassToClassModel(newClass.NewClass);

                    if (await classRepository.getInstructorClassAtSpecificDateTime(newClassModel.InstructorUsername,
                                                                                   newClassModel.Day, newClassModel.StartTime) == null)
                    {
                        if (await classRepository.addClass(newClassModel))
                        {
                            return(Ok(true));
                        }
                        else
                        {
                            return(StatusCode(StatusCodes.Status500InternalServerError, "An error occurred attempting " +
                                              "to add the new class to the database!"));
                        }
                    }
                    else
                    {
                        return(StatusCode(StatusCodes.Status403Forbidden, "Designated instructor already has a class " +
                                          "starting at the given start time!"));
                    }
                }
                else
                {
                    return(StatusCode(StatusCodes.Status403Forbidden, "Managers can only add new classes for the gym " +
                                      "they're assigned to!"));
                }
            }
            else
            {
                return(StatusCode(StatusCodes.Status401Unauthorized, "Only managers can add new classes!"));
            }
        }