public function execute() { $db = PdoFactory::getPdoInstance(); $query = "SELECT hms_assignment.banner_id, hms_hall_structure.room_number, hms_hall_structure.hall_name\n FROM hms_assignment\n JOIN hms_hall_structure\n ON hms_assignment.bed_id = hms_hall_structure.bedid\n WHERE\n hms_assignment.term = :term and\n roomid IN (SELECT room_id\n FROM hms_learning_community_assignment\n JOIN hms_learning_community_applications\n ON hms_learning_community_assignment.application_id = hms_learning_community_applications.id\n JOIN hms_assignment\n ON (hms_learning_community_applications.username = hms_assignment.asu_username AND hms_learning_community_applications.term = hms_assignment.term)\n JOIN hms_bed\n ON hms_assignment.bed_id = hms_bed.id\n JOIN hms_room\n ON hms_bed.room_id = hms_room.id\n WHERE\n hms_learning_community_applications.term = :term)\n ORDER BY roomid"; $stmt = $db->prepare($query); $params = array('term' => $this->term); $stmt->execute($params); $queryResult = $stmt->fetchAll(PDO::FETCH_ASSOC); $results = array(); $i = 0; $count = 0; foreach ($queryResult as $result) { $tplVals = array(); $tplVals['BANNER'] = $result['banner_id']; $student = StudentFactory::getStudentByBannerID($result['banner_id'], $this->term); $tplVals['USERNAME'] = $student->getUsername(); $tplVals['FIRST_NAME'] = $student->getFirstName(); $tplVals['LAST_NAME'] = $student->getLastName(); $membership = RlcMembershipFactory::getMembership($student, $this->term); if ($membership) { $tplVals['COMMUNITY'] = $membership->getRlcName(); $count++; } else { $tplVals['COMMUNITY'] = ''; } $tplVals['HALL'] = $result['hall_name']; $tplVals['ROOM'] = $result['room_number']; $results[$i] = $tplVals; $i++; } $this->memberCount = $count; $this->data = $results; }
public function execute(CommandContext $context) { PHPWS_Core::initModClass('hms', 'HousingApplication.php'); PHPWS_Core::initModClass('hms', 'StudentFactory.php'); PHPWS_Core::initModClass('hms', 'RlcMembershipFactory.php'); PHPWS_Core::initModClass('hms', 'RlcAssignmentSelfAssignedState.php'); $requestId = $context->get('requestId'); $mealPlan = $context->get('mealPlan'); $errorCmd = CommandFactory::getCommand('LotteryShowConfirmRoommateRequest'); $errorCmd->setRequestId($requestId); $errorCmd->setMealPlan($mealPlan); // Confirm the captcha PHPWS_Core::initCoreClass('Captcha.php'); $captcha = Captcha::verify(TRUE); if ($captcha === FALSE) { NQ::simple('hms', hms\NotificationView::ERROR, 'The words you entered were incorrect. Please try again.'); $errorCmd->redirect(); } // Check for a meal plan if (!isset($mealPlan) || $mealPlan == '') { NQ::simple('hms', hms\NotificationView::ERROR, 'Please choose a meal plan.'); $errorCmd->redirect(); } $term = PHPWS_Settings::get('hms', 'lottery_term'); $student = StudentFactory::getStudentByUsername(UserStatus::getUsername(), $term); // Update the meal plan field on the application $app = HousingApplication::getApplicationByUser(UserStatus::getUsername(), $term); $app->setMealPlan($mealPlan); try { $app->save(); } catch (Exception $e) { PHPWS_Error::log('hms', $e->getMessage()); NQ::simple('hms', hms\NotificationView::ERROR, 'Sorry, there was an error confirming your roommate invitation. Please contact University Housing.'); $errorCmd->redirect(); } // Try to actually make the assignment PHPWS_Core::initModClass('hms', 'HMS_Lottery.php'); try { HMS_Lottery::confirm_roommate_request(UserStatus::getUsername(), $requestId, $mealPlan); } catch (Exception $e) { PHPWS_Error::log('hms', $e->getMessage()); NQ::simple('hms', hms\NotificationView::ERROR, 'Sorry, there was an error confirming your roommate invitation. Please contact University Housing.'); $errorCmd->redirect(); } # Log the fact that the roommate was accepted and successfully assigned HMS_Activity_Log::log_activity(UserStatus::getUsername(), ACTIVITY_LOTTERY_CONFIRMED_ROOMMATE, UserStatus::getUsername(), "Captcha: \"{$captcha}\""); // Check for an RLC membership and update status if necessary // If this student was an RLC self-select, update the RLC memberhsip state $rlcAssignment = RlcMembershipFactory::getMembership($student, $term); if ($rlcAssignment != null && $rlcAssignment->getStateName() == 'selfselect-invite') { $rlcAssignment->changeState(new RlcAssignmentSelfAssignedState($rlcAssignment)); } $invite = HMS_Lottery::get_lottery_roommate_invite_by_id($requestId); $successCmd = CommandFactory::getCommand('LotteryShowConfirmedRoommateThanks'); $successCmd->setRequestId($requestId); $successCmd->redirect(); }
public function execute(CommandContext $context) { PHPWS_Core::initModClass('hms', 'StudentFactory.php'); PHPWS_Core::initModClass('hms', 'LotteryChooseFloorView.php'); PHPWS_Core::initModClass('hms', 'RlcMembershipFactory.php'); $hallId = $context->get('hallId'); if (!isset($hallId) || is_null($hallId) || empty($hallId)) { throw new InvalidArgumentException('Missing hall id.'); } $term = PHPWS_Settings::get('hms', 'lottery_term'); $student = StudentFactory::getStudentByUsername(UserStatus::getUsername(), $term); $rlcAssignment = RlcMembershipFactory::getMembership($student, $term); if ($rlcAssignment == false) { $rlcAssignment = null; } $view = new LotteryChooseFloorView($student, $term, $hallId, $rlcAssignment); $context->setContent($view->show()); }
public function execute(CommandContext $context) { PHPWS_Core::initModClass('hms', 'HMS_Lottery.php'); PHPWS_Core::initModClass('hms', 'LotteryRoommateRequestView.php'); PHPWS_Core::initModClass('hms', 'HousingApplication.php'); PHPWS_Core::initModClass('hms', 'StudentFactory.php'); PHPWS_Core::initModClass('hms', 'RlcMembershipFactory.php'); $request = HMS_Lottery::get_lottery_roommate_invite_by_id($context->get('requestId')); $term = PHPWS_Settings::get('hms', 'lottery_term'); $housingApp = HousingApplication::getApplicationByUser(UserStatus::getUsername(), $term); $student = StudentFactory::getStudentByUsername(UserStatus::getUsername(), $term); // Check for a self-select RLC membership for the logged-in student $rlcAssign = RlcMembershipFactory::getMembership($student, $term); if ($rlcAssign == false) { $rlcAssign = null; } $view = new LotteryRoommateRequestView($request, $term, $housingApp, $rlcAssign); $context->setContent($view->show()); }
public function execute(CommandContext $context) { PHPWS_Core::initModClass('hms', 'LotteryChooseHallView.php'); PHPWS_Core::initModClass('hms', 'StudentFactory.php'); PHPWS_Core::initModClass('hms', 'LotteryProcess.php'); PHPWS_Core::initModClass('hms', 'RlcMembershipFactory.php'); $term = PHPWS_Settings::get('hms', 'lottery_term'); // Check the hard cap! if (LotteryProcess::hardCapReached($term)) { NQ::simple('hms', hms\NotificationView::ERROR, 'Sorry, re-application is now closed.'); $errorCmd = CommandFactory::getCommand('ShowStudentMenu'); $errorCmd->redirect(); } $student = StudentFactory::getStudentByUsername(UserStatus::getUsername(), $term); $rlcAssignment = RlcMembershipFactory::getMembership($student, $term); if ($rlcAssignment == false) { $rlcAssignment = null; } $view = new LotteryChooseHallView($student, $term, $rlcAssignment); $context->setContent($view->show()); }
public function execute(CommandContext $context) { PHPWS_Core::initModClass('hms', 'StudentFactory.php'); $roomId = $context->get('roomId'); $roommates = $context->get('roommates'); $mealPlan = $context->get('mealPlan'); $term = PHPWS_Settings::get('hms', 'lottery_term'); $student = StudentFactory::getStudentByUsername(UserStatus::getUsername(), $term); $errorCmd = CommandFactory::getCommand('LotteryShowConfirm'); $errorCmd->setRoomId($roomId); $errorCmd->setRoommates($roommates); $errorCmd->setMealPlan($mealPlan); $successCmd = CommandFactory::getCommand('LotteryShowConfirmed'); $successCmd->setRoomId($roomId); PHPWS_Core::initCoreClass('Captcha.php'); $captcha = Captcha::verify(TRUE); // returns the words entered if correct, FALSE otherwise //$captcha = TRUE; if ($captcha === FALSE) { NQ::simple('hms', hms\NotificationView::ERROR, 'Sorry, the words you eneted were incorrect. Please try again.'); $errorCmd->redirect(); } PHPWS_Core::initModClass('hms', 'HousingApplication.php'); PHPWS_Core::initModClass('hms', 'HMS_Room.php'); PHPWS_Core::initModClass('hms', 'HMS_Bed.php'); PHPWS_Core::initModClass('hms', 'HMS_Assignment.php'); PHPWS_Core::initModClass('hms', 'HMS_Lottery.php'); PHPWS_Core::initModClass('hms', 'StudentFactory.php'); PHPWS_Core::initModClass('hms', 'HMS_Email.php'); PHPWS_Core::initModClass('hms', 'HMS_Activity_Log.php'); PHPWS_Core::initModClass('hms', 'HMS_Util.php'); PHPWS_Core::initModClass('hms', 'RlcMembershipFactory.php'); PHPWS_Core::initModClass('hms', 'RlcAssignmentSelfAssignedState.php'); $room = new HMS_Room($roomId); // Check for an RLC assignment in the self-select status $rlcAssignment = RlcMembershipFactory::getMembership($student, $term); // Check roommates for validity foreach ($roommates as $bed_id => $username) { // Double check the student is valid try { $roommate = StudentFactory::getStudentByUsername($username, $term); } catch (StudentNotFoundException $e) { NQ::simple('hms', hms\NotificationView::ERROR, "{$username} is not a valid student. Please choose a different roommate."); $errorCmd->redirect(); } // Make sure the bed is still empty $bed = new HMS_Bed($bed_id); if ($bed->has_vacancy() != TRUE) { NQ::simple('hms', hms\NotificationView::ERROR, 'One or more of the beds in the room you selected is no longer available. Please try again.'); $errorCmd->redirect(); } // Make sure none of the needed beds are reserved if ($bed->is_lottery_reserved()) { NQ::simple('hms', hms\NotificationView::ERROR, 'One or more of the beds in the room you selected is no longer available. Please try again.'); $errorCmd->redirect(); } // Double check the genders are all the same as the person logged in if ($student->getGender() != $roommate->getGender()) { NQ::simple('hms', hms\NotificationView::ERROR, "{$username} is a different gender. Please choose a roommate of the same gender."); $errorCmd->redirect(); } // Double check the genders are the same as the room (as long as the room isn't AUTO) if ($room->gender_type != AUTO && $roommate->getGender() != $room->gender_type) { NQ::simple('hms', hms\NotificationView::ERROR, "{$username} is a different gender. Please choose a roommate of the same gender."); $errorCmd->redirect(); } // If this student is an RLC-self-selection, then each roommate must be in the same RLC and in the selfselect-invite state too if ($rlcAssignment != null && $rlcAssignment->getStateName() == 'selfselect-invite') { // This student is an RLC-self-select, so check the roommate's RLC status $roommateRlcAssign = RlcMembershipFactory::getMembership($roommate, $term); // Make sure the roommate is a member of the same RLC and is eligible for self-selection if ($roommateRlcAssign == null || $roommateRlcAssign->getStateName() != 'selfselect-invite' || $rlcAssignment->getRlc()->getId() != $roommateRlcAssign->getRlc()->getId()) { NQ::simple('hms', hms\NotificationView::ERROR, "{$roommate} must be a member of the same learning community as you, and must also be eligible for self-selction."); $errorCmd->redirect(); } // Otherwise (if not RLC members), make sure each roommate is eligible } else { if (HMS_Lottery::determineEligibility($username) !== TRUE) { NQ::simple('hms', hms\NotificationView::ERROR, "{$username} is not eligible for assignment."); $errorCmd->redirect(); } } // If this student is a self-select RLC member, then this student must also be a self-select RLC member of the same RLC if ($rlcAssignment != null && $rlcAssignment->getStateName() == 'selfselect-invite') { $roommateRlcAssign = RlcMembershipFactory::getMembership($roommate, $term); if ($roommateRlcAssign == null || $roommateRlcAssign->getStateName() != 'selfselect-invite' || $rlcAssignment->getRlc()->getId() != $roommateRlcAssign->getRlc()->getId()) { NQ::simple('hms', hms\NotificationView::ERROR, "{$username} must be a member of the same learning community as you, and must also be eligible for self-selction."); $errorCmd->redirect(); } } } // If the room's gender is 'AUTO' and no one is assigned to it yet, switch it to the student's gender if ($room->gender_type == AUTO && $room->get_number_of_assignees() == 0) { $room->gender_type = $student->getGender(); $room->save(); } // Assign the student to the requested bed $bed_id = array_search(UserStatus::getUsername(), $roommates); // Find the bed id of the student who's logged in try { $result = HMS_Assignment::assignStudent($student, PHPWS_Settings::get('hms', 'lottery_term'), NULL, $bed_id, $mealPlan, 'Confirmed lottery invite', TRUE, ASSIGN_LOTTERY); } catch (Exception $e) { NQ::simple('hms', hms\NotificationView::ERROR, 'Sorry, there was an error creating your room assignment. Please try again or contact University Housing.'); $errorCmd->redirect(); } // Log the assignment HMS_Activity_Log::log_activity(UserStatus::getUsername(), ACTIVITY_LOTTERY_ROOM_CHOSEN, UserStatus::getUsername(), 'Captcha: ' . $captcha); // Update the student's meal plan in the housing application, just for future reference $app = HousingApplication::getApplicationByUser($student->getUsername(), $term); $app->setMealPlan($mealPlan); $app->save(); // If this student was an RLC self-select, update the RLC memberhsip state if ($rlcAssignment != null && $rlcAssignment->getStateName() == 'selfselect-invite') { $rlcAssignment->changeState(new RlcAssignmentSelfAssignedState($rlcAssignment)); } foreach ($roommates as $bed_id => $username) { // Skip the current user if ($username == $student->getUsername()) { continue; } # Reserve the bed for the roommate $expires_on = time() + INVITE_TTL_HRS * 3600; $bed = new HMS_Bed($bed_id); if (!$bed->lottery_reserve($username, $student->getUsername(), $expires_on)) { NQ::smiple('hms', hms\NotificationView::WARNING, "You were assigned, but there was a problem reserving space for your roommates. Please contact University Housing."); $successCmd->redirect(); } HMS_Activity_Log::log_activity($username, ACTIVITY_LOTTERY_REQUESTED_AS_ROOMMATE, $student->getUsername(), 'Expires: ' . HMS_Util::get_long_date_time($expires_on)); # Invite the selected roommates $roomie = StudentFactory::getStudentByUsername($username, $term); $term = PHPWS_Settings::get('hms', 'lottery_term'); $year = Term::toString($term) . ' - ' . Term::toString(Term::getNextTerm($term)); HMS_Email::send_lottery_roommate_invite($roomie, $student, $expires_on, $room->where_am_i(), $year); } HMS_Email::send_lottery_assignment_confirmation($student, $room->where_am_i(), $term); $successCmd->redirect(); }
public function execute(CommandContext $context) { PHPWS_Core::initModClass('hms', 'StudentFactory.php'); PHPWS_Core::initModClass('hms', 'HousingApplication.php'); PHPWS_Core::initModClass('hms', 'HMS_Assignment.php'); PHPWS_Core::initModClass('hms', 'RlcMembershipFactory.php'); $roommates = $context->get('roommates'); $mealPlan = $context->get('meal_plan'); $term = PHPWS_Settings::get('hms', 'lottery_term'); $student = StudentFactory::getStudentByUsername(UserStatus::getUsername(), $term); // Check for an RLC assignment in the self-select status $rlcAssignment = RlcMembershipFactory::getMembership($student, $term); $roomId = $context->get('roomId'); if (!isset($roomId) || is_null($roomId) || empty($roomId)) { throw new InvalidArgumentException('Missing room id.'); } // Put everything into lowercase before we get started foreach ($roommates as $key => $username) { $roommates[$key] = strtolower($username); } /** * Sanity checking */ $errorCmd = CommandFactory::getCommand('LotteryShowChooseRoommates'); $errorCmd->setRoomId($roomId); // Make sure the student assigned his/her self to a bed if (!in_array(UserStatus::getUsername(), $roommates)) { NQ::simple('hms', hms\NotificationView::ERROR, 'You must assign yourself to a bed. Please try again.'); $errorCmd->redirect(); } // Get a count of how many times each user name appears $counts = array_count_values($roommates); foreach ($roommates as $roommate) { if ($roommate == NULL || $roommate == '') { continue; } // Make sure this user name only appears once if ($counts[$roommate] > 1) { NQ::simple('hms', hms\NotificationView::ERROR, "{$roommate} may only be assigned to one bed. Please try again."); $errorCmd->redirect(); } try { $studentObj = StudentFactory::getStudentByUsername($roommate, $term); } catch (StudentNotFoundException $e) { NQ::simple('hms', hms\NotificationView::ERROR, "{$roommate} is not a valid user name. Please try again."); $errorCmd->redirect(); } $bannerId = $studentObj->getBannerId(); // Make sure every user name is a valid student if (is_null($bannerId) || empty($bannerId)) { NQ::simple('hms', hms\NotificationView::ERROR, "{$roommate} is not a valid user name. Please try again."); $errorCmd->redirect(); } /* * We can't check the student type here, because we're working in the future with students who are possibly still considered freshmen (which will always show up as type F) * What we can do is make sure their application term is less than the lottery term */ $roommateAppTerm = $studentObj->getApplicationTerm(); if (!isset($roommateAppTerm) || is_null($roommateAppTerm) || empty($roommateAppTerm)) { NQ::simple('hms', hms\NotificationView::ERROR, "The Housing Management System does not have complete student data for {$roommate}. Please select a different roommate."); $errorCmd->redirect(); } // Make sure the student's application term is less than the current term if ($studentObj->getApplicationTerm() > Term::getCurrentTerm()) { NQ::simple('hms', hms\NotificationView::ERROR, "{$roommate} is not a continuing student. Only continuing students (i.e. not a first semester freshmen) may be selected as roommates. Please select a different roommate."); $errorCmd->redirect(); } // Make sure the student is not withdrawn for the lottery term (again, we can't actually check for 'continuing' here) if ($studentObj->getType() == TYPE_WITHDRAWN) { NQ::simple('hms', hms\NotificationView::ERROR, "{$roommate} is not a continuing student. Only continuing students (i.e. not a first semester freshmen) may be selected as roommates. Please select a different roommate."); $errorCmd->redirect(); } // If this student is an RLC-self-selection, then each roommate much be in the same RLC and in the selfselect-invite state too if ($rlcAssignment != null && $rlcAssignment->getStateName() == 'selfselect-invite') { // This student is an RLC-self-select, so check the roommate's RLC status $roommateRlcAssign = RlcMembershipFactory::getMembership($studentObj, $term); // Make sure the roommate is a member of the same RLC and is eligible for self-selection if ($roommateRlcAssign == null || $roommateRlcAssign->getStateName() != 'selfselect-invite' || $rlcAssignment->getRlc()->getId() != $roommateRlcAssign->getRlc()->getId()) { NQ::simple('hms', hms\NotificationView::ERROR, "{$roommate} must be a member of the same learning community as you, and must also be eligible for self-selction."); $errorCmd->redirect(); } // Otherwise (if not RLC members), make sure each roommate entered the lottery and has a valid application (not cancelled) } else { if (HousingApplication::checkForApplication($roommate, $term) === FALSE) { NQ::simple('hms', hms\NotificationView::ERROR, "{$roommate} did not re-apply for housing. Please select a different roommate."); $errorCmd->redirect(); } } // Make sure every student's gender matches, and that those are compatible with the room if ($studentObj->getGender() != $student->getGender()) { NQ::simple('hms', hms\NotificationView::ERROR, "{$roommate} is not the same gender as you. Please choose a roommate of the same gender."); $errorCmd->redirect(); } // Make sure none of the students are assigned yet if (HMS_Assignment::checkForAssignment($roommate, $term) === TRUE) { NQ::simple('hms', hms\NotificationView::ERROR, "{$roommate} is already assigned to a room. Please choose a different roommate."); $errorCmd->redirect(); } } // If we've made it this far, then everything is ok.. redirect to the confirmation screen $confirmCmd = CommandFactory::getCommand('LotteryShowConfirm'); $confirmCmd->setRoomId($roomId); $confirmCmd->setRoommates($roommates); $confirmCmd->setMealPlan($mealPlan); $confirmCmd->redirect(); }
public function execute(CommandContext $context) { if (!Current_User::allow('hms', 'add_rlc_members')) { PHPWS_Core::initModClass('hms', 'exception/PermissionException.php'); throw new PermissionException('You do not have permission to view RLC members.'); } PHPWS_Core::initModClass('hms', 'HMS_Learning_Community.php'); PHPWS_Core::initModClass('hms', 'StudentFactory.php'); PHPWS_Core::initModClass('hms', 'HousingApplicationFactory.php'); PHPWS_Core::initModClass('hms', 'RlcApplicationFactory.php'); PHPWS_Core::initModClass('hms', 'RlcMembershipFactory.php'); // Get the selected term $term = Term::getSelectedTerm(); // Get the request community $communityId = $context->get('communityId'); if (!isset($communityId) || $communityId == '') { throw new InvalidArgumentException('Missing community id.'); } $community = new HMS_Learning_Community($communityId); // Get banner ID list and make sure it has content $bannerIds = $context->get('banner_id_list'); if (!isset($bannerIds) || $bannerIds == '') { $errorCmd = CommandFactory::getCommand('ShowAdminAddRlcMember'); $errorCmd->setCommunity($community); $errorCmd->redirect(); } // Break up string into an array of individual ids $bannerIds = explode("\n", $bannerIds); foreach ($bannerIds as $banner) { // Clean up the banner id $banner = trim($banner); // Skip blank lines if ($banner == '') { continue; } // Get the student try { $student = StudentFactory::getStudentByBannerId($banner, $term); } catch (StudentNotFoundException $e) { NQ::simple('hms', hms\NotificationView::ERROR, "Couldn't find a student with ID: {$e->getRequestedId()}"); continue; } catch (InvalidArgumentException $e) { NQ::simple('hms', hms\NotificationView::ERROR, "This doesn't look like a banner ID: {$banner}"); continue; } // Check for an existing housing application $housingApp = HousingApplicationFactory::getAppByStudent($student, $term); // If no housing app, show a warning if (is_null($housingApp)) { NQ::simple('hms', hms\NotificationView::WARNING, "No housing application found for: {$student->getName()}({$student->getBannerID()})"); } // Check for an existing learning community application $rlcApp = RlcApplicationFactory::getApplication($student, $term); if ($rlcApp == null) { // Create a new learning community application $rlcApp = new HMS_RLC_Application(); $rlcApp->setUsername($student->getUsername()); $rlcApp->setDateSubmitted(time()); $rlcApp->setFirstChoice($community->getId()); $rlcApp->setSecondChoice(null); $rlcApp->setThirdChoice(null); $rlcApp->setWhySpecificCommunities('Application created administratively.'); $rlcApp->setStrengthsWeaknesses(''); $rlcApp->setRLCQuestion0(null); $rlcApp->setRLCQuestion1(null); $rlcApp->setRLCQuestion2(null); $rlcApp->setEntryTerm($term); if ($student->getType() == TYPE_CONTINUING) { $rlcApp->setApplicationType(RLC_APP_RETURNING); } else { $rlcApp->setApplicationType(RLC_APP_FRESHMEN); } $rlcApp->save(); } else { // Reset the application's denial flag, see #1026 $rlcApp->setDenied(0); $rlcApp->save(); // RLC application already exists NQ::simple('hms', hms\NotificationView::WARNING, "RLC application already exists for {$student->getName()}({$student->getBannerID()})"); } // Check for RLC membership $membership = RlcMembershipFactory::getMembership($student, $term); if ($membership !== false) { NQ::simple('hms', hms\NotificationView::ERROR, "RLC membership already exists for {$student->getName()}({$student->getBannerID()})"); continue; } // Check Student's Eligibility $eligibility = HMS_Lottery::determineEligibility($student->getUsername()); if ($eligibility == false) { NQ::simple('hms', hms\NotificationView::ERROR, "{$student->getName()} ({$student->getBannerID()}) is not currently eligible for housing"); continue; } // Create RLC Membership $membership = new HMS_RLC_Assignment(); $membership->rlc_id = $community->getId(); $membership->gender = $student->getGender(); $membership->assigned_by = UserStatus::getUsername(); $membership->application_id = $rlcApp->id; $membership->state = 'new'; $membership->save(); } $successCmd = CommandFactory::getCommand('ShowViewByRlc'); $successCmd->setRlcId($community->getId()); $successCmd->redirect(); }