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