public function execute(CommandContext $context) { if (!Current_User::allow('hms', 'cancel_housing_application')) { PHPWS_Core::initModClass('hms', 'exception/PermissionException.php'); throw new PermissionException('You do not have permission to cancel housing applications.'); } // Check for a housing application id $applicationId = $context->get('applicationId'); if (!isset($applicationId) || is_null($applicationId)) { throw new InvalidArgumentException('Missing housing application id.'); } // Check for a cancellation reason $cancelReason = $context->get('cancel_reason'); if (!isset($cancelReason) || is_null($cancelReason)) { throw new InvalidArgumentException('Missing cancellation reason.'); } // Load the housing application PHPWS_Core::initModClass('hms', 'HousingApplicationFactory.php'); $application = HousingApplicationFactory::getApplicationById($applicationId); // Load the student $student = $application->getStudent(); $username = $student->getUsername(); $term = $application->getTerm(); // Load the cancellation reasons $reasons = HousingApplication::getCancellationReasons(); // Check for an assignment and remove it // Decide which term to use - If this application is in a past fall term, then use the current term if ($term < Term::getCurrentTerm() && Term::getTermSem($term) == TERM_FALL) { $assignmentTerm = Term::getCurrentTerm(); } else { $assignmentTerm = $term; } PHPWS_Core::initModClass('hms', 'HMS_Assignment.php'); $assignment = HMS_Assignment::getAssignmentByBannerId($student->getBannerId(), $assignmentTerm); if (isset($assignment)) { // TODO: Don't hard code cancellation refund percentage HMS_Assignment::unassignStudent($student, $assignmentTerm, 'Application cancellation: ' . $reasons[$cancelReason], UNASSIGN_CANCEL, 100); } PHPWS_Core::initModClass('hms', 'HMS_RLC_Assignment.php'); $rlcAssignment = HMS_RLC_Assignment::getAssignmentByUsername($username, $term); if (!is_null($rlcAssignment)) { $rlcAssignment->delete(); } PHPWS_Core::initModClass('hms', 'HMS_RLC_Application.php'); $rlcApplication = HMS_RLC_Application::getApplicationByUsername($username, $term); if (!is_null($rlcApplication)) { $rlcApplication->denied = 1; $rlcApplication->save(); HMS_Activity_Log::log_activity($username, ACTIVITY_DENIED_RLC_APPLICATION, \Current_User::getUsername(), Term::toString($term) . ' Denied RLC Application due to Contract Cancellation'); } // Cancel the application $application->cancel($cancelReason); $application->save(); echo 'success'; exit; }
public function execute(CommandContext $context) { if (!Current_User::allow('withdrawn_search')) { PHPWS_Core::initModClass('hms', 'exception/PermissionException.php'); throw new PermissionException('You do not have permission to makr applications withdrawn.'); } $id = $context->get('appId'); if (!isset($id) || is_null($id)) { throw new InvalidArugumentException('Missing application id.'); } PHPWS_Core::initModclass('hms', 'HousingApplicationFactory.php'); $app = HousingApplicationFactory::getApplicationById($context->get('appId')); $app->setWithdrawn(1); $app->save(); NQ::simple('hms', hms\NotificationView::SUCCESS, 'Application successfully marked as withdrawn.'); $context->goBack(); }
public function execute(CommandContext $context) { if (!Current_User::allow('hms', 'cancel_housing_application')) { PHPWS_Core::initModClass('hms', 'exception/PermissionException.php'); throw new PermissionException('You do not have permission to cancel housing applications.'); } // Check for a housing application id $this->setAppId($context->get('applicationId')); if (!isset($this->applicationId) || is_null($this->applicationId)) { throw new InvalidArgumentException('Missing housing application id.'); } $application = HousingApplicationFactory::getApplicationById($this->applicationId); $application->setCancelled(0); $application->setCancelledBy(null); $application->setCancelledReason(null); $application->setCancelledOn(null); $application->save(); HMS_Activity_Log::log_activity($application->getUsername(), ACTIVITY_REINSTATE_APPLICATION, UserStatus::getUsername()); $returnCmd = CommandFactory::getCommand('ShowStudentProfile'); $returnCmd->setBannerId($application->getBannerId()); $returnCmd->redirect(); }
public function execute(CommandContext $context) { $applicationId = $context->get('applicationId'); if (!isset($applicationId)) { throw new InvalidArgumentException('Missing application id.'); } PHPWS_Core::initModClass('hms', 'HousingApplicationFactory.php'); $application = HousingApplicationFactory::getApplicationById($applicationId); $student = $application->getStudent(); PHPWS_Core::initModClass('hms', 'HMS_Assignment.php'); // Decide which term to use - If this application is in a past fall term, then use the current term $term = $application->getTerm(); if ($term < Term::getCurrentTerm() && Term::getTermSem($term) == TERM_FALL) { $assignmentTerm = Term::getCurrentTerm(); } else { $assignmentTerm = $term; } $assignment = HMS_Assignment::getAssignmentByBannerId($student->getBannerId(), $assignmentTerm); PHPWS_Core::initModClass('hms', 'HousingApplicationCancelView.php'); $view = new HousingApplicationCancelView($student, $application, $assignment); echo $view->show(); exit; }
/** * $roommates is the focus of getProfileView(). It's structure is helpful in * StudentProfileView. It also makes it a little easier to recognize which roommmates * are requested ones so they can be emphasized in the template (admin/fancy-student-info.tpl) * Note that a student can only have a single pending/confirmed roommate request but multiple * assigned roommates! * */ public function getProfileView() { PHPWS_Core::initModClass('hms', 'StudentProfileView.php'); PHPWS_Core::initModClass('hms', 'HMS_Assignment.php'); PHPWS_Core::initModClass('hms', 'HMS_Roommate.php'); PHPWS_Core::initModClass('hms', 'HousingApplication.php'); PHPWS_Core::initModClass('hms', 'HousingApplicationFactory.php'); PHPWS_Core::initModClass('hms', 'HMS_Bed.php'); $studentUsername = $this->student->getUsername(); $assignment = HMS_Assignment::getAssignmentByBannerId($this->student->getBannerId(), $this->term); $pendingRoommate = HMS_Roommate::get_pending_roommate($studentUsername, $this->term); $confirmedRoommate = HMS_Roommate::get_confirmed_roommate($studentUsername, $this->term); if (!is_null($assignment)) { $assignedRoommates = $assignment->get_parent()->get_parent()->get_assignees(); } // // If student is assigned to room... // if (!is_null($assignment)) { foreach ($assignedRoommates as $roomie) { // make sure $roomie isn't the student being profiled or the requested roomies if ($roomie != FALSE && $roomie->getUsername() != $studentUsername) { $roomieUsername = $roomie->getUsername(); if (is_null($confirmedRoommate) || $roomieUsername != $confirmedRoommate->getUsername()) { if (is_null($pendingRoommate) || $roomieUsername != $pendingRoommate->getUsername()) { // Get student object and room link $roomLink = $this->getRoommateRoomLink($roomie->getUsername()); // if $roomie was assigned but not requested $this->roommates['ASSIGNED'][] = $roomie->getProfileLink() . " - {$roomLink}"; } } } } } // // Check status of requested roommates // if (!is_null($confirmedRoommate)) { if (!is_null($assignment)) { $confirmedRmAssignment = HMS_Assignment::getAssignment($confirmedRoommate->getUsername(), $this->term); if (!is_null($confirmedRmAssignment)) { // if confirmed roommate is assigned to different room than profile student if ($assignment->get_parent()->room_id != $confirmedRmAssignment->get_parent()->room_id) { $this->setRoommateVar($confirmedRoommate, "confirmed", "mismatched_rooms"); } else { $this->setRoommateVar($confirmedRoommate, "confirmed"); } } else { // if profile student's room is full if (!$assignment->get_parent()->get_parent()->has_vacancy()) { $this->setRoommateVar($confirmedRoommate, "confirmed", "no_bed_available"); } else { $this->setRoommateVar($confirmedRoommate, "confirmed"); } } } else { $this->setRoommateVar($confirmedRoommate, "confirmed"); } } else { if (!is_null($pendingRoommate)) { if (!is_null($assignment)) { $pendingRmAssignment = HMS_Assignment::getAssignment($pendingRoommate->getUsername(), $this->term); if (!is_null($pendingRmAssignment)) { // if pending roommate is assigned to different room than profile student if ($assignment->get_parent()->room_id != $pendingRmAssignment->get_parent()->room_id) { $this->setRoommateVar($pendingRoommate, "pending", "mismatched_rooms"); } else { $this->setRoommateVar($pendingRoommate, "pending"); } } else { // if profile student's room is full if (!$assignment->get_parent()->get_parent()->has_vacancy()) { $this->setRoommateVar($pendingRoommate, "pending", "no_bed_available"); } else { $this->setRoommateVar($pendingRoommate, "pending"); } } } else { $this->setRoommateVar($pendingRoommate, "pending"); } } } $applications = HousingApplication::getAllApplicationsForStudent($this->student); $subTypeApps = array(); // Convert each of the general HousingApplication objets to its specific sub type (e.g. FallApplication) foreach ($applications as $app) { $subTypeApps[] = HousingApplicationFactory::getApplicationById($app->id); } return new StudentProfileView($this->student, $subTypeApps, $assignment, $this->roommates); }
public function show() { // TODO: Load application in controller and pass it to HousingApplicationView constructor. $application = HousingApplicationFactory::getApplicationById($this->id); $student = StudentFactory::getStudentByUsername($application->username, $application->term); $tpl = array(); //If the application has been submitted plug in the date it was created if (isset($application->created_on)) { $tpl['RECEIVED_DATE'] = "Received on: " . date('d-F-Y h:i:s a', $application->created_on); } if ($application instanceof LotteryApplication && $application->getWaitingListDate() != null) { $tpl['WAITING_LIST_DATE'] = date("d-F-y h:i:sa", $application->getWaitingListDate()); } // Check if the application has been cancelled // isWithdrawn() has been depricated, but I'm leaving it here just for historical sake // on the off-chance that it catches an older application that's withdrawn but not cancelled. if ($application->isCancelled() || $application->isWithdrawn()) { NQ::simple('hms', hms\NotificationView::WARNING, 'This application has been cancelled.'); } $tpl['STUDENT_NAME'] = $student->getFullName(); $tpl['GENDER'] = $student->getPrintableGender(); $tpl['ENTRY_TERM'] = Term::toString($application->term); $tpl['CLASSIFICATION_FOR_TERM_LBL'] = $student->getPrintableClass(); $tpl['STUDENT_STATUS_LBL'] = $student->getPrintableType(); $tpl['MEAL_OPTION'] = HMS_Util::formatMealOption($application->meal_plan); if (isset($application->lifestyle_option)) { $tpl['LIFESTYLE_OPTION'] = $application->lifestyle_option == 1 ? 'Single gender' : 'Co-ed'; } else { $tpl['LIFESTYLE_OPTION'] = 'n/a'; } if (isset($application->preferred_bedtime)) { $tpl['PREFERRED_BEDTIME'] = $application->preferred_bedtime == 1 ? 'Early' : 'Late'; } else { $tpl['PREFERRED_BEDTIME'] = 'n/a'; } if (isset($application->room_condition)) { $tpl['ROOM_CONDITION'] = $application->room_condition == 1 ? 'Neat' : 'Cluttered'; } else { $tpl['ROOM_CONDITION'] = 'n/a'; } if (isset($application->smoking_preference)) { $tpl['SMOKING_PREFERENCE'] = $application->smoking_preference == 1 ? 'No' : 'Yes'; } else { $tpl['SMOKING_PREFERENCE'] = 'n/a'; } if (isset($application->room_type)) { $tpl['ROOM_TYPE'] = $application->room_type == ROOM_TYPE_DOUBLE ? 'Double' : 'Private (if available)'; } $tpl['CELLPHONE'] = ''; if (strlen($application->cell_phone) == 10) { $tpl['CELLPHONE'] .= '(' . substr($application->cell_phone, 0, 3) . ')'; $tpl['CELLPHONE'] .= '-' . substr($application->cell_phone, 3, 3); $tpl['CELLPHONE'] .= '-' . substr($application->cell_phone, 6, 4); } /* Emergency Contact */ $tpl['EMERGENCY_CONTACT_NAME'] = $application->getEmergencyContactName(); $tpl['EMERGENCY_CONTACT_RELATIONSHIP'] = $application->getEmergencyContactRelationship(); $tpl['EMERGENCY_CONTACT_PHONE'] = $application->getEmergencyContactPhone(); $tpl['EMERGENCY_CONTACT_EMAIL'] = $application->getEmergencyContactEmail(); $tpl['EMERGENCY_MEDICAL_CONDITION'] = $application->getEmergencyMedicalCondition(); /* Missing Person */ if (Current_User::allow('hms', 'view_missing_person_info')) { $tpl['MISSING_PERSON_NAME'] = $application->getMissingPersonName(); $tpl['MISSING_PERSON_RELATIONSHIP'] = $application->getMissingPersonRelationship(); $tpl['MISSING_PERSON_PHONE'] = $application->getMissingPersonPhone(); $tpl['MISSING_PERSON_EMAIL'] = $application->getMissingPersonEmail(); } /* Special Needs */ $special_needs = ""; if ($application->physical_disability == 1) { $special_needs = 'Physical disability<br />'; } if ($application->psych_disability) { $special_needs .= 'Psychological disability<br />'; } if ($application->medical_need) { $special_needs .= 'Medical need<br />'; } if ($application->gender_need) { $special_needs .= 'Gender need<br />'; } if ($special_needs == '') { $special_needs = 'None'; } $tpl['SPECIAL_NEEDS_RESULT'] = $special_needs; if ($application instanceof FallApplication) { PHPWS_Core::initModClass('hms', 'HMS_RLC_Application.php'); $rlcApp = HMS_RLC_Application::getApplicationByUsername($student->getUsername(), $application->getTerm()); if (!is_null($rlcApp)) { $tpl['RLC_INTEREST_1'] = 'Yes (Completed - Use the main menu to view/modify.)'; } else { $tpl['RLC_INTEREST_1'] = $application->rlc_interest == 0 ? 'No' : 'Yes'; } } if (Current_User::getUsername() == "hms_student") { $tpl['MENU_LINK'] = PHPWS_Text::secureLink('Back to main menu', 'hms', array('type' => 'student', 'op' => 'show_main_menu')); } Layout::addPageTitle("Housing Application"); return PHPWS_Template::process($tpl, 'hms', 'admin/student_application.tpl'); }
/** * Returns an array of HousingApplication objects, one object for each application the * given student has completed. All parameters are optional. * Returns false if the request cannot be compelted for any reason. * * TODO depricate this and do it better * * @param string $username * @param string $banner_id * @param string $term * * @return mixed <NULL, FallApplication> */ public static function getAllApplications($username = null, $banner_id = null, $term = null) { PHPWS_Core::initModClass('hms', 'HousingApplicationFactory.php'); $db = new PHPWS_DB('hms_new_application'); if (!is_null($banner_id)) { $db->addWhere('banner_id', $banner_id); } if (!is_null($username)) { $db->addWhere('username', $username, 'ILIKE'); } if (!is_null($term)) { $db->addWhere('term', $term); } $result = $db->select(); $apps = array(); foreach ($result as $app) { $apps[] = HousingApplicationFactory::getApplicationById($app['id']); } return $apps; }