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); }
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!")); } }