public async Task <ActionResult <bool> > RejectRoomBooking(RejectRoomBookingRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            return(await _roomBookingService.RejectRoomBookingRequest(request));
        }
        public async Task <bool> RejectRoomBookingRequest(RejectRoomBookingRequest request)
        {
            var roomBooking = await FindById(request.RoomBookingId);

            switch (roomBooking.Status)
            {
            case RequestStatus.Complete:
            case RequestStatus.Rejected:
                return(false);

            case RequestStatus.Approved:
            {
                var student = await _studentService.FindById(roomBooking.StudentId);

                if (student.RoomId == null)
                {
                    return(false);
                }

                var room = await _repoWrapper.Room.FindByIdAsync(student.RoomId.Value);

                student.RoomId = null;
                room.CurrentNumberOfStudent--;
                roomBooking.RoomId = null;
                await _repoWrapper.Student.UpdateAsyncWithoutSave(student, student.StudentId);

                await _repoWrapper.Room.UpdateAsyncWithoutSave(room, room.RoomId);

                break;
            }
            }

            roomBooking.LastUpdated = DateTime.Now.AddHours(GlobalParams.TimeZone);
            roomBooking.Status      = RequestStatus.Rejected;
            roomBooking.Reason      = request.Reason;

            await _repoWrapper.Save();

            return(true);
        }