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

Add the ability to view historical queue periods in addition to the current...

Add the ability to view historical queue periods in addition to the current one. (In the queue mananger)
parent 4728f31c
No related branches found
No related tags found
No related merge requests found
<?php
$requestCourses = Courses_CourseModel::findLatestOfRequest($this->requests);
$requestCourses->orderBy('getCourseCode');
$requestVotes = Requests_ApproverVoteModel::findVotesForRequests($this->requests, new Zend_Date(), $this->action);
$cutoffDate = new Zend_Date();
$cutoffDate->subDay(50);
$requestUserVotes = array();
$userIds = array();
foreach ($requestVotes as $requestId => $votes) {
foreach ($votes as $voteId => $vote) {
if ($vote->getApprovalAction() != $this->action->getId()) {
continue;
}
if ($vote->getTime()->isEarlier($cutoffDate)) {
continue;
}
$userIds[$vote->getUser()] = $vote->getUser();
$requestUserVotes[$requestId][$vote->getUser()] = $vote->getVote();
$proposedCourses = Courses_CourseModel::findLatestOfRequest($this->requests);
$originalCourses = Courses_CourseModel::findParentOfRequest($this->requests);
$requestCourses = array();
foreach ($this->requests as $requset) {
$requestId = $requset->getId();
if ($originalCourses[$requestId]) {
$course = $originalCourses[$requestId];
} else {
$course = $proposedCourses[$requestId];
}
$requestCourses[$requestId] = $course;
}
$users = Auth_UserModel::find($userIds);
$users->orderBy('getLastName');
?>
<?php $this->headLink()->appendStylesheet($this->baseUrl() . '/css/courses/queue-manager/request-table.css', 'all'); ?>
$this->headLink()->appendStylesheet($this->baseUrl() . '/css/courses/queue-manager/request-table.css', 'all'); ?>
<table class="zentable primary" id="courseRequestTable">
<tr>
<th>Course Code</th>
<?php foreach ($users as $user) { ?>
<?php foreach ($this->users as $user) { ?>
<th><?php echo $user->getFirstName() . ' ' . $user->getLastName(); ?></th>
<?php } ?>
</tr>
<?php foreach ($requestCourses as $course) {
$request = $this->requests[$course->getRequest()];
$userVotes = $requestUserVotes[$request->getId()]; ?>
<?php foreach ($this->requests as $request) {
$course = $requestCourses[$request->getId()];
$userVotes = $this->requestUserVotes[$request->getId()]; ?>
<tr>
<td><?php echo $course->getCourseCode(); ?></td>
<?php foreach ($users as $user) {
<?php foreach ($this->users as $user) {
$vote = $userVotes[$user->getId()]; ?>
<td><?php echo $vote; ?></td>
<?php } ?>
......
......@@ -22,7 +22,19 @@ class Requests_QueueManagerController extends App_Controller_Action
{
$in = $this->_getAllParams();
$queue = Requests_ApprovalActionModel::find($in['id']);
$allRequests = Requests_RequestModel::findWithCurrentApprovalAction($queue);
$periodId = $in['period'];
if ($periodId > 0) {
$periods = $queue->getPeriods();
$period = $periods[$periodId];
$periodStart = $period['start']->addSecond(1);
$periodEnd = $period['end'];
$allRequests = Requests_ApprovalHistoryModel::findRequestsWithinTimeRangeAndApprovalAction(
$periodStart, $periodEnd, $queue
);
} else {
$allRequests = Requests_RequestModel::findWithCurrentApprovalAction($queue);
$periodEnd = new Zend_Date();
}
$moduleRequests = array();
foreach ($allRequests as $request) {
$module = $request->getModule();
......@@ -32,8 +44,36 @@ class Requests_QueueManagerController extends App_Controller_Action
$moduleRequests[$module][$request->getId()] = $request;
}
$periods = $queue->getPeriods();
$periodArray = array();
foreach ($periods as $periodId => $period) {
if ($period['end']) {
$periodArray[$periodId] = $period['end']->toString('YYYY-MM-dd');
} else {
$periodArray[-1] = 'Current';
}
}
$requestVotes = Requests_ApproverVoteModel::findVotesForRequests($allRequests, $periodEnd, $queue);
$requestUserVotes = array();
$userIds = array();
foreach ($requestVotes as $requestId => $votes) {
foreach ($votes as $voteId => $vote) {
$userIds[$vote->getUser()] = $vote->getUser();
$requestUserVotes[$requestId][$vote->getUser()] = $vote->getVote();
}
}
$users = Auth_UserModel::find($userIds);
$users->orderBy('getLastName');
$this->view->queue = $queue;
$this->view->currentPeriod = $in['period'];
$this->view->periods = $periodArray;
$this->view->moduleRequests = $moduleRequests;
$this->view->requestUserVotes = $requestUserVotes;
$this->view->users = $users;
}
public function editPostAction()
......
......@@ -41,6 +41,25 @@ class Requests_ApprovalActionQueueModel extends Requests_ApprovalActionModel
$date = $record['date'];
$objects[$objectId]->_data['dates'][] = new Zend_Date($date);
}
$select = new Zend_Db_Select($db);
$select->from(array('p' => 'creqApprovalActionsQueuePeriods'));
$select->order('startTime DESC');
if (Unl_Util::isArray($id)) {
$select->where('p.approvalAction IN(?)', $id);
} else {
$select->where('p.approvalAction = ?', $id);
}
$records = $db->query($select)->fetchAll();
foreach ($records as $record) {
$objectId = $record['approvalAction'];
$periodId = $record['approvalActionsQueuePeriodId'];
$objects[$objectId]->_data['periods'][$periodId] = array('start' => new Zend_Date($record['startTime']),
'end' => ($record['endTime'] ? new Zend_Date($record['endTime']) : NULL),
'id' => $record['approvalActionsQueuePeriodId']);
}
if (Unl_Util::isArray($objects)) {
return $objects;
......@@ -353,6 +372,11 @@ class Requests_ApprovalActionQueueModel extends Requests_ApprovalActionModel
$this->_data['dates'] = $dates;
}
public function getPeriods()
{
return $this->_data['periods'];
}
public function setExtendedData($data)
{
$this->_data['canChangeVote'] = $data['canChangeVote'];
......
......@@ -44,6 +44,24 @@ class Requests_ApprovalActionVoteModel extends Requests_ApprovalActionQueueModel
$objects[$objectId]->_data['dates'][] = new Zend_Date($date);
}
$select = new Zend_Db_Select($db);
$select->from(array('p' => 'creqApprovalActionsQueuePeriods'));
$select->order('startTime DESC');
if (Unl_Util::isArray($id)) {
$select->where('p.approvalAction IN(?)', $id);
} else {
$select->where('p.approvalAction = ?', $id);
}
$records = $db->query($select)->fetchAll();
foreach ($records as $record) {
$objectId = $record['approvalAction'];
$periodId = $record['approvalActionsQueuePeriodId'];
$objects[$objectId]->_data['periods'][$periodId] = array('start' => new Zend_Date($record['startTime']),
'end' => ($record['endTime'] ? new Zend_Date($record['endTime']) : NULL),
'id' => $record['approvalActionsQueuePeriodId']);
}
if (Unl_Util::isArray($objects)) {
return $objects;
} else {
......
<?php $this->layout()->breadcrumbs = array('Queue Manager: ' . $this->queue->getName()); ?>
<?php $this->headScript()->appendFile($this->baseUrl() . '/javascript/requests/queue-manager.js'); ?>
<script type="text/javascript">
queueManager.queueId = <?php echo $this->queue->getId(); ?>
</script>
Select period that ended on <?php echo $this->formSelect('period', $this->currentPeriod, NULL, $this->periods); ?>
<h3>Requests:</h3>
<?php
foreach ($this->moduleRequests as $module => $requests) {
echo $this->partial('queue-manager/request-table.phtml', $module, array('requests' => $requests, 'action' => $this->queue));
echo $this->partial('queue-manager/request-table.phtml', $module, array('requests' => $requests,
'action' => $this->queue,
'requestUserVotes' => $this->requestUserVotes,
'users' => $this->users));
}
?>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment