diff --git a/resources/assets/js/api/Filters.js b/resources/assets/js/api/Filters.js index 42a003ce2..0e0a443e9 100644 --- a/resources/assets/js/api/Filters.js +++ b/resources/assets/js/api/Filters.js @@ -60,6 +60,16 @@ export let filters = { keys: {}, }); }, + /** + * Service to get the process list + */ + processListPaged(data) { + return Api.get({ + service: "PROCESSES", + params: data, + keys: {}, + }); + }, /** * Service to get the users list */ diff --git a/resources/assets/js/home/CaseDetail.vue b/resources/assets/js/home/CaseDetail.vue index 7b14b0cfb..a5e3cfb60 100644 --- a/resources/assets/js/home/CaseDetail.vue +++ b/resources/assets/js/home/CaseDetail.vue @@ -518,7 +518,8 @@ export default { APP_UID: v.APP_UID, DEL_INDEX: v.DEL_INDEX, PRO_UID: v.PRO_UID, - TAS_UID: v.TAS_UID + TAS_UID: v.TAS_UID, + UNASSIGNED: v.UNASSIGNED }); }); return data; @@ -580,7 +581,8 @@ export default { DEL_INDEX: data.row.DEL_INDEX, PRO_UID: data.row.PRO_UID, TAS_UID: data.row.TAS_UID, - ACTION: this.dataCase.ACTION || "todo" + ACTION: this.dataCase.ACTION || "todo", + UNASSIGNED: data.row.UNASSIGNED }); this.$emit("onUpdatePage", "XCase"); } diff --git a/resources/assets/js/home/CustomCaseList/CustomCaseList.vue b/resources/assets/js/home/CustomCaseList/CustomCaseList.vue index 3278ab2d9..5bc5a6571 100644 --- a/resources/assets/js/home/CustomCaseList/CustomCaseList.vue +++ b/resources/assets/js/home/CustomCaseList/CustomCaseList.vue @@ -662,7 +662,7 @@ export default { autoShow: false, }, ], - refresh: false, + refresh: true, }); this.$emit("cleanDefaultOption"); } diff --git a/resources/assets/js/home/Draft/Draft.vue b/resources/assets/js/home/Draft/Draft.vue index be31a1a48..8bd9298ec 100644 --- a/resources/assets/js/home/Draft/Draft.vue +++ b/resources/assets/js/home/Draft/Draft.vue @@ -430,17 +430,17 @@ export default { //force to search in the parallel tasks if (params && params.openapplicationuid) { this.onUpdateFilters({ - params: [ - { - fieldId: "caseNumber", - filterVar: "caseNumber", - label: "", - options:[], - value: params.openapplicationuid, - autoShow: false - } - ], - refresh: false + params: [ + { + fieldId: "caseNumber", + filterVar: "caseNumber", + label: "", + options:[], + value: params.openapplicationuid, + autoShow: false + } + ], + refresh: true }); this.$emit("cleanDefaultOption"); } diff --git a/resources/assets/js/home/Home.vue b/resources/assets/js/home/Home.vue index afced2b62..76eb52d42 100755 --- a/resources/assets/js/home/Home.vue +++ b/resources/assets/js/home/Home.vue @@ -4,6 +4,15 @@ :class="[{ collapsed: collapsed }, { onmobile: isOnMobile }]" >
+ + {{ dataAlert.message }} +
@@ -114,7 +123,13 @@ export default { }, defaultOption: window.config.defaultOption || '', pageData: {}, - settings: {} + settings: {}, + dataAlert: { + dismissSecs: 5, + dismissCountDown: 0, + message: "", + variant: "info" + }, }; }, mounted() { @@ -280,6 +295,10 @@ export default { } else { this.page = "MyCases"; } + if (window.config._nodeId === "CASES_SENT" && this.defaultOption !== "") { + this.cleanDefaultOption(); + this.showAlert(this.$i18n.t("ID_NO_PERMISSION_NO_PARTICIPATED_CASES")); + } this.settings = this.config.setting[this.page]; this.lastPage = this.page; }, @@ -602,7 +621,25 @@ export default { return obj.props; } return obj; - } + }, + /** + * Show the alert message + * @param {string} message - message to be displayen in the body + * @param {string} type - alert type + */ + showAlert(message, type) { + this.dataAlert.message = message; + this.dataAlert.variant = type || "info"; + this.dataAlert.dismissCountDown = this.dataAlert.dismissSecs; + }, + /** + * Updates the alert dismiss value to update + * dismissCountDown and decrease + * @param {mumber} + */ + countDownChanged(dismissCountDown) { + this.dataAlert.dismissCountDown = dismissCountDown; + }, } }; diff --git a/resources/assets/js/home/Inbox/Inbox.vue b/resources/assets/js/home/Inbox/Inbox.vue index c61ab3a4b..28d97f8df 100644 --- a/resources/assets/js/home/Inbox/Inbox.vue +++ b/resources/assets/js/home/Inbox/Inbox.vue @@ -475,7 +475,7 @@ export default { autoShow: false, }, ], - refresh: false, + refresh: true, }); this.$emit("cleanDefaultOption"); } diff --git a/resources/assets/js/home/Paused/Paused.vue b/resources/assets/js/home/Paused/Paused.vue index 7537ea4bf..984ae4cd7 100644 --- a/resources/assets/js/home/Paused/Paused.vue +++ b/resources/assets/js/home/Paused/Paused.vue @@ -464,17 +464,17 @@ export default { //force to search in the parallel tasks if (params && params.openapplicationuid) { this.onUpdateFilters({ - params: [ - { - fieldId: "caseNumber", - filterVar: "caseNumber", - label: "", - options:[], - value: params.openapplicationuid, - autoShow: false - } - ], - refresh: false + params: [ + { + fieldId: "caseNumber", + filterVar: "caseNumber", + label: "", + options:[], + value: params.openapplicationuid, + autoShow: false + } + ], + refresh: true }); this.$emit("cleanDefaultOption"); } diff --git a/resources/assets/js/home/TaskMetrics/VueChartLvOne.vue b/resources/assets/js/home/TaskMetrics/VueChartLvOne.vue index 542eece02..f7bf10e5d 100644 --- a/resources/assets/js/home/TaskMetrics/VueChartLvOne.vue +++ b/resources/assets/js/home/TaskMetrics/VueChartLvOne.vue @@ -233,7 +233,10 @@ export default { getProcesses(query) { let that = this; Api.filters - .processList(query || "") + .processListPaged({ + text: query || "", + paged: false, + }) .then((response) => { that.formatDataProcesses(response.data); }) diff --git a/resources/assets/js/home/TaskMetrics/VueChartLvThree.vue b/resources/assets/js/home/TaskMetrics/VueChartLvThree.vue index d81f91f47..62c6911f7 100644 --- a/resources/assets/js/home/TaskMetrics/VueChartLvThree.vue +++ b/resources/assets/js/home/TaskMetrics/VueChartLvThree.vue @@ -126,14 +126,14 @@ export default { return { currentSelection: null, dateFrom: - this.data[3] && this.data[3].data.dateFromRisk - ? this.data[3].data.dateFromRisk - : moment().format("YYYY-MM-DD"), + this.data[3] && this.data[3].data.dateFrom + ? this.data[3].data.dateFrom + : moment().subtract(30, "d").format("YYYY-MM-DD"), dateTo: - this.data[3] && this.data[3].data.dateToRisk - ? this.data[3].data.dateToRisk - : moment().add(30, "d").format("YYYY-MM-DD"), - dateNow: moment().format("DD/MM/YYYY h:mm:ss a"), + this.data[3] && this.data[3].data.dateTo + ? this.data[3].data.dateTo + : moment().format("YYYY-MM-DD"), + dateNow: moment().format("YYYY-MM-DD h:mm:ss a"), size: this.data[3] && this.data[3].data.size ? this.data[3].data.size @@ -227,12 +227,12 @@ export default { dt = { process: this.data[2].id, caseList: this.data[1].id.toLowerCase(), - dateFrom: moment(this.dateFrom).format("DD/MM/YYYY"), - dateTo: moment(this.dateTo).format("DD/MM/YYYY"), + dateFrom: moment(this.dateFrom).format("YYYY-MM-DD"), + dateTo: moment(this.dateTo).format("YYYY-MM-DD"), riskStatus: this.riskType, }; this.size.id != "all" ? (dt["topCases"] = this.size.id) : null; - this.dateNow = moment().format("DD/MM/YYYY h:mm:ss a"); + this.dateNow = moment().format("YYYY-MM-DD h:mm:ss a"); Api.process .totalCasesByRisk(dt) .then((response) => { @@ -462,11 +462,9 @@ export default { name: this.data[2]["name"], level: 3, data: { - dateFrom: this.data[3].data.dateFrom, - dateTo: this.data[3].data.dateTo, + dateFrom: this.dateFrom, + dateTo: this.dateTo, period: this.data[3].data.period, - dateFromRisk: this.dateFrom, - dateToRisk: this.dateTo, size: this.size, riskType: this.riskType, }, diff --git a/resources/assets/js/home/TaskMetrics/VueChartLvTwo.vue b/resources/assets/js/home/TaskMetrics/VueChartLvTwo.vue index 9101782c5..eeaca6310 100644 --- a/resources/assets/js/home/TaskMetrics/VueChartLvTwo.vue +++ b/resources/assets/js/home/TaskMetrics/VueChartLvTwo.vue @@ -58,8 +58,8 @@ :options="options" :series="series" > -
-
+
+
-
+
@@ -251,7 +250,6 @@ import MultiviewHeader from "../../components/headers/MultiviewHeader.vue"; import VueCardView from "../../components/dataViews/vueCardView/VueCardView.vue"; import VueListView from "../../components/dataViews/vueListView/VueListView.vue"; import defaultMixins from "./defaultMixins"; -import ModalPauseCase from '../modal/ModalPauseCase.vue'; import ModalComments from "../modal/ModalComments.vue"; import { Event } from 'vue-tables-2'; import CurrentUserCell from "../../components/vuetable/CurrentUserCell.vue"; @@ -270,7 +268,6 @@ export default { MultiviewHeader, VueCardView, VueListView, - ModalPauseCase, CurrentUserCell, ModalComments }, @@ -680,14 +677,6 @@ export default { this.$refs["vueListView"].getData(); } }, - /** - * Show modal to pause a case - * @param {objec} data - */ - showModalPause(data) { - this.$refs["modal-pause-case"].data = data; - this.$refs["modal-pause-case"].show(); - }, /** * Show options in the ellipsis * @param {object} data @@ -705,13 +694,6 @@ export default { that.openComments(data); } }, - pause: { - name: "pause case", - icon: "far fa-pause-circle", - fn: function() { - that.showModalPause(data); - } - }, claim: { name: "claim case", icon: "fas fa-briefcase", diff --git a/resources/assets/js/home/XCase.vue b/resources/assets/js/home/XCase.vue index e2d9ef9fc..e1cb815c0 100644 --- a/resources/assets/js/home/XCase.vue +++ b/resources/assets/js/home/XCase.vue @@ -49,6 +49,12 @@ export default { window.config.SYS_URI + `cases/open?APP_UID=${this.dataCase.APP_UID}&DEL_INDEX=${this.dataCase.DEL_INDEX}&TAS_UID=${this.dataCase.TAS_UID}&action=${this.dataCase.ACTION}`; } + if (this.dataCase.UNASSIGNED === true) { + this.path = + window.config.SYS_SERVER_AJAX + + window.config.SYS_URI + + `cases/open?APP_UID=${this.dataCase.APP_UID}&DEL_INDEX=${this.dataCase.DEL_INDEX}&action=unassigned`; + } setTimeout(() => { let that = this; diff --git a/workflow/engine/classes/Derivation.php b/workflow/engine/classes/Derivation.php index 334753bdd..1ad2fbbff 100644 --- a/workflow/engine/classes/Derivation.php +++ b/workflow/engine/classes/Derivation.php @@ -1496,8 +1496,8 @@ class Derivation if ($taskNextDel->getTasAssignType() == "SELF_SERVICE" && !empty(trim($tasGroupVariable))) { $nextTaskGroupVariable = trim($tasGroupVariable, " @#"); - if (isset($oldFields["APP_DATA"][$nextTaskGroupVariable])) { - $dataVariable = $oldFields["APP_DATA"][$nextTaskGroupVariable]; + if (isset($currentFields["APP_DATA"][$nextTaskGroupVariable])) { + $dataVariable = $currentFields["APP_DATA"][$nextTaskGroupVariable]; $dataVariable = (is_array($dataVariable))? $dataVariable : trim($dataVariable); if (!empty($dataVariable)) { @@ -1512,7 +1512,7 @@ class Derivation } } // We will to send the notifications - $sendNotificationsMobile = $this->sendNotificationsMobile($oldFields, $subProcessInfo, $newCase['INDEX']); + $sendNotificationsMobile = $this->sendNotificationsMobile($currentFields, $subProcessInfo, $newCase['INDEX']); $nextTaskData = $taskNextDel->toArray(BasePeer::TYPE_FIELDNAME); $nextTaskData['USR_UID'] = $subProcessInfo['USR_UID']; $sendNotifications = $this->notifyAssignedUser($appFields, $nextTaskData, $newCase['INDEX']); diff --git a/workflow/engine/classes/WorkspaceTools.php b/workflow/engine/classes/WorkspaceTools.php index 7174c853c..4eb0446e0 100644 --- a/workflow/engine/classes/WorkspaceTools.php +++ b/workflow/engine/classes/WorkspaceTools.php @@ -4200,6 +4200,20 @@ class WorkspaceTools APP_STATUS_ID = 0"); $con->commit(); + // Populating APPLICATION.APP_INIT_USER_ID + CLI::logging("-> Populating APPLICATION.APP_INIT_USER_ID \n"); + $con->begin(); + $stmt = $con->createStatement(); + $rs = $stmt->executeQuery("UPDATE APPLICATION AS AP + INNER JOIN ( + SELECT USERS.USR_UID, USERS.USR_ID + FROM USERS + ) AS USR + ON (AP.APP_INIT_USER = USR.USR_UID) + SET AP.APP_INIT_USER_ID = USR.USR_ID + WHERE AP.APP_INIT_USER_ID = 0"); + $con->commit(); + // Populating APPLICATION.APP_FINISH_DATE CLI::logging("-> Populating APPLICATION.APP_FINISH_DATE \n"); $con->begin(); diff --git a/workflow/engine/classes/WsBase.php b/workflow/engine/classes/WsBase.php index 288078984..7bf693273 100644 --- a/workflow/engine/classes/WsBase.php +++ b/workflow/engine/classes/WsBase.php @@ -10,6 +10,7 @@ use ProcessMaker\ChangeLog\ChangeLog; /*----------------------------------********---------------------------------*/ use ProcessMaker\Core\JobsManager; use ProcessMaker\Core\System; +use ProcessMaker\Model\Application; use ProcessMaker\Model\Delegation; class WsBase @@ -3284,29 +3285,36 @@ class WsBase $_SESSION["INDEX"] = $delIndex; $_SESSION["USER_LOGGED"] = $userUid; + // Validate the appUid if (empty($caseUid)) { $result = new WsResponse(100, G::LoadTranslation("ID_REQUIRED_FIELD") . " caseUid"); - $g->sessionVarRestore(); return $result; } + // Validate the status + $caseInfo = Application::getCase($caseUid); + if ($caseInfo['APP_STATUS'] === Application::STATUS_DRAFT_NAME) { + $result = new WsResponse(100, G::LoadTranslation("ID_DRAFT_CASES_CAN_NOT_PAUSED")); + $g->sessionVarRestore(); + return $result; + } + // Validate the index if (empty($delIndex)) { $result = new WsResponse(100, G::LoadTranslation("ID_REQUIRED_FIELD") . " delIndex"); - $g->sessionVarRestore(); return $result; } + // Validate the user if (empty($userUid)) { $result = new WsResponse(100, G::LoadTranslation("ID_REQUIRED_FIELD") . " userUid"); - $g->sessionVarRestore(); return $result; } - //Validate if status is closed + // Validate if status is closed $appDelegation = new AppDelegation(); $rows = $appDelegation->LoadParallel($caseUid, $delIndex); if (empty($rows)) { @@ -3314,7 +3322,7 @@ class WsBase $g->sessionVarRestore(); return $result; } - //Validate if the case is paused + // Validate if the case is paused $appDelay = new AppDelay(); $sw = $appDelay->isPaused($caseUid, $delIndex); if ($sw === true) { @@ -3322,6 +3330,7 @@ class WsBase $g->sessionVarRestore(); return $result; } + // Review the unpaused date if (strlen($unpauseDate) >= 10) { if (!preg_match("/^\d{4}-\d{2}-\d{2}| \d{2}:\d{2}:\d{2}$/", $unpauseDate)) { $result = new WsResponse(100, G::LoadTranslation("ID_INVALID_DATA") . " $unpauseDate"); @@ -3336,7 +3345,7 @@ class WsBase $case = new Cases(); $case->pauseCase($caseUid, $delIndex, $userUid, $unpauseDate); - //Response + // Response $result = self::messageExecuteSuccessfully(); $g->sessionVarRestore(); diff --git a/workflow/engine/classes/model/AppDelegation.php b/workflow/engine/classes/model/AppDelegation.php index 27ecc1875..095fae749 100644 --- a/workflow/engine/classes/model/AppDelegation.php +++ b/workflow/engine/classes/model/AppDelegation.php @@ -89,7 +89,7 @@ class AppDelegation extends BaseAppDelegation $record = $rsCriteria->getRow(); if ($flagIncludeCurrentDel) { - if (preg_match('/^(?:' . 'NORMAL|SCRIPT\-TASK|WEBENTRYEVENT|START\-MESSAGE\-EVENT|START\-TIMER\-EVENT' . ')$/', $record['TAS_TYPE'])) { + if (preg_match('/^(?:' . 'SERVICE\-TASK|NORMAL|SCRIPT\-TASK|WEBENTRYEVENT|START\-MESSAGE\-EVENT|START\-TIMER\-EVENT' . ')$/', $record['TAS_TYPE'])) { $arrayAppDelegationPrevious = $record; $flagPrevious = false; } diff --git a/workflow/engine/classes/model/ListMyInbox.php b/workflow/engine/classes/model/ListMyInbox.php index 7fea0fd3c..05e8819bd 100644 --- a/workflow/engine/classes/model/ListMyInbox.php +++ b/workflow/engine/classes/model/ListMyInbox.php @@ -148,9 +148,9 @@ class ListMyInbox extends BaseListMyInbox implements ListInterface $dataset->next(); $aRow = $dataset->getRow(); $data['DEL_CURRENT_USR_UID'] = $data['USR_UID']; - $data['DEL_CURRENT_USR_USERNAME'] = $aRow['USR_USERNAME']; - $data['DEL_CURRENT_USR_FIRSTNAME'] = $aRow['USR_FIRSTNAME']; - $data['DEL_CURRENT_USR_LASTNAME'] = $aRow['USR_LASTNAME']; + $data['DEL_CURRENT_USR_USERNAME'] = is_array($aRow) ? $aRow['USR_USERNAME'] : ''; + $data['DEL_CURRENT_USR_FIRSTNAME'] = is_array($aRow) ? $aRow['USR_FIRSTNAME'] : ''; + $data['DEL_CURRENT_USR_LASTNAME'] = is_array($aRow) ? $aRow['USR_LASTNAME'] : ''; if ($data['DEL_INDEX'] == 1 && $data['APP_STATUS'] == 'TO_DO') { $data['APP_CREATE_DATE'] = $data['APP_UPDATE_DATE']; diff --git a/workflow/engine/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po index aff4f1384..1541e9529 100755 --- a/workflow/engine/content/translations/english/processmaker.en.po +++ b/workflow/engine/content/translations/english/processmaker.en.po @@ -7049,6 +7049,12 @@ msgstr "Down Trigger" msgid "Draft" msgstr "Draft" +# TRANSLATION +# LABEL/ID_DRAFT_CASES_CAN_NOT_PAUSED +#: LABEL/ID_DRAFT_CASES_CAN_NOT_PAUSED +msgid "Draft cases can not be paused" +msgstr "Draft cases can not be paused" + # TRANSLATION # LABEL/ID_DRIVE_HELP_ENABLE #: LABEL/ID_DRIVE_HELP_ENABLE @@ -20741,6 +20747,12 @@ msgstr "There are no older session files" msgid "You cannot open this case because on the reason below:
You do not have permission to see this case.
You have not participated in this case.
Case is already claimed." msgstr "You cannot open this case because on the reason below:
You do not have permission to see this case.
You have not participated in this case.
Case is already claimed." +# TRANSLATION +# LABEL/ID_NO_PERMISSION_NO_PARTICIPATED_CASES +#: LABEL/ID_NO_PERMISSION_NO_PARTICIPATED_CASES +msgid "You do not have permission to see this case or you have not participated in it." +msgstr "You do not have permission to see this case or you have not participated in it." + # TRANSLATION # LABEL/ID_NO_PREVIOUS_USR_UID #: LABEL/ID_NO_PREVIOUS_USR_UID diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index 3ab5a506e..a2eedf8bd 100755 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -58006,6 +58006,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_DOWNLOAD_SETTINGS','en','Download Settings','2020-12-10') , ( 'LABEL','ID_DOWN_TRIGGER','en','Down Trigger','2015-02-20') , ( 'LABEL','ID_DRAFT','en','Draft','2014-01-15') , +( 'LABEL','ID_DRAFT_CASES_CAN_NOT_PAUSED','en','Draft cases can not be paused','2021-10-01') , ( 'LABEL','ID_DRIVE_HELP_ENABLE','en','When this option is enabled, all input, output and attached documents generated in your processes can be stored in Google Drive.','2016-01-05') , ( 'LABEL','ID_DRILL_DOWN_NAVIGATOR','en','Drill Down Navigator','2020-08-26') , ( 'LABEL','ID_DRILL','en','Drill','2021-08-26') , @@ -60361,6 +60362,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_NO_NEW_VERSIONS','en','No new versions available','2014-09-18') , ( 'LABEL','ID_NO_OLDER_SESSION_FILES','en','There are no older session files','2014-01-15') , ( 'LABEL','ID_NO_PERMISSION_NO_PARTICIPATED','en','You cannot open this case because on the reason below:
You do not have permission to see this case.
You have not participated in this case.
Case is already claimed.','2017-06-05') , +( 'LABEL','ID_NO_PERMISSION_NO_PARTICIPATED_CASES','en','You do not have permission to see this case or you have not participated in it.','2021-10-04') , ( 'LABEL','ID_NO_PREVIOUS_USR_UID','en','The previous task doesn''t have any users.','2017-10-18') , ( 'LABEL','ID_NO_REASSIGN','en','Do not reassign','2014-01-15') , ( 'LABEL','ID_NO_RECORDS','en','No records','2014-01-15') , diff --git a/workflow/engine/methods/cases/ajaxListener.php b/workflow/engine/methods/cases/ajaxListener.php index 368ce746f..13e738842 100644 --- a/workflow/engine/methods/cases/ajaxListener.php +++ b/workflow/engine/methods/cases/ajaxListener.php @@ -732,8 +732,12 @@ class Ajax } // End save - $case = new Cases(); - $case->pauseCase($appUid, $delIndex, $_SESSION['USER_LOGGED'], $unpauseDate); + $case = new WsBase(); + $response = $case->pauseCase($appUid, $delIndex, $_SESSION['USER_LOGGED'], $unpauseDate); + $response = (object) $response; + if ($response->status_code == 100) { + throw new Exception($response->message); + } $app = new Application(); $caseData = $app->load($appUid); $data['APP_NUMBER'] = $caseData['APP_NUMBER']; diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php index c0c81bf22..8f707a0fc 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php @@ -360,7 +360,7 @@ class ActionsByEmail if ($data[$index]['ABE_MAILSERVER_OR_MAILCURRENT'] == 0) { $delegation = new AppDelegation(); $previousTask = $delegation->getPreviousDelegationValidTask($data[$index]['APP_UID'], $data[$index]['DEL_INDEX']); - if (in_array($previousTask['TAS_TYPE'], Task::DUMMY_TASKS)) { + if (in_array($previousTask['TAS_TYPE'], Task::DUMMY_TASKS) || in_array($previousTask['TAS_TYPE'], Task::$typesRunAutomatically)) { $res = Task::getTask($previousTask['TAS_ID']); $data[$index]['USER'] = $res->TAS_TITLE . ' (' . $previousTask['TAS_TYPE'] . ')'; } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Draft.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Draft.php index 3af923c24..21df184d9 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Draft.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Draft.php @@ -164,7 +164,7 @@ class Draft extends AbstractCases { $query = Application::query()->select(['APPLICATION.APP_NUMBER']); // Add the initial scope for draft cases for specific user - $query->draft($this->getUserUid()); + $query->draft($this->getUserId()); // Get only one case $query->limit(1); // Get result diff --git a/workflow/engine/src/ProcessMaker/Model/Application.php b/workflow/engine/src/ProcessMaker/Model/Application.php index 51359490e..811d111b0 100644 --- a/workflow/engine/src/ProcessMaker/Model/Application.php +++ b/workflow/engine/src/ProcessMaker/Model/Application.php @@ -14,6 +14,7 @@ class Application extends Model public $timestamps = false; // Status id const STATUS_DRAFT = 1; + const STATUS_DRAFT_NAME = 'DRAFT'; const STATUS_TODO = 2; const STATUS_COMPLETED = 3; const STATUS_CANCELED = 4; @@ -52,13 +53,13 @@ class Application extends Model * Scope for query to get the creator * * @param \Illuminate\Database\Eloquent\Builder $query - * @param string $usrUid + * @param int $usrId * * @return \Illuminate\Database\Eloquent\Builder */ - public function scopeCreator($query, $usrUid) + public function scopeCreator($query, $usrId) { - return $query->where('APP_INIT_USER', '=', $usrUid); + return $query->where('APP_INIT_USER_ID', '=', $usrId); } /** @@ -359,7 +360,7 @@ class Application extends Model * Scope the Draft cases * * @param \Illuminate\Database\Eloquent\Builder $query - * @param string $user + * @param int $user * * @return \Illuminate\Database\Eloquent\Builder */ diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Metrics.php b/workflow/engine/src/ProcessMaker/Services/Api/Metrics.php index 0e84bbb04..583129b61 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Metrics.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Metrics.php @@ -46,7 +46,8 @@ class Metrics extends Api */ public function getProcessTotalCases($caseList, $category = null, $topTen = false, $processes = []) { - $usrId = $this->getUserId(); + $usrUid = $this->getUserId(); + $usrId = !empty($usrUid) ? User::getId($usrUid) : 0; try { switch ($caseList) { case 'inbox': @@ -60,6 +61,7 @@ class Metrics extends Api break; case 'unassigned': $list = new Unassigned(); + $list->setUserUid($usrUid); break; } $list->setUserId($usrId); @@ -89,7 +91,8 @@ class Metrics extends Api */ public function getTotalCasesByRange($caseList, $processId = null, $dateFrom = null, $dateTo = null, $groupBy = 'day') { - $usrId = $this->getUserId(); + $usrUid = $this->getUserId(); + $usrId = !empty($usrUid) ? User::getId($usrUid) : 0; try { switch ($caseList) { case 'inbox': @@ -103,6 +106,7 @@ class Metrics extends Api break; case 'unassigned': $list = new Unassigned(); + $list->setUserUid($usrUid); break; } $list->setUserId($usrId); @@ -179,7 +183,8 @@ class Metrics extends Api public function getCasesRiskByProcess($caseList = 'inbox', $process, $dateFrom = null, $dateTo = null, $riskStatus = 'ON_TIME', $topCases = null) { try { - $usrId = $this->getUserId(); + $usrUid = $this->getUserId(); + $usrId = !empty($usrUid) ? User::getId($usrUid) : 0; switch ($caseList) { case 'inbox': $list = new Inbox(); @@ -192,6 +197,7 @@ class Metrics extends Api break; case 'unassigned': $list = new Unassigned(); + $list->setUserUid($usrUid); break; } $list->setUserId($usrId);