Merged in dheeyi/processmaker/HOR-1547 (pull request #4680)

HOR-1547
This commit is contained in:
Julio Cesar Laura Avendaño
2016-08-04 14:32:00 -04:00
8 changed files with 185 additions and 10 deletions

View File

@@ -1054,6 +1054,7 @@ function sendNotifications()
setExecutionMessage("Resending Notifications");
setExecutionResultMessage("PROCESSING");
$notQueue = new \NotificationQueue();
$notQueue->checkIfCasesOpenForResendingNotification();
$notificationsAndroid = $notQueue->loadStatusDeviceType('pending', 'android');
if ($notificationsAndroid) {
setExecutionMessage("|-- Send Android's Notifications");

View File

@@ -27,6 +27,8 @@ class NotificationQueue extends BaseNotificationQueue
$this->setNotData($arrayData['NOT_DATA']);
$this->setNotStatus($arrayData['NOT_STATUS']);
$this->setNotSendDate('now');
$this->setAppUid($arrayData['APP_UID']);
$this->setDelIndex($arrayData['DEL_INDEX']);
if ($this->validate()) {
$cnn->begin();
@@ -62,6 +64,40 @@ class NotificationQueue extends BaseNotificationQueue
return $notifications;
}
/**
* This method changes the state of a notification when the case ended before running the cron.php
*/
public function checkIfCasesOpenForResendingNotification()
{
$arrayCondition = array();
$criteria = new Criteria();
$criteria->clearSelectColumns();
$criteria->addSelectColumn(NotificationQueuePeer::APP_UID);
$criteria->addSelectColumn(NotificationQueuePeer::DEL_INDEX);
$criteria->addSelectColumn(NotificationQueuePeer::NOT_UID);
$criteria->add(AppDelegationPeer::DEL_FINISH_DATE, null, Criteria::ISNOTNULL);
$arrayCondition[] = array(NotificationQueuePeer::APP_UID, AppDelegationPeer::APP_UID, Criteria::EQUAL);
$arrayCondition[] = array(NotificationQueuePeer::DEL_INDEX, AppDelegationPeer::DEL_INDEX, Criteria::EQUAL);
$criteria->addJoinMC($arrayCondition, Criteria::LEFT_JOIN);
$rs = NotificationQueuePeer::doSelectRS($criteria);
$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$notUID = array();
while ($rs->next()) {
$row = $rs->getRow();
if ($row['DEL_INDEX'] != 0 && $row['APP_UID'] != '') {
array_push($notUID, $row['NOT_UID']);
}
}
$criteriaSet = new Criteria("workflow");
$criteriaSet->add(NotificationQueuePeer::NOT_STATUS, 'sent');
$criteriaSet->add(NotificationQueuePeer::NOT_SEND_DATE, date('Y-m-d H:i:s'));
$criteriaWhere = new Criteria("workflow");
$criteriaWhere->add(NotificationQueuePeer::NOT_UID, $notUID, Criteria::IN);
\BasePeer::doUpdate($criteriaWhere, $criteriaSet, Propel::getConnection("workflow"));
}
public function loadStatusDeviceType($status, $devType)
{
try {

View File

@@ -79,6 +79,10 @@ class NotificationQueueMapBuilder
$tMap->addColumn('NOT_SEND_DATE', 'NotSendDate', 'int', CreoleTypes::TIMESTAMP, true, null);
$tMap->addColumn('APP_UID', 'AppUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('DEL_INDEX', 'DelIndex', 'int', CreoleTypes::INTEGER, true, null);
} // doBuild()
} // NotificationQueueMapBuilder

View File

@@ -69,6 +69,18 @@ abstract class BaseNotificationQueue extends BaseObject implements Persistent
*/
protected $not_send_date;
/**
* The value for the app_uid field.
* @var string
*/
protected $app_uid = '';
/**
* The value for the del_index field.
* @var int
*/
protected $del_index = 0;
/**
* Flag to prevent endless save loop, if this object is referenced
* by another object which falls in this transaction.
@@ -181,6 +193,28 @@ abstract class BaseNotificationQueue extends BaseObject implements Persistent
}
}
/**
* Get the [app_uid] column value.
*
* @return string
*/
public function getAppUid()
{
return $this->app_uid;
}
/**
* Get the [del_index] column value.
*
* @return int
*/
public function getDelIndex()
{
return $this->del_index;
}
/**
* Set the value of [not_uid] column.
*
@@ -342,6 +376,50 @@ abstract class BaseNotificationQueue extends BaseObject implements Persistent
} // setNotSendDate()
/**
* Set the value of [app_uid] column.
*
* @param string $v new value
* @return void
*/
public function setAppUid($v)
{
// Since the native PHP type for this column is string,
// we will cast the input to a string (if it is not).
if ($v !== null && !is_string($v)) {
$v = (string) $v;
}
if ($this->app_uid !== $v || $v === '') {
$this->app_uid = $v;
$this->modifiedColumns[] = NotificationQueuePeer::APP_UID;
}
} // setAppUid()
/**
* Set the value of [del_index] column.
*
* @param int $v new value
* @return void
*/
public function setDelIndex($v)
{
// Since the native PHP type for this column is integer,
// we will cast the input value to an int (if it is not).
if ($v !== null && !is_int($v) && is_numeric($v)) {
$v = (int) $v;
}
if ($this->del_index !== $v || $v === 0) {
$this->del_index = $v;
$this->modifiedColumns[] = NotificationQueuePeer::DEL_INDEX;
}
} // setDelIndex()
/**
* Hydrates (populates) the object variables with values from the database resultset.
*
@@ -373,12 +451,16 @@ abstract class BaseNotificationQueue extends BaseObject implements Persistent
$this->not_send_date = $rs->getTimestamp($startcol + 6, null);
$this->app_uid = $rs->getString($startcol + 7);
$this->del_index = $rs->getInt($startcol + 8);
$this->resetModified();
$this->setNew(false);
// FIXME - using NUM_COLUMNS may be clearer.
return $startcol + 7; // 7 = NotificationQueuePeer::NUM_COLUMNS - NotificationQueuePeer::NUM_LAZY_LOAD_COLUMNS).
return $startcol + 9; // 9 = NotificationQueuePeer::NUM_COLUMNS - NotificationQueuePeer::NUM_LAZY_LOAD_COLUMNS).
} catch (Exception $e) {
throw new PropelException("Error populating NotificationQueue object", $e);
@@ -603,6 +685,12 @@ abstract class BaseNotificationQueue extends BaseObject implements Persistent
case 6:
return $this->getNotSendDate();
break;
case 7:
return $this->getAppUid();
break;
case 8:
return $this->getDelIndex();
break;
default:
return null;
break;
@@ -630,6 +718,8 @@ abstract class BaseNotificationQueue extends BaseObject implements Persistent
$keys[4] => $this->getNotData(),
$keys[5] => $this->getNotStatus(),
$keys[6] => $this->getNotSendDate(),
$keys[7] => $this->getAppUid(),
$keys[8] => $this->getDelIndex(),
);
return $result;
}
@@ -682,6 +772,12 @@ abstract class BaseNotificationQueue extends BaseObject implements Persistent
case 6:
$this->setNotSendDate($value);
break;
case 7:
$this->setAppUid($value);
break;
case 8:
$this->setDelIndex($value);
break;
} // switch()
}
@@ -733,6 +829,14 @@ abstract class BaseNotificationQueue extends BaseObject implements Persistent
$this->setNotSendDate($arr[$keys[6]]);
}
if (array_key_exists($keys[7], $arr)) {
$this->setAppUid($arr[$keys[7]]);
}
if (array_key_exists($keys[8], $arr)) {
$this->setDelIndex($arr[$keys[8]]);
}
}
/**
@@ -772,6 +876,14 @@ abstract class BaseNotificationQueue extends BaseObject implements Persistent
$criteria->add(NotificationQueuePeer::NOT_SEND_DATE, $this->not_send_date);
}
if ($this->isColumnModified(NotificationQueuePeer::APP_UID)) {
$criteria->add(NotificationQueuePeer::APP_UID, $this->app_uid);
}
if ($this->isColumnModified(NotificationQueuePeer::DEL_INDEX)) {
$criteria->add(NotificationQueuePeer::DEL_INDEX, $this->del_index);
}
return $criteria;
}
@@ -838,6 +950,10 @@ abstract class BaseNotificationQueue extends BaseObject implements Persistent
$copyObj->setNotSendDate($this->not_send_date);
$copyObj->setAppUid($this->app_uid);
$copyObj->setDelIndex($this->del_index);
$copyObj->setNew(true);

View File

@@ -25,7 +25,7 @@ abstract class BaseNotificationQueuePeer
const CLASS_DEFAULT = 'classes.model.NotificationQueue';
/** The total number of columns. */
const NUM_COLUMNS = 7;
const NUM_COLUMNS = 9;
/** The number of lazy-loaded columns. */
const NUM_LAZY_LOAD_COLUMNS = 0;
@@ -52,6 +52,12 @@ abstract class BaseNotificationQueuePeer
/** the column name for the NOT_SEND_DATE field */
const NOT_SEND_DATE = 'NOTIFICATION_QUEUE.NOT_SEND_DATE';
/** the column name for the APP_UID field */
const APP_UID = 'NOTIFICATION_QUEUE.APP_UID';
/** the column name for the DEL_INDEX field */
const DEL_INDEX = 'NOTIFICATION_QUEUE.DEL_INDEX';
/** The PHP to DB Name Mapping */
private static $phpNameMap = null;
@@ -63,10 +69,10 @@ abstract class BaseNotificationQueuePeer
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
*/
private static $fieldNames = array (
BasePeer::TYPE_PHPNAME => array ('NotUid', 'DevType', 'DevUid', 'NotMsg', 'NotData', 'NotStatus', 'NotSendDate', ),
BasePeer::TYPE_COLNAME => array (NotificationQueuePeer::NOT_UID, NotificationQueuePeer::DEV_TYPE, NotificationQueuePeer::DEV_UID, NotificationQueuePeer::NOT_MSG, NotificationQueuePeer::NOT_DATA, NotificationQueuePeer::NOT_STATUS, NotificationQueuePeer::NOT_SEND_DATE, ),
BasePeer::TYPE_FIELDNAME => array ('NOT_UID', 'DEV_TYPE', 'DEV_UID', 'NOT_MSG', 'NOT_DATA', 'NOT_STATUS', 'NOT_SEND_DATE', ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, )
BasePeer::TYPE_PHPNAME => array ('NotUid', 'DevType', 'DevUid', 'NotMsg', 'NotData', 'NotStatus', 'NotSendDate', 'AppUid', 'DelIndex', ),
BasePeer::TYPE_COLNAME => array (NotificationQueuePeer::NOT_UID, NotificationQueuePeer::DEV_TYPE, NotificationQueuePeer::DEV_UID, NotificationQueuePeer::NOT_MSG, NotificationQueuePeer::NOT_DATA, NotificationQueuePeer::NOT_STATUS, NotificationQueuePeer::NOT_SEND_DATE, NotificationQueuePeer::APP_UID, NotificationQueuePeer::DEL_INDEX, ),
BasePeer::TYPE_FIELDNAME => array ('NOT_UID', 'DEV_TYPE', 'DEV_UID', 'NOT_MSG', 'NOT_DATA', 'NOT_STATUS', 'NOT_SEND_DATE', 'APP_UID', 'DEL_INDEX', ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, )
);
/**
@@ -76,10 +82,10 @@ abstract class BaseNotificationQueuePeer
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
*/
private static $fieldKeys = array (
BasePeer::TYPE_PHPNAME => array ('NotUid' => 0, 'DevType' => 1, 'DevUid' => 2, 'NotMsg' => 3, 'NotData' => 4, 'NotStatus' => 5, 'NotSendDate' => 6, ),
BasePeer::TYPE_COLNAME => array (NotificationQueuePeer::NOT_UID => 0, NotificationQueuePeer::DEV_TYPE => 1, NotificationQueuePeer::DEV_UID => 2, NotificationQueuePeer::NOT_MSG => 3, NotificationQueuePeer::NOT_DATA => 4, NotificationQueuePeer::NOT_STATUS => 5, NotificationQueuePeer::NOT_SEND_DATE => 6, ),
BasePeer::TYPE_FIELDNAME => array ('NOT_UID' => 0, 'DEV_TYPE' => 1, 'DEV_UID' => 2, 'NOT_MSG' => 3, 'NOT_DATA' => 4, 'NOT_STATUS' => 5, 'NOT_SEND_DATE' => 6, ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, )
BasePeer::TYPE_PHPNAME => array ('NotUid' => 0, 'DevType' => 1, 'DevUid' => 2, 'NotMsg' => 3, 'NotData' => 4, 'NotStatus' => 5, 'NotSendDate' => 6, 'AppUid' => 7, 'DelIndex' => 8, ),
BasePeer::TYPE_COLNAME => array (NotificationQueuePeer::NOT_UID => 0, NotificationQueuePeer::DEV_TYPE => 1, NotificationQueuePeer::DEV_UID => 2, NotificationQueuePeer::NOT_MSG => 3, NotificationQueuePeer::NOT_DATA => 4, NotificationQueuePeer::NOT_STATUS => 5, NotificationQueuePeer::NOT_SEND_DATE => 6, NotificationQueuePeer::APP_UID => 7, NotificationQueuePeer::DEL_INDEX => 8, ),
BasePeer::TYPE_FIELDNAME => array ('NOT_UID' => 0, 'DEV_TYPE' => 1, 'DEV_UID' => 2, 'NOT_MSG' => 3, 'NOT_DATA' => 4, 'NOT_STATUS' => 5, 'NOT_SEND_DATE' => 6, 'APP_UID' => 7, 'DEL_INDEX' => 8, ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, )
);
/**
@@ -194,6 +200,10 @@ abstract class BaseNotificationQueuePeer
$criteria->addSelectColumn(NotificationQueuePeer::NOT_SEND_DATE);
$criteria->addSelectColumn(NotificationQueuePeer::APP_UID);
$criteria->addSelectColumn(NotificationQueuePeer::DEL_INDEX);
}
const COUNT = 'COUNT(NOTIFICATION_QUEUE.NOT_UID)';

View File

@@ -5377,6 +5377,8 @@
<column name="NOT_DATA" type="LONGVARCHAR" required="true" />
<column name="NOT_STATUS" type="VARCHAR" size="150" required="true"/>
<column name="NOT_SEND_DATE" type="TIMESTAMP" required="true" />
<column name="APP_UID" type="VARCHAR" size="32" required="true" default=""/>
<column name="DEL_INDEX" type="INTEGER" required="true" default="0"/>
<index name="indexNotStatus">
<index-column name="NOT_STATUS"/>
</index>

View File

@@ -2997,6 +2997,8 @@ CREATE TABLE `NOTIFICATION_QUEUE`
`NOT_DATA` MEDIUMTEXT NOT NULL,
`NOT_STATUS` VARCHAR(150) NOT NULL,
`NOT_SEND_DATE` DATETIME NOT NULL,
`APP_UID` VARCHAR(32) default '' NOT NULL,
`DEL_INDEX` INTEGER default 0 NOT NULL,
PRIMARY KEY (`NOT_UID`),
KEY `indexNotStatus`(`NOT_STATUS`)
)ENGINE=InnoDB ;

View File

@@ -226,6 +226,8 @@ class NotificationDevice
$arrayData['NOT_MSG'] = $message;
$arrayData['NOT_DATA'] = serialize($data);
$arrayData['NOT_STATUS'] = "pending";
$arrayData['APP_UID'] = $appFields['APP_UID'];
$arrayData['DEL_INDEX'] = $iNewDelIndex;
$notQueue = new \NotificationQueue();
$notQueue->create($arrayData);
}
@@ -237,6 +239,8 @@ class NotificationDevice
$arrayData['NOT_MSG'] = $message;
$arrayData['NOT_DATA'] = serialize($data);
$arrayData['NOT_STATUS'] = "pending";
$arrayData['APP_UID'] = $appFields['APP_UID'];
$arrayData['DEL_INDEX'] = $iNewDelIndex;
$notQueue = new \NotificationQueue();
$notQueue->create($arrayData);
}