diff --git a/resources/assets/js/components/utils/CustomTooltip.vue b/resources/assets/js/components/utils/CustomTooltip.vue
index af58b271b..111ed8cb0 100644
--- a/resources/assets/js/components/utils/CustomTooltip.vue
+++ b/resources/assets/js/components/utils/CustomTooltip.vue
@@ -12,8 +12,10 @@
v-if="showTooltip"
>
{{ labelTooltip }}
-
- {{ labelDescription }}
+
+ {{ labelName }}
+ :
+ {{ labelDescription }}
@@ -30,6 +32,7 @@ export default {
data() {
return {
labelTooltip: "",
+ labelName: "",
labelDescription: "",
hovering: "",
show: false,
@@ -58,6 +61,7 @@ export default {
*/
unhoverHandler() {
this.labelTooltip = "";
+ this.labelName = "";
this.labelDescription = "";
this.showTooltip = false;
this.isLoading = false;
@@ -81,6 +85,7 @@ export default {
that.showTooltip = true;
that.isLoading = false;
that.labelTooltip = response.data.label;
+ that.labelName = response.data.name;
that.labelDescription = response.data.description;
});
}
diff --git a/resources/assets/js/home/MyCases/MyCases.vue b/resources/assets/js/home/MyCases/MyCases.vue
index 05ddf10e2..8f9f48427 100644
--- a/resources/assets/js/home/MyCases/MyCases.vue
+++ b/resources/assets/js/home/MyCases/MyCases.vue
@@ -80,6 +80,7 @@
ref="modal-comments"
@postNotes="onPostNotes"
>
+
@@ -87,6 +88,7 @@
import HeaderCounter from "../../components/home/HeaderCounter.vue";
import ButtonFleft from "../../components/home/ButtonFleft.vue";
import ModalNewRequest from "../ModalNewRequest.vue";
+import ModalClaimCase from "../modal/ModalClaimCase.vue";
import MyCasesFilter from "../../components/search/MyCasesFilter";
import ModalComments from "../modal/ModalComments.vue";
import GroupedCell from "../../components/vuetable/GroupedCell.vue";
@@ -106,6 +108,7 @@ export default {
ModalNewRequest,
GroupedCell,
ModalComments,
+ ModalClaimCase,
ThreadTitleCell,
},
props: ["defaultOption", "settings"],
@@ -293,6 +296,11 @@ export default {
refresh: false,
});
this.$emit("cleanDefaultOption");
+ api.cases.pendingtask({APP_NUMBER:params.openapplicationuid}).then((response) => {
+ if (response.data && response.data[0] && response.data[0]['USR_ID'] == 0) {
+ this.claimCase(response.data[0]);
+ }
+ });
}
}
},
@@ -758,6 +766,26 @@ export default {
id: this.id
});
}
+ },
+ /**
+ * Claim case
+ *
+ * @param {object} item
+ */
+ claimCase(item) {
+ let that = this;
+ api.cases.open(_.extend({ ACTION: "unassigned" }, item)).then(() => {
+ api.cases.cases_open(_.extend({ ACTION: "todo" }, item)).then(() => {
+ that.$refs["modal-claim-case"].data = item;
+ that.$refs["modal-claim-case"].show();
+ });
+ });
+ },
+ /**
+ * Claim catch error handler message
+ */
+ claimCatch(message) {
+ this.showAlert(message, "danger");
}
},
};
diff --git a/resources/assets/js/home/Paused/Paused.vue b/resources/assets/js/home/Paused/Paused.vue
index 3b4d22da3..95526f6c1 100644
--- a/resources/assets/js/home/Paused/Paused.vue
+++ b/resources/assets/js/home/Paused/Paused.vue
@@ -411,7 +411,7 @@ export default {
},
mounted() {
let that = this;
- // force to open case
+ // force to open case paused
this.openDefaultCase();
Event.$on('vue-tables.paused.sorted', function (data) {
that.$emit("updateSettings", {
@@ -475,7 +475,7 @@ export default {
if(this.defaultOption) {
params = utils.getAllUrlParams(this.defaultOption);
if (params && params.app_uid && params.del_index) {
- this.openCase({
+ this.showModalUnpauseCase({
APP_UID: params.app_uid,
DEL_INDEX: params.del_index
});
diff --git a/resources/assets/js/home/Unassigned/Unassigned.vue b/resources/assets/js/home/Unassigned/Unassigned.vue
index 1cd17335f..20535a2ee 100644
--- a/resources/assets/js/home/Unassigned/Unassigned.vue
+++ b/resources/assets/js/home/Unassigned/Unassigned.vue
@@ -458,6 +458,11 @@ export default {
refresh: true
};
this.$emit("cleanDefaultOption");
+ api.cases.pendingtask({APP_NUMBER:params.openapplicationuid}).then((response) => {
+ if (response.data && response.data.length == 1 && response.data[0] && response.data[0]['USR_ID'] == 0) {
+ this.claimCase(response.data[0]);
+ }
+ });
this.onUpdateFilters(filter);
}
}
diff --git a/workflow/engine/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po
index 8bcb91d71..8e9e56f6e 100755
--- a/workflow/engine/content/translations/english/processmaker.en.po
+++ b/workflow/engine/content/translations/english/processmaker.en.po
@@ -6137,6 +6137,12 @@ msgstr "Delegation Date"
msgid "Delete"
msgstr "Delete"
+# TRANSLATION
+# LABEL/ID_DELETE_EMAIL_SETTINGS
+#: LABEL/ID_DELETE_EMAIL_SETTINGS
+msgid "Delete Email Settings"
+msgstr "Delete Email Settings"
+
# TRANSLATION
# LABEL/ID_DELETED
#: LABEL/ID_DELETED
diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql
index 6f69c02d1..aa114019d 100755
--- a/workflow/engine/data/mysql/insert.sql
+++ b/workflow/engine/data/mysql/insert.sql
@@ -57850,6 +57850,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
( 'LABEL','ID_DELEGATE_USER','en','Delegated User','2014-01-15') ,
( 'LABEL','ID_DELEGATION_DATE','en','Delegation Date','2014-01-15') ,
( 'LABEL','ID_DELETE','en','Delete','2014-01-15') ,
+( 'LABEL','ID_DELETE_EMAIL_SETTINGS','en','Delete Email Settings','2022-06-29') ,
( 'LABEL','ID_DELETED','en','Deleted','2014-01-15') ,
( 'LABEL','ID_DELETED_SUCCESSFULLY','en','Deleted Successfully','2014-01-15') ,
( 'LABEL','ID_DELETE_ACTION','en','Delete case','2020-01-15') ,
diff --git a/workflow/engine/methods/emailServer/emailServerAjax.php b/workflow/engine/methods/emailServer/emailServerAjax.php
index 60c69cdcd..a689a50f2 100644
--- a/workflow/engine/methods/emailServer/emailServerAjax.php
+++ b/workflow/engine/methods/emailServer/emailServerAjax.php
@@ -1,5 +1,6 @@
allows(basename(__FILE__), $option);
switch ($option) {
case "INS":
$arrayData = [];
-
$server = "";
$port = "";
$incomingServer = "";
@@ -19,7 +19,6 @@ switch ($option) {
$reqAuthentication = 0;
$password = "";
$smtpSecure = "";
-
$cboEmailEngine = $_POST["cboEmailEngine"];
$accountFrom = (isset($_POST["accountFrom"])) ? $_POST["accountFrom"] : "";
$fromName = $_POST["fromName"];
@@ -45,7 +44,7 @@ switch ($option) {
}
try {
- $arrayData = array(
+ $arrayData = [
"MESS_ENGINE" => $cboEmailEngine,
"MESS_SERVER" => $server,
"MESS_PORT" => $port,
@@ -60,11 +59,22 @@ switch ($option) {
"MESS_TRY_SEND_INMEDIATLY" => $sendTestMail,
"MAIL_TO" => $mailTo,
"MESS_DEFAULT" => $emailServerDefault
- );
-
- $emailSever = new \ProcessMaker\BusinessModel\EmailServer();
+ ];
+ $emailSever = new EmailServer();
$arrayEmailServerData = $emailSever->create($arrayData);
+ // Register the log
+ G::auditLog(
+ "CreateEmailSettings",
+ "SetDefaultConfiguration-> " . $emailServerDefault .
+ ", EmailEngine-> " . $cboEmailEngine .
+ ", Server-> " . $server .
+ ", Port-> " . $port .
+ ", RequireAuthentication-> " . $reqAuthentication .
+ ", FromMail-> " . $fromMail .
+ ", FromName-> " . $fromName .
+ ", UseSecureConnection-> " . $smtpSecure
+ );
$response["status"] = "OK";
$response["data"] = $arrayEmailServerData;
@@ -75,9 +85,7 @@ switch ($option) {
break;
case "UPD":
$arrayData = [];
-
$emailServerUid = $_POST["emailServerUid"];
-
$server = "";
$port = "";
$incomingServer = "";
@@ -85,7 +93,6 @@ switch ($option) {
$reqAuthentication = 0;
$password = "";
$smtpSecure = "";
-
$cboEmailEngine = $_POST["cboEmailEngine"];
$accountFrom = (isset($_POST["accountFrom"])) ? $_POST["accountFrom"] : "";
$fromName = $_POST["fromName"];
@@ -111,7 +118,7 @@ switch ($option) {
}
try {
- $arrayData = array(
+ $arrayData = [
"MESS_ENGINE" => $cboEmailEngine,
"MESS_SERVER" => $server,
"MESS_PORT" => $port,
@@ -126,11 +133,23 @@ switch ($option) {
"MESS_TRY_SEND_INMEDIATLY" => $sendTestMail,
"MAIL_TO" => $mailTo,
"MESS_DEFAULT" => $emailServerDefault
- );
-
- $emailSever = new \ProcessMaker\BusinessModel\EmailServer();
+ ];
+ $emailSever = new EmailServer();
$arrayEmailServerData = $emailSever->update($emailServerUid, $arrayData);
+ // Register the log
+ G::auditLog(
+ "UpdateEmailSettings",
+ "EmailServer-> " . $emailServerUid .
+ ", SetDefaultConfiguration-> " . $emailServerDefault .
+ ", EmailEngine-> " . $cboEmailEngine .
+ ", Server-> " . $server .
+ ", Port-> " . $port .
+ ", RequireAuthentication-> " . $reqAuthentication .
+ ", FromMail-> " . $fromMail .
+ ", FromName-> " . $fromName .
+ ", UseSecureConnection-> " . $smtpSecure
+ );
$response["status"] = "OK";
$response["data"] = $arrayEmailServerData;
@@ -144,9 +163,13 @@ switch ($option) {
$emailServerUid = $_POST["emailServerUid"];
try {
- $emailSever = new \ProcessMaker\BusinessModel\EmailServer();
-
+ $emailSever = new EmailServer();
$result = $emailSever->delete($emailServerUid);
+ // Register the log
+ G::auditLog(
+ "DeleteEmailSettings",
+ "EmailServer-> " . $emailServerUid
+ );
$response["status"] = "OK";
} catch (Exception $e) {
@@ -157,16 +180,14 @@ switch ($option) {
case "LST":
$pageSize = $_POST["pageSize"];
$search = $_POST["search"];
-
$sortField = (isset($_POST["sort"])) ? $_POST["sort"] : "";
$sortDir = (isset($_POST["dir"])) ? $_POST["dir"] : "";
$start = (isset($_POST["start"])) ? $_POST["start"] : 0;
$limit = (isset($_POST["limit"])) ? $_POST["limit"] : $pageSize;
try {
- $emailSever = new \ProcessMaker\BusinessModel\EmailServer();
-
- $result = $emailSever->getEmailServers(array("filter" => $search), $sortField, $sortDir, $start, $limit);
+ $emailSever = new EmailServer();
+ $result = $emailSever->getEmailServers(["filter" => $search], $sortField, $sortDir, $start, $limit);
$response["status"] = "OK";
$response["success"] = true;
@@ -205,7 +226,7 @@ switch ($option) {
}
try {
- $arrayData = array(
+ $arrayData = [
"MESS_ENGINE" => $cboEmailEngine,
"MESS_SERVER" => $server,
"MESS_PORT" => $port,
@@ -218,10 +239,9 @@ switch ($option) {
"MESS_TRY_SEND_INMEDIATLY" => $sendTestMail,
"MAIL_TO" => $mailTo,
"MESS_DEFAULT" => $emailServerDefault
- );
-
- $emailSever = new \ProcessMaker\BusinessModel\EmailServer();
+ ];
+ $emailSever = new EmailServer();
$arrayEmailServerData = $emailSever->testConnection($arrayData);
$response["data"] = $arrayEmailServerData;
@@ -245,10 +265,27 @@ switch ($option) {
$gmailOAuth->setSendTestMail((int) $_POST['sendTestMail']);
$gmailOAuth->setMailTo($_POST['mailTo']);
$gmailOAuth->setSetDefaultConfiguration((int) $_POST['setDefaultConfiguration']);
+ // Audit log parameters
+ $action = "CreateEmailSettings";
+ $content = "SetDefaultConfiguration-> " . $_POST['setDefaultConfiguration'];
if (!empty($_POST['emailServerUid'])) {
$gmailOAuth->setEmailServerUid($_POST['emailServerUid']);
+ // Audit log parameters
+ $action = "UpdateEmailSettings";
+ $content = "EmailServer-> " . $_POST['emailServerUid'] .
+ ", SetDefaultConfiguration-> " . $_POST['setDefaultConfiguration'];
}
$client = $gmailOAuth->getGoogleClient();
+ // Register the log
+ G::auditLog(
+ $action,
+ $content .
+ ", EmailEngine-> " . $_POST['emailEngine'] .
+ ", Server-> " . $_POST['server'] .
+ ", Port-> " . $_POST['port'] .
+ ", FromMail-> " . $_POST['senderEmail'] .
+ ", FromName-> " . $_POST['senderName']
+ );
$response = [
"status" => 200,
"data" => $client->createAuthUrl()
@@ -276,11 +313,27 @@ switch ($option) {
$office365OAuth->setSendTestMail((int) $_POST['sendTestMail']);
$office365OAuth->setMailTo($_POST['mailTo']);
$office365OAuth->setSetDefaultConfiguration((int) $_POST['setDefaultConfiguration']);
-
+ // Audit log parameters
+ $action = "CreateEmailSettings";
+ $content = "SetDefaultConfiguration-> " . $_POST['setDefaultConfiguration'];
if (!empty($_POST['emailServerUid'])) {
$office365OAuth->setEmailServerUid($_POST['emailServerUid']);
+ // Audit log parameters
+ $action = "UpdateEmailSettings";
+ $content = "EmailServer-> " . $_POST['emailServerUid'] .
+ ", SetDefaultConfiguration-> " . $_POST['setDefaultConfiguration'];
}
$client = $office365OAuth->getOffice365Client();
+ // Register the log
+ G::auditLog(
+ $action,
+ $content .
+ ", EmailEngine-> " . $_POST['emailEngine'] .
+ ", Server-> " . $_POST['server'] .
+ ", Port-> " . $_POST['port'] .
+ ", FromMail-> " . $_POST['senderEmail'] .
+ ", FromName-> " . $_POST['senderName']
+ );
$response = [
"status" => 200,
"data" => $client->getAuthorizationUrl($office365OAuth->getOptions())
diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php
index 1887db72d..f8d63d494 100644
--- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php
+++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php
@@ -2551,7 +2551,7 @@ class Cases
// Filter specific case
$query->case($caseNumber);
// Filter specific index
- if (is_int($index)) {
+ if ($index > 0) {
$query->index($index);
}
$results = $query->get();
diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Unassigned.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Unassigned.php
index 6a47bf7a2..c43a13f35 100644
--- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Unassigned.php
+++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Unassigned.php
@@ -250,7 +250,7 @@ class Unassigned extends AbstractCases
{
$caseList = CaseList::getCaseList($id, $type);
$query = Delegation::query()->select();
- $query->selfService($this->getUserId());
+ $query->selfService($this->getUserUid());
$name = '';
$description = '';
diff --git a/workflow/engine/src/ProcessMaker/Log/AuditLog.php b/workflow/engine/src/ProcessMaker/Log/AuditLog.php
index d7332968c..40f2d058c 100644
--- a/workflow/engine/src/ProcessMaker/Log/AuditLog.php
+++ b/workflow/engine/src/ProcessMaker/Log/AuditLog.php
@@ -104,9 +104,10 @@ class AuditLog
"ExportLanguage" => G::LoadTranslation("ID_EXPORT_LANGUAGE"),
"DeleteLanguage" => G::LoadTranslation("ID_DELETE_LAGUAGE"),
// Settings
- "UploadSystemSettings" => G::LoadTranslation("ID_UPLOAD_SYSTEM_SETTINGS"),
- "UpdateEmailSettings" => G::LoadTranslation("ID_UPDATE_EMAIL_SETTINGS"),
"CreateEmailSettings" => G::LoadTranslation("ID_CREATE_EMAIL_SETTINGS"),
+ "DeleteEmailSettings" => G::LoadTranslation("ID_DELETE_EMAIL_SETTINGS"),
+ "UpdateEmailSettings" => G::LoadTranslation("ID_UPDATE_EMAIL_SETTINGS"),
+ "UploadSystemSettings" => G::LoadTranslation("ID_UPLOAD_SYSTEM_SETTINGS"),
// Logo
"UploadLogo" => G::LoadTranslation("ID_UPLOAD_LOGO"),
"DeleteLogo" => G::LoadTranslation("ID_DELETE_LOGO"),
diff --git a/workflow/engine/src/ProcessMaker/Model/Delegation.php b/workflow/engine/src/ProcessMaker/Model/Delegation.php
index 9e668dd47..320ed211e 100644
--- a/workflow/engine/src/ProcessMaker/Model/Delegation.php
+++ b/workflow/engine/src/ProcessMaker/Model/Delegation.php
@@ -791,18 +791,18 @@ class Delegation extends Model
* Scope a self service cases
*
* @param \Illuminate\Database\Eloquent\Builder $query
- * @param string $user
+ * @param string $usrUid
*
* @return \Illuminate\Database\Eloquent\Builder
*/
- public function scopeSelfService($query, $user)
+ public function scopeSelfService($query, string $usrUid)
{
// Add Join with task filtering only the type self-service
$query->taskAssignType('SELF_SERVICE');
// Filtering the open threads and without users
$query->threadOpen()->withoutUserId();
// Filtering the cases unassigned that the user can view
- $this->casesUnassigned($query, $user);
+ $this->casesUnassigned($query, $usrUid);
return $query;
}
@@ -1135,7 +1135,7 @@ class Delegation extends Model
*
* @return \Illuminate\Database\Eloquent\Builder
*/
- public function casesUnassigned(&$query, $usrUid)
+ public function casesUnassigned(&$query, string $usrUid)
{
// Get the task self services related to the user
$taskSelfService = TaskUser::getSelfServicePerUser($usrUid);
diff --git a/workflow/engine/src/ProcessMaker/Model/TaskUser.php b/workflow/engine/src/ProcessMaker/Model/TaskUser.php
index b14fca6cf..d28692c08 100644
--- a/workflow/engine/src/ProcessMaker/Model/TaskUser.php
+++ b/workflow/engine/src/ProcessMaker/Model/TaskUser.php
@@ -62,7 +62,7 @@ class TaskUser extends Model
*
* @return array
*/
- public static function getSelfServicePerUser($usrUid)
+ public static function getSelfServicePerUser(string $usrUid)
{
//Get the groups related to the user
$groups = GroupUser::getGroups($usrUid, 'GRP_UID');