From 6d73bffea2e8c22e50e9665e2e9d8aeda277abe5 Mon Sep 17 00:00:00 2001 From: Brayan Pereyra Date: Thu, 19 Mar 2015 11:12:55 -0400 Subject: [PATCH] Correcion de migracion de casos a nuevos listados --- workflow/engine/classes/class.wsTools.php | 69 +++++++++++-------- workflow/engine/classes/model/ListInbox.php | 12 +++- workflow/engine/classes/model/ListMyInbox.php | 1 + .../classes/model/ListParticipatedLast.php | 4 +- .../map/ListParticipatedLastMapBuilder.php | 2 +- .../model/om/BaseListParticipatedLast.php | 9 ++- .../model/om/BaseListParticipatedLastPeer.php | 9 ++- workflow/engine/config/schema.xml | 2 +- workflow/engine/data/mysql/schema.sql | 2 +- .../src/ProcessMaker/BusinessModel/Lists.php | 1 + 10 files changed, 74 insertions(+), 37 deletions(-) diff --git a/workflow/engine/classes/class.wsTools.php b/workflow/engine/classes/class.wsTools.php index 08bc6c346..4a075a6f5 100755 --- a/workflow/engine/classes/class.wsTools.php +++ b/workflow/engine/classes/class.wsTools.php @@ -1842,12 +1842,14 @@ class workspaceTools throw $e; } } + /** * Migrate all cases to New list * * return all LIST TABLES with data */ - public function migrateList ($workSpace){ + public function migrateList ($workSpace) + { $this->initPropel(true); $appCache = new AppCacheView(); G::LoadClass("case"); @@ -1877,7 +1879,7 @@ class workspaceTools $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); //Insert new data LIST_COMPLETED while ($rsCriteria->next()) { - $row = $rsCriteria->getRow(); + $row = $rsCriteria->getRow(); $listCompleted = new ListCompleted(); $listCompleted->remove($row["APP_UID"]); $listCompleted->setDeleted(false); @@ -1887,32 +1889,39 @@ class workspaceTools //Select data TO_DO OR DRAFT $inbCriteria = $appCache->getSelAllColumns(); - $inbCriteria->add(AppCacheViewPeer::APP_STATUS, "CANCELLED", CRITERIA::NOT_EQUAL); $rsCriteria = AppCacheViewPeer::doSelectRS($inbCriteria); $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); + //Insert new data LIST_INBOX while ($rsCriteria->next()) { - $row = $rsCriteria->getRow(); - if($row["DEL_THREAD_STATUS"] == 'OPEN'){ - $listInbox = new ListInbox(); - $listInbox->remove($row["APP_UID"],$row["DEL_INDEX"]); - $listInbox->setDeleted(false); - $listInbox->create($row); - } else { - // create participated List when the thread is CLOSED - $listParticipatedHistory = new ListParticipatedHistory(); - $listParticipatedHistory->remove($row['APP_UID'],$row['DEL_INDEX']); - $listParticipatedHistory = new ListParticipatedHistory(); - $listParticipatedHistory->create($row); - $listParticipatedLast = new ListParticipatedLast(); - $listParticipatedLast->remove($row['APP_UID'], $row['USR_UID']); - $listParticipatedLast = new ListParticipatedLast(); - $listParticipatedLast->create($row); - $listParticipatedLast = new ListParticipatedLast(); - $listParticipatedLast->refresh($row); - } + $row = $rsCriteria->getRow(); + $isSelfService = ($row['USR_UID'] == '') ? true : false; + if($row["DEL_THREAD_STATUS"] == 'OPEN'){ + $row["DEL_PREVIOUS_USR_UID"] = $row["PREVIOUS_USR_UID"]; + $listInbox = new ListInbox(); + $listInbox->remove($row["APP_UID"],$row["DEL_INDEX"]); + $listInbox->setDeleted(false); + $listInbox->create($row, $isSelfService); + } else { + // create participated List when the thread is CLOSED + $listParticipatedHistory = new ListParticipatedHistory(); + $listParticipatedHistory->remove($row['APP_UID'], $row['DEL_INDEX']); + $listParticipatedHistory = new ListParticipatedHistory(); + $listParticipatedHistory->create($row); + + $oCriteria = new Criteria('workflow'); + $oCriteria->add(ListParticipatedLastPeer::APP_UID, $row['APP_UID']); + $oCriteria->add(ListParticipatedLastPeer::USR_UID, $row['USR_UID']); + ListParticipatedLastPeer::doDelete($oCriteria); + + $listParticipatedLast = new ListParticipatedLast(); + $listParticipatedLast->create($row); + $listParticipatedLast = new ListParticipatedLast(); + $listParticipatedLast->refresh($row); + } } + CLI::logging("> Completed table LIST_INBOX\n"); //With this List is populated the LIST_PARTICIPATED_HISTORY and LIST_PARTICIPATED_LAST CLI::logging("> Completed table LIST_PARTICIPATED_HISTORY\n"); @@ -1922,7 +1931,7 @@ class workspaceTools $myiCriteria = $appCache->getSelAllColumns(); $myiCriteria->add(AppCacheViewPeer::DEL_INDEX, "1", CRITERIA::EQUAL); $rsCriteria = AppCacheViewPeer::doSelectRS($myiCriteria); - $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); //Insert new data LIST_MY_INBOX while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); @@ -1939,7 +1948,13 @@ class workspaceTools $delaycriteria->addSelectColumn(AppDelayPeer::PRO_UID); $delaycriteria->addSelectColumn(AppDelayPeer::APP_DEL_INDEX); $delaycriteria->addSelectColumn(AppCacheViewPeer::APP_NUMBER); - $delaycriteria->addJoin( AppCacheViewPeer::APP_UID, AppDelayPeer::APP_UID, Criteria::INNER_JOIN ); + $delaycriteria->addSelectColumn(AppCacheViewPeer::USR_UID); + $delaycriteria->addSelectColumn(AppCacheViewPeer::APP_STATUS); + $delaycriteria->addSelectColumn(AppCacheViewPeer::TAS_UID); + + $delaycriteria->addJoin( AppCacheViewPeer::APP_UID, AppDelayPeer::APP_UID . ' AND ' . AppCacheViewPeer::DEL_INDEX . ' = ' . AppDelayPeer::APP_DEL_INDEX, Criteria::INNER_JOIN ); + $delaycriteria->add(AppDelayPeer::APP_DISABLE_ACTION_USER, "0", CRITERIA::EQUAL); + $delaycriteria->add(AppDelayPeer::APP_TYPE, "PAUSE", CRITERIA::EQUAL); $rsCriteria = AppDelayPeer::doSelectRS($delaycriteria); $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); //Insert new data LIST_PAUSED @@ -1948,7 +1963,6 @@ class workspaceTools $data = $row; $data["DEL_INDEX"] = $row["APP_DEL_INDEX"]; $listPaused = new ListPaused(); - $listPaused->remove($data["APP_UID"],$data["DEL_INDEX"]); $listPaused->setDeleted(false); $listPaused->create($data); } @@ -1965,7 +1979,7 @@ class workspaceTools $del->doDeleteAll(); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); - $listUnassigned = new ListUnassigned(); + $listUnassigned = new ListUnassigned(); $unaUid = $listUnassigned->generateData($row["APP_UID"],$row["PREVIOUS_USR_UID"]); } CLI::logging("> Completed table LIST_UNASSIGNED\n"); @@ -2005,7 +2019,8 @@ class workspaceTools } $this->listFirstExecution('insert'); return true; - } + } + /** * This function checks if List tables are going to migrated * diff --git a/workflow/engine/classes/model/ListInbox.php b/workflow/engine/classes/model/ListInbox.php index 05e2cd51f..68c1ac873 100644 --- a/workflow/engine/classes/model/ListInbox.php +++ b/workflow/engine/classes/model/ListInbox.php @@ -49,8 +49,11 @@ class ListInbox extends BaseListInbox // remove and create participated last if (!$isSelfService) { - $listParticipatedLast = new ListParticipatedLast(); - $listParticipatedLast->remove($data['APP_UID'], $data['USR_UID']); + $oCriteria = new Criteria('workflow'); + $oCriteria->add(ListParticipatedLastPeer::APP_UID, $data['APP_UID']); + $oCriteria->add(ListParticipatedLastPeer::USR_UID, $data['USR_UID']); + ListParticipatedLastPeer::doDelete($oCriteria); + $listParticipatedLast = new ListParticipatedLast(); $listParticipatedLast->create($data); $listParticipatedLast = new ListParticipatedLast(); @@ -367,6 +370,11 @@ class ListInbox extends BaseListInbox { $criteria = new Criteria(); $criteria->add( ListInboxPeer::USR_UID, $usr_uid, Criteria::EQUAL ); + if ($filters['action'] == 'draft') { + $criteria->add( ListInboxPeer::APP_STATUS, 'DRAFT', Criteria::EQUAL ); + } else { + $criteria->add( ListInboxPeer::APP_STATUS, 'TO_DO', Criteria::EQUAL ); + } self::loadFilters($criteria, $filters); $total = ListInboxPeer::doCount( $criteria ); return (int)$total; diff --git a/workflow/engine/classes/model/ListMyInbox.php b/workflow/engine/classes/model/ListMyInbox.php index 5a5aa3f36..3541d848d 100644 --- a/workflow/engine/classes/model/ListMyInbox.php +++ b/workflow/engine/classes/model/ListMyInbox.php @@ -123,6 +123,7 @@ class ListMyInbox extends BaseListMyInbox if ($data['DEL_INDEX'] == 1 && $data['APP_STATUS'] == 'TO_DO') { $data['APP_CREATE_DATE'] = $data['APP_UPDATE_DATE']; + $this->remove($data['APP_UID'], $data['USR_UID']); $this->create($data); } else { unset($data['USR_UID']); diff --git a/workflow/engine/classes/model/ListParticipatedLast.php b/workflow/engine/classes/model/ListParticipatedLast.php index ebcf6d959..72bea4e91 100644 --- a/workflow/engine/classes/model/ListParticipatedLast.php +++ b/workflow/engine/classes/model/ListParticipatedLast.php @@ -143,9 +143,9 @@ class ListParticipatedLast extends BaseListParticipatedLast * @throws type * */ - public function remove ($app_uid, $usr_uid) + public function remove ($app_uid, $usr_uid, $del_index) { - $existField = ListParticipatedLastPeer::retrieveByPK($app_uid, $usr_uid); + $existField = ListParticipatedLastPeer::retrieveByPK($app_uid, $usr_uid, $del_index); if (! is_null( $existField )) { $users = new Users(); $users->refreshTotal($usr_uid, 'removed', 'participated'); diff --git a/workflow/engine/classes/model/map/ListParticipatedLastMapBuilder.php b/workflow/engine/classes/model/map/ListParticipatedLastMapBuilder.php index a67b28884..62e4c7701 100644 --- a/workflow/engine/classes/model/map/ListParticipatedLastMapBuilder.php +++ b/workflow/engine/classes/model/map/ListParticipatedLastMapBuilder.php @@ -69,7 +69,7 @@ class ListParticipatedLastMapBuilder $tMap->addPrimaryKey('USR_UID', 'UsrUid', 'string', CreoleTypes::VARCHAR, true, 32); - $tMap->addColumn('DEL_INDEX', 'DelIndex', 'int', CreoleTypes::INTEGER, true, null); + $tMap->addPrimaryKey('DEL_INDEX', 'DelIndex', 'int', CreoleTypes::INTEGER, true, null); $tMap->addColumn('TAS_UID', 'TasUid', 'string', CreoleTypes::VARCHAR, true, 32); diff --git a/workflow/engine/classes/model/om/BaseListParticipatedLast.php b/workflow/engine/classes/model/om/BaseListParticipatedLast.php index 4344870fb..c06821fa7 100644 --- a/workflow/engine/classes/model/om/BaseListParticipatedLast.php +++ b/workflow/engine/classes/model/om/BaseListParticipatedLast.php @@ -1686,6 +1686,7 @@ abstract class BaseListParticipatedLast extends BaseObject implements Persistent $criteria->add(ListParticipatedLastPeer::APP_UID, $this->app_uid); $criteria->add(ListParticipatedLastPeer::USR_UID, $this->usr_uid); + $criteria->add(ListParticipatedLastPeer::DEL_INDEX, $this->del_index); return $criteria; } @@ -1703,6 +1704,8 @@ abstract class BaseListParticipatedLast extends BaseObject implements Persistent $pks[1] = $this->getUsrUid(); + $pks[2] = $this->getDelIndex(); + return $pks; } @@ -1719,6 +1722,8 @@ abstract class BaseListParticipatedLast extends BaseObject implements Persistent $this->setUsrUid($keys[1]); + $this->setDelIndex($keys[2]); + } /** @@ -1734,8 +1739,6 @@ abstract class BaseListParticipatedLast extends BaseObject implements Persistent public function copyInto($copyObj, $deepCopy = false) { - $copyObj->setDelIndex($this->del_index); - $copyObj->setTasUid($this->tas_uid); $copyObj->setProUid($this->pro_uid); @@ -1781,6 +1784,8 @@ abstract class BaseListParticipatedLast extends BaseObject implements Persistent $copyObj->setUsrUid(''); // this is a pkey column, so set to default value + $copyObj->setDelIndex('0'); // this is a pkey column, so set to default value + } /** diff --git a/workflow/engine/classes/model/om/BaseListParticipatedLastPeer.php b/workflow/engine/classes/model/om/BaseListParticipatedLastPeer.php index 777982e33..26fe8f6f3 100644 --- a/workflow/engine/classes/model/om/BaseListParticipatedLastPeer.php +++ b/workflow/engine/classes/model/om/BaseListParticipatedLastPeer.php @@ -487,6 +487,9 @@ abstract class BaseListParticipatedLastPeer $comparison = $criteria->getComparison(ListParticipatedLastPeer::USR_UID); $selectCriteria->add(ListParticipatedLastPeer::USR_UID, $criteria->remove(ListParticipatedLastPeer::USR_UID), $comparison); + $comparison = $criteria->getComparison(ListParticipatedLastPeer::DEL_INDEX); + $selectCriteria->add(ListParticipatedLastPeer::DEL_INDEX, $criteria->remove(ListParticipatedLastPeer::DEL_INDEX), $comparison); + } else { $criteria = $values->buildCriteria(); // gets full criteria $selectCriteria = $values->buildPkeyCriteria(); // gets criteria w/ primary key(s) @@ -560,10 +563,12 @@ abstract class BaseListParticipatedLastPeer $vals[0][] = $value[0]; $vals[1][] = $value[1]; + $vals[2][] = $value[2]; } $criteria->add(ListParticipatedLastPeer::APP_UID, $vals[0], Criteria::IN); $criteria->add(ListParticipatedLastPeer::USR_UID, $vals[1], Criteria::IN); + $criteria->add(ListParticipatedLastPeer::DEL_INDEX, $vals[2], Criteria::IN); } // Set the correct dbName @@ -626,10 +631,11 @@ abstract class BaseListParticipatedLastPeer * Retrieve object using using composite pkey values. * @param string $app_uid * @param string $usr_uid + * @param int $del_index * @param Connection $con * @return ListParticipatedLast */ - public static function retrieveByPK($app_uid, $usr_uid, $con = null) + public static function retrieveByPK($app_uid, $usr_uid, $del_index, $con = null) { if ($con === null) { $con = Propel::getConnection(self::DATABASE_NAME); @@ -637,6 +643,7 @@ abstract class BaseListParticipatedLastPeer $criteria = new Criteria(); $criteria->add(ListParticipatedLastPeer::APP_UID, $app_uid); $criteria->add(ListParticipatedLastPeer::USR_UID, $usr_uid); + $criteria->add(ListParticipatedLastPeer::DEL_INDEX, $del_index); $v = ListParticipatedLastPeer::doSelect($criteria, $con); return !empty($v) ? $v[0] : null; diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml index 73b3e8fde..e06aaf39a 100755 --- a/workflow/engine/config/schema.xml +++ b/workflow/engine/config/schema.xml @@ -4017,7 +4017,7 @@ - + diff --git a/workflow/engine/data/mysql/schema.sql b/workflow/engine/data/mysql/schema.sql index 221be5aaf..a5635ded6 100755 --- a/workflow/engine/data/mysql/schema.sql +++ b/workflow/engine/data/mysql/schema.sql @@ -2285,7 +2285,7 @@ CREATE TABLE `LIST_PARTICIPATED_LAST` `DEL_DUE_DATE` DATETIME, `DEL_PRIORITY` VARCHAR(32) default '3' NOT NULL, `DEL_THREAD_STATUS` VARCHAR(32) default 'OPEN' NOT NULL, - PRIMARY KEY (`APP_UID`,`USR_UID`) + PRIMARY KEY (`APP_UID`,`USR_UID`,`DEL_INDEX`) )ENGINE=InnoDB DEFAULT CHARSET='utf8' COMMENT='Participated last list'; #----------------------------------------------------------------------------- #-- LIST_COMPLETED diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Lists.php b/workflow/engine/src/ProcessMaker/BusinessModel/Lists.php index 6ed830437..5c936080c 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Lists.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Lists.php @@ -176,6 +176,7 @@ class Lists { $filtersData['date_to'] = $filters["dateTo"]; $response['filters'] = $filtersData; $response['data'] = $result; + $filtersData['action'] = $filters["action"]; $response['totalCount'] = $list->countTotal($userUid, $filtersData); } else { $response = $result;