Skip to content
Snippets Groups Projects
Commit d65aa81c authored by Tim Steiner's avatar Tim Steiner
Browse files

Create a unified major router as well. @1h30

parent 72d25c50
Branches unified-college-router
No related tags found
No related merge requests found
...@@ -31,6 +31,19 @@ class Bulletin_UtilityModel implements Creq_Model_UtilityInterface ...@@ -31,6 +31,19 @@ class Bulletin_UtilityModel implements Creq_Model_UtilityInterface
return $requestColleges; return $requestColleges;
} }
static public function getMajorsForRequests($requests)
{
$requestMajors = array();
$requestSections = Bulletin_SectionModel::findWithRequest($requests);
foreach ($requests as $request) {
$section = $requestSections[$request->getId()];
$requestMajors[$request->getId()] = $section->getMajor();
}
return $requestMajors;
}
static public function getTextBetweenTokens($text, $start_token, $end_token) static public function getTextBetweenTokens($text, $start_token, $end_token)
{ {
$content_start = strpos($text, $start_token); $content_start = strpos($text, $start_token);
......
...@@ -40,4 +40,14 @@ class Courses_UtilityModel implements Creq_Model_UtilityInterface ...@@ -40,4 +40,14 @@ class Courses_UtilityModel implements Creq_Model_UtilityInterface
return $requestColleges; return $requestColleges;
} }
static public function getMajorsForRequests($requests)
{
$requestMajors = array();
foreach ($requests as $request) {
$requestMajors[$request->getId()] = NULL;
}
return $requestMajors;
}
} }
<!-- No options for this action -->
\ No newline at end of file
...@@ -913,33 +913,82 @@ class FourYearPlans_FourYearPlanModel extends Unl_Model ...@@ -913,33 +913,82 @@ class FourYearPlans_FourYearPlanModel extends Unl_Model
} }
} }
static protected $_majorCollegeMap = array();
static protected function _getMajorCollegeMap()
{
if (!self::$_majorCollegeMap) {
$db = Zend_Registry::get('db');
$select = new Zend_Db_Select($db);
$select->from(array('c' => 'creqColleges'), array(
'collegeId',
'college' => 'name',
'collegeLong' => 'description'
));
$select->join(array('m' => 'creqMajors'), 'c.collegeId = m.college', array(
'majorId',
'major' => 'name'
));
foreach ($select->query()->fetchAll() as $row) {
self::$_majorCollegeMap[$row['majorId']] = $row;
}
}
return self::$_majorCollegeMap;
}
public function getCollege()
{
$majorCollegeMap = self::_getMajorCollegeMap();
if (!isset($majorCollegeMap[$this->_data['majorId']])) {
return NULL;
}
return $majorCollegeMap[$this->_data['majorId']]['college'];
}
public function getCollegeLong()
{
$majorCollegeMap = self::_getMajorCollegeMap();
if (!isset($majorCollegeMap[$this->_data['majorId']])) {
return NULL;
}
return $majorCollegeMap[$this->_data['majorId']]['collegeLong'];
}
public function getMajor() public function getMajor()
{ {
if (!$this->_data['majorId'] && $this->_data['major']) { if (!$this->_data['majorId'] && $this->_data['major']) {
return $this->_data['major']; return $this->_data['major'];
} }
$majors = Bulletin_UtilityModel::getAllMajors(); $majorCollegeMap = self::_getMajorCollegeMap();
if (isset($majors[$this->_data['majorId']])) { if (!isset($majorCollegeMap[$this->_data['majorId']])) {
return $majors[$this->_data['majorId']]; return NULL;
} }
return NULL; return $majorCollegeMap[$this->_data['majorId']]['major'];
} }
public function setMajorId($majorId) public function setMajorId($majorId)
{ {
$majors = Bulletin_UtilityModel::getAllMajors(); $majorCollegeMap = self::_getMajorCollegeMap();
if (!isset($majors[$majorId])) { if (!isset($majorCollegeMap[$majorId])) {
throw new Exception('Major not found.'); throw new Exception('Major not found.');
} }
$this->_data['majorId'] = $majorId; $this->_data['majorId'] = $majorId;
} }
public function setMajor($major) public function setMajor($major)
{ {
$majors = Bulletin_UtilityModel::getAllMajors(); $majorId = NULL;
$majorId = array_search($major, $majors); foreach (self::_getMajorCollegeMap() as $item) {
if ($item['major'] == $major) {
$majorId = $item['majorId'];
}
}
if (!$majorId) { if (!$majorId) {
throw new Exception ('The major "' . $major . '" does not exist.'); throw new Exception ('The major "' . $major . '" does not exist.');
......
...@@ -33,4 +33,21 @@ class FourYearPlans_UtilityModel implements Creq_Model_UtilityInterface ...@@ -33,4 +33,21 @@ class FourYearPlans_UtilityModel implements Creq_Model_UtilityInterface
return $requestColleges; return $requestColleges;
} }
static public function getMajorsForRequests($requests)
{
$requestMajors = array();
$requestParentFyps = FourYearPlans_FourYearPlanModel::findParentOfRequest($requests);
$requestCurrentFyps = FourYearPlans_FourYearPlanModel::findLatestOfRequest($requests);
foreach ($requests as $request) {
$fyp = $requestParentFyps[$request->getId()];
if (!$fyp) {
$fyp = $requestCurrentFyps[$request->getId()];
}
$requestMajors[$request->getId()] = $fyp->getMajor();
}
return $requestMajors;
}
} }
<?php <?php
class Courses_ApprovalActionCollegeRouterModel extends Requests_ApprovalActionModel class Requests_ApprovalActionMajorRouterModel extends Requests_ApprovalActionModel
{ {
protected $_colleges = array(); protected $_majors = array();
public static function find($id) public static function find($id)
{ {
...@@ -10,7 +10,7 @@ class Courses_ApprovalActionCollegeRouterModel extends Requests_ApprovalActionMo ...@@ -10,7 +10,7 @@ class Courses_ApprovalActionCollegeRouterModel extends Requests_ApprovalActionMo
$select = new Zend_Db_Select($db); $select = new Zend_Db_Select($db);
$select->from(array('a' => 'creqApprovalActions')); $select->from(array('a' => 'creqApprovalActions'));
$select->join(array('d' => 'creqApprovalActionsCollegeRouter'), 'a.approvalActionId = d.approvalActionId'); $select->join(array('d' => 'creqApprovalActionsMajorRouter'), 'a.approvalActionId = d.approvalActionId');
if (Unl_Util::isArray($id)) { if (Unl_Util::isArray($id)) {
$select->where('a.approvalActionId IN(?)', $id); $select->where('a.approvalActionId IN(?)', $id);
} else { } else {
...@@ -47,7 +47,7 @@ class Courses_ApprovalActionCollegeRouterModel extends Requests_ApprovalActionMo ...@@ -47,7 +47,7 @@ class Courses_ApprovalActionCollegeRouterModel extends Requests_ApprovalActionMo
$new = new self($data); $new = new self($data);
$new->_setClean(); $new->_setClean();
$new->_data['className'] = 'ApprovalActionCollegeRouter'; $new->_data['className'] = 'ApprovalActionMajorRouter';
return $new; return $new;
} }
...@@ -91,7 +91,7 @@ class Courses_ApprovalActionCollegeRouterModel extends Requests_ApprovalActionMo ...@@ -91,7 +91,7 @@ class Courses_ApprovalActionCollegeRouterModel extends Requests_ApprovalActionMo
{ {
$db = Zend_Registry::get('db'); $db = Zend_Registry::get('db');
$sql = 'INSERT INTO creqApprovalActionsCollegeRouter (approvalActionId) VALUES '; $sql = 'INSERT INTO creqApprovalActionsMajorRouter (approvalActionId) VALUES ';
$sqlParts = array(); $sqlParts = array();
foreach ($models as $model) { foreach ($models as $model) {
$sqlParts[] = $db->quoteInto('(?) ', $model->_data['approvalActionId']); $sqlParts[] = $db->quoteInto('(?) ', $model->_data['approvalActionId']);
...@@ -102,16 +102,17 @@ class Courses_ApprovalActionCollegeRouterModel extends Requests_ApprovalActionMo ...@@ -102,16 +102,17 @@ class Courses_ApprovalActionCollegeRouterModel extends Requests_ApprovalActionMo
public function consider($requests) public function consider($requests)
{ {
$requestParentCourses = Courses_CourseModel::findParentOfRequest($requests); $modulesRequests = array();
$requestCurrentCourses = Courses_CourseModel::findLatestOfRequest($requests);
foreach ($requests as $request) { foreach ($requests as $request) {
$course = $requestParentCourses[$request->getId()]; $modulesRequests[$request->getModule()][$request->getId()] = $request;
if (!$course) {
$course = $requestCurrentCourses[$request->getId()];
} }
$college = $course->getCollege(); foreach ($modulesRequests as $module => $moduleRequests) {
$request->setState($college); $model = ucfirst($module) . '_UtilityModel';
foreach ($model::getMajorsForRequests($moduleRequests) as $requestId => $major) {
$moduleRequests[$requestId]->setState($major);
} }
}
Requests_RequestModel::save($requests); Requests_RequestModel::save($requests);
Requests_ApprovalChainModel::advance($requests); Requests_ApprovalChainModel::advance($requests);
return $requests; return $requests;
...@@ -129,11 +130,11 @@ class Courses_ApprovalActionCollegeRouterModel extends Requests_ApprovalActionMo ...@@ -129,11 +130,11 @@ class Courses_ApprovalActionCollegeRouterModel extends Requests_ApprovalActionMo
public function getResultStatusStrings() public function getResultStatusStrings()
{ {
$colleges = array(); $majors = array();
foreach (Courses_CourseModel::getColleges() as $college) { foreach (Bulletin_UtilityModel::getAllMajors() as $major) {
$colleges[$college] = $college; $majors[$major] = $major;
} }
return $colleges; return $majors;
} }
} }
...@@ -27,4 +27,14 @@ interface Creq_Model_UtilityInterface ...@@ -27,4 +27,14 @@ interface Creq_Model_UtilityInterface
* if not applicable. * if not applicable.
*/ */
static public function getCollegesForRequests($requests); static public function getCollegesForRequests($requests);
/**
* @param $requests
* @return array
*
* Given an array of requests, return an array where each key is the requestId
* and the value is the name of the major associated with the request, or NULL
* if not applicable.
*/
static public function getMajorsForRequests($requests);
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment