Merge branch 'feature/PMCORE-3049' of https://bitbucket.org/colosa/processmaker into feature/PMCORE-3164
This commit is contained in:
@@ -7,7 +7,6 @@ $factory->define(\ProcessMaker\Model\Application::class, function(Faker $faker)
|
||||
$appNumber = $faker->unique()->numberBetween(1000);
|
||||
// APP_TITLE field is used in 'MYSQL: MATCH() AGAINST()' function, string size should not be less than 3.
|
||||
$appTitle = $faker->lexify(str_repeat('?', rand(3, 5)) . ' ' . str_repeat('?', rand(3, 5)));
|
||||
|
||||
return [
|
||||
'APP_UID' => G::generateUniqueID(),
|
||||
'APP_TITLE' => $appTitle,
|
||||
@@ -24,10 +23,10 @@ $factory->define(\ProcessMaker\Model\Application::class, function(Faker $faker)
|
||||
'APP_INIT_USER' => $user->USR_UID,
|
||||
'APP_CUR_USER' => $user->USR_UID,
|
||||
'APP_PIN' => G::generateUniqueID(),
|
||||
'APP_CREATE_DATE' => $faker->dateTime(),
|
||||
'APP_INIT_DATE' => $faker->dateTime(),
|
||||
'APP_UPDATE_DATE' => $faker->dateTime(),
|
||||
'APP_FINISH_DATE' => $faker->dateTime(),
|
||||
'APP_CREATE_DATE' => $faker->dateTimeBetween('now', '+30 minutes'),
|
||||
'APP_INIT_DATE' => $faker->dateTimeBetween('now', '+30 minutes'),
|
||||
'APP_UPDATE_DATE' => $faker->dateTimeBetween('now', '+30 minutes'),
|
||||
'APP_FINISH_DATE' => $faker->dateTimeBetween('now', '+30 minutes'),
|
||||
'APP_DATA' => serialize(['APP_NUMBER' => $appNumber])
|
||||
];
|
||||
});
|
||||
|
||||
@@ -69,6 +69,7 @@ const services = {
|
||||
PROCESSES: "/home/processes",
|
||||
USERS: "/home/users",
|
||||
TASKS: "/home/tasks",
|
||||
CATEGORIES: "/home/categories",
|
||||
DEBUG_STATUS: "/home/process-debug-status?processUid={prj_uid}"
|
||||
};
|
||||
|
||||
|
||||
@@ -82,6 +82,18 @@ export let filters = {
|
||||
keys: {},
|
||||
});
|
||||
},
|
||||
/**
|
||||
* Service to get the categories list
|
||||
*/
|
||||
categories(query) {
|
||||
return Api.get({
|
||||
service: "CATEGORIES",
|
||||
params: {
|
||||
name: query,
|
||||
},
|
||||
keys: {},
|
||||
});
|
||||
},
|
||||
/**
|
||||
* Service to get the users list
|
||||
*/
|
||||
|
||||
@@ -195,6 +195,8 @@ import CasePriority from "./popovers/CasePriority.vue";
|
||||
import CaseStatus from "./popovers/CaseStatus.vue";
|
||||
import CurrentUser from "./popovers/CurrentUser.vue";
|
||||
import TaskTitle from "./popovers/TaskTitle.vue";
|
||||
import Participation from "./popovers/Participation.vue";
|
||||
import ProcessCategory from "./popovers/ProcessCategory.vue";
|
||||
import api from "./../../api/index";
|
||||
|
||||
export default {
|
||||
@@ -209,7 +211,9 @@ export default {
|
||||
CaseStatus,
|
||||
CurrentUser,
|
||||
DateFilter,
|
||||
TaskTitle
|
||||
TaskTitle,
|
||||
Participation,
|
||||
ProcessCategory
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@@ -219,11 +223,11 @@ export default {
|
||||
{
|
||||
type: "CaseNumber",
|
||||
id: "caseNumber",
|
||||
title: `${this.$i18n.t('ID_FILTER')}: ${this.$i18n.t('ID_IUD')}`,
|
||||
optionLabel: this.$i18n.t('ID_IUD'),
|
||||
title: `${this.$i18n.t('ID_FILTER')}: ${this.$i18n.t('ID_BY_CASE_NUMBER')}`,
|
||||
optionLabel: this.$i18n.t('ID_BY_CASE_NUMBER'),
|
||||
detail: this.$i18n.t('ID_PLEASE_SET_A_RANGE_TO_CASES_TO_SEARCH'),
|
||||
tagText: "",
|
||||
tagPrefix: this.$i18n.t('ID_IUD'),
|
||||
tagPrefix: this.$i18n.t('ID_SEARCH_BY_CASE_NUMBER'),
|
||||
items:[
|
||||
{
|
||||
id: "filterCases",
|
||||
@@ -231,15 +235,15 @@ export default {
|
||||
}
|
||||
],
|
||||
makeTagText: function (params, data) {
|
||||
return `${params.tagPrefix}: ${data[0].value}`;
|
||||
return `${params.tagPrefix} ${data[0].value}`;
|
||||
}
|
||||
},
|
||||
{
|
||||
type: "CaseTitle",
|
||||
id: "caseTitle",
|
||||
title: `${this.$i18n.t('ID_FILTER')}: ${this.$i18n.t('ID_CASE_TITLE')}`,
|
||||
optionLabel: this.$i18n.t('ID_CASE_TITLE'),
|
||||
tagPrefix: this.$i18n.t('ID_CASE_TITLE'),
|
||||
title: `${this.$i18n.t('ID_FILTER')}: ${this.$i18n.t('ID_BY_CASE_TITLE')}`,
|
||||
optionLabel: this.$i18n.t('ID_BY_CASE_TITLE'),
|
||||
tagPrefix: this.$i18n.t('ID_SEARCH_BY_CASE_TITLE'),
|
||||
detail: "",
|
||||
tagText: "",
|
||||
items:[
|
||||
@@ -249,14 +253,14 @@ export default {
|
||||
}
|
||||
],
|
||||
makeTagText: function (params, data) {
|
||||
return `${this.tagPrefix}: ${data[0].value}`;
|
||||
return `${this.tagPrefix} ${data[0].value}`;
|
||||
}
|
||||
},
|
||||
{
|
||||
type: "caseStatus",
|
||||
id: "CaseStatus",
|
||||
title: `${this.$i18n.t('ID_FILTER')}: ${this.$i18n.t('ID_CASE_STATUS')}`,
|
||||
optionLabel: this.$i18n.t('ID_STATUS'),
|
||||
title: `${this.$i18n.t('ID_FILTER')}: ${this.$i18n.t('ID_BY_STATUS')}`,
|
||||
optionLabel: this.$i18n.t('ID_BY_STATUS'),
|
||||
detail: this.$i18n.t('ID_PLEASE_SELECT_THE_STATUS_FOR_THE_SEARCH'),
|
||||
tagText: "",
|
||||
tagPrefix: this.$i18n.t('ID_SEARCH_BY_STATUS'),
|
||||
@@ -291,11 +295,11 @@ export default {
|
||||
{
|
||||
type: "ProcessName",
|
||||
id: "processName",
|
||||
title: `${this.$i18n.t('ID_FILTER')}: ${this.$i18n.t('ID_PROCESS_NAME')}`,
|
||||
optionLabel: this.$i18n.t('ID_PROCESS_NAME'),
|
||||
title: `${this.$i18n.t('ID_FILTER')}: ${this.$i18n.t('ID_BY_PROCESS_NAME')}`,
|
||||
optionLabel: this.$i18n.t('ID_BY_PROCESS_NAME'),
|
||||
detail: "",
|
||||
tagText: "",
|
||||
tagPrefix: this.$i18n.t('ID_PROCESS_NAME'),
|
||||
tagPrefix: this.$i18n.t('ID_SEARCH_BY_PROCESS_NAME'),
|
||||
items:[
|
||||
{
|
||||
id: "process",
|
||||
@@ -311,8 +315,8 @@ export default {
|
||||
{
|
||||
type: "TaskTitle",
|
||||
id: "taskTitle",
|
||||
title: `${this.$i18n.t('ID_FILTER')}: ${this.$i18n.t('ID_TASK_NAME')}`,
|
||||
optionLabel: this.$i18n.t('ID_TASK'),
|
||||
title: `${this.$i18n.t('ID_FILTER')}: ${this.$i18n.t('ID_BY_TASK')}`,
|
||||
optionLabel: this.$i18n.t('ID_BY_TASK'),
|
||||
detail: "",
|
||||
tagText: "",
|
||||
tagPrefix: this.$i18n.t('ID_SEARCH_BY_TASK_NAME'),
|
||||
@@ -331,12 +335,12 @@ export default {
|
||||
{
|
||||
type: "CurrentUser",
|
||||
id: "currentUser",
|
||||
title: `${this.$i18n.t('ID_FILTER')}: ${this.$i18n.t('ID_CURRENT_USER')}`,
|
||||
optionLabel: this.$i18n.t('ID_CURRENT_USER'),
|
||||
title: `${this.$i18n.t('ID_FILTER')}: ${this.$i18n.t('ID_BY_CURRENT_USER')}`,
|
||||
optionLabel: this.$i18n.t('ID_BY_CURRENT_USER'),
|
||||
detail: "",
|
||||
placeholder: this.$i18n.t('ID_USER_NAME'),
|
||||
tagText: "",
|
||||
tagPrefix: this.$i18n.t('ID_USER'),
|
||||
tagPrefix: this.$i18n.t('ID_SEARCH_BY_CURRENT_USER'),
|
||||
items:[
|
||||
{
|
||||
id: "user",
|
||||
@@ -376,9 +380,9 @@ export default {
|
||||
{
|
||||
type: "DateFilter",
|
||||
id: "finishDate",
|
||||
title: `${this.$i18n.t('ID_FILTER')}: ${this.$i18n.t('ID_FINISH_DATE')}`,
|
||||
optionLabel: this.$i18n.t('ID_FINISH_DATE'),
|
||||
detail: this.$i18n.t('Please set a range of cases Finish Date to search:'),
|
||||
title: `${this.$i18n.t('ID_FILTER')}: ${this.$i18n.t('ID_BY_FINISH_DATE')}`,
|
||||
optionLabel: this.$i18n.t('ID_BY_FINISH_DATE'),
|
||||
detail: this.$i18n.t('ID_PLEASE_SET_A_RANGE_OF_CASES_FINISH_DATE_TO_SEARCH'),
|
||||
tagText: "",
|
||||
tagPrefix: this.$i18n.t('ID_SEARCH_BY_FINISH_DATE'),
|
||||
items:[
|
||||
@@ -396,8 +400,66 @@ export default {
|
||||
makeTagText: function (params, data) {
|
||||
return `${params.tagPrefix} ${data[0].value} - ${data[1].value}`;
|
||||
}
|
||||
},
|
||||
{
|
||||
type: "Participation",
|
||||
id: "participation",
|
||||
title: `${this.$i18n.t('ID_FILTER')}: ${this.$i18n.t('ID_BY_PARTICIPATION')}`,
|
||||
optionLabel: this.$i18n.t('ID_BY_PARTICIPATION'),
|
||||
detail: this.$i18n.t('ID_CHECK_ONE_OPTION_ENABLE_SEARCH'),
|
||||
tagText: "",
|
||||
tagPrefix: this.$i18n.t('ID_SEARCH_BY_PARTICIPATION'),
|
||||
items:[
|
||||
{
|
||||
id: "startedBy",
|
||||
value: "",
|
||||
options: [],
|
||||
placeholder: "",
|
||||
status: "not_accepted",
|
||||
title: this.$i18n.t("ID_STARTED_BY")
|
||||
},
|
||||
{
|
||||
id: "completedBy",
|
||||
value: "",
|
||||
options: [],
|
||||
placeholder: "",
|
||||
disabled: true,
|
||||
status: "not_accepted",
|
||||
title: this.$i18n.t("ID_COMPLETED_BY")
|
||||
}
|
||||
],
|
||||
makeTagText: function (params, data) {
|
||||
let text = data && (data[0].value || data[1].value) ? "": data[0].title;
|
||||
if(data && data[0].value){
|
||||
text += data[0].title + ": " + data[0].label;
|
||||
text += data && data[1].value ? "; ": "";
|
||||
}
|
||||
if(data && data[1].value){
|
||||
text += data[1].title + ": " + data[1].label;
|
||||
}
|
||||
return text;
|
||||
}
|
||||
},
|
||||
{
|
||||
type: "ProcessCategory",
|
||||
id: "processCategory",
|
||||
title: `${this.$i18n.t('ID_FILTER')}: ${this.$i18n.t('ID_BY_PROCESS_CATEGORY')}`,
|
||||
optionLabel: this.$i18n.t('ID_BY_PROCESS_CATEGORY'),
|
||||
detail: "",
|
||||
tagText: "",
|
||||
tagPrefix: this.$i18n.t('ID_SEARCH_BY_PROCESS_CATEGORY'),
|
||||
items:[
|
||||
{
|
||||
id: "category",
|
||||
value: "",
|
||||
options: [],
|
||||
placeholder: ""
|
||||
}
|
||||
],
|
||||
makeTagText: function (params, data) {
|
||||
return `${params.tagPrefix}: ${data[0].label || ''}`;
|
||||
}
|
||||
}
|
||||
|
||||
],
|
||||
selected: "",
|
||||
itemModel: {},
|
||||
@@ -492,8 +554,9 @@ export default {
|
||||
filterVar: value.id,
|
||||
fieldId: item,
|
||||
value: '',
|
||||
label: "",
|
||||
options: []
|
||||
label: value.label,
|
||||
options: [],
|
||||
title: value.title
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -15,12 +15,13 @@
|
||||
name="flavour-2a"
|
||||
stacked
|
||||
></b-form-radio-group>
|
||||
<b-form-group>
|
||||
</b-form-group>
|
||||
<b-form-checkbox
|
||||
id="checkbox-1"
|
||||
v-model="byProcessName"
|
||||
name="checkbox-1"
|
||||
value="processName"
|
||||
|
||||
>
|
||||
{{$t('ID_BY_PROCESS_NAME') }}
|
||||
</b-form-checkbox>
|
||||
|
||||
151
resources/assets/js/components/search/popovers/Participation.vue
Normal file
151
resources/assets/js/components/search/popovers/Participation.vue
Normal file
@@ -0,0 +1,151 @@
|
||||
<template>
|
||||
<div>
|
||||
<SearchPopover :target="tag" @savePopover="onOk" :title="info.title">
|
||||
<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-checkbox
|
||||
id="started"
|
||||
v-model="filter[0].status"
|
||||
name="started"
|
||||
value="accepted"
|
||||
unchecked-value="not_accepted"
|
||||
>
|
||||
{{$t("ID_STARTED_BY")}}
|
||||
</b-form-checkbox>
|
||||
<multiselect
|
||||
v-model="filter[0].options"
|
||||
:options="users"
|
||||
:placeholder="$t('ID_USER_NAME')"
|
||||
label="USR_FULLNAME"
|
||||
track-by="USR_ID"
|
||||
:show-no-results="false"
|
||||
@search-change="asyncFind"
|
||||
:loading="isLoading"
|
||||
id="started"
|
||||
:limit="10"
|
||||
:clear-on-select="true"
|
||||
:disabled="filter[0].status !== 'accepted'"
|
||||
>
|
||||
</multiselect>
|
||||
</b-form-group>
|
||||
<b-form-group>
|
||||
<b-form-checkbox
|
||||
id="completed"
|
||||
v-model="filter[1].status"
|
||||
name="completed"
|
||||
value="accepted"
|
||||
unchecked-value="not_accepted"
|
||||
>
|
||||
{{$t("ID_COMPLETED_BY")}}
|
||||
</b-form-checkbox>
|
||||
<multiselect
|
||||
v-model="filter[1].options"
|
||||
:options="users"
|
||||
:placeholder="$t('ID_USER_NAME')"
|
||||
label="USR_FULLNAME"
|
||||
track-by="USR_ID"
|
||||
:show-no-results="false"
|
||||
@search-change="asyncFind"
|
||||
:loading="isLoading"
|
||||
id="completed"
|
||||
:limit="10"
|
||||
:clear-on-select="true"
|
||||
:disabled="filter[1].status !== 'accepted'"
|
||||
>
|
||||
</multiselect>
|
||||
</b-form-group>
|
||||
</form>
|
||||
</template>
|
||||
</SearchPopover>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import SearchPopover from "./SearchPopover.vue";
|
||||
import Multiselect from "vue-multiselect";
|
||||
import api from "./../../../api/index";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
SearchPopover,
|
||||
Multiselect
|
||||
},
|
||||
props: ["tag", "info", "filter"],
|
||||
data() {
|
||||
return {
|
||||
users: [],
|
||||
isLoading: false,
|
||||
started: "",
|
||||
completed: ""
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
filter: {
|
||||
immediate: true,
|
||||
handler(newVal, oldVal) {
|
||||
if (newVal[0].status === "not_accepted") {
|
||||
newVal[0].options = [];
|
||||
newVal[0].label = "";
|
||||
newVal[0].value = "";
|
||||
}
|
||||
if (newVal[1].status === "not_accepted") {
|
||||
newVal[1].options = [];
|
||||
newVal[1].label = "";
|
||||
newVal[1].value = "";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* Find asynchronously in the server
|
||||
* @param {string} query - string from the text field
|
||||
*/
|
||||
asyncFind(query) {
|
||||
this.isLoading = true;
|
||||
api.filters
|
||||
.userList(query)
|
||||
.then((response) => {
|
||||
this.users = response.data;
|
||||
this.isLoading = false;
|
||||
})
|
||||
.catch((e) => {
|
||||
console.error(err);
|
||||
});
|
||||
},
|
||||
/**
|
||||
* Form validations review
|
||||
*/
|
||||
checkFormValidity() {
|
||||
const valid = this.query !== "";
|
||||
this.valueState = valid;
|
||||
return valid;
|
||||
},
|
||||
/**
|
||||
* On Ok event handler
|
||||
*/
|
||||
onOk() {
|
||||
this.handleSubmit();
|
||||
},
|
||||
/**
|
||||
* Form submit handler
|
||||
*/
|
||||
handleSubmit() {
|
||||
this.filter[0].value = this.filter[0].options.USR_ID;
|
||||
this.filter[0].label = this.filter[0].options.USR_FULLNAME;
|
||||
this.filter[1].value = this.filter[1].options.USR_ID;
|
||||
this.filter[1].label = this.filter[1].options.USR_FULLNAME;
|
||||
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>
|
||||
@@ -0,0 +1,97 @@
|
||||
<template>
|
||||
<div>
|
||||
<SearchPopover :target="tag" @savePopover="onOk" :title="info.title">
|
||||
<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')"
|
||||
>
|
||||
<multiselect
|
||||
v-model="filter[0].options"
|
||||
:options="categories"
|
||||
:placeholder="$t('ID_CATEGORY_NAME')"
|
||||
label="CATEGORY_NAME"
|
||||
track-by="CATEGORY_ID"
|
||||
:show-no-results="false"
|
||||
@search-change="asyncFind"
|
||||
:loading="isLoading"
|
||||
id="started"
|
||||
:limit="10"
|
||||
:clear-on-select="true"
|
||||
>
|
||||
</multiselect>
|
||||
</b-form-group>
|
||||
</form>
|
||||
</template>
|
||||
</SearchPopover>
|
||||
</div>
|
||||
</template>
|
||||
updateSearchTag
|
||||
<script>
|
||||
import SearchPopover from "./SearchPopover.vue";
|
||||
import Multiselect from "vue-multiselect";
|
||||
import api from "./../../../api/index";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
SearchPopover,
|
||||
Multiselect
|
||||
},
|
||||
props: ["tag", "info", "filter"],
|
||||
data() {
|
||||
return {
|
||||
categories: [],
|
||||
isLoading: false,
|
||||
started: "",
|
||||
completed: ""
|
||||
};
|
||||
},
|
||||
|
||||
methods: {
|
||||
/**
|
||||
* Find asynchronously in the server
|
||||
* @param {string} query - string from the text field
|
||||
*/
|
||||
asyncFind(query) {
|
||||
this.isLoading = true;
|
||||
api.filters
|
||||
.categories(query)
|
||||
.then((response) => {
|
||||
this.categories = response.data;
|
||||
this.isLoading = false;
|
||||
})
|
||||
.catch((e) => {
|
||||
console.error(err);
|
||||
});
|
||||
},
|
||||
/**
|
||||
* Form validations review
|
||||
*/
|
||||
checkFormValidity() {
|
||||
const valid = this.query !== "";
|
||||
this.valueState = valid;
|
||||
return valid;
|
||||
},
|
||||
/**
|
||||
* On Ok event handler
|
||||
*/
|
||||
onOk() {
|
||||
this.handleSubmit();
|
||||
},
|
||||
/**
|
||||
* Form submit handler
|
||||
*/
|
||||
handleSubmit() {
|
||||
this.filter[0].value = this.filter[0].options.CATEGORY_ID;
|
||||
this.filter[0].label = this.filter[0].options.CATEGORY_NAME;
|
||||
|
||||
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>
|
||||
@@ -218,10 +218,12 @@ export default {
|
||||
start = data.page === 1 ? 0 : limit * (data.page - 1);
|
||||
paged = start + "," + limit;
|
||||
filters["paged"] = paged;
|
||||
return new Promise((resolutionFunc, rejectionFunc) => {
|
||||
_.forIn(this.filters, function(item, key) {
|
||||
_.forIn(this.filters, function (item, key) {
|
||||
if(filters && item.value) {
|
||||
filters[item.filterVar] = item.value;
|
||||
});
|
||||
}
|
||||
});
|
||||
return new Promise((resolutionFunc, rejectionFunc) => {
|
||||
api.cases
|
||||
.search(filters)
|
||||
.then((response) => {
|
||||
|
||||
@@ -358,7 +358,9 @@ export default {
|
||||
};
|
||||
|
||||
_.forIn(this.filters, function (item, key) {
|
||||
filters[item.filterVar] = item.value;
|
||||
if(filters && item.value) {
|
||||
filters[item.filterVar] = item.value;
|
||||
}
|
||||
});
|
||||
return new Promise((resolutionFunc, rejectionFunc) => {
|
||||
api.cases
|
||||
|
||||
@@ -369,7 +369,9 @@ export default {
|
||||
};
|
||||
|
||||
_.forIn(this.filters, function (item, key) {
|
||||
filters[item.filterVar] = item.value;
|
||||
if(filters && item.value) {
|
||||
filters[item.filterVar] = item.value;
|
||||
}
|
||||
});
|
||||
return new Promise((resolutionFunc, rejectionFunc) => {
|
||||
api.cases
|
||||
|
||||
@@ -300,8 +300,10 @@ export default {
|
||||
filter: that.filterHeader,
|
||||
paged: paged,
|
||||
};
|
||||
_.forIn(this.filters, function(item, key) {
|
||||
filters[item.filterVar] = item.value;
|
||||
_.forIn(this.filters, function (item, key) {
|
||||
if(filters && item.value) {
|
||||
filters[item.filterVar] = item.value;
|
||||
}
|
||||
});
|
||||
return new Promise((resolutionFunc, rejectionFunc) => {
|
||||
api.cases
|
||||
|
||||
@@ -255,7 +255,9 @@ export default {
|
||||
};
|
||||
|
||||
_.forIn(this.filters, function (item, key) {
|
||||
filters[item.filterVar] = item.value;
|
||||
if(filters && item.value) {
|
||||
filters[item.filterVar] = item.value;
|
||||
}
|
||||
});
|
||||
return new Promise((resolutionFunc, rejectionFunc) => {
|
||||
api.cases
|
||||
|
||||
@@ -222,8 +222,10 @@ export default {
|
||||
paged: paged,
|
||||
};
|
||||
|
||||
_.forIn(this.$parent.filters, function (item, key) {
|
||||
filters[item.filterVar] = item.value;
|
||||
_.forIn(this.filters, function (item, key) {
|
||||
if(filters && item.value) {
|
||||
filters[item.filterVar] = item.value;
|
||||
}
|
||||
});
|
||||
return new Promise((resolutionFunc, rejectionFunc) => {
|
||||
api.cases
|
||||
|
||||
@@ -90,6 +90,7 @@ class ExecuteQueryTest extends TestCase
|
||||
*/
|
||||
public function it_should_insert_a_record_in_the_category_table_using_the_execute_query_method()
|
||||
{
|
||||
$this->expectException(SQLException::class);
|
||||
$database = env('DB_DATABASE');
|
||||
$faker = Factory::create();
|
||||
$uid = G::generateUniqueID();
|
||||
@@ -132,6 +133,7 @@ class ExecuteQueryTest extends TestCase
|
||||
*/
|
||||
public function it_should_replace_a_record_in_the_category_table_using_the_execute_query_method()
|
||||
{
|
||||
$this->expectException(SQLException::class);
|
||||
$database = env('DB_DATABASE');
|
||||
$faker = Factory::create();
|
||||
$id = $faker->unique()->numberBetween(1, 10000000);
|
||||
@@ -168,6 +170,7 @@ class ExecuteQueryTest extends TestCase
|
||||
*/
|
||||
public function it_should_update_a_record_in_the_category_table_using_the_execute_query_method()
|
||||
{
|
||||
$this->expectException(SQLException::class);
|
||||
$database = env('DB_DATABASE');
|
||||
$faker = Factory::create();
|
||||
$id = $faker->unique()->numberBetween(1, 10000000);
|
||||
@@ -200,7 +203,7 @@ class ExecuteQueryTest extends TestCase
|
||||
*/
|
||||
public function it_should_delete_a_record_in_the_category_table_using_the_execute_query_method()
|
||||
{
|
||||
|
||||
$this->expectException(SQLException::class);
|
||||
$database = env('DB_DATABASE');
|
||||
$category = factory(ProcessCategory::class)->create();
|
||||
|
||||
|
||||
@@ -2,10 +2,12 @@
|
||||
|
||||
namespace Tests\unit\workflow\engine\src\ProcessMaker\BusinessModel\Cases;
|
||||
|
||||
use Exception;
|
||||
use G;
|
||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||
use ProcessMaker\BusinessModel\Cases\AbstractCases;
|
||||
use ProcessMaker\Model\Application;
|
||||
use ProcessMaker\Model\Delegation;
|
||||
use ProcessMaker\Model\Process;
|
||||
use ProcessMaker\Model\ProcessCategory;
|
||||
use ProcessMaker\Model\Task;
|
||||
@@ -131,6 +133,19 @@ class AbstractCasesTest extends TestCase
|
||||
$this->assertNotEmpty($actual);
|
||||
}
|
||||
|
||||
/**
|
||||
* This test the exception setPriorities
|
||||
*
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\AbstractCases::setPriorities()
|
||||
* @test
|
||||
*/
|
||||
public function it_return_exception_priorities()
|
||||
{
|
||||
$this->expectException(Exception::class);
|
||||
$absCases = new AbstractCases();
|
||||
$absCases->setPriorities(['INVALID_VALUE']);
|
||||
}
|
||||
|
||||
/**
|
||||
* This check the getter and setter related to the case number
|
||||
*
|
||||
@@ -208,6 +223,19 @@ class AbstractCasesTest extends TestCase
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This test the exception setInboxStatus
|
||||
*
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\AbstractCases::setInboxStatus()
|
||||
* @test
|
||||
*/
|
||||
public function it_return_exception_inbox_status()
|
||||
{
|
||||
$this->expectException(Exception::class);
|
||||
$absCases = new AbstractCases();
|
||||
$absCases->setInboxStatus('INVALID_VALUE');
|
||||
}
|
||||
|
||||
/**
|
||||
* This check the getter and setter related to the participated status
|
||||
*
|
||||
@@ -225,6 +253,19 @@ class AbstractCasesTest extends TestCase
|
||||
$this->assertEquals($arguments[$index], $actual);
|
||||
}
|
||||
|
||||
/**
|
||||
* This test the exception setParticipatedStatus
|
||||
*
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\AbstractCases::setParticipatedStatus()
|
||||
* @test
|
||||
*/
|
||||
public function it_return_exception_participated_status()
|
||||
{
|
||||
$this->expectException(Exception::class);
|
||||
$absCases = new AbstractCases();
|
||||
$absCases->setParticipatedStatus('INVALID_VALUE');
|
||||
}
|
||||
|
||||
/**
|
||||
* This check the getter and setter related to the risk status
|
||||
*
|
||||
@@ -242,6 +283,19 @@ class AbstractCasesTest extends TestCase
|
||||
$this->assertEquals($arguments[$index], $actual);
|
||||
}
|
||||
|
||||
/**
|
||||
* This test the exception setRiskStatus
|
||||
*
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\AbstractCases::setRiskStatus()
|
||||
* @test
|
||||
*/
|
||||
public function it_return_exception_risk_status()
|
||||
{
|
||||
$this->expectException(Exception::class);
|
||||
$absCases = new AbstractCases();
|
||||
$absCases->setRiskStatus('INVALID_VALUE');
|
||||
}
|
||||
|
||||
/**
|
||||
* This check the getter and setter related to the case status
|
||||
*
|
||||
@@ -258,9 +312,22 @@ class AbstractCasesTest extends TestCase
|
||||
$actual = $absCases->getCaseStatus();
|
||||
$this->assertEquals($index, $actual);
|
||||
// Incorrect canceled status
|
||||
$absCases->setCaseStatuses(['CANCELLED']);
|
||||
$actual = $absCases->getCaseStatuses();
|
||||
$this->assertEquals([4], $actual);
|
||||
$absCases->setCaseStatus('CANCELLED');
|
||||
$actual = $absCases->getCaseStatus();
|
||||
$this->assertEquals($index, $actual);
|
||||
}
|
||||
|
||||
/**
|
||||
* This test the exception setCaseStatus
|
||||
*
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\AbstractCases::setCaseStatus()
|
||||
* @test
|
||||
*/
|
||||
public function it_return_exception_case_status()
|
||||
{
|
||||
$this->expectException(Exception::class);
|
||||
$absCases = new AbstractCases();
|
||||
$absCases->setCaseStatus('INVALID_VALUE');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -284,6 +351,19 @@ class AbstractCasesTest extends TestCase
|
||||
$this->assertNotEmpty($actual);
|
||||
}
|
||||
|
||||
/**
|
||||
* This test the exception setCaseStatuses
|
||||
*
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\AbstractCases::setCaseStatuses()
|
||||
* @test
|
||||
*/
|
||||
public function it_return_exception_case_statuses()
|
||||
{
|
||||
$this->expectException(Exception::class);
|
||||
$absCases = new AbstractCases();
|
||||
$absCases->setCaseStatuses(['INVALID_VALUE']);
|
||||
}
|
||||
|
||||
/**
|
||||
* This check the getter and setter related to the case
|
||||
*
|
||||
@@ -532,6 +612,19 @@ class AbstractCasesTest extends TestCase
|
||||
$this->assertEquals($arguments[$index], $actual);
|
||||
}
|
||||
|
||||
/**
|
||||
* This test the exception setOrderDirection
|
||||
*
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\AbstractCases::setOrderDirection()
|
||||
* @test
|
||||
*/
|
||||
public function it_return_exception_order_direction()
|
||||
{
|
||||
$this->expectException(Exception::class);
|
||||
$absCases = new AbstractCases();
|
||||
$absCases->setOrderDirection('INVALID_VALUE');
|
||||
}
|
||||
|
||||
/**
|
||||
* This check the getter and setter related to the paged, offset and limit
|
||||
*
|
||||
@@ -783,7 +876,29 @@ class AbstractCasesTest extends TestCase
|
||||
{"tas_id":'.$task[0]->TAS_ID.', "user_id":1, "due_date":"2020-12-04 19:11:14"},
|
||||
{"tas_id":'.$task[1]->TAS_ID.', "user_id":2, "due_date":"2020-12-04 19:12:45"}
|
||||
]';
|
||||
// Default values
|
||||
$result = $absCases->prepareTaskPending($pending);
|
||||
$this->assertNotEmpty($result);
|
||||
// Thread users
|
||||
$result = $absCases->prepareTaskPending($pending, false);
|
||||
$this->assertNotEmpty($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* This get thread information
|
||||
*
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\AbstractCases::threadInformation()
|
||||
* @test
|
||||
*/
|
||||
public function it_return_thread_information()
|
||||
{
|
||||
$delegation = factory(Delegation::class)->states('foreign_keys')->create();
|
||||
$taskPending = Delegation::getLastThread($delegation->APP_NUMBER);
|
||||
$absCases = new AbstractCases();
|
||||
foreach ($taskPending as $thread) {
|
||||
$thread['APP_STATUS'] = 'TO_DO';
|
||||
$result = $absCases->threadInformation($thread, true, true);
|
||||
$this->assertNotEmpty($result);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -39,6 +39,23 @@ class BatchRoutingTest extends TestCase
|
||||
return $delegation;
|
||||
}
|
||||
|
||||
/**
|
||||
* This test the extended function, currently are not implemented
|
||||
*
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\BatchRouting::getColumnsView()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\BatchRouting::getData()
|
||||
* @test
|
||||
*/
|
||||
public function it_test_extended_methods()
|
||||
{
|
||||
// Create new BatchRouting object
|
||||
$consolidated = new BatchRouting();
|
||||
$result = $consolidated->getColumnsView();
|
||||
$this->assertEmpty($result);
|
||||
$result = $consolidated->getData();
|
||||
$this->assertEmpty($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* This checks the counters is working properly in batch routing
|
||||
*
|
||||
@@ -49,7 +66,7 @@ class BatchRoutingTest extends TestCase
|
||||
{
|
||||
// Create factories related to the consolidated cases
|
||||
$cases = $this->createConsolidated();
|
||||
// Create new Draft object
|
||||
// Create new batch routing object
|
||||
$consolidated = new BatchRouting();
|
||||
$consolidated->setUserId($cases['USR_ID']);
|
||||
$consolidated->setUserUid($cases['USR_UID']);
|
||||
|
||||
@@ -42,6 +42,23 @@ class CanceledTest extends TestCase
|
||||
return $delegation;
|
||||
}
|
||||
|
||||
/**
|
||||
* This test the extended function, currently are not implemented
|
||||
*
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Canceled::getColumnsView()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Canceled::getData()
|
||||
* @test
|
||||
*/
|
||||
public function it_test_extended_methods()
|
||||
{
|
||||
// Create new batch Canceled object
|
||||
$consolidated = new Canceled();
|
||||
$result = $consolidated->getColumnsView();
|
||||
$this->assertEmpty($result);
|
||||
$result = $consolidated->getData();
|
||||
$this->assertEmpty($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* This checks the counters is working properly in canceled
|
||||
*
|
||||
|
||||
@@ -42,6 +42,23 @@ class CompletedTest extends TestCase
|
||||
return $delegation;
|
||||
}
|
||||
|
||||
/**
|
||||
* This test the extended function, currently are not implemented
|
||||
*
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Completed::getColumnsView()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Completed::getData()
|
||||
* @test
|
||||
*/
|
||||
public function it_test_extended_methods()
|
||||
{
|
||||
// Create new batch Completed object
|
||||
$consolidated = new Completed();
|
||||
$result = $consolidated->getColumnsView();
|
||||
$this->assertEmpty($result);
|
||||
$result = $consolidated->getData();
|
||||
$this->assertEmpty($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* This checks the counters is working properly in completed
|
||||
*
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -57,7 +57,7 @@ class SearchTest extends TestCase
|
||||
$search = new Search();
|
||||
$result = $search->getData();
|
||||
// This assert that the expected numbers of results are returned
|
||||
$this->assertEquals(count($cases), count($result));
|
||||
$this->assertNotEmpty($result);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -66,6 +66,8 @@ class SearchTest extends TestCase
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::getData()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::getColumnsView()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::filters()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::setCaseNumber()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::setOrderByColumn()
|
||||
* @test
|
||||
*/
|
||||
public function it_filter_by_app_number()
|
||||
@@ -88,6 +90,7 @@ class SearchTest extends TestCase
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::getData()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::getColumnsView()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::filters()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::setCasesNumbers()
|
||||
* @test
|
||||
*/
|
||||
public function it_filter_by_specific_cases()
|
||||
@@ -97,8 +100,6 @@ class SearchTest extends TestCase
|
||||
// Create new Search object
|
||||
$search = new Search();
|
||||
$search->setCasesNumbers([$cases[0]->APP_NUMBER]);
|
||||
// Set order by column value
|
||||
$search->setOrderByColumn('APP_NUMBER');
|
||||
$result = $search->getData();
|
||||
// This assert that the expected numbers of results are returned
|
||||
$this->assertEquals($cases[0]->APP_NUMBER, $result[0]['APP_NUMBER']);
|
||||
@@ -110,6 +111,7 @@ class SearchTest extends TestCase
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::getData()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::getColumnsView()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::filters()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::setRangeCasesFromTo()
|
||||
* @test
|
||||
*/
|
||||
public function it_filter_by_range_cases()
|
||||
@@ -120,8 +122,6 @@ class SearchTest extends TestCase
|
||||
$search = new Search();
|
||||
$rangeOfCases = $cases[0]->APP_NUMBER . "-" . $cases[0]->APP_NUMBER;
|
||||
$search->setRangeCasesFromTo([$rangeOfCases]);
|
||||
// Set order by column value
|
||||
$search->setOrderByColumn('APP_NUMBER');
|
||||
$result = $search->getData();
|
||||
// This assert that the expected numbers of results are returned
|
||||
$this->assertNotEmpty($result);
|
||||
@@ -133,6 +133,7 @@ class SearchTest extends TestCase
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::getData()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::getColumnsView()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::filters()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::setProcessId()
|
||||
* @test
|
||||
*/
|
||||
public function it_filter_by_process()
|
||||
@@ -142,8 +143,6 @@ class SearchTest extends TestCase
|
||||
// Create new Search object
|
||||
$search = new Search();
|
||||
$search->setProcessId($cases[0]->PRO_ID);
|
||||
// Set order by column value
|
||||
$search->setOrderByColumn('APP_NUMBER');
|
||||
$result = $search->getData();
|
||||
// This assert that the expected numbers of results are returned
|
||||
$this->assertNotEmpty($result);
|
||||
@@ -155,6 +154,7 @@ class SearchTest extends TestCase
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::getData()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::getColumnsView()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::filters()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::setTaskId()
|
||||
* @test
|
||||
*/
|
||||
public function it_filter_by_task()
|
||||
@@ -164,8 +164,6 @@ class SearchTest extends TestCase
|
||||
// Create new Search object
|
||||
$search = new Search();
|
||||
$search->setTaskId($cases[0]->TAS_ID);
|
||||
// Set order by column value
|
||||
$search->setOrderByColumn('APP_NUMBER');
|
||||
$result = $search->getData();
|
||||
// This assert that the expected numbers of results are returned
|
||||
$this->assertNotEmpty($result);
|
||||
@@ -177,6 +175,7 @@ class SearchTest extends TestCase
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::getData()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::getColumnsView()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::filters()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::setCaseTitle()
|
||||
* @test
|
||||
*/
|
||||
public function it_filter_by_thread_title()
|
||||
@@ -202,6 +201,7 @@ class SearchTest extends TestCase
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::getData()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::getColumnsView()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::filters()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::setUserId()
|
||||
* @test
|
||||
*/
|
||||
public function it_filter_by_user()
|
||||
@@ -211,19 +211,42 @@ class SearchTest extends TestCase
|
||||
// Create new Search object
|
||||
$search = new Search();
|
||||
$search->setUserId($cases[0]->USR_ID);
|
||||
// Set order by column value
|
||||
$search->setOrderByColumn('APP_NUMBER');
|
||||
$result = $search->getData();
|
||||
// This assert that the expected numbers of results are returned
|
||||
$this->assertNotEmpty($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* It tests the getData with priority
|
||||
* It tests the getData with user
|
||||
*
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::getData()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::getColumnsView()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::filters()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::setStartCaseFrom()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::setStartCaseTo()
|
||||
* @test
|
||||
*/
|
||||
public function it_filter_by_start_date()
|
||||
{
|
||||
// Create factories related to the delegation cases
|
||||
$cases = $this->createSearch();
|
||||
// Create new Search object
|
||||
$search = new Search();
|
||||
$date = date('Y-m-d');
|
||||
$search->setStartCaseFrom($date);
|
||||
$search->setStartCaseTo($date);
|
||||
$result = $search->getData();
|
||||
// This assert that the expected numbers of results are returned
|
||||
$this->assertEmpty($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* It tests the getData with status
|
||||
*
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::getData()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::getColumnsView()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::filters()
|
||||
* @covers \ProcessMaker\BusinessModel\Cases\Search::setCaseStatuses()
|
||||
* @test
|
||||
*/
|
||||
public function it_filter_by_status()
|
||||
@@ -233,8 +256,6 @@ class SearchTest extends TestCase
|
||||
// Create new Search object
|
||||
$search = new Search();
|
||||
$search->setCaseStatuses(['TO_DO']);
|
||||
// Set order by column value
|
||||
$search->setOrderByColumn('APP_NUMBER');
|
||||
$result = $search->getData();
|
||||
// This assert that the expected numbers of results are returned
|
||||
$this->assertNotEmpty($result);
|
||||
@@ -253,12 +274,9 @@ class SearchTest extends TestCase
|
||||
$casesNotSubmitted = factory(Delegation::class, 5)->states('web_entry')->create();
|
||||
// Create new Search object
|
||||
$search = new Search();
|
||||
// Set order by column value
|
||||
$search->setOrderByColumn('APP_NUMBER');
|
||||
$result = $search->getData();
|
||||
// Review if the cases not submitted are not considered
|
||||
$this->assertNotEmpty($result);
|
||||
$this->assertEquals(count($result) , count($cases));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -273,8 +291,6 @@ class SearchTest extends TestCase
|
||||
$cases = $this->createSearch();
|
||||
// Create new Search object
|
||||
$search = new Search();
|
||||
// Set order by column value
|
||||
$search->setOrderByColumn('APP_NUMBER');
|
||||
$total = $search->getCounter();
|
||||
// The count for search was disabled for performance issues
|
||||
$this->assertEquals($total, 0);
|
||||
@@ -293,8 +309,6 @@ class SearchTest extends TestCase
|
||||
$cases = $this->createSearch();
|
||||
// Create new Search object
|
||||
$search = new Search();
|
||||
// Set order by column value
|
||||
$search->setOrderByColumn('APP_NUMBER');
|
||||
$total = $search->getPagingCounters();
|
||||
// The count for search was disabled for performance issues
|
||||
$this->assertEquals($total, 0);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -364,8 +364,8 @@ class TaskTest extends TestCase
|
||||
public function it_should_test_fillReportByUser_method($asynchronous)
|
||||
{
|
||||
$task = new Task($asynchronous, '');
|
||||
$dateInit = $this->faker->dateTime;
|
||||
$dateFinish = $this->faker->dateTime;
|
||||
$dateInit = $this->faker->dateTime->format("Y-m-d H:i:s");
|
||||
$dateFinish = $this->faker->dateTime->format("Y-m-d H:i:s");
|
||||
|
||||
//assert synchronous for cron file
|
||||
if ($asynchronous === false) {
|
||||
@@ -394,8 +394,8 @@ class TaskTest extends TestCase
|
||||
public function it_should_test_fillReportByProcess_method($asynchronous)
|
||||
{
|
||||
$task = new Task($asynchronous, '');
|
||||
$dateInit = $this->faker->dateTime;
|
||||
$dateFinish = $this->faker->dateTime;
|
||||
$dateInit = $this->faker->dateTime->format("Y-m-d H:i:s");
|
||||
$dateFinish = $this->faker->dateTime->format("Y-m-d H:i:s");
|
||||
|
||||
//assert synchronous for cron file
|
||||
if ($asynchronous === false) {
|
||||
|
||||
@@ -3065,12 +3065,30 @@ msgstr "By Case #"
|
||||
msgid "By Case Title"
|
||||
msgstr "By Case Title"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_BY_CURRENT_USER
|
||||
#: LABEL/ID_BY_CURRENT_USER
|
||||
msgid "By Current User"
|
||||
msgstr "By Current User"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_BY_FINISH_DATE
|
||||
#: LABEL/ID_BY_FINISH_DATE
|
||||
msgid "By Finish Date"
|
||||
msgstr "By Finish Date"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_BY_PARTICIPATION
|
||||
#: LABEL/ID_BY_PARTICIPATION
|
||||
msgid "By Participation"
|
||||
msgstr "By Participation"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_BY_PROCESS_CATEGORY
|
||||
#: LABEL/ID_BY_PROCESS_CATEGORY
|
||||
msgid "By Process Category"
|
||||
msgstr "By Process Category"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_BY_PROCESS_NAME
|
||||
#: LABEL/ID_BY_PROCESS_NAME
|
||||
@@ -4415,6 +4433,12 @@ msgstr "Check All"
|
||||
msgid "Please check the fields marked in red."
|
||||
msgstr "Please check the fields marked in red."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_CHECK_ONE_OPTION_ENABLE_SEARCH
|
||||
#: LABEL/ID_CHECK_ONE_OPTION_ENABLE_SEARCH
|
||||
msgid "Please check one option to be enabled for search."
|
||||
msgstr "Please check one option to be enabled for search."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_CHECK_PORT
|
||||
#: LABEL/ID_CHECK_PORT
|
||||
@@ -4619,6 +4643,12 @@ msgstr "Comments"
|
||||
msgid "[LABEL/ID_COMPLETED] Completed"
|
||||
msgstr "Completed"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_COMPLETED_BY
|
||||
#: LABEL/ID_COMPLETED_BY
|
||||
msgid "Completed By:"
|
||||
msgstr "Completed By:"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_COMPLETED_BY_USER
|
||||
#: LABEL/ID_COMPLETED_BY_USER
|
||||
@@ -24197,12 +24227,30 @@ msgstr "Search by Case #:"
|
||||
msgid "Search by Case Title:"
|
||||
msgstr "Search by Case Title:"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_SEARCH_BY_CURRENT_USER
|
||||
#: LABEL/ID_SEARCH_BY_CURRENT_USER
|
||||
msgid "Search by Current User:"
|
||||
msgstr "Search by Current User:"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_SEARCH_BY_FINISH_DATE
|
||||
#: LABEL/ID_SEARCH_BY_FINISH_DATE
|
||||
msgid "Search by Finish Date:"
|
||||
msgstr "Search by Finish Date:"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_SEARCH_BY_PARTICIPATION
|
||||
#: LABEL/ID_SEARCH_BY_PARTICIPATION
|
||||
msgid "Search by Participation:"
|
||||
msgstr "Search by Participation:"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_SEARCH_BY_PROCESS_CATEGORY
|
||||
#: LABEL/ID_SEARCH_BY_PROCESS_CATEGORY
|
||||
msgid "Search by Process Category:"
|
||||
msgstr "Search by Process Category:"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_SEARCH_BY_PROCESS_NAME
|
||||
#: LABEL/ID_SEARCH_BY_PROCESS_NAME
|
||||
@@ -25247,6 +25295,12 @@ msgstr "Stages"
|
||||
msgid "Log Files"
|
||||
msgstr "Log Files"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_STARTED_BY
|
||||
#: LABEL/ID_STARTED_BY
|
||||
msgid "Started By:"
|
||||
msgstr "Started By:"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_STARTED_CASES
|
||||
#: LABEL/ID_STARTED_CASES
|
||||
|
||||
@@ -57318,8 +57318,11 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_BUY_NOW','en','Buy now','2014-09-18') ,
|
||||
( 'LABEL','ID_BY_CASE_NUMBER','en','By Case #','2020-12-16') ,
|
||||
( 'LABEL','ID_BY_CASE_TITLE','en','By Case Title','2020-12-16') ,
|
||||
( 'LABEL','ID_BY_CURRENT_USER','en','By Current User','2021-07-13') ,
|
||||
( 'LABEL','ID_BY_FINISH_DATE','en','By Finish Date','2020-12-16') ,
|
||||
( 'LABEL','ID_BY_PROCESS_NAME','en','Process Name','2020-12-16') ,
|
||||
( '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_ROLE','en','By Role','2020-12-15') ,
|
||||
( 'LABEL','ID_BY_STATUS','en','By Status','2020-12-16') ,
|
||||
@@ -57547,6 +57550,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_CHECK_AGAIN','en','Check again','2014-01-15') ,
|
||||
( 'LABEL','ID_CHECK_ALL','en','Check All','2014-01-15') ,
|
||||
( 'LABEL','ID_CHECK_FIELDS_MARK_RED','en','Please check the fields marked in red.','2014-10-06') ,
|
||||
( 'LABEL','ID_CHECK_ONE_OPTION_ENABLE_SEARCH','en','Please check one option to be enabled for search.','2021-07-13') ,
|
||||
( 'LABEL','ID_CHECK_PORT','en','Checking port','2014-01-15') ,
|
||||
( 'LABEL','ID_CHECK_PORT_FAILED','en','Error Testing Connection: Checking port failed','2015-09-18') ,
|
||||
( 'LABEL','ID_CHECK_UPDATES','en','Check for updates (you need to be connected to the Internet)','2017-02-21') ,
|
||||
@@ -57588,6 +57592,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_COMMAND_EXECUTED_SUCCESSFULY','en','command executed successfully','2014-10-21') ,
|
||||
( 'LABEL','ID_COMMENTS','en','Comments','2014-01-15') ,
|
||||
( 'LABEL','ID_COMPLETED','en','Completed','2014-01-15') ,
|
||||
( 'LABEL','ID_COMPLETED_BY','en','Completed By:','2021-07-13') ,
|
||||
( 'LABEL','ID_COMPLETED_BY_USER','en','Completed By User','2014-01-15') ,
|
||||
( 'LABEL','ID_COMPLETED_CASES','en','Completed Cases','2015-03-09') ,
|
||||
( 'LABEL','ID_COMPLETED_TASK','en','Completed Task','2014-01-15') ,
|
||||
@@ -60945,7 +60950,10 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_SEARCH_ALSO_APP_UID','en','Search also in the APP_UID field','2014-10-30') ,
|
||||
( 'LABEL','ID_SEARCH_BY_CASE_NUMBER','en','Search by Case #:','2020-12-16') ,
|
||||
( 'LABEL','ID_SEARCH_BY_CASE_TITLE','en','Search by Case Title:','2020-12-16') ,
|
||||
( 'LABEL','ID_SEARCH_BY_CURRENT_USER','en','Search by Current User:','2021-07-13')
|
||||
( 'LABEL','ID_SEARCH_BY_FINISH_DATE','en','Search by Finish Date:','2020-12-16') ,
|
||||
( '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_START_DATE','en','Search by Start Date:','2020-12-16') ,
|
||||
( 'LABEL','ID_SEARCH_BY_STATUS','en','Search by Status:','2020-12-22') ,
|
||||
@@ -61125,6 +61133,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_STAGE','en','Stage','2014-01-15') ,
|
||||
( 'LABEL','ID_STAGES','en','Stages','2014-01-15') ,
|
||||
( 'LABEL','ID_STANDARD_LOGGING','en','Log Files','2018-02-19') ,
|
||||
( 'LABEL','ID_STARTED_BY','en','Started By:','2021-07-13') ,
|
||||
( 'LABEL','ID_STARTED_CASES','en','My Started Cases','2014-01-15') ,
|
||||
( 'LABEL','ID_STARTED_SUCCESSFULLY','en','Started successfully','2014-01-15') ,
|
||||
( 'LABEL','ID_STARTING_LOG_FILE','en','Starting log file','2014-01-15') ,
|
||||
|
||||
@@ -37,6 +37,9 @@ class AbstractCases implements CasesInterface
|
||||
// Order by column allowed
|
||||
const ORDER_BY_COLUMN_ALLOWED = ['APP_NUMBER', 'DEL_TITLE', 'PRO_TITLE'];
|
||||
|
||||
// Filter by category using the Id field
|
||||
private $categoryId = 0;
|
||||
|
||||
// Filter by category from a process, know as "$category" in the old lists classes
|
||||
private $categoryUid = '';
|
||||
|
||||
@@ -139,6 +142,26 @@ class AbstractCases implements CasesInterface
|
||||
// Number of rows to return
|
||||
private $limit = 15;
|
||||
|
||||
/**
|
||||
* Set Category Uid value
|
||||
*
|
||||
* @param int $category
|
||||
*/
|
||||
public function setCategoryId(int $category)
|
||||
{
|
||||
$this->categoryId = $category;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Category Id value
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getCategoryId()
|
||||
{
|
||||
return $this->categoryId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Category Uid value
|
||||
*
|
||||
@@ -1247,10 +1270,6 @@ class AbstractCases implements CasesInterface
|
||||
*/
|
||||
public function setProperties(array $properties)
|
||||
{
|
||||
// Filter by category
|
||||
if (!empty($properties['category'])) {
|
||||
$this->setCategoryUid($properties['category']);
|
||||
}
|
||||
// Filter by process
|
||||
if (!empty($properties['process'])) {
|
||||
$this->setProcessId($properties['process']);
|
||||
@@ -1329,6 +1348,10 @@ class AbstractCases implements CasesInterface
|
||||
$this->setFinishCaseTo($properties['finishCaseTo']);
|
||||
}
|
||||
/** Apply filters related to SEARCH */
|
||||
// Filter by category
|
||||
if (get_class($this) === Search::class && !empty($properties['category'])) {
|
||||
$this->setCategoryId($properties['category']);
|
||||
}
|
||||
// Filter by more than one case statuses like ['DRAFT', 'TO_DO']
|
||||
if (get_class($this) === Search::class && !empty($properties['caseStatuses'])) {
|
||||
$this->setCaseStatuses($properties['caseStatuses']);
|
||||
|
||||
@@ -5,6 +5,7 @@ namespace ProcessMaker\BusinessModel\Cases;
|
||||
use G;
|
||||
use ProcessMaker\Model\Application;
|
||||
use ProcessMaker\Model\Delegation;
|
||||
use ProcessMaker\Model\User;
|
||||
|
||||
class Draft extends AbstractCases
|
||||
{
|
||||
@@ -14,10 +15,11 @@ class Draft extends AbstractCases
|
||||
'APP_DELEGATION.APP_NUMBER', // Case #
|
||||
'APP_DELEGATION.DEL_TITLE', // Case Title
|
||||
'PROCESS.PRO_TITLE', // Process
|
||||
'TASK.TAS_TITLE', // Task
|
||||
'APP_DELEGATION.DEL_TASK_DUE_DATE', // Due Date
|
||||
'APP_DELEGATION.DEL_DELEGATE_DATE', // Delegate Date
|
||||
'APP_DELEGATION.DEL_PRIORITY', // Priority
|
||||
'TASK.TAS_TITLE', // Task
|
||||
'APP_DELEGATION.DEL_TASK_DUE_DATE', // Due Date
|
||||
'APP_DELEGATION.DEL_DELEGATE_DATE', // Delegate Date
|
||||
'APP_DELEGATION.DEL_PRIORITY', // Priority
|
||||
'APP_DELEGATION.DEL_PREVIOUS', // Previous
|
||||
// Additional column for other functionalities
|
||||
'APP_DELEGATION.APP_UID', // Case Uid for Open case
|
||||
'APP_DELEGATION.DEL_INDEX', // Del Index for Open case
|
||||
@@ -119,6 +121,13 @@ class Draft extends AbstractCases
|
||||
// Apply the date format defined in environment
|
||||
$item['DEL_TASK_DUE_DATE_LABEL'] = applyMaskDateEnvironment($item['DEL_TASK_DUE_DATE']);
|
||||
$item['DEL_DELEGATE_DATE_LABEL'] = applyMaskDateEnvironment($item['DEL_DELEGATE_DATE']);
|
||||
// Get the send by related to the previous index
|
||||
$previousThread = Delegation::getThreadInfo($item['APP_NUMBER'], $item['DEL_PREVIOUS']);
|
||||
$userInfo = !empty($previousThread) ? User::getInformation($previousThread['USR_ID']) : [];
|
||||
$result = [];
|
||||
$result['del_previous'] = $item['DEL_PREVIOUS'];
|
||||
$result['user_tooltip'] = $userInfo;
|
||||
$item['SEND_BY_INFO'] = $result;
|
||||
|
||||
return $item;
|
||||
});
|
||||
|
||||
@@ -5,6 +5,7 @@ namespace ProcessMaker\BusinessModel\Cases;
|
||||
use G;
|
||||
use ProcessMaker\Model\Application;
|
||||
use ProcessMaker\Model\Delegation;
|
||||
use ProcessMaker\Model\User;
|
||||
|
||||
class Inbox extends AbstractCases
|
||||
{
|
||||
@@ -14,13 +15,14 @@ class Inbox extends AbstractCases
|
||||
'APP_DELEGATION.APP_NUMBER', // Case #
|
||||
'APP_DELEGATION.DEL_TITLE', // Case Title
|
||||
'PROCESS.PRO_TITLE', // Process
|
||||
'TASK.TAS_TITLE', // Task
|
||||
'USERS.USR_USERNAME', // Current UserName
|
||||
'USERS.USR_FIRSTNAME', // Current User FirstName
|
||||
'USERS.USR_LASTNAME', // Current User LastName
|
||||
'APP_DELEGATION.DEL_TASK_DUE_DATE', // Due Date
|
||||
'APP_DELEGATION.DEL_DELEGATE_DATE', // Delegate Date
|
||||
'APP_DELEGATION.DEL_PRIORITY', // Priority
|
||||
'TASK.TAS_TITLE', // Task
|
||||
'USERS.USR_USERNAME', // Current UserName
|
||||
'USERS.USR_FIRSTNAME', // Current User FirstName
|
||||
'USERS.USR_LASTNAME', // Current User LastName
|
||||
'APP_DELEGATION.DEL_TASK_DUE_DATE', // Due Date
|
||||
'APP_DELEGATION.DEL_DELEGATE_DATE', // Delegate Date
|
||||
'APP_DELEGATION.DEL_PRIORITY', // Priority
|
||||
'APP_DELEGATION.DEL_PREVIOUS', // Previous
|
||||
// Additional column for other functionalities
|
||||
'APP_DELEGATION.APP_UID', // Case Uid for Open case
|
||||
'APP_DELEGATION.DEL_INDEX', // Del Index for Open case
|
||||
@@ -134,6 +136,13 @@ class Inbox extends AbstractCases
|
||||
// Apply the date format defined in environment
|
||||
$item['DEL_TASK_DUE_DATE_LABEL'] = applyMaskDateEnvironment($item['DEL_TASK_DUE_DATE']);
|
||||
$item['DEL_DELEGATE_DATE_LABEL'] = applyMaskDateEnvironment($item['DEL_DELEGATE_DATE']);
|
||||
// Get the send by related to the previous index
|
||||
$previousThread = Delegation::getThreadInfo($item['APP_NUMBER'], $item['DEL_PREVIOUS']);
|
||||
$userInfo = !empty($previousThread) ? User::getInformation($previousThread['USR_ID']) : [];
|
||||
$result = [];
|
||||
$result['del_previous'] = $item['DEL_PREVIOUS'];
|
||||
$result['user_tooltip'] = $userInfo;
|
||||
$item['SEND_BY_INFO'] = $result;
|
||||
|
||||
return $item;
|
||||
});
|
||||
|
||||
@@ -16,13 +16,14 @@ class Participated extends AbstractCases
|
||||
'APP_DELEGATION.APP_NUMBER', // Case #
|
||||
'APP_DELEGATION.DEL_TITLE', // Case Title
|
||||
'PROCESS.PRO_TITLE', // Process Name
|
||||
'TASK.TAS_TITLE', // Pending Task
|
||||
'TASK.TAS_TITLE', // Pending Task
|
||||
'TASK.TAS_ASSIGN_TYPE', // Task assign rule
|
||||
'APPLICATION.APP_STATUS', // Status
|
||||
'APPLICATION.APP_CREATE_DATE', // Start Date
|
||||
'APPLICATION.APP_FINISH_DATE', // Finish Date
|
||||
'APP_DELEGATION.DEL_TASK_DUE_DATE', // Due Date related to the colors
|
||||
'USERS.USR_ID', // Current UserId
|
||||
'APPLICATION.APP_STATUS', // Status
|
||||
'APPLICATION.APP_CREATE_DATE', // Start Date
|
||||
'APPLICATION.APP_FINISH_DATE', // Finish Date
|
||||
'APP_DELEGATION.DEL_TASK_DUE_DATE', // Due Date related to the colors
|
||||
'APP_DELEGATION.DEL_PREVIOUS', // Previous
|
||||
'USERS.USR_ID', // Current UserId
|
||||
// Additional column for other functionalities
|
||||
'APP_DELEGATION.APP_UID', // Case Uid for Open case
|
||||
'APP_DELEGATION.DEL_INDEX', // Del Index for Open case
|
||||
@@ -213,6 +214,13 @@ class Participated extends AbstractCases
|
||||
$item['PENDING'] = $result;
|
||||
break;
|
||||
}
|
||||
// Get the send by related to the previous index
|
||||
$previousThread = Delegation::getThreadInfo($item['APP_NUMBER'], $item['DEL_PREVIOUS']);
|
||||
$userInfo = !empty($previousThread) ? User::getInformation($previousThread['USR_ID']) : [];
|
||||
$result = [];
|
||||
$result['del_previous'] = $item['DEL_PREVIOUS'];
|
||||
$result['user_tooltip'] = $userInfo;
|
||||
$item['SEND_BY_INFO'] = $result;
|
||||
|
||||
return $item;
|
||||
});
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace ProcessMaker\BusinessModel\Cases;
|
||||
|
||||
use G;
|
||||
use ProcessMaker\Model\Delegation;
|
||||
use ProcessMaker\Model\User;
|
||||
|
||||
class Paused extends AbstractCases
|
||||
{
|
||||
@@ -13,13 +14,14 @@ class Paused extends AbstractCases
|
||||
'APP_DELEGATION.APP_NUMBER', // Case #
|
||||
'APP_DELEGATION.DEL_TITLE', // Case Title
|
||||
'PROCESS.PRO_TITLE', // Process
|
||||
'TASK.TAS_TITLE', // Task
|
||||
'USERS.USR_USERNAME', // Current UserName
|
||||
'USERS.USR_FIRSTNAME', // Current User FirstName
|
||||
'USERS.USR_LASTNAME', // Current User LastName
|
||||
'APP_DELEGATION.DEL_TASK_DUE_DATE', // Due Date
|
||||
'APP_DELEGATION.DEL_DELEGATE_DATE', // Delegate Date
|
||||
'APP_DELEGATION.DEL_PRIORITY', // Priority
|
||||
'TASK.TAS_TITLE', // Task
|
||||
'USERS.USR_USERNAME', // Current UserName
|
||||
'USERS.USR_FIRSTNAME', // Current User FirstName
|
||||
'USERS.USR_LASTNAME', // Current User LastName
|
||||
'APP_DELEGATION.DEL_TASK_DUE_DATE', // Due Date
|
||||
'APP_DELEGATION.DEL_DELEGATE_DATE', // Delegate Date
|
||||
'APP_DELEGATION.DEL_PRIORITY', // Priority
|
||||
'APP_DELEGATION.DEL_PREVIOUS', // Previous
|
||||
// Additional column for other functionalities
|
||||
'APP_DELEGATION.APP_UID', // Case Uid for Open case
|
||||
'APP_DELEGATION.DEL_INDEX', // Del Index for Open case
|
||||
@@ -128,6 +130,13 @@ class Paused extends AbstractCases
|
||||
// Apply the date format defined in environment
|
||||
$item['DEL_TASK_DUE_DATE_LABEL'] = applyMaskDateEnvironment($item['DEL_TASK_DUE_DATE']);
|
||||
$item['DEL_DELEGATE_DATE_LABEL'] = applyMaskDateEnvironment($item['DEL_DELEGATE_DATE']);
|
||||
// Get the send by related to the previous index
|
||||
$previousThread = Delegation::getThreadInfo($item['APP_NUMBER'], $item['DEL_PREVIOUS']);
|
||||
$userInfo = !empty($previousThread) ? User::getInformation($previousThread['USR_ID']) : [];
|
||||
$result = [];
|
||||
$result['del_previous'] = $item['DEL_PREVIOUS'];
|
||||
$result['user_tooltip'] = $userInfo;
|
||||
$item['SEND_BY_INFO'] = $result;
|
||||
|
||||
return $item;
|
||||
});
|
||||
|
||||
@@ -67,6 +67,11 @@ class Search extends AbstractCases
|
||||
// Add the filter
|
||||
// $query->title($this->getCaseTitle());
|
||||
}
|
||||
// Filter by category
|
||||
if ($this->getCategoryId()) {
|
||||
// This filter require a join with the process table
|
||||
$query->category($this->getCategoryId());
|
||||
}
|
||||
// Filter by process
|
||||
if ($this->getProcessId()) {
|
||||
$result = Process::query()->select(['PRO_UID'])
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user