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
No related branches found
No related tags found
No related merge requests found
......@@ -31,6 +31,19 @@ class Bulletin_UtilityModel implements Creq_Model_UtilityInterface
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)
{
$content_start = strpos($text, $start_token);
......
......@@ -40,4 +40,14 @@ class Courses_UtilityModel implements Creq_Model_UtilityInterface
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
}
}
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()
{
if (!$this->_data['majorId'] && $this->_data['major']) {
return $this->_data['major'];
}
$majors = Bulletin_UtilityModel::getAllMajors();
if (isset($majors[$this->_data['majorId']])) {
return $majors[$this->_data['majorId']];
$majorCollegeMap = self::_getMajorCollegeMap();
if (!isset($majorCollegeMap[$this->_data['majorId']])) {
return NULL;
}
return NULL;
return $majorCollegeMap[$this->_data['majorId']]['major'];
}
public function setMajorId($majorId)
{
$majors = Bulletin_UtilityModel::getAllMajors();
if (!isset($majors[$majorId])) {
$majorCollegeMap = self::_getMajorCollegeMap();
if (!isset($majorCollegeMap[$majorId])) {
throw new Exception('Major not found.');
}
$this->_data['majorId'] = $majorId;
}
public function setMajor($major)
{
$majors = Bulletin_UtilityModel::getAllMajors();
$majorId = array_search($major, $majors);
$majorId = NULL;
foreach (self::_getMajorCollegeMap() as $item) {
if ($item['major'] == $major) {
$majorId = $item['majorId'];
}
}
if (!$majorId) {
throw new Exception ('The major "' . $major . '" does not exist.');
......
......@@ -33,4 +33,21 @@ class FourYearPlans_UtilityModel implements Creq_Model_UtilityInterface
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
class Courses_ApprovalActionCollegeRouterModel extends Requests_ApprovalActionModel
class Requests_ApprovalActionMajorRouterModel extends Requests_ApprovalActionModel
{
protected $_colleges = array();
protected $_majors = array();
public static function find($id)
{
......@@ -10,7 +10,7 @@ class Courses_ApprovalActionCollegeRouterModel extends Requests_ApprovalActionMo
$select = new Zend_Db_Select($db);
$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)) {
$select->where('a.approvalActionId IN(?)', $id);
} else {
......@@ -47,7 +47,7 @@ class Courses_ApprovalActionCollegeRouterModel extends Requests_ApprovalActionMo
$new = new self($data);
$new->_setClean();
$new->_data['className'] = 'ApprovalActionCollegeRouter';
$new->_data['className'] = 'ApprovalActionMajorRouter';
return $new;
}
......@@ -91,7 +91,7 @@ class Courses_ApprovalActionCollegeRouterModel extends Requests_ApprovalActionMo
{
$db = Zend_Registry::get('db');
$sql = 'INSERT INTO creqApprovalActionsCollegeRouter (approvalActionId) VALUES ';
$sql = 'INSERT INTO creqApprovalActionsMajorRouter (approvalActionId) VALUES ';
$sqlParts = array();
foreach ($models as $model) {
$sqlParts[] = $db->quoteInto('(?) ', $model->_data['approvalActionId']);
......@@ -102,16 +102,17 @@ class Courses_ApprovalActionCollegeRouterModel extends Requests_ApprovalActionMo
public function consider($requests)
{
$requestParentCourses = Courses_CourseModel::findParentOfRequest($requests);
$requestCurrentCourses = Courses_CourseModel::findLatestOfRequest($requests);
$modulesRequests = array();
foreach ($requests as $request) {
$course = $requestParentCourses[$request->getId()];
if (!$course) {
$course = $requestCurrentCourses[$request->getId()];
$modulesRequests[$request->getModule()][$request->getId()] = $request;
}
$college = $course->getCollege();
$request->setState($college);
foreach ($modulesRequests as $module => $moduleRequests) {
$model = ucfirst($module) . '_UtilityModel';
foreach ($model::getMajorsForRequests($moduleRequests) as $requestId => $major) {
$moduleRequests[$requestId]->setState($major);
}
}
Requests_RequestModel::save($requests);
Requests_ApprovalChainModel::advance($requests);
return $requests;
......@@ -129,11 +130,11 @@ class Courses_ApprovalActionCollegeRouterModel extends Requests_ApprovalActionMo
public function getResultStatusStrings()
{
$colleges = array();
foreach (Courses_CourseModel::getColleges() as $college) {
$colleges[$college] = $college;
$majors = array();
foreach (Bulletin_UtilityModel::getAllMajors() as $major) {
$majors[$major] = $major;
}
return $colleges;
return $majors;
}
}
......@@ -27,4 +27,14 @@ interface Creq_Model_UtilityInterface
* if not applicable.
*/
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