Esempio n. 1
0
 public function execute(CommandContext $context)
 {
     PHPWS_Core::initModClass('hms', 'HMS_Room.php');
     if (!Current_User::allow('hms', 'room_attributes')) {
         PHPWS_Core::initModClass('hms', 'exception/PermissionException.php');
         throw new PermissionException('You do not have permission to edit rooms.');
     }
     $roomId = $context->get('roomId');
     $viewCmd = CommandFactory::getCommand('EditRoomView');
     $viewCmd->setRoomId($roomId);
     // Create the room object given the room_id
     $room = new HMS_Room($roomId);
     if (!$room) {
         NQ::simple('hms', hms\NotificationView::ERROR, 'Invalid room.');
         $viewCmd->redirect();
     }
     // Check if the user is trying to change a room's gender to co-ed.
     // If so, make sure the user has the permission to do so.
     if ($room->getGender() != $context->get('gender_type') && $context->get('gender_type') == COED) {
         if (!Current_User::allow('hms', 'coed_rooms')) {
             NQ::simple('hms', hms\NotificationView::ERROR, 'Error: You do not have permission to change the room gender to co-ed. No changes were made.');
             $viewCmd->redirect();
         }
     }
     // Compare the room's gender and the gender the user selected
     // If they're not equal, call 'can_change_gender' public function
     if ($room->gender_type != $context->get('gender_type')) {
         if (!$room->can_change_gender($context->get('gender_type'))) {
             NQ::simple('hms', hms\NotificationView::ERROR, 'Error: Incompatible genders detected. No changes were made.');
             $viewCmd->redirect();
         }
     }
     // Check the default gender in the same way
     if ($room->default_gender != $context->get('default_gender')) {
         if (!$room->can_change_gender($context->get('default_gender'))) {
             NQ::simple('hms', hms\NotificationView::ERROR, 'Error: Default gender incompatable. No changes were made.');
             $viewCmd->redirect();
         }
     }
     if ($room->get_number_of_assignees() > 0 && $context->get('offline') == 1) {
         NQ::simple('hms', hms\NotificationView::ERROR, 'Error: Cannot take room offline while students are assigned to the room.  No changes were made.');
         $viewCmd->redirect();
     }
     // Grab all the input from the form and save the room
     //Changed from radio buttons to checkboxes, ternary
     //prevents null since only 1 is defined as a return value
     //test($_REQUEST['room_number']);
     $room->room_number = $context->get('room_number');
     $room->gender_type = $context->get('gender_type');
     $room->default_gender = $context->get('default_gender');
     $rlcReserved = $context->get('rlc_reserved');
     if ($rlcReserved != 0) {
         $room->setReservedRlcId($rlcReserved);
     } else {
         $room->setReservedRlcId(null);
     }
     $room->offline = $context->get('offline') == 1 ? 1 : 0;
     $room->reserved = $context->get('reserved') == 1 ? 1 : 0;
     $room->ra = $context->get('ra') == 1 ? 1 : 0;
     $room->private = $context->get('private') == 1 ? 1 : 0;
     $room->overflow = $context->get('overflow') == 1 ? 1 : 0;
     $room->parlor = $context->get('parlor') == 1 ? 1 : 0;
     $room->ada = $context->get('ada') == 1 ? 1 : 0;
     $room->hearing_impaired = $context->get('hearing_impaired') == 1 ? 1 : 0;
     $room->bath_en_suite = $context->get('bath_en_suite') == 1 ? 1 : 0;
     $reservedReason = $context->get('reserved_reason');
     if ($reservedReason == 'none') {
         $room->setReserved(0);
     } else {
         $room->setReserved(1);
     }
     $room->setReservedReason($reservedReason);
     $room->setReservedNotes($context->get('reserved_notes'));
     $result = $room->save();
     if (!$result || PHPWS_Error::logIfError($result)) {
         NQ::simple('hms', hms\NotificationView::ERROR, 'There was a problem saving the room data. No changes were made.');
         $viewCmd->redirect();
     }
     NQ::simple('hms', hms\NotificationView::SUCCESS, 'The room was updated successfully.');
     $viewCmd->redirect();
 }