Merged in feature/PMCORE-3913 (pull request #8527)

PMCORE-3913

Approved-by: Rodrigo Quelca
Approved-by: Julio Cesar Laura Avendaño
This commit is contained in:
Paula Quispe
2022-08-26 13:12:51 +00:00
committed by Julio Cesar Laura Avendaño
24 changed files with 1392 additions and 349 deletions

View File

@@ -1,6 +1,11 @@
<template>
<div class="pm-vue-card">
<div class="card pm-vue-card-inside" style="width: 20rem" @dblclick="dblClick">
<div
:class="item.INIT_DATE ? 'pm-case-unread' : 'pm-case-read'"
class="card pm-vue-card-inside"
style="width: 20rem"
@dblclick="dblClick"
>
<div class="card-view-body">
<slot> </slot>
</div>
@@ -49,4 +54,24 @@ export default {
min-height: 1px;
padding: 1.25rem;
}
.pm-case-read {
border-left: 15px solid transparent;
border-radius: 0.25rem;
border-width: 1px 1px 1px 15px;
background-image:
linear-gradient(white, white),
linear-gradient(to bottom, #70C6F3, #0099DC);
background-origin: border-box;
background-clip: content-box, border-box;
}
.pm-case-unread {
border-left: 15px solid transparent;
border-radius: 0.25rem;
border-width: 1px 1px 1px 15px;
background-image:
linear-gradient(white, white),
linear-gradient(to bottom, rgba(204,204,204,1),rgba(135,135,135,1));
background-origin: border-box;
background-clip: content-box, border-box;
}
</style>

View File

@@ -1,6 +1,10 @@
<template>
<div class="pm-vue-list">
<div class="card pm-vue-list-inside" @dblclick.prevent="dblClick">
<div
:class="item.INIT_DATE ? 'pm-case-unread' : 'pm-case-read'"
class="card pm-vue-list-inside"
@dblclick.prevent="dblClick"
>
<div class="list-body">
<slot> </slot>
</div>
@@ -48,4 +52,24 @@ export default {
min-height: 1px;
padding: 1.25rem;
}
.pm-case-read {
border-left: 15px solid transparent;
border-radius: 0.25rem;
border-width: 1px 1px 1px 15px;
background-image:
linear-gradient(white, white),
linear-gradient(to bottom, #70C6F3, #0099DC);
background-origin: border-box;
background-clip: content-box, border-box;
}
.pm-case-unread {
border-left: 15px solid transparent;
border-radius: 0.25rem;
border-width: 1px 1px 1px 15px;
background-image:
linear-gradient(white, white),
linear-gradient(to bottom, rgba(204,204,204,1),rgba(135,135,135,1));
background-origin: border-box;
background-clip: content-box, border-box;
}
</style>

View File

@@ -32,6 +32,14 @@
>
{{ $t("ID_BY_PROCESS_NAME") }}
</b-form-checkbox>
<b-form-checkbox
id="checkbox-3"
v-model="byReviewStatus"
name="checkbox-3"
value="reviewStatus"
>
{{ $t("ID_BY_REVIEW_STATUS") }}
</b-form-checkbox>
</b-form-group>
</template>
</SearchPopover>
@@ -97,6 +105,7 @@ import CaseNumber from "./popovers/CaseNumber.vue";
import CaseTitle from "./popovers/CaseTitle.vue";
import ProcessName from "./popovers/ProcessName.vue";
import ProcessCategory from "./popovers/ProcessCategory.vue";
import ReviewStatus from "./popovers/ReviewStatus.vue";
import DateFilter from "./popovers/DateFilter.vue";
import TaskTitle from "./popovers/TaskTitle.vue";
import CurrentUser from "./popovers/CurrentUser.vue";
@@ -111,6 +120,7 @@ export default {
CaseTitle,
ProcessName,
ProcessCategory,
ReviewStatus,
DateFilter,
TaskTitle,
CurrentUser,
@@ -292,10 +302,50 @@ export default {
return `${params.tagPrefix}: ${data[0].label || ""}`;
},
},
reviewStatus: {
type: "ReviewStatus",
id: "reviewStatus",
title: `${this.$i18n.t("ID_FILTER")}: ${this.$i18n.t(
"ID_BY_REVIEW_STATUS"
)}`,
optionLabel: this.$i18n.t("ID_BY_REVIEW_STATUS"),
detail: "",
tagText: "",
tagPrefix: this.$i18n.t("ID_SEARCH_BY_REVIEW_STATUS"),
autoShow: false,
items: [
{
id: "reviewStatus",
value: "",
options: [
this.$i18n.t("ID_READ_FILTER_OPTION"),
this.$i18n.t("ID_UNREAD_FILTER_OPTION")
],
}
],
makeTagText: function(params, data) {
let label = "";
switch (data[0].value) {
case "READ":
label = this.items[0].options[0];
break;
case "UNREAD":
label = this.items[0].options[1];
break;
default:
label = "";
break;
}
return `${this.tagPrefix} ${label}`;
},
},
selected: "",
itemModel: {},
byProcessName: "",
byProcessCategory: "",
byReviewStatus: "",
};
},
computed: {
@@ -386,6 +436,23 @@ export default {
]),
];
}
if (self.byReviewStatus !== "") {
if (element !== undefined) {
this.reviewStatus.autoShow = false;
} else {
this.reviewStatus.autoShow = true;
}
initialFilters = [
...new Set([
...initialFilters,
...this.prepareFilterItems(
this.reviewStatus.items,
self.byReviewStatus,
true
),
]),
];
}
this.$emit("onUpdateFilters", {
params: initialFilters,
refresh: false,
@@ -460,6 +527,16 @@ export default {
? self.processCategory.autoShow
: true;
}
if (item.fieldId === "reviewStatus") {
self.searchTags.push(self.reviewStatus.id);
self.byReviewStatus = self.reviewStatus.id;
self.itemModel[self.reviewStatus.id] =
self.reviewStatus;
self.itemModel[self.reviewStatus.id].autoShow =
typeof self.reviewStatus.autoShow !== "undefined"
? self.reviewStatus.autoShow
: true;
}
});
},
dataToFilter(id) {
@@ -517,6 +594,9 @@ export default {
if (tag === "processCategory") {
this.byProcessCategory = "";
}
if (tag === "reviewStatus") {
this.byReviewStatus = "";
}
this.$emit("onUpdateFilters", { params: temp, refresh: true });
},
/**

View File

@@ -25,6 +25,14 @@
name="checkbox-1"
>
</b-form-checkbox-group>
<b-form-checkbox
id="checkbox-review-status"
v-model="byReviewStatus"
name="checkbox-review"
value="reviewStatus"
>
{{ $t("ID_BY_REVIEW_STATUS") }}
</b-form-checkbox>
</b-form-group>
</template>
</SearchPopover>
@@ -89,6 +97,7 @@ import CaseNumber from "./popovers/CaseNumber.vue";
import CaseTitle from "./popovers/CaseTitle.vue";
import ProcessName from "./popovers/ProcessName.vue";
import ProcessCategory from "./popovers/ProcessCategory.vue";
import ReviewStatus from "./popovers/ReviewStatus.vue";
import DateFilter from "./popovers/DateFilter.vue";
import TaskTitle from "./popovers/TaskTitle.vue";
import CurrentUser from "./popovers/CurrentUser.vue";
@@ -105,6 +114,7 @@ export default {
CaseTitle,
ProcessName,
ProcessCategory,
ReviewStatus,
DateFilter,
TaskTitle,
CurrentUser,
@@ -122,9 +132,47 @@ export default {
itemModel: {},
byProcessName: "",
byProcessCategory: "",
byReviewStatus: "",
criteriaItemsRadio: [],
criteriaItemsCheckbox: [],
showProcessName: true,
reviewStatus: {
type: "ReviewStatus",
id: "reviewStatus",
title: `${this.$i18n.t("ID_FILTER")}: ${this.$i18n.t("ID_BY_REVIEW_STATUS")}`,
optionLabel: this.$i18n.t("ID_BY_REVIEW_STATUS"),
detail: "",
tagText: "",
tagPrefix: this.$i18n.t("ID_SEARCH_BY_REVIEW_STATUS"),
autoShow: false,
items: [
{
id: "reviewStatus",
value: "",
options: [
this.$i18n.t("ID_READ_FILTER_OPTION"),
this.$i18n.t("ID_UNREAD_FILTER_OPTION")
],
}
],
makeTagText: function(params, data) {
let label = "";
switch (data[0].value) {
case "READ":
label = this.items[0].options[0];
break;
case "UNREAD":
label = this.items[0].options[1];
break;
default:
label = "";
break;
}
return `${this.tagPrefix} ${label}`;
},
},
};
},
mounted(){},
@@ -198,6 +246,23 @@ export default {
initialFilters =[...new Set([...initialFilters,...this.prepareFilterItems(element, item, true)])];
}
});
if (self.byReviewStatus !== "") {
if (element !== undefined) {
this.reviewStatus.autoShow = false;
} else {
this.reviewStatus.autoShow = true;
}
initialFilters = [
...new Set([
...initialFilters,
...this.prepareFilterItems(
this.reviewStatus.items,
self.byReviewStatus,
true
),
]),
];
}
this.$emit("onUpdateFilters", {
params: initialFilters,
refresh: false,
@@ -214,7 +279,7 @@ export default {
self = this,
filter,
item;
_.forEach(element.items, function(value, key) {
_.forEach(element.items || element, function(value, key) {
filter = _.find(self.filters, function(o) {
return o.filterVar === value.id;
});
@@ -256,6 +321,16 @@ export default {
? item.autoShow
: true;
}
if (item.fieldId === "reviewStatus") {
self.searchTags.push(self.reviewStatus.id);
self.byReviewStatus = self.reviewStatus.id;
self.itemModel[self.reviewStatus.id] =
self.reviewStatus;
self.itemModel[self.reviewStatus.id].autoShow =
typeof self.reviewStatus.autoShow !== "undefined"
? self.reviewStatus.autoShow
: true;
}
});
},
/**
@@ -327,6 +402,9 @@ export default {
this.byProcessName = "";
this.selectedCheckbox = [];
}
if (tag === "reviewStatus") {
this.byReviewStatus = "";
}
this.$emit("onUpdateFilters", { params: temp, refresh: true });
},
/**

View File

@@ -0,0 +1,67 @@
<template>
<div>
<SearchPopover
:target="tag"
@savePopover="onOk"
:title="info.title"
:autoShow="info.autoShow || false"
>
<template v-slot:body>
<p>{{ info.detail }}</p>
<form ref="form" @submit.stop.prevent="handleSubmit">
<b-form-group
label-for="name"
:invalid-feedback="$t('ID_PROCESS_IS_REQUIRED')"
>
<b-form-radio-group
v-model="selected"
:options="readUnread"
name="review-status-options"
stacked
></b-form-radio-group>
</b-form-group>
</form>
</template>
</SearchPopover>
</div>
</template>
<script>
import SearchPopover from "./SearchPopover.vue";
import Multiselect from "vue-multiselect";
export default {
components: {
SearchPopover,
Multiselect,
},
props: ["tag", "info", "filter"],
data() {
return {
selected: "",
readUnread: [
{ text: this.$i18n.t("ID_READ_FILTER_OPTION"), value: 'READ' },
{ text: this.$i18n.t("ID_UNREAD_FILTER_OPTION"), value: 'UNREAD' }
]
};
},
methods: {
/**
* On Ok event handler
*/
onOk() {
this.handleSubmit();
},
/**
* Form submit handler
*/
handleSubmit() {
this.filter[0].value = this.selected;
this.$emit("updateSearchTag", this.filter);
this.$root.$emit("bv::hide::popover");
},
},
};
</script>
<style src="vue-multiselect/dist/vue-multiselect.min.css"></style>
<style scoped></style>

View File

@@ -44,42 +44,90 @@
name="todo"
>
<div slot="detail" slot-scope="props">
<div class="btn-default" @click="openCaseDetail(props.row)">
<div
class="btn-default"
:class="props.row.INIT_DATE ? '' : 'pm-main-text-color '"
@click="openCaseDetail(props.row)"
>
<i class="fas fa-info-circle"></i>
</div>
</div>
<div slot="case_number" slot-scope="props">
<div
:class="props.row.INIT_DATE ? '' : 'font-weight-bold'"
slot="case_number"
slot-scope="props"
>
{{ props.row.CASE_NUMBER }}
</div>
<div slot="case_title" slot-scope="props">
<div
:class="props.row.INIT_DATE ? '' : 'font-weight-bold'"
slot="case_title"
slot-scope="props"
>
{{ props.row.THREAD_TITLE }}
</div>
<div slot="process_category" slot-scope="props">
<div
:class="props.row.INIT_DATE ? '' : 'font-weight-bold'"
slot="process_category"
slot-scope="props"
>
{{ props.row.PROCESS_CATEGORY }}
</div>
<div slot="process_name" slot-scope="props">
<div
:class="props.row.INIT_DATE ? '' : 'font-weight-bold'"
slot="process_name"
slot-scope="props"
>
{{ props.row.PROCESS_NAME }}
</div>
<div slot="task" slot-scope="props">
<div
:class="props.row.INIT_DATE ? '' : 'font-weight-bold'"
slot="task"
slot-scope="props"
>
<TaskCell :data="props.row.TASK" />
</div>
<div slot="send_by" slot-scope="props">
<div
:class="props.row.INIT_DATE ? '' : 'font-weight-bold'"
slot="send_by"
slot-scope="props"
>
<CurrentUserCell :data="props.row.USER_DATA" />
</div>
<div slot="current_user" slot-scope="props">
<div
:class="props.row.INIT_DATE ? '' : 'font-weight-bold'"
slot="current_user"
slot-scope="props"
>
{{ props.row.USERNAME_DISPLAY_FORMAT }}
</div>
<div slot="due_date" slot-scope="props">
<div
:class="props.row.INIT_DATE ? '' : 'font-weight-bold'"
slot="due_date"
slot-scope="props"
>
{{ props.row.DUE_DATE }}
</div>
<div slot="delegation_date" slot-scope="props">
<div
:class="props.row.INIT_DATE ? '' : 'font-weight-bold'"
slot="delegation_date"
slot-scope="props"
>
{{ props.row.DELEGATION_DATE }}
</div>
<div slot="priority" slot-scope="props">
<div
:class="props.row.INIT_DATE ? '' : 'font-weight-bold'"
slot="priority"
slot-scope="props"
>
{{ props.row.PRIORITY }}
</div>
<div slot="actions" slot-scope="props">
<div
:class="props.row.INIT_DATE ? '' : 'font-weight-bold'"
slot="actions"
slot-scope="props"
>
<div @mouseover="updateDataEllipsis(props.row)">
<ellipsis
v-if="dataEllipsis"
@@ -104,6 +152,7 @@
<b-col sm="12">
<div
class="v-pm-card-info"
:class="props.item.INIT_DATE ? '' : 'pm-main-text-color '"
@click="openCaseDetail(props.item)"
>
<i class="fas fa-info-circle"></i>
@@ -120,7 +169,7 @@
</b-row>
</b-col>
<template v-for="column in cardColumns" :slot="column" slot-scope="props" class="v-card-text">
<div :key="column">
<div :class="props.item.INIT_DATE ? '' : 'font-weight-bold'" :key="column">
<span class="v-card-text-dark">
{{ getCustomHeading(column, props) }} :
</span>
@@ -165,7 +214,10 @@
<div slot="actions" slot-scope="props">
<b-row>
<b-col sm="12">
<div class="v-pm-card-info" @click="openCaseDetail(props.item)">
<div
class="v-pm-card-info"
:class="props.item.INIT_DATE ? '' : 'pm-main-text-color'"
@click="openCaseDetail(props.item)">
<i class="fas fa-info-circle"></i>
</div>
</b-col>
@@ -177,7 +229,7 @@
</b-row>
</div>
<template v-for="column in cardColumns" :slot="column" slot-scope="props" class="v-card-text">
<div :key="column">
<div :class="props.item.INIT_DATE ? '' : 'font-weight-bold'" :key="column">
<span class="v-card-text-dark">
{{ getCustomHeading(column, props) }} :
</span>
@@ -911,6 +963,7 @@ export default {
}),
DUE_DATE: v.DEL_TASK_DUE_DATE_LABEL,
DELEGATION_DATE: v.DEL_DELEGATE_DATE_LABEL,
INIT_DATE: v.DEL_INIT_DATE,
PRIORITY: v.DEL_PRIORITY_LABEL,
DEL_INDEX: v.DEL_INDEX,
APP_UID: v.APP_UID,
@@ -968,6 +1021,7 @@ export default {
DEL_INDEX: item.DEL_INDEX,
PRO_UID: item.PRO_UID,
TAS_UID: item.TAS_UID,
INIT_DATE: item.INIT_DATE,
ACTION: "todo",
});
this.$emit("onUpdatePage", "XCase");
@@ -989,6 +1043,7 @@ export default {
PRO_UID: item.PRO_UID,
TAS_UID: item.TAS_UID,
APP_NUMBER: item.CASE_NUMBER,
INIT_DATE: item.INIT_DATE,
ACTION: "todo",
});
that.$emit("onUpdatePage", "case-detail");

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -419,3 +419,7 @@ a.router-link-exact-active.router-link-active.vsm--link.vsm--link_level-2.vsm--l
.vsm--mobile-item {
max-width: 210px !important;
}
.pm-main-text-color {
color: #3097e4;
}

View File

@@ -272,10 +272,10 @@ class AbstractCasesTest extends TestCase
}
/**
* This check the getter and setter related to the inbox status
* This check the getter and setter related to the review status
*
* @covers \ProcessMaker\BusinessModel\Cases\AbstractCases::setInboxStatus()
* @covers \ProcessMaker\BusinessModel\Cases\AbstractCases::getInboxStatus()
* @covers \ProcessMaker\BusinessModel\Cases\AbstractCases::setReviewStatus()
* @covers \ProcessMaker\BusinessModel\Cases\AbstractCases::getReviewStatus()
* @test
*/
public function it_return_set_get_inbox_status()
@@ -283,8 +283,8 @@ class AbstractCasesTest extends TestCase
$absCases = new AbstractCases();
$arguments = ['READ', 'UNREAD'];
$index = array_rand($arguments);
$absCases->setInboxStatus($arguments[$index]);
$actual = $absCases->getInboxStatus();
$absCases->setReviewStatus($arguments[$index]);
$actual = $absCases->getReviewStatus();
if ($arguments[$index] === '') {
$this->assertEmpty($actual);
} else {
@@ -293,16 +293,16 @@ class AbstractCasesTest extends TestCase
}
/**
* This test the exception setInboxStatus
* This test the exception setReviewStatus
*
* @covers \ProcessMaker\BusinessModel\Cases\AbstractCases::setInboxStatus()
* @covers \ProcessMaker\BusinessModel\Cases\AbstractCases::setReviewStatus()
* @test
*/
public function it_return_exception_inbox_status()
{
$this->expectException(Exception::class);
$absCases = new AbstractCases();
$absCases->setInboxStatus('INVALID_VALUE');
$absCases->setReviewStatus('INVALID_VALUE');
}
/**

View File

@@ -296,7 +296,7 @@ class HomeTest extends TestCase
'CAL_COLUMNS' => '[{"field":"case_number","enableFilter":false,"set":true},{"field":"case_title","enableFilter":false,"set":true},{"field":"process_name","enableFilter":false,"set":true},{"field":"task","enableFilter":false,"set":true},{"field":"send_by","enableFilter":false,"set":true},{"field":"due_date","enableFilter":false,"set":true},{"field":"delegation_date","enableFilter":false,"set":true},{"field":"priority","enableFilter":false,"set":true},{"field":"VAR1","enableFilter":false,"set":true},{"field":"VAR2","enableFilter":false,"set":true},{"field":"VAR3","enableFilter":false,"set":false}]',
'ADD_TAB_UID' => $additionalTables->ADD_TAB_UID
]);
$arguments = [$caseList->CAL_ID, 0, 0, 0, 0, 15, 0, '', '', 'APP_NUMBER,DESC'];
$arguments = [$caseList->CAL_ID, 0, 0, 0, 0, 15, 0, '', '', '', 'APP_NUMBER,DESC'];
$home = new Home($application->APP_INIT_USER);
$result = $home->getCustomDraft(...$arguments);
@@ -350,7 +350,7 @@ class HomeTest extends TestCase
'CAL_COLUMNS' => '[{"field":"case_number","enableFilter":false,"set":true},{"field":"case_title","enableFilter":false,"set":true},{"field":"process_name","enableFilter":false,"set":true},{"field":"task","enableFilter":false,"set":true},{"field":"send_by","enableFilter":false,"set":true},{"field":"due_date","enableFilter":false,"set":true},{"field":"delegation_date","enableFilter":false,"set":true},{"field":"priority","enableFilter":false,"set":true},{"field":"VAR1","enableFilter":false,"set":true},{"field":"VAR2","enableFilter":false,"set":true},{"field":"VAR3","enableFilter":false,"set":false}]',
'ADD_TAB_UID' => $additionalTables->ADD_TAB_UID
]);
$arguments = [$caseList->CAL_ID, 0, 0, 0, 0, 15, 0, '', '', '', '', 'APP_NUMBER,DESC'];
$arguments = [$caseList->CAL_ID, 0, 0, 0, 0, 15, 0, '', '', '', '', '', 'APP_NUMBER,DESC'];
$home = new Home($application->APP_INIT_USER);
$result = $home->getCustomInbox(...$arguments);
@@ -365,7 +365,7 @@ class HomeTest extends TestCase
* @test
* @covers \ProcessMaker\BusinessModel\Cases\Home::getCustomUnassigned()
*/
public function it_should_test_getCustomUnassignedt()
public function it_should_test_getCustomUnassigned()
{
$this->markTestIncomplete('Illegal mix of collations');
$additionalTables = factory(AdditionalTables::class)->create();
@@ -430,7 +430,7 @@ class HomeTest extends TestCase
'CAL_COLUMNS' => '[{"field":"case_number","enableFilter":false,"set":true},{"field":"case_title","enableFilter":false,"set":true},{"field":"process_name","enableFilter":false,"set":true},{"field":"task","enableFilter":false,"set":true},{"field":"send_by","enableFilter":false,"set":true},{"field":"due_date","enableFilter":false,"set":true},{"field":"delegation_date","enableFilter":false,"set":true},{"field":"priority","enableFilter":false,"set":true},{"field":"VAR1","enableFilter":false,"set":true},{"field":"VAR2","enableFilter":false,"set":true},{"field":"VAR3","enableFilter":false,"set":false}]',
'ADD_TAB_UID' => $additionalTables->ADD_TAB_UID
]);
$arguments = [$caseList->CAL_ID, 0, 0, 0, 0, 15, 0, '', '', '', '', 'APP_NUMBER,DESC'];
$arguments = [$caseList->CAL_ID, 0, 0, 0, 0, 15, 0, '', '', '', '', '', 'APP_NUMBER,DESC'];
$home = new Home($application->APP_INIT_USER);
$result = $home->getCustomUnassigned(...$arguments);
@@ -530,7 +530,7 @@ class HomeTest extends TestCase
'CAL_COLUMNS' => '[{"field":"case_number","enableFilter":false,"set":true},{"field":"case_title","enableFilter":false,"set":true},{"field":"process_name","enableFilter":false,"set":true},{"field":"task","enableFilter":false,"set":true},{"field":"send_by","enableFilter":false,"set":true},{"field":"due_date","enableFilter":false,"set":true},{"field":"delegation_date","enableFilter":false,"set":true},{"field":"priority","enableFilter":false,"set":true},{"field":"VAR1","enableFilter":false,"set":true},{"field":"VAR2","enableFilter":false,"set":true},{"field":"VAR3","enableFilter":false,"set":false}]',
'ADD_TAB_UID' => $additionalTables->ADD_TAB_UID
]);
$arguments = [$caseList->CAL_ID, 0, 0, 0, 0, 15, 0, '', '', '', '', 'APP_NUMBER,DESC'];
$arguments = [$caseList->CAL_ID, 0, 0, 0, 0, 15, 0, '', '', '', '', '', 'APP_NUMBER,DESC'];
$home = new Home($application1->APP_INIT_USER);
$result = $home->getCustomPaused(...$arguments);

View File

@@ -3131,6 +3131,12 @@ msgstr "By Process Category"
msgid "By Process Name"
msgstr "By Process Name"
# TRANSLATION
# LABEL/ID_BY_REVIEW_STATUS
#: LABEL/ID_BY_REVIEW_STATUS
msgid "By Review Status"
msgstr "By Review Status"
# TRANSLATION
# LABEL/ID_BY_TASK
#: LABEL/ID_BY_TASK
@@ -23303,6 +23309,12 @@ msgstr "Reactivate"
msgid "Reactivating case..."
msgstr "Reactivating case..."
# TRANSLATION
# LABEL/ID_READ_FILTER_OPTION
#: LABEL/ID_READ_FILTER_OPTION
msgid "Read"
msgstr "Read"
# TRANSLATION
# LABEL/ID_READ_ONLINE_DOCUMENTATION
#: LABEL/ID_READ_ONLINE_DOCUMENTATION
@@ -24575,6 +24587,12 @@ msgstr "Search by Process Category:"
msgid "Search by Process Name:"
msgstr "Search by Process Name:"
# TRANSLATION
# LABEL/ID_SEARCH_BY_REVIEW_STATUS
#: LABEL/ID_SEARCH_BY_REVIEW_STATUS
msgid "Search by Review Status:"
msgstr "Search by Review Status:"
# TRANSLATION
# LABEL/ID_SEARCH_BY_SEND_BY
#: LABEL/ID_SEARCH_BY_SEND_BY
@@ -27413,6 +27431,12 @@ msgstr "Unpause Time"
msgid "Unpausing case..."
msgstr "Unpausing case..."
# TRANSLATION
# LABEL/ID_UNREAD_FILTER_OPTION
#: LABEL/ID_UNREAD_FILTER_OPTION
msgid "Unread"
msgstr "Unread"
# TRANSLATION
# LABEL/ID_UNSAVED_CHANGES_QUESTION
#: LABEL/ID_UNSAVED_CHANGES_QUESTION

View File

@@ -57330,11 +57330,12 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
( 'LABEL','ID_BY_PARTICIPATION','en','By Participation','2021-07-13') ,
( 'LABEL','ID_BY_PROCESS_CATEGORY','en','By Process Category','2021-07-13') ,
( 'LABEL','ID_BY_PROCESS_NAME','en','By Process Name','2020-12-16') ,
( 'LABEL','ID_BY_TASK','en','By Task','2020-12-16') ,
( 'LABEL','ID_BY_REVIEW_STATUS','en','By Review Status','2022-08-17') ,
( 'LABEL','ID_BY_ROLE','en','By Role','2020-12-15') ,
( 'LABEL','ID_BY_SEND_BY','en','By Send By','2021-08-31') ,
( 'LABEL','ID_BY_STATUS','en','By Status','2020-12-16') ,
( 'LABEL','ID_BY_START_DATE','en','By Start Date','2020-12-16') ,
( 'LABEL','ID_BY_TASK','en','By Task','2020-12-16') ,
( 'LABEL','ID_CACHE_BTN_BUILD','en','Build Cache','2014-01-15') ,
( 'LABEL','ID_CACHE_BTN_SETUP_PASSWRD','en','Setup Password','2014-01-15') ,
( 'LABEL','ID_CACHE_BTN_SETUP_SESSION','en','Delete older session files','2014-01-15') ,
@@ -60801,6 +60802,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
( 'LABEL','ID_RB_DATABASE_NAME','en','Rbac Database Name','2014-01-15') ,
( 'LABEL','ID_REACTIVATE','en','Reactivate','2014-01-15') ,
( 'LABEL','ID_REACTIVATING_CASE','en','Reactivating case...','2014-01-15') ,
( 'LABEL','ID_READ_FILTER_OPTION','en','Read','2022-08-17') ,
( 'LABEL','ID_READ_ONLINE_DOCUMENTATION','en','Read Online Documentation','2014-01-15') ,
( 'LABEL','ID_REALLY_SHOULD','en','You really should do it','2014-01-15') ,
( 'LABEL','ID_REASON','en','Reason','2016-10-20') ,
@@ -61020,6 +61022,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
( 'LABEL','ID_SEARCH_BY_PARTICIPATION','en','Search by Participation:','2021-07-13') ,
( 'LABEL','ID_SEARCH_BY_PROCESS_CATEGORY','en','Search by Process Category:','2021-07-13') ,
( 'LABEL','ID_SEARCH_BY_PROCESS_NAME','en','Search by Process Name:','2020-12-16') ,
( 'LABEL','ID_SEARCH_BY_REVIEW_STATUS','en','Search by Review Status:','2022-08-17') ,
( 'LABEL','ID_SEARCH_BY_SEND_BY','en','Search By Send By:','2021-08-31') ,
( 'LABEL','ID_SEARCH_BY_START_DATE','en','Search by Start Date:','2020-12-16') ,
( 'LABEL','ID_SEARCH_BY_STATUS','en','Search by Status:','2020-12-22') ,
@@ -61549,6 +61552,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
( 'LABEL','ID_UNPAUSE_DATE','en','Unpause Date','2014-01-15') ,
( 'LABEL','ID_UNPAUSE_TIME','en','Unpause Time','2014-01-15') ,
( 'LABEL','ID_UNPAUSING_CASE','en','Unpausing case...','2014-01-15') ,
( 'LABEL','ID_UNREAD_FILTER_OPTION','en','Unread','2022-08-17') ,
( 'LABEL','ID_UNSAVED_CHANGES_QUESTION','en','You are about to close a window and there may be some unsaved changes. Are you sure to continue?','2015-08-17') ;
INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ) VALUES

View File

@@ -39,14 +39,14 @@ if ($RBAC->userCanAccess('PM_CASES') != 1) {
$caseInstance = new Cases();
//cleaning the case session data
// Cleaning the case session data
Cases::clearCaseSessionData();
try {
//Loading data for a Jump request
// Loading data for a Jump request
if (!isset($_GET['APP_UID']) && isset($_GET['APP_NUMBER'])) {
$_GET['APP_UID'] = $caseInstance->getApplicationUIDByNumber($_GET['APP_NUMBER']);
//Get the index related to the userLogged but this thread can be OPEN or CLOSED
// Get the index related to the userLogged but this thread can be OPEN or CLOSED
if (isset($_GET['actionFromList'])) {
if ($_GET['actionFromList'] == 'unassigned') {
$_SESSION['APPLICATION'] = $_GET['APP_UID'];
@@ -58,14 +58,14 @@ try {
$_GET['DEL_INDEX'] = $caseInstance->getCurrentDelegation($_GET['APP_UID'], $_SESSION['USER_LOGGED']);
}
//if the application doesn't exist
// If the application doesn't exist
if (is_null($_GET['APP_UID'])) {
G::SendMessageText(G::LoadTranslation('ID_CASE_DOES_NOT_EXISTS'), 'info');
G::header('location: casesListExtJs');
exit();
}
//if the application exists but the
// If the application exists but the
if (is_null($_GET['DEL_INDEX'])) {
G::SendMessageText(G::LoadTranslation('ID_CASE_IS_CURRENTLY_WITH_ANOTHER_USER'), 'info');
G::header('location: casesListExtJs');
@@ -77,7 +77,7 @@ try {
$delIndex = $_GET['DEL_INDEX'];
$action = isset($_GET['action']) ? $_GET['action'] : '';
//loading application data
// Loading application data
$fieldCase = $caseInstance->loadCase($appUid, $delIndex);
if (!Process::isActive($fieldCase['PRO_UID'], 'PRO_UID')) {
@@ -105,15 +105,19 @@ try {
switch ($fieldCase['APP_STATUS']) {
case 'DRAFT':
case 'TO_DO':
//Check if the case is in pause, check a valid record in table APP_DELAY
// Check if the case is in pause, check a valid record in table APP_DELAY
$isPaused = AppDelay::isPaused($appUid, $delIndex);
//Check if the case is a waiting for a SYNCHRONOUS subprocess
// Check if the case is a waiting for a SYNCHRONOUS subprocess
$subAppData = new SubApplication();
$caseSubprocessPending = $subAppData->isSubProcessWithCasePending($appUid, $delIndex);
if ($isPaused || $caseSubprocessPending) {
//the case is paused show only the resume
// Set as read when the pause thread or subprocess was open
if (is_null($fieldCase['DEL_INIT_DATE'])) {
$caseInstance->setDelInitDate($appUid, $delIndex);
}
// The case is paused show only the resume
$_SESSION['APPLICATION'] = $appUid;
$_SESSION['INDEX'] = $delIndex;
$_SESSION['PROCESS'] = $fieldCase['PRO_UID'];
@@ -129,11 +133,9 @@ try {
* these routine is to verify if the case was acceded from advanced search list
*/
if ($action == 'search') {
//verify if the case is with the current user
// Verify if the case is with the current user
$delegationUsers = AppDelegation::getCurrentUsers($appUid, $delIndex);
if ($delegationUsers['USR_UID'] !== $_SESSION['USER_LOGGED'] && !empty($delegationUsers['USR_UID'])) {
//distinct "" for selfservice
//so we show just the resume
$_SESSION['alreadyDerivated'] = true;
$_SESSION['APPLICATION'] = $appUid;
$_SESSION['INDEX'] = $delIndex;
@@ -146,11 +148,11 @@ try {
}
}
//Proceed and try to open the case
// Proceed and try to open the case
$appDelegation = new AppDelegation();
$delegationInfo = $appDelegation->load($appUid, $delIndex);
//If there are no user in the delegation row, this case is in selfservice
// If there are no user in the delegation row, this case is in selfservice
if (empty($delegationInfo['USR_UID'])) {
$_SESSION['APPLICATION'] = $appUid;
$_SESSION['INDEX'] = $delIndex;
@@ -159,7 +161,7 @@ try {
$_SESSION['STEP_POSITION'] = 0;
$_SESSION['CURRENT_TASK'] = $fieldCase['TAS_UID'];
//If the task is in the valid selfservice tasks for this user, then catch the case, else just view the resume
// If the task is in the valid selfservice tasks for this user, then catch the case, else just view the resume
if ($caseInstance->isSelfService($_SESSION['USER_LOGGED'], $fieldCase['TAS_UID'], $appUid)) {
require_once(PATH_METHODS . 'cases' . PATH_SEP . 'cases_CatchSelfService.php');
} else {
@@ -169,7 +171,7 @@ try {
exit();
}
//If the current users is in the AppDelegation row and the thread is open will be open the case
// If the current users is in the AppDelegation row and the thread is open will be open the case
if (($delegationInfo['USR_UID'] == $_SESSION['USER_LOGGED'] && $delegationInfo['DEL_THREAD_STATUS'] === 'OPEN')
&& $action != 'sent'
) {
@@ -207,13 +209,13 @@ try {
$_SESSION['bNoShowSteps'] = 1;
$_SESSION['STEP_POSITION'] = 0;
//When the case have another user or current user doesn't have rights to this self-service,
//Just view the case Resume
// When the case have another user or current user doesn't have rights to this self-service,
// Just view the case Resume
if ($action === 'search' || $action === 'to_reassign') {
//We need to use the index sent with the corresponding record
// We need to use the index sent with the corresponding record
$_SESSION['INDEX'] = $delIndex;
} else {
//Get DEL_INDEX
// Get last DEL_INDEX
$criteria = new Criteria('workflow');
$criteria->addSelectColumn(AppDelegationPeer::DEL_INDEX);
$criteria->add(AppDelegationPeer::APP_UID, $appUid);
@@ -231,7 +233,7 @@ try {
require_once(PATH_METHODS . 'cases' . PATH_SEP . 'cases_Resume.php');
}
break;
default: //APP_STATUS IS COMPLETED OR CANCELLED
default: // APP_STATUS in (COMPLETED, CANCELLED)
$_SESSION['APPLICATION'] = $appUid;
$_SESSION['INDEX'] = $caseInstance->getCurrentDelegationCase($_GET['APP_UID']);
$_SESSION['PROCESS'] = $fieldCase['PRO_UID'];

View File

@@ -3,7 +3,6 @@
namespace ProcessMaker\BusinessModel\Cases;
use Datetime;
use DB;
use Exception;
use ProcessMaker\BusinessModel\Interfaces\CasesInterface;
use ProcessMaker\BusinessModel\Validator;
@@ -14,7 +13,7 @@ use ProcessMaker\Model\User;
class AbstractCases implements CasesInterface
{
// Constants for validate values
const INBOX_STATUSES = ['READ', 'UNREAD'];
const REVIEW_STATUSES = ['READ', 'UNREAD']; //0 => READ, 1 => UNREAD
const PARTICIPATED_STATUSES = ['STARTED', 'IN_PROGRESS', 'COMPLETED', 'SUPERVISING'];
const RISK_STATUSES = ['ON_TIME', 'AT_RISK', 'OVERDUE'];
const CASE_STATUSES = [1 => 'DRAFT', 2 => 'TO_DO', 3 => 'COMPLETED', 4 => 'CANCELED'];
@@ -69,7 +68,7 @@ class AbstractCases implements CasesInterface
private $valueToSearch = '';
// Filter cases depending if were read or not, know as "$filter" in the old lists classes
private $inboxStatus = '';
private $reviewStatus = '';
// Filter cases depending if the case was started or completed by the current user, know as "$filter" in the old lists classes
private $participatedStatus = '';
@@ -373,23 +372,25 @@ class AbstractCases implements CasesInterface
}
/**
* Set inbox status
* Set review status
*
* @param string $inboxStatus
* @param string $status
*
* @throws Exception
*/
public function setInboxStatus(string $inboxStatus)
public function setReviewStatus(string $status)
{
// Convert the value to upper case
$inboxStatus = strtoupper($inboxStatus);
$status = strtoupper($status);
// Validate the inbox status
if (!in_array($inboxStatus, self::INBOX_STATUSES)) {
throw new Exception("Inbox status '{$inboxStatus}' is not valid.");
// Validate the status value
if (!empty($status)) {
if (!in_array($status, self::REVIEW_STATUSES)) {
throw new Exception("Inbox status '{$status}' is not valid.");
}
}
$this->inboxStatus = $inboxStatus;
$this->reviewStatus = $status;
}
/**
@@ -397,9 +398,9 @@ class AbstractCases implements CasesInterface
*
* @return string
*/
public function getInboxStatus()
public function getReviewStatus()
{
return $this->inboxStatus;
return $this->reviewStatus;
}
/**
@@ -1412,6 +1413,10 @@ class AbstractCases implements CasesInterface
if (get_class($this) === Inbox::class && !empty($properties['sendBy'])) {
$this->setSendBy($properties['sendBy']);
}
// Filter by Review Status
if (get_class($this) === Inbox::class && !empty($properties['reviewStatus'])) {
$this->setReviewStatus($properties['reviewStatus']);
}
/** Apply filters related to PAUSED */
// Filter date related to delegate from
if (get_class($this) === Paused::class && !empty($properties['delegateFrom'])) {
@@ -1425,6 +1430,10 @@ class AbstractCases implements CasesInterface
if (get_class($this) === Paused::class && !empty($properties['sendBy'])) {
$this->setSendBy($properties['sendBy']);
}
// Filter by Review Status
if (get_class($this) === Paused::class && !empty($properties['reviewStatus'])) {
$this->setReviewStatus($properties['reviewStatus']);
}
/** Apply filters related to UNASSIGNED */
// Filter date related to delegate from
if (get_class($this) === Unassigned::class && !empty($properties['delegateFrom'])) {
@@ -1438,6 +1447,10 @@ class AbstractCases implements CasesInterface
if (get_class($this) === Unassigned::class && !empty($properties['sendBy'])) {
$this->setSendBy($properties['sendBy']);
}
// Filter by Review Status
if (get_class($this) === Unassigned::class && !empty($properties['reviewStatus'])) {
$this->setReviewStatus($properties['reviewStatus']);
}
/** Apply filters related to MY CASES */
// My cases filter: started, in-progress, completed, supervising

View File

@@ -23,6 +23,7 @@ class Draft extends AbstractCases
'TASK.TAS_TITLE', // Task
'APP_DELEGATION.DEL_TASK_DUE_DATE', // Due Date
'APP_DELEGATION.DEL_DELEGATE_DATE', // Delegate Date
'APP_DELEGATION.DEL_INIT_DATE', // Init Date
'APP_DELEGATION.DEL_PRIORITY', // Priority
'APP_DELEGATION.DEL_PREVIOUS', // Previous
// Additional column for other functionalities
@@ -86,6 +87,10 @@ class Draft extends AbstractCases
if (!empty($this->getCaseUid())) {
$query->appUid($this->getCaseUid());
}
// Specific review status
if (!empty($this->getReviewStatus())) {
$query->readUnread($this->getReviewStatus());
}
return $query;
}

View File

@@ -47,6 +47,7 @@ class Home
* @param int $offset
* @param string $caseTitle
* @param string $filterCases
* @param string $reviewStatus
* @param string $sort
* @param callable $callback
*
@@ -61,6 +62,7 @@ class Home
int $offset = 0,
string $caseTitle = '',
string $filterCases = '',
string $reviewStatus = '',
string $sort = 'APP_NUMBER,DESC',
callable $callback = null
)
@@ -71,6 +73,7 @@ class Home
$properties['caseNumber'] = $caseNumber;
$properties['caseTitle'] = $caseTitle;
$properties['filterCases'] = $filterCases;
$properties['reviewStatus'] = $reviewStatus;
$properties['category'] = $category;
$properties['process'] = $process;
$properties['task'] = $task;
@@ -103,6 +106,7 @@ class Home
* @param string $delegateFrom
* @param string $delegateTo
* @param string $filterCases
* @param string $reviewStatus
* @param string $sort
* @param string $sendBy
* @param callable $callback
@@ -120,6 +124,7 @@ class Home
string $delegateFrom = '',
string $delegateTo = '',
string $filterCases = '',
string $reviewStatus = '',
string $sort = 'APP_NUMBER,DESC',
string $sendBy = '',
callable $callback = null
@@ -133,6 +138,7 @@ class Home
$properties['delegateFrom'] = $delegateFrom;
$properties['delegateTo'] = $delegateTo;
$properties['filterCases'] = $filterCases;
$properties['reviewStatus'] = $reviewStatus;
$properties['category'] = $category;
$properties['process'] = $process;
$properties['task'] = $task;
@@ -166,6 +172,7 @@ class Home
* @param string $delegateFrom
* @param string $delegateTo
* @param string $filterCases
* @param string $reviewStatus
* @param string $sort
* @param string $sendBy
* @param callable $callback
@@ -183,6 +190,7 @@ class Home
string $delegateFrom = '',
string $delegateTo = '',
string $filterCases = '',
string $reviewStatus = '',
string $sort = 'APP_NUMBER,DESC',
string $sendBy = '',
callable $callback = null
@@ -196,6 +204,7 @@ class Home
$properties['delegateFrom'] = $delegateFrom;
$properties['delegateTo'] = $delegateTo;
$properties['filterCases'] = $filterCases;
$properties['reviewStatus'] = $reviewStatus;
$properties['category'] = $category;
$properties['process'] = $process;
$properties['task'] = $task;
@@ -231,6 +240,7 @@ class Home
* @param string $delegateFrom
* @param string $delegateTo
* @param string $filterCases
* @param string $reviewStatus
* @param string $sort
* @param string $sendBy
* @param callable $callback
@@ -248,6 +258,7 @@ class Home
string $delegateFrom = '',
string $delegateTo = '',
string $filterCases = '',
string $reviewStatus = '',
string $sort = 'APP_NUMBER,DESC',
string $sendBy = '',
callable $callback = null
@@ -261,6 +272,7 @@ class Home
$properties['delegateFrom'] = $delegateFrom;
$properties['delegateTo'] = $delegateTo;
$properties['filterCases'] = $filterCases;
$properties['reviewStatus'] = $reviewStatus;
$properties['category'] = $category;
$properties['process'] = $process;
$properties['task'] = $task;
@@ -376,6 +388,7 @@ class Home
* @param int $offset
* @param string $caseTitle
* @param string $filterCases
* @param string $reviewStatus
* @param string $sort
* @param array $customFilters
*
@@ -391,6 +404,7 @@ class Home
int $offset = 0,
string $caseTitle = '',
string $filterCases = '',
string $reviewStatus = '',
string $sort = 'APP_NUMBER,DESC',
array $customFilters = []
)
@@ -404,11 +418,12 @@ class Home
$offset,
$caseTitle,
$filterCases,
$reviewStatus,
$sort
];
//clear duplicate indexes
$keys = ['caseNumber', 'category', 'process', 'task', 'limit', 'offset', 'caseTitle', 'filterCases', 'sort'];
$keys = ['caseNumber', 'category', 'process', 'task', 'limit', 'offset', 'caseTitle', 'filterCases', 'reviewStatus', 'sort'];
foreach ($keys as $value) {
unset($customFilters[$value]);
}
@@ -436,6 +451,7 @@ class Home
* @param string $delegateFrom
* @param string $delegateTo
* @param string $filterCases
* @param string $reviewStatus
* @param string $sort
* @param string $sendBy
* @param array $customFilters
@@ -454,6 +470,7 @@ class Home
string $delegateFrom = '',
string $delegateTo = '',
string $filterCases = '',
string $reviewStatus = '',
string $sort = 'APP_NUMBER,DESC',
string $sendBy = '',
array $customFilters = []
@@ -470,12 +487,13 @@ class Home
$delegateFrom,
$delegateTo,
$filterCases,
$reviewStatus,
$sort,
$sendBy
];
//clear duplicate indexes
$keys = ['caseNumber', 'category', 'process', 'task', 'limit', 'offset', 'caseTitle', 'delegateFrom', 'delegateTo', 'filterCases', 'sort', 'sendBy'];
$keys = ['caseNumber', 'category', 'process', 'task', 'limit', 'offset', 'caseTitle', 'delegateFrom', 'delegateTo', 'filterCases', 'reviewStatus', 'sort', 'sendBy'];
foreach ($keys as $value) {
unset($customFilters[$value]);
}
@@ -503,6 +521,7 @@ class Home
* @param string $delegateFrom
* @param string $delegateTo
* @param string $filterCases
* @param string $reviewStatus
* @param string $sort
* @param string $sendBy
* @param array $customFilters
@@ -521,6 +540,7 @@ class Home
string $delegateFrom = '',
string $delegateTo = '',
string $filterCases = '',
string $reviewStatus = '',
string $sort = 'APP_NUMBER,DESC',
string $sendBy = '',
array $customFilters = []
@@ -537,12 +557,13 @@ class Home
$delegateFrom,
$delegateTo,
$filterCases,
$reviewStatus,
$sort,
$sendBy
];
//clear duplicate indexes
$keys = ['caseNumber', 'category', 'process', 'task', 'limit', 'offset', 'caseTitle', 'delegateFrom', 'delegateTo', 'filterCases', 'sort', 'sendBy'];
$keys = ['caseNumber', 'category', 'process', 'task', 'limit', 'offset', 'caseTitle', 'delegateFrom', 'delegateTo', 'filterCases', 'reviewStatus', 'sort', 'sendBy'];
foreach ($keys as $value) {
unset($customFilters[$value]);
}
@@ -570,6 +591,7 @@ class Home
* @param string $delegateFrom
* @param string $delegateTo
* @param string $filterCases
* @param string $reviewStatus
* @param string $sort
* @param string $sendBy
* @param array $customFilters
@@ -588,6 +610,7 @@ class Home
string $delegateFrom = '',
string $delegateTo = '',
string $filterCases = '',
string $reviewStatus = '',
string $sort = 'APP_NUMBER,DESC',
string $sendBy = '',
array $customFilters = []
@@ -604,12 +627,13 @@ class Home
$delegateFrom,
$delegateTo,
$filterCases,
$reviewStatus,
$sort,
$sendBy
];
//clear duplicate indexes
$keys = ['caseNumber', 'category', 'process', 'task', 'limit', 'offset', 'caseTitle', 'delegateFrom', 'delegateTo', 'filterCases', 'sort', 'sendBy'];
$keys = ['caseNumber', 'category', 'process', 'task', 'limit', 'offset', 'caseTitle', 'delegateFrom', 'delegateTo', 'filterCases', 'reviewStatus', 'sort', 'sendBy'];
foreach ($keys as $value) {
unset($customFilters[$value]);
}

View File

@@ -3,7 +3,6 @@
namespace ProcessMaker\BusinessModel\Cases;
use G;
use ProcessMaker\Model\Application;
use ProcessMaker\Model\CaseList;
use ProcessMaker\Model\Delegation;
use ProcessMaker\Model\Task;
@@ -26,6 +25,7 @@ class Inbox extends AbstractCases
'USERS.USR_LASTNAME', // Current User LastName
'APP_DELEGATION.DEL_TASK_DUE_DATE', // Due Date
'APP_DELEGATION.DEL_DELEGATE_DATE', // Delegate Date
'APP_DELEGATION.DEL_INIT_DATE', // Init Date
'APP_DELEGATION.DEL_PRIORITY', // Priority
'APP_DELEGATION.DEL_PREVIOUS', // Previous
// Additional column for other functionalities
@@ -101,6 +101,10 @@ class Inbox extends AbstractCases
if (!empty($this->getSendBy())) {
$query->sendBy($this->getSendBy());
}
// Specific review status
if (!empty($this->getReviewStatus())) {
$query->readUnread($this->getReviewStatus());
}
return $query;
}

View File

@@ -25,6 +25,7 @@ class Paused extends AbstractCases
'USERS.USR_LASTNAME', // Current User LastName
'APP_DELEGATION.DEL_TASK_DUE_DATE', // Due Date
'APP_DELEGATION.DEL_DELEGATE_DATE', // Delegate Date
'APP_DELEGATION.DEL_INIT_DATE', // Init Date
'APP_DELEGATION.DEL_PRIORITY', // Priority
'APP_DELEGATION.DEL_PREVIOUS', // Previous
// Additional column for other functionalities
@@ -100,6 +101,10 @@ class Paused extends AbstractCases
if (!empty($this->getSendBy())) {
$query->sendBy($this->getSendBy());
}
// Specific review status
if (!empty($this->getReviewStatus())) {
$query->readUnread($this->getReviewStatus());
}
return $query;
}

View File

@@ -3,7 +3,6 @@
namespace ProcessMaker\BusinessModel\Cases;
use G;
use ProcessMaker\Model\Application;
use ProcessMaker\Model\CaseList;
use ProcessMaker\Model\Delegation;
use ProcessMaker\Model\Task;
@@ -26,6 +25,7 @@ class Unassigned extends AbstractCases
'USERS.USR_LASTNAME', // Current User LastName
'APP_DELEGATION.DEL_TASK_DUE_DATE', // Due Date
'APP_DELEGATION.DEL_DELEGATE_DATE', // Delegate Date
'APP_DELEGATION.DEL_INIT_DATE', // Init Date
'APP_DELEGATION.DEL_PRIORITY', // Priority
'APP_DELEGATION.DEL_PREVIOUS', // Previous
// Additional column for other functionalities
@@ -89,7 +89,6 @@ class Unassigned extends AbstractCases
if (!empty($this->getCaseUid())) {
$query->appUid($this->getCaseUid());
}
// Specific delegate date from
if (!empty($this->getDelegateFrom())) {
$query->delegateDateFrom($this->getDelegateFrom());
@@ -102,6 +101,10 @@ class Unassigned extends AbstractCases
if (!empty($this->getSendBy())) {
$query->sendBy($this->getSendBy());
}
// Specific review status
if (!empty($this->getReviewStatus())) {
$query->readUnread($this->getReviewStatus());
}
return $query;
}

View File

@@ -298,6 +298,25 @@ class Delegation extends Model
return $query->where('APPLICATION.APP_FINISH_DATE', '<=', $to);
}
/**
* Scope a query to only include unread thread
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param string $status
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeReadUnread($query, $status)
{
if ($status === 'READ') {
// READ
return $query->whereNotNull('DEL_INIT_DATE');
} else {
// UNREAD
return $query->whereNull('DEL_INIT_DATE');
}
}
/**
* Scope a query to only include a specific delegate date
*

View File

@@ -58,6 +58,7 @@ class Home extends Api
* @param int $offset
* @param string $caseTitle
* @param string $filterCases
* @param string $filterCases
* @param string $sort
*
* @return array
@@ -76,6 +77,7 @@ class Home extends Api
int $offset = 0,
string $caseTitle = '',
string $filterCases = '',
string $reviewStatus = '',
string $sort = 'APP_NUMBER,DESC'
)
{
@@ -90,6 +92,7 @@ class Home extends Api
$offset,
$caseTitle,
$filterCases,
$reviewStatus,
$sort
);
} catch (Exception $e) {
@@ -113,6 +116,7 @@ class Home extends Api
* @param string $delegateFrom
* @param string $delegateTo
* @param string $filterCases
* @param string $reviewStatus
* @param string $sort
* @param string $sendBy
*
@@ -134,6 +138,7 @@ class Home extends Api
string $delegateFrom = '',
string $delegateTo = '',
string $filterCases = '',
string $reviewStatus = '',
string $sort = 'APP_NUMBER,DESC',
string $sendBy = ''
)
@@ -151,6 +156,7 @@ class Home extends Api
$delegateFrom,
$delegateTo,
$filterCases,
$reviewStatus,
$sort,
$sendBy
);
@@ -174,6 +180,7 @@ class Home extends Api
* @param string $delegateFrom
* @param string $delegateTo
* @param string $filterCases
* @param string $reviewStatus
* @param string $sort
* @param string $sendBy
*
@@ -195,6 +202,7 @@ class Home extends Api
string $delegateFrom = '',
string $delegateTo = '',
string $filterCases = '',
string $reviewStatus = '',
string $sort = 'APP_NUMBER,DESC',
string $sendBy = ''
)
@@ -212,6 +220,7 @@ class Home extends Api
$delegateFrom,
$delegateTo,
$filterCases,
$reviewStatus,
$sort,
$sendBy
);
@@ -235,6 +244,7 @@ class Home extends Api
* @param string $delegateFrom
* @param string $delegateTo
* @param string $filterCases
* @param string $reviewStatus
* @param string $sort
* @param string $sendBy
*
@@ -256,6 +266,7 @@ class Home extends Api
string $delegateFrom = '',
string $delegateTo = '',
string $filterCases = '',
string $reviewStatus = '',
string $sort = 'APP_NUMBER,DESC',
string $sendBy = ''
)
@@ -273,6 +284,7 @@ class Home extends Api
$delegateFrom,
$delegateTo,
$filterCases,
$reviewStatus,
$sort,
$sendBy
);
@@ -293,6 +305,7 @@ class Home extends Api
* @param int $offset
* @param string $caseTitle
* @param string $filterCases
* @param string $reviewStatus
* @param string $sort
* @param array $request_data
* @return array
@@ -310,6 +323,7 @@ class Home extends Api
int $offset = 0,
string $caseTitle = '',
string $filterCases = '',
string $reviewStatus = '',
string $sort = 'APP_NUMBER,DESC',
array $request_data = []
)
@@ -326,6 +340,7 @@ class Home extends Api
$offset,
$caseTitle,
$filterCases,
$reviewStatus,
$sort,
$request_data
);
@@ -349,6 +364,7 @@ class Home extends Api
* @param string $delegateFrom
* @param string $delegateTo
* @param string $filterCases
* @param string $reviewStatus
* @param string $sort
* @param array $request_data
* @return array
@@ -369,6 +385,7 @@ class Home extends Api
string $delegateFrom = '',
string $delegateTo = '',
string $filterCases = '',
string $reviewStatus = '',
string $sort = 'APP_NUMBER,DESC',
array $request_data = []
)
@@ -387,6 +404,7 @@ class Home extends Api
$delegateFrom,
$delegateTo,
$filterCases,
$reviewStatus,
$sort,
$sendBy,
$request_data
@@ -411,6 +429,7 @@ class Home extends Api
* @param string $delegateFrom
* @param string $delegateTo
* @param string $filterCases
* @param string $reviewStatus
* @param string $sort
* @param array $request_data
* @return array
@@ -431,6 +450,7 @@ class Home extends Api
string $delegateFrom = '',
string $delegateTo = '',
string $filterCases = '',
string $reviewStatus = '',
string $sort = 'APP_NUMBER,DESC',
array $request_data = []
)
@@ -449,6 +469,7 @@ class Home extends Api
$delegateFrom,
$delegateTo,
$filterCases,
$reviewStatus,
$sort,
$sendBy,
$request_data
@@ -473,6 +494,7 @@ class Home extends Api
* @param string $delegateFrom
* @param string $delegateTo
* @param string $filterCases
* @param string $reviewStatus
* @param string $sort
* @param array $request_data
* @return array
@@ -493,6 +515,7 @@ class Home extends Api
string $delegateFrom = '',
string $delegateTo = '',
string $filterCases = '',
string $reviewStatus = '',
string $sort = 'APP_NUMBER,DESC',
array $request_data = []
)
@@ -511,6 +534,7 @@ class Home extends Api
$delegateFrom,
$delegateTo,
$filterCases,
$reviewStatus,
$sort,
$sendBy,
$request_data