diff --git a/workflow/engine/classes/model/AppNotes.php b/workflow/engine/classes/model/AppNotes.php index 012162e86..394b21dde 100755 --- a/workflow/engine/classes/model/AppNotes.php +++ b/workflow/engine/classes/model/AppNotes.php @@ -15,12 +15,17 @@ */ class AppNotes extends BaseAppNotes { - public function getNotesList ($appUid, $usrUid = '', $start = '', $limit = '') + public function getNotesList ( + $appUid, + $usrUid = '', + $start = '', + $limit = 25, + $sort = 'APP_NOTES.NOTE_DATE', + $dir = 'DESC', + $dateFrom = '', + $dateTo = '', + $search = '') { - require_once ("classes/model/Users.php"); - - G::LoadClass( 'ArrayPeer' ); - $Criteria = new Criteria( 'workflow' ); $Criteria->clearSelectColumns(); @@ -41,13 +46,26 @@ class AppNotes extends BaseAppNotes $Criteria->addJoin( AppNotesPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN ); - $Criteria->add( appNotesPeer::APP_UID, $appUid, CRITERIA::EQUAL ); + $Criteria->add( AppNotesPeer::APP_UID, $appUid, Criteria::EQUAL ); if ($usrUid != '') { - $Criteria->add( appNotesPeer::USR_UID, $usrUid, CRITERIA::EQUAL ); + $Criteria->add( AppNotesPeer::USR_UID, $usrUid, Criteria::EQUAL ); + } + if ($dateFrom != '') { + $Criteria->add( AppNotesPeer::NOTE_DATE, $dateFrom, Criteria::GREATER_EQUAL ); + } + if ($dateTo != '') { + $Criteria->add( AppNotesPeer::NOTE_DATE, $dateTo, Criteria::LESS_EQUAL ); + } + if ($search != '') { + $Criteria->add( AppNotesPeer::NOTE_CONTENT, '%'.$search.'%', Criteria::LIKE ); } - $Criteria->addDescendingOrderByColumn( AppNotesPeer::NOTE_DATE ); + if ($dir == 'DESC') { + $Criteria->addDescendingOrderByColumn($sort); + } else { + $Criteria->addAscendingOrderByColumn($sort); + } $response = array (); $totalCount = AppNotesPeer::doCount( $Criteria ); diff --git a/workflow/engine/src/BusinessModel/Cases.php b/workflow/engine/src/BusinessModel/Cases.php index 452334f1d..70575d64c 100644 --- a/workflow/engine/src/BusinessModel/Cases.php +++ b/workflow/engine/src/BusinessModel/Cases.php @@ -649,7 +649,7 @@ class Cases $case = new \Cases(); $fields = $case->loadCase($app_uid); if ($fields['APP_STATUS'] == 'CANCELLED') { - throw (new \Exception("The case '$app_uid' is canceled")); + throw (new \Exception("The case '$app_uid' is already canceled")); } $case->cancelCase( $app_uid, $del_index, $usr_uid ); } @@ -1348,7 +1348,7 @@ class Cases $case = new \Cases(); $fields = $case->loadCase($app_uid); - $data = array_merge($fields['APP_DATA'], array('APP_DATA' => $app_data)); + $data['APP_DATA'] = array_merge($fields['APP_DATA'], $app_data); $case->updateCase($app_uid, $data); } @@ -1362,9 +1362,23 @@ class Cases * @author Brayan Pereyra (Cochalo) * @copyright Colosa - Bolivia */ - public function getCaseNotes($app_uid, $usr_uid) { + public function getCaseNotes($app_uid, $usr_uid, $data_get) { Validator::isString($app_uid, '$app_uid'); Validator::appUid($app_uid, '$app_uid'); + Validator::isString($usr_uid, '$usr_uid'); + Validator::usrUid($usr_uid, '$usr_uid'); + Validator::isArray($data_get, '$data_get'); + + Validator::isArray($data_get, '$data_get'); + $start = isset( $data_get["start"] ) ? $data_get["start"] : "0"; + $limit = isset( $data_get["limit"] ) ? $data_get["limit"] : ""; + $sort = isset( $data_get["sort"] ) ? $data_get["sort"] : "APP_NOTES.NOTE_DATE"; + $dir = isset( $data_get["dir"] ) ? $data_get["dir"] : "DESC"; + $user = isset( $data_get["user"] ) ? $data_get["user"] : ""; + $dateFrom = (!empty( $data_get["dateFrom"] )) ? substr( $data_get["dateFrom"], 0, 10 ) : ""; + $dateTo = (!empty( $data_get["dateTo"] )) ? substr( $data_get["dateTo"], 0, 10 ) : ""; + $search = isset( $data_get["search"] ) ? $data_get["search"] : ""; + $paged = isset( $data_get["paged"] ) ? $data_get["paged"] : true; $case = new \Cases(); $caseLoad = $case->loadCase($app_uid); @@ -1376,18 +1390,63 @@ class Cases throw (new \Exception("You do not have permission to cases notes.")); } + if ($sort != 'APP_NOTE.NOTE_DATE') { + $sort = G::toUpper($sort); + $columnsAppCacheView = \AppNotesPeer::getFieldNames(\BasePeer::TYPE_FIELDNAME); + if (!(in_array($sort, $columnsAppCacheView))) { + $sort = 'APP_NOTES.NOTE_DATE'; + } else { + $sort = 'APP_NOTES.'.$sort; + } + } + if ((int)$start == 1 || (int)$start == 0) { + $start = 0; + } + $dir = G::toUpper($dir); + if (!($dir == 'DESC' || $dir == 'ASC')) { + $dir = 'DESC'; + } + if ($user != '') { + Validator::usrUid($user, '$usr_uid'); + } + if ($dateFrom != '') { + Validator::isDate($dateFrom, 'Y-m-d', '$date_from'); + } + if ($dateTo != '') { + Validator::isDate($dateTo, 'Y-m-d', '$date_to'); + } + $appNote = new \AppNotes(); - $note_data = $appNote->getNotesList($app_uid); + $note_data = $appNote->getNotesList($app_uid, $user, $start, $limit, $sort, $dir, $dateFrom, $dateTo, $search); $response = array(); - $response['total'] = $note_data['array']['totalCount']; - $response['notes'] = array(); - $con = 0; - foreach ($note_data['array']['notes'] as $value) { - $response['notes'][$con]['app_uid'] = $value['APP_UID']; - $response['notes'][$con]['usr_uid'] = $value['USR_UID']; - $response['notes'][$con]['note_date'] = $value['NOTE_DATE']; - $response['notes'][$con]['note_content'] = $value['NOTE_CONTENT']; - $con++; + if ($paged === true) { + $response['total'] = $note_data['array']['totalCount']; + $response['start'] = $start; + $response['limit'] = $limit; + $response['sort'] = $sort; + $response['dir'] = $dir; + $response['usr_uid'] = $user; + $response['date_to'] = $dateTo; + $response['date_from'] = $dateFrom; + $response['search'] = $search; + $response['data'] = array(); + $con = 0; + foreach ($note_data['array']['notes'] as $value) { + $response['data'][$con]['app_uid'] = $value['APP_UID']; + $response['data'][$con]['usr_uid'] = $value['USR_UID']; + $response['data'][$con]['note_date'] = $value['NOTE_DATE']; + $response['data'][$con]['note_content'] = $value['NOTE_CONTENT']; + $con++; + } + } else { + $con = 0; + foreach ($note_data['array']['notes'] as $value) { + $response[$con]['app_uid'] = $value['APP_UID']; + $response[$con]['usr_uid'] = $value['USR_UID']; + $response[$con]['note_date'] = $value['NOTE_DATE']; + $response[$con]['note_content'] = $value['NOTE_CONTENT']; + $con++; + } } return $response; } diff --git a/workflow/engine/src/BusinessModel/Cases/OutputDocument.php b/workflow/engine/src/BusinessModel/Cases/OutputDocument.php index b1ac382bb..8683d1e36 100644 --- a/workflow/engine/src/BusinessModel/Cases/OutputDocument.php +++ b/workflow/engine/src/BusinessModel/Cases/OutputDocument.php @@ -408,7 +408,13 @@ class OutputDocument switch ($aProperties['report_generator']) { case 'TCPDF': $o = new \OutputDocument(); - $o->generateTcpdf($sUID, $aFields, $sPath, $sFilename, $sContent, $sLandscape, $aProperties); + if (strlen($sContent) == 0) { + libxml_use_internal_errors(true); + $o->generateTcpdf($sUID, $aFields, $sPath, $sFilename, ' ', $sLandscape, $aProperties); + libxml_use_internal_errors(false); + } else { + $o->generateTcpdf($sUID, $aFields, $sPath, $sFilename, $sContent, $sLandscape, $aProperties); + } break; case 'HTML2PDF': default: diff --git a/workflow/engine/src/BusinessModel/OutputDocument.php b/workflow/engine/src/BusinessModel/OutputDocument.php index 438c445d4..a97cb6a2e 100644 --- a/workflow/engine/src/BusinessModel/OutputDocument.php +++ b/workflow/engine/src/BusinessModel/OutputDocument.php @@ -267,7 +267,7 @@ class OutputDocument $aData['out_doc_pdf_security_open_password'] = \G::encrypt( $aData['out_doc_pdf_security_open_password'], $outDocUid ); $aData['out_doc_pdf_security_owner_password'] = \G::encrypt( $aData['out_doc_pdf_security_owner_password'], $outDocUid ); } - $this->updateOutputDocument($sProcessUID, $aData, $outDocUid); + $this->updateOutputDocument($sProcessUID, $aData, $outDocUid, 1); //Return unset($aData["PRO_UID"]); $aData = array_change_key_case($aData, CASE_LOWER); @@ -283,10 +283,11 @@ class OutputDocument * @param string $sProcessUID * @param array $aData * @param string $sOutputDocumentUID + * @param int $sFlag * * @access public */ - public function updateOutputDocument($sProcessUID, $aData, $sOutputDocumentUID = '') + public function updateOutputDocument($sProcessUID, $aData, $sOutputDocumentUID = '', $sFlag) { $oConnection = \Propel::getConnection(\OutputDocumentPeer::DATABASE_NAME); $pemission = $aData['out_doc_pdf_security_permissions']; @@ -306,6 +307,9 @@ class OutputDocument if ($oOutputDocument->validate()) { $oConnection->begin(); if (isset($aData['OUT_DOC_TITLE'])) { + if ($this->existsTitle($sProcessUID, $aData["OUT_DOC_TITLE"]) && $sFlag == 0) { + throw (new \Exception(\G::LoadTranslation("ID_OUTPUT_NOT_SAVE"))); + } $oOutputDocument->setOutDocTitle($aData['OUT_DOC_TITLE']); } if (isset($aData['OUT_DOC_DESCRIPTION'])) { diff --git a/workflow/engine/src/Services/Api/ProcessMaker/Cases.php b/workflow/engine/src/Services/Api/ProcessMaker/Cases.php index 2aa46d61a..da69a2552 100644 --- a/workflow/engine/src/Services/Api/ProcessMaker/Cases.php +++ b/workflow/engine/src/Services/Api/ProcessMaker/Cases.php @@ -18,9 +18,9 @@ class Cases extends Api /** * Get list Cases To Do * - * @param string $paged {@from path} * @param string $start {@from path} * @param string $limit {@from path} + * @param string $sort {@from path} * @param string $dir {@from path} * @param string $cat_uid {@from path} * @param string $pro_uid {@from path} @@ -65,9 +65,9 @@ class Cases extends Api /** * Get list Cases To Do with paged * - * @param string $paged {@from path} * @param string $start {@from path} * @param string $limit {@from path} + * @param string $sort {@from path} * @param string $dir {@from path} * @param string $cat_uid {@from path} * @param string $pro_uid {@from path} @@ -112,9 +112,9 @@ class Cases extends Api /** * Get list Cases Draft * - * @param string $paged {@from path} * @param string $start {@from path} * @param string $limit {@from path} + * @param string $sort {@from path} * @param string $dir {@from path} * @param string $cat_uid {@from path} * @param string $pro_uid {@from path} @@ -159,9 +159,9 @@ class Cases extends Api /** * Get list Cases Draft with paged * - * @param string $paged {@from path} * @param string $start {@from path} * @param string $limit {@from path} + * @param string $sort {@from path} * @param string $dir {@from path} * @param string $cat_uid {@from path} * @param string $pro_uid {@from path} @@ -206,9 +206,9 @@ class Cases extends Api /** * Get list Cases Participated * - * @param string $paged {@from path} * @param string $start {@from path} * @param string $limit {@from path} + * @param string $sort {@from path} * @param string $dir {@from path} * @param string $cat_uid {@from path} * @param string $pro_uid {@from path} @@ -253,9 +253,9 @@ class Cases extends Api /** * Get list Cases Participated with paged * - * @param string $paged {@from path} * @param string $start {@from path} * @param string $limit {@from path} + * @param string $sort {@from path} * @param string $dir {@from path} * @param string $cat_uid {@from path} * @param string $pro_uid {@from path} @@ -300,9 +300,9 @@ class Cases extends Api /** * Get list Cases Unassigned * - * @param string $paged {@from path} * @param string $start {@from path} * @param string $limit {@from path} + * @param string $sort {@from path} * @param string $dir {@from path} * @param string $cat_uid {@from path} * @param string $pro_uid {@from path} @@ -347,9 +347,9 @@ class Cases extends Api /** * Get list Cases Unassigned with paged * - * @param string $paged {@from path} * @param string $start {@from path} * @param string $limit {@from path} + * @param string $sort {@from path} * @param string $dir {@from path} * @param string $cat_uid {@from path} * @param string $pro_uid {@from path} @@ -394,9 +394,9 @@ class Cases extends Api /** * Get list Cases Paused * - * @param string $paged {@from path} * @param string $start {@from path} * @param string $limit {@from path} + * @param string $sort {@from path} * @param string $dir {@from path} * @param string $cat_uid {@from path} * @param string $pro_uid {@from path} @@ -441,9 +441,9 @@ class Cases extends Api /** * Get list Cases Paused with paged * - * @param string $paged {@from path} * @param string $start {@from path} * @param string $limit {@from path} + * @param string $sort {@from path} * @param string $dir {@from path} * @param string $cat_uid {@from path} * @param string $pro_uid {@from path} @@ -488,16 +488,16 @@ class Cases extends Api /** * Get list Cases Advanced Search * - * @param string $paged {@from path} * @param string $start {@from path} * @param string $limit {@from path} + * @param string $sort {@from path} * @param string $dir {@from path} * @param string $cat_uid {@from path} * @param string $pro_uid {@from path} * @param string $app_status {@from path} * @param string $user {@from path} - * @param string $dateFrom {@from path} - * @param string $dateTo {@from path} + * @param string $date_from {@from path} + * @param string $date_to {@from path} * @param string $search {@from path} * @return array * @@ -515,8 +515,8 @@ class Cases extends Api $pro_uid = '', $app_status = '', $user = '', - $dateFrom = '', - $dateTo = '', + $date_from = '', + $date_to = '', $search = '' ) { @@ -533,8 +533,8 @@ class Cases extends Api $dataList['process'] = $pro_uid; $dataList['status'] = $app_status; $dataList['user'] = $user; - $dataList['dateFrom'] = $dateFrom; - $dataList['dateTo'] = $dateTo; + $dataList['dateFrom'] = $date_from; + $dataList['dateTo'] = $date_to; $dataList['search'] = $search; $oCases = new \BusinessModel\Cases(); $response = $oCases->getList($dataList); @@ -547,16 +547,16 @@ class Cases extends Api /** * Get list Cases Advanced Search with Paged * - * @param string $paged {@from path} * @param string $start {@from path} * @param string $limit {@from path} + * @param string $sort {@from path} * @param string $dir {@from path} * @param string $cat_uid {@from path} * @param string $pro_uid {@from path} * @param string $app_status {@from path} * @param string $usr_uid {@from path} - * @param string $dateFrom {@from path} - * @param string $dateTo {@from path} + * @param string $date_from {@from path} + * @param string $date_to {@from path} * @param string $search {@from path} * @return array * @@ -868,19 +868,97 @@ class Cases extends Api /** * Get Case Notes * - * @param string $app_uid {@min 1}{@max 32} + * @param string $start {@from path} + * @param string $limit {@from path} + * @param string $sort {@from path} + * @param string $dir {@from path} + * @param string $usr_uid {@from path} + * @param string $date_from {@from path} + * @param string $date_to {@from path} + * @param string $search {@from path} + * @return array * * @author Brayan Pereyra (Cochalo) * @copyright Colosa - Bolivia * * @url GET /:app_uid/notes */ - public function doGetCaseNotes($app_uid) + public function doGetCaseNotes( + $app_uid, + $start = 0, + $limit = 25, + $sort = 'APP_CACHE_VIEW.APP_NUMBER', + $dir = 'DESC', + $usr_uid = '', + $date_from = '', + $date_to = '', + $search = '' + ) { try { + $dataList['paged'] = false; + + $dataList['start'] = $start; + $dataList['limit'] = $limit; + $dataList['sort'] = $sort; + $dataList['dir'] = $dir; + $dataList['user'] = $usr_uid; + $dataList['dateFrom'] = $date_from; + $dataList['dateTo'] = $date_to; + $dataList['search'] = $search; + $usr_uid = $this->getUserId(); $cases = new \BusinessModel\Cases(); - $response = $cases->getCaseNotes($app_uid, $usr_uid); + $response = $cases->getCaseNotes($app_uid, $usr_uid, $dataList); + return $response; + } catch (\Exception $e) { + throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); + } + } + + /** + * Get Case Notes with Paged + * + * @param string $start {@from path} + * @param string $limit {@from path} + * @param string $sort {@from path} + * @param string $dir {@from path} + * @param string $usr_uid {@from path} + * @param string $date_from {@from path} + * @param string $date_to {@from path} + * @param string $search {@from path} + * @return array + * + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + * + * @url GET /:app_uid/notes/paged + */ + public function doGetCaseNotesPaged( + $app_uid, + $start = 0, + $limit = 25, + $sort = 'APP_CACHE_VIEW.APP_NUMBER', + $dir = 'DESC', + $usr_uid = '', + $date_from = '', + $date_to = '', + $search = '' + ) + { + try { + $dataList['start'] = $start; + $dataList['limit'] = $limit; + $dataList['sort'] = $sort; + $dataList['dir'] = $dir; + $dataList['user'] = $usr_uid; + $dataList['dateFrom'] = $date_from; + $dataList['dateTo'] = $date_to; + $dataList['search'] = $search; + + $usr_uid = $this->getUserId(); + $cases = new \BusinessModel\Cases(); + $response = $cases->getCaseNotes($app_uid, $usr_uid, $dataList); return $response; } catch (\Exception $e) { throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); diff --git a/workflow/engine/src/Services/Api/ProcessMaker/Project/OutputDocuments.php b/workflow/engine/src/Services/Api/ProcessMaker/Project/OutputDocuments.php index 9cbc3f581..9732cb87b 100644 --- a/workflow/engine/src/Services/Api/ProcessMaker/Project/OutputDocuments.php +++ b/workflow/engine/src/Services/Api/ProcessMaker/Project/OutputDocuments.php @@ -86,7 +86,7 @@ class OutputDocuments extends Api try { $request_data = (array)($request_data); $outputDocument = new \BusinessModel\OutputDocument(); - $arrayData = $outputDocument->updateOutputDocument($prjUid, $request_data, $outputDocumentUid); + $arrayData = $outputDocument->updateOutputDocument($prjUid, $request_data, $outputDocumentUid, 0); } catch (\Exception $e) { //Response throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); diff --git a/workflow/engine/templates/designer/index.html b/workflow/engine/templates/designer/index.html index 4cb8238ac..10755be86 100644 --- a/workflow/engine/templates/designer/index.html +++ b/workflow/engine/templates/designer/index.html @@ -67,23 +67,25 @@ {/if} -