Files
luos/workflow/engine/classes/model/AppSequence.php

91 lines
2.8 KiB
PHP
Raw Normal View History

<?php
require_once 'classes/model/om/BaseAppSequence.php';
/**
* Skeleton subclass for representing a row from the 'APP_SEQUENCE' table.
*
*
*
* You should add additional methods to this class to meet the
* application requirements. This class will only be generated as
* long as it does not already exist in the output directory.
*
* @package classes.model
*/
class AppSequence extends BaseAppSequence {
2020-10-26 22:14:48 +00:00
const APP_TYPE_NORMAL = 'NORMAL';
const APP_TYPE_WEB_ENTRY = 'WEB_ENTRY';
/**
* Get an Set new sequence number
*
2020-10-26 22:14:48 +00:00
* @param string $sequenceType
* @return mixed
* @throws Exception
*/
2020-10-26 22:14:48 +00:00
public function sequenceNumber($sequenceType)
{
try {
$con = Propel::getConnection('workflow');
$stmt = $con->createStatement();
2020-10-26 22:14:48 +00:00
$sql = "UPDATE APP_SEQUENCE SET ID=LAST_INSERT_ID(ID+1) WHERE APP_TYPE = '{$sequenceType}'";
$stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC);
$sql = "SELECT LAST_INSERT_ID()";
$rs = $stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC);
$rs->next();
$row = $rs->getRow();
$result = $row['LAST_INSERT_ID()'];
2020-10-26 22:14:48 +00:00
// If the type is WEB_ENTRY, we need to change to negative
if ($sequenceType === 'WEB_ENTRY') {
$result *= -1;
}
} catch (Exception $e) {
throw ($e);
}
return $result;
}
/**
* Update sequence number
*
2020-11-03 20:59:37 +00:00
* @param int $number
* @param string $sequenceType
*
* @throws Exception
*/
2020-11-03 20:59:37 +00:00
public function updateSequenceNumber($number, $sequenceType = AppSequence::APP_TYPE_NORMAL)
{
try {
2020-11-03 20:59:37 +00:00
// Get the current connection
$connection = Propel::getConnection('workflow');
// Create a statement instance
$statement = $connection->createStatement();
// Get the record according to the sequence type
$criteria = new Criteria();
$criteria->add(AppSequencePeer::APP_TYPE, $sequenceType);
$rsCriteria = AppSequencePeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$rsCriteria->next();
$row = $rsCriteria->getRow();
// Insert/Update sequence table with the number sent
if ($row) {
2020-11-03 20:59:37 +00:00
$sql = "UPDATE APP_SEQUENCE SET ID=LAST_INSERT_ID('{$number}') WHERE APP_TYPE = '{$sequenceType}'";
} else {
2020-11-03 20:59:37 +00:00
$sql = "INSERT INTO APP_SEQUENCE (ID, APP_TYPE) VALUES ('{$number}', '{$sequenceType}')";
}
2020-11-03 20:59:37 +00:00
$statement->executeQuery($sql, ResultSet::FETCHMODE_ASSOC);
} catch (Exception $e) {
throw ($e);
}
}
} // AppSequence