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

Have queue approvalActions create "periods" between each advance in order to...

Have queue approvalActions create "periods" between each advance in order to better keep track of votes.
parent 31a3a09a
No related branches found
No related tags found
No related merge requests found
...@@ -154,7 +154,8 @@ class Requests_ApprovalActionQueueModel extends Requests_ApprovalActionModel ...@@ -154,7 +154,8 @@ class Requests_ApprovalActionQueueModel extends Requests_ApprovalActionModel
static protected function _insert(Unl_Model_Collection $models) static protected function _insert(Unl_Model_Collection $models)
{ {
$db = Zend_Registry::get('db'); $db = Zend_Registry::get('db');
// Insert the queue row
$sql = 'INSERT INTO creqApprovalActionsQueue (approvalActionId, canChangeVote) VALUES '; $sql = 'INSERT INTO creqApprovalActionsQueue (approvalActionId, canChangeVote) VALUES ';
$sqlParts = array(); $sqlParts = array();
foreach ($models as $model) { foreach ($models as $model) {
...@@ -163,6 +164,18 @@ class Requests_ApprovalActionQueueModel extends Requests_ApprovalActionModel ...@@ -163,6 +164,18 @@ class Requests_ApprovalActionQueueModel extends Requests_ApprovalActionModel
} }
$sql .= implode(', ', $sqlParts); $sql .= implode(', ', $sqlParts);
$db->query($sql); $db->query($sql);
// Insert the initial queue period starting at the current time.
$sql = 'INSERT INTO creqApprovalActionsQueuePeriods (approvalAction, startTime) VALUES ';
$sqlParts = array();
foreach ($models as $model) {
$sqlParts[] = $db->quoteInto('(?, ', $model->_data['approvalActionId'])
. $db->quoteInto('?)' , time());
}
$sql .= implode(', ', $sqlParts);
$db->query($sql);
} }
static protected function _insertDates(array $models) static protected function _insertDates(array $models)
...@@ -248,6 +261,38 @@ class Requests_ApprovalActionQueueModel extends Requests_ApprovalActionModel ...@@ -248,6 +261,38 @@ class Requests_ApprovalActionQueueModel extends Requests_ApprovalActionModel
Requests_ApprovalChainModel::advance($requests); Requests_ApprovalChainModel::advance($requests);
Requests_ApprovalChainModel::consider($requests); Requests_ApprovalChainModel::consider($requests);
$select = new Zend_Db_Select($db);
$select->from(array('q' => 'creqApprovalActionsQueueDates'), array('approvalAction'));
$select->where('q.date <= ?', time());
$queueIds = array();
$records = $select->query()->fetchAll();
if (count($records) == 0) {
return;
}
foreach ($records as $record) {
$queueIds[] = $record['approvalAction'];
}
$sql = 'UPDATE creqApprovalActionsQueuePeriods '
. $db->quoteInto('SET endTime = ? ', time())
. 'WHERE endTime IS NULL '
. $db->quoteInto('AND approvalAction IN (?) ', $queueIds);
$db->query($sql);
$sql = 'INSERT INTO creqApprovalActionsQueuePeriods (approvalAction, startTime) VALUES ';
$sqlParts = array();
foreach ($queueIds as $queueId) {
$sqlParts[] = $db->quoteInto('(?, ', $queueId)
. $db->quoteInto('?)' , time());
}
$sql .= implode(', ', $sqlParts);
$db->query($sql);
$db->query($db->quoteInto('DELETE FROM creqApprovalActionsQueueDates WHERE date <= ?', time())); $db->query($db->quoteInto('DELETE FROM creqApprovalActionsQueueDates WHERE date <= ?', time()));
} }
......
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