Merge branch 'feature/PMCORE-3049' of https://bitbucket.org/colosa/processmaker into feature/PMCORE-3164

This commit is contained in:
Henry Jordan
2021-07-14 20:54:46 +00:00
36 changed files with 1230 additions and 286 deletions

View File

@@ -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])
];
});

View File

@@ -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}"
};

View File

@@ -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
*/

View File

@@ -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
});
}
});

View File

@@ -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>

View 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>

View File

@@ -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>

View File

@@ -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) => {

View File

@@ -358,7 +358,9 @@ export default {
};
_.forIn(this.filters, function (item, key) {
if(filters && item.value) {
filters[item.filterVar] = item.value;
}
});
return new Promise((resolutionFunc, rejectionFunc) => {
api.cases

View File

@@ -369,7 +369,9 @@ export default {
};
_.forIn(this.filters, function (item, key) {
if(filters && item.value) {
filters[item.filterVar] = item.value;
}
});
return new Promise((resolutionFunc, rejectionFunc) => {
api.cases

View File

@@ -300,8 +300,10 @@ export default {
filter: that.filterHeader,
paged: paged,
};
_.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

View File

@@ -255,7 +255,9 @@ export default {
};
_.forIn(this.filters, function (item, key) {
if(filters && item.value) {
filters[item.filterVar] = item.value;
}
});
return new Promise((resolutionFunc, rejectionFunc) => {
api.cases

View File

@@ -222,8 +222,10 @@ export default {
paged: paged,
};
_.forIn(this.$parent.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

View File

@@ -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();

View File

@@ -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);
}
}
}

View File

@@ -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']);

View File

@@ -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
*

View File

@@ -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
*

View File

@@ -5,9 +5,7 @@ namespace Tests\unit\workflow\engine\src\ProcessMaker\BusinessModel\Cases;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Illuminate\Support\Facades\DB;
use ProcessMaker\BusinessModel\Cases\Participated;
use ProcessMaker\Model\Application;
use ProcessMaker\Model\Delegation;
use ProcessMaker\Model\Process;
use Tests\TestCase;
/**
@@ -59,7 +57,7 @@ class ParticipatedTest extends TestCase
* @param int
* @return object
*/
public function createMultipleParticipated($cases)
public function createMultipleParticipated($cases = 2)
{
$user = factory(\ProcessMaker\Model\User::class)->create();
@@ -85,11 +83,13 @@ class ParticipatedTest extends TestCase
}
/**
* It tests the getData method without filters
* It tests the getData without filters
*
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getColumnsView()
* @covers \ProcessMaker\Model\Delegation::scopeParticipated()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setUserId()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setOrderByColumn()
* @test
*/
public function it_get_result_without_filters()
@@ -104,19 +104,22 @@ class ParticipatedTest extends TestCase
$participated->setUserId($cases['USR_ID']);
// Set OrderBYColumn value
$participated->setOrderByColumn('APP_NUMBER');
// Call to getData method
// Get the data
$res = $participated->getData();
// This assert that the expected numbers of results are returned
$this->assertEquals(2, count($res));
}
/**
* It tests the getData method with specific filter StartedByMe
* It tests the getData the specific filter StartedByMe
*
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setCaseStatus()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setUserId()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setParticipatedStatus()
* @test
*/
public function it_filter_by_started_by_me()
@@ -130,23 +133,24 @@ class ParticipatedTest extends TestCase
// Set the user ID
$participated->setUserId($cases->USR_ID);
// Get only the TO_DO
$participated->setCaseStatus(2);
$participated->setCaseStatus('TO_DO');
// Set the filter STARTED
$participated->setParticipatedStatus('STARTED');
// Set OrderBYColumn value
$participated->setOrderByColumn('APP_NUMBER');
// Call to getData method
// Get the data
$res = $participated->getData();
// This assert that the expected numbers of results are returned
$this->assertEquals(1, count($res));
}
/**
* It tests the getData method with specific filter CompletedByMe
* It tests the getData the specific filter CompletedByMe
*
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setUserId()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setParticipatedStatus()
* @test
*/
public function it_filter_by_completed_by_me()
@@ -161,20 +165,21 @@ class ParticipatedTest extends TestCase
$participated->setUserId($cases->USR_ID);
// Set the filter COMPLETED
$participated->setParticipatedStatus('COMPLETED');
// Set OrderBYColumn value
$participated->setOrderByColumn('APP_NUMBER');
// Call to getData method
// Get the data
$res = $participated->getData();
// This assert that the expected numbers of results are returned
$this->assertEquals(0, count($res));
}
/**
* It tests the getData method with processId filter
* It tests the getData the specific filter setProcessId
*
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setFilterCases()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setUserId()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setProcessId()
* @test
*/
@@ -190,11 +195,9 @@ class ParticipatedTest extends TestCase
$participated->setUserUid($cases['USR_UID']);
// Set the user ID
$participated->setUserId($cases['USR_ID']);
// Set the process ID
// Set the process
$participated->setProcessId($cases['PRO_ID']);
// Set OrderBYColumn value
$participated->setOrderByColumn('APP_NUMBER');
// Call to getData method
// Get the data
$res = $participated->getData();
// This assert that the expected numbers of results are returned
$this->assertEquals(2, count($res));
@@ -223,9 +226,7 @@ class ParticipatedTest extends TestCase
$participated->setUserId($cases['USR_ID']);
// Set the case numbers
$participated->setCasesNumbers([$cases['APP_NUMBER']]);
// Set OrderBYColumn value
$participated->setOrderByColumn('APP_NUMBER');
// Call to getData method
// Get the data
$res = $participated->getData();
// This assert that the expected numbers of results are returned
$this->assertEquals(2, count($res));
@@ -255,20 +256,21 @@ class ParticipatedTest extends TestCase
// Set the range of case numbers
$rangeOfCases = $cases['APP_NUMBER'] . "-" . $cases['APP_NUMBER'];
$participated->setRangeCasesFromTo([$rangeOfCases]);
// Set OrderBYColumn value
$participated->setOrderByColumn('APP_NUMBER');
// Call to getData method
// Get the data
$res = $participated->getData();
// This assert that the expected numbers of results are returned
$this->assertEquals(2, count($res));
}
/**
* It tests the getData method with processId filter
* It tests the getData the specific filter setCaseTitle
*
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setFilterCases()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setUserId()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setCaseTitle()
* @test
*/
@@ -295,9 +297,165 @@ class ParticipatedTest extends TestCase
}
/**
* It tests the getCounter method
* It tests the getData the specific filter status
*
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setFilterCases()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setUserId()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setCaseStatus()
* @test
*/
public function it_filter_by_status()
{
// Create factories related to the participated cases
$cases = $this->createParticipated();
// Create new Participated object
$participated = new Participated();
// Set the filter
$participated->setFilterCases('STARTED');
// Set the user UID
$participated->setUserUid($cases['USR_UID']);
// Set the user ID
$participated->setUserId($cases['USR_ID']);
// Set the case status
$participated->setCaseStatus('TO_DO');
// Get the data
$result = $participated->getData();
// This assert that the expected numbers of results are returned
$this->assertNotEmpty($result);
}
/**
* It tests the getData the specific filter setStartCaseFrom and getStartCaseTo
*
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setFilterCases()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setUserId()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setStartCaseFrom()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setStartCaseTo()
* @test
*/
public function it_filter_by_start_date()
{
// Create factories related to the participated cases
$cases = $this->createParticipated();
// Create new Participated object
$participated = new Participated();
// Set the filter
$participated->setFilterCases('STARTED');
// Set the user UID
$participated->setUserUid($cases['USR_UID']);
// Set the user ID
$participated->setUserId($cases['USR_ID']);
// Set the range of dates
$date = date('Y-m-d');
$participated->setStartCaseFrom($date);
$participated->setStartCaseTo($date);
// Get the data
$result = $participated->getData();
// This assert that the expected numbers of results are returned
$this->assertEmpty($result);
}
/**
* It tests the getData the specific filter setFinishCaseFrom and setFinishCaseTo
*
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setFilterCases()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setUserId()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setFinishCaseFrom()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setFinishCaseTo()
* @test
*/
public function it_filter_by_finish_date()
{
// Create factories related to the participated cases
$cases = $this->createParticipated();
// Create new Participated object
$participated = new Participated();
// Set the filter
$participated->setFilterCases('STARTED');
// Set the user UID
$participated->setUserUid($cases['USR_UID']);
// Set the user ID
$participated->setUserId($cases['USR_ID']);
// Set the range of dates
$date = date('Y-m-d');
$participated->setFinishCaseFrom($date);
$participated->setFinishCaseTo($date);
// Get the data
$result = $participated->getData();
// This assert that the expected numbers of results are returned
$this->assertEmpty($result);
}
/**
* It tests the specific filter setParticipatedStatus = IN_PROGRESS
*
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setParticipatedStatus()
* @test
*/
public function it_get_status_in_progress()
{
// Create factories related to the participated cases
$cases = $this->createParticipated();
// Create new Participated object
$participated = new Participated();
// Set the user UID
$participated->setUserUid($cases->USR_UID);
// Set the user ID
$participated->setUserId($cases->USR_ID);
// Set participated status
$participated->setParticipatedStatus('IN_PROGRESS');
// Get result
$result = $participated->getData();
// This assert that the expected numbers of results are returned
$this->assertNotEmpty($result);
}
/**
* It tests the specific filter setParticipatedStatus = COMPLETED
*
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setParticipatedStatus()
* @test
*/
public function it_get_status_completed()
{
// Create factories related to the participated cases
$cases = $this->createParticipated();
// Create new Participated object
$participated = new Participated();
// Set the user UID
$participated->setUserUid($cases->USR_UID);
// Set the user ID
$participated->setUserId($cases->USR_ID);
// Set participated status
$participated->setParticipatedStatus('COMPLETED');
// Get result
$result = $participated->getData();
// This assert that the expected numbers of results are returned
$this->assertEmpty($result);
}
/**
* It tests the getCounter
*
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getCounter()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::setParticipatedStatus()
* @test
*/
public function it_get_counter()
@@ -319,7 +477,7 @@ class ParticipatedTest extends TestCase
}
/**
* It tests the getPagingCounters() method
* It tests the getPagingCounters
*
* @covers \ProcessMaker\BusinessModel\Cases\Participated::getPagingCounters()
* @covers \ProcessMaker\BusinessModel\Cases\Participated::filters()
@@ -332,17 +490,14 @@ class ParticipatedTest extends TestCase
$participated->setUserId($cases->USR_ID);
$participated->setUserUid($cases->USR_UID);
$participated->setParticipatedStatus('STARTED');
$res = $participated->getPagingCounters();
$this->assertEquals(3, $res);
$delegation = Delegation::select()->where('USR_ID', $cases->USR_ID)->first();
$participated->setCaseNumber($delegation->APP_NUMBER);
$participated->setProcessId($delegation->PRO_ID);
$participated->setTaskId($delegation->TAS_ID);
$participated->setCaseUid($delegation->APP_UID);
$res = $participated->getPagingCounters();
$this->assertEquals(1, $res);
}

View File

@@ -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);

View File

@@ -7,7 +7,6 @@ use Illuminate\Support\Facades\DB;
use ProcessMaker\BusinessModel\Cases\Supervising;
use ProcessMaker\Model\Application;
use ProcessMaker\Model\Delegation;
use ProcessMaker\Model\GroupUser;
use ProcessMaker\Model\Process;
use ProcessMaker\Model\ProcessUser;
use ProcessMaker\Model\Task;
@@ -323,48 +322,54 @@ class SupervisingTest extends TestCase
* Tests the getData() method when the user is a supervisor of the process(es)
*
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserId()
* @test
*/
public function it_should_test_the_get_data_method_when_the_user_is_supervisor()
{
$cases = $this->createSupervising();
// Instance the Supervising class
$Supervising = new Supervising();
$supervising = new Supervising();
// Set the user UID
$Supervising->setUserUid($cases->USR_UID);
// Set the user ID
$Supervising->setUserId($cases->USR_ID);
// Call the getData method
$res = $Supervising->getData();
$supervising->setUserUid($cases->USR_UID);
// Set the user
$supervising->setUserId($cases->USR_ID);
// Get the data
$result = $supervising->getData();
// Asserts the result contains 3 registers
$this->assertCount(3, $res);
$this->assertCount(3, $result);
}
/**
* Tests the getData() method when the user belongs to a group supervisor
*
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserId()
* @test
*/
public function it_should_test_the_get_data_method_when_the_user_belong_to_a_group_supervisor()
{
$cases = $this->createSupervising();
// Instance the Supervising object
$Supervising = new Supervising();
$supervising = new Supervising();
// Set the user UID
$Supervising->setUserUid($cases->USR_UID);
$supervising->setUserUid($cases->USR_UID);
// Set the user ID
$Supervising->setUserId($cases->USR_ID);
// Call the getData method
$res = $Supervising->getData();
$supervising->setUserId($cases->USR_ID);
// Get the data
$result = $supervising->getData();
// Asserts the result contains 3 registers
$this->assertCount(3, $res);
$this->assertCount(3, $result);
}
/**
* Tests the getData() method when the user is not a supervisor neither belongs to a group supervisor
*
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserId()
* @test
*/
public function it_should_test_the_get_data_method_when_the_user_is_not_supervisor()
@@ -372,44 +377,25 @@ class SupervisingTest extends TestCase
$user = factory(User::class)->create();
$cases = $this->createSupervising();
// Instance the Supervising object
$Supervising = new Supervising();
$supervising = new Supervising();
// Set the user UID
$Supervising->setUserUid($user->USR_UID);
// Set the user ID
$Supervising->setUserId($user->USR_ID);
// Call the getData method
$res = $Supervising->getData();
$supervising->setUserUid($user->USR_UID);
// Set the user
$supervising->setUserId($user->USR_ID);
// Get the data
$result = $supervising->getData();
// Asserts the result
$this->assertEmpty($res);
$this->assertEmpty($result);
}
/**
* Tests the getCounter() method
*
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getCounter()
* @test
*/
public function it_should_count_the_data()
{
$cases = $this->createSupervising();
// Instance the Supervising object
$Supervising = new Supervising();
// Set the user UID
$Supervising->setUserUid($cases->USR_UID);
// Set the user ID
$Supervising->setUserId($cases->USR_ID);
// Call the getCounter method
$res = $Supervising->getCounter();
// Assert the counter
$this->assertEquals(3, $res);
}
/**
* Tests the filter by APP_NUMBER
* Tests the specific filter setCaseNumber
*
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserId()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setCaseNumber()
* @test
*/
@@ -417,55 +403,59 @@ class SupervisingTest extends TestCase
{
$cases = $this->createSupervising();
// Instance the Supervising object
$Supervising = new Supervising();
$supervising = new Supervising();
// Set the user UID
$Supervising->setUserUid($cases->USR_UID);
// Set the user ID
$Supervising->setUserId($cases->USR_ID);
$supervising->setUserUid($cases->USR_UID);
// Set the user
$supervising->setUserId($cases->USR_ID);
// Set the case number
$Supervising->setCaseNumber($cases->APP_NUMBER);
// Call the getData method
$res = $Supervising->getData();
$supervising->setCaseNumber($cases->APP_NUMBER);
// Get the data
$result = $supervising->getData();
// Asserts the result contains 3 registers
$this->assertCount(1, $res);
$this->assertCount(1, $result);
// Asserts that the result contains the app number searched
$this->assertContains($cases->APP_NUMBER, $res[0]);
$this->assertContains($cases->APP_NUMBER, $result[0]);
}
/**
* Tests the filter by APP_NUMBER
* Tests the specific filter setCasesNumbers
*
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setCaseNumber()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserId()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setCasesNumbers()
* @test
*/
public function it_filter_by_specific_cases()
{
$cases = $this->createSupervising();
// Instance the Supervising object
$Supervising = new Supervising();
$supervising = new Supervising();
// Set the user UID
$Supervising->setUserUid($cases->USR_UID);
// Set the user ID
$Supervising->setUserId($cases->USR_ID);
$supervising->setUserUid($cases->USR_UID);
// Set the user
$supervising->setUserId($cases->USR_ID);
// Set the case numbers
$Supervising->setCasesNumbers([$cases->APP_NUMBER]);
// Call the getData method
$res = $Supervising->getData();
$supervising->setCasesNumbers([$cases->APP_NUMBER]);
// Get the data
$result = $supervising->getData();
// Asserts the result contains 3 registers
$this->assertCount(1, $res);
$this->assertCount(1, $result);
// Asserts that the result contains the app number searched
$this->assertContains($cases->APP_NUMBER, $res[0]);
$this->assertContains($cases->APP_NUMBER, $result[0]);
}
/**
* Tests the filter by APP_NUMBER
* Tests the specific filter setRangeCasesFromTo
*
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserId()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setRangeCasesFromTo()
* @test
*/
@@ -473,78 +463,30 @@ class SupervisingTest extends TestCase
{
$cases = $this->createSupervising();
// Instance the Supervising object
$Supervising = new Supervising();
$supervising = new Supervising();
// Set the user UID
$Supervising->setUserUid($cases->USR_UID);
$supervising->setUserUid($cases->USR_UID);
// Set the user ID
$Supervising->setUserId($cases->USR_ID);
$supervising->setUserId($cases->USR_ID);
// Set the range of case numbers
$rangeOfCases = $cases->APP_NUMBER . "-" . $cases->APP_NUMBER;
$Supervising->setRangeCasesFromTo([$rangeOfCases]);
// Call the getData method
$res = $Supervising->getData();
$supervising->setRangeCasesFromTo([$rangeOfCases]);
// Get the data
$result = $supervising->getData();
// Asserts the result contains 3 registers
$this->assertCount(1, $res);
$this->assertCount(1, $result);
// Asserts that the result contains the app number searched
$this->assertContains($cases->APP_NUMBER, $res[0]);
$this->assertContains($cases->APP_NUMBER, $result[0]);
}
/**
* Tests the filter by process
*
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setProcessId()
* @test
*/
public function it_filter_by_process()
{
$cases = $this->createSupervising();
// Instance the Supervising object
$Supervising = new Supervising();
// Set the user UID
$Supervising->setUserUid($cases['USR_UID']);
// Set the user ID
$Supervising->setUserId($cases['USR_ID']);
// Set the process Id filter
$Supervising->setProcessId($cases['PRO_ID']);
// Call the getData method
$res = $Supervising->getData();
$this->assertCount(3, $res);
}
/**
* Tests the filter by process
*
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setTaskId()
* @test
*/
public function it_filter_by_task()
{
$cases = $this->createSupervising();
// Instance the Supervising object
$Supervising = new Supervising();
// Set the user UID
$Supervising->setUserUid($cases['USR_UID']);
// Set the user ID
$Supervising->setUserId($cases['USR_ID']);
// Set the process Id filter
$Supervising->setTaskId($cases['TAS_ID']);
// Call the getData method
$res = $Supervising->getData();
$this->assertCount(3, $res);
}
/**
* It tests the getData method with case title filter
* Tests the specific filter caseTitle
*
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserId()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setCaseTitle()
* @test
*/
@@ -566,9 +508,152 @@ class SupervisingTest extends TestCase
// Set the title
$supervising->setCaseTitle($title);
// Get the data
$res = $supervising->getData();
$result = $supervising->getData();
// Asserts
$this->assertCount(1, $res);
$this->assertCount(1, $result);
}
/**
* Tests the specific filter process
*
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserId()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setProcessId()
* @test
*/
public function it_filter_by_process()
{
$cases = $this->createSupervising();
// Instance the Supervising object
$supervising = new Supervising();
// Set the user UID
$supervising->setUserUid($cases['USR_UID']);
// Set the user ID
$supervising->setUserId($cases['USR_ID']);
// Set the process
$supervising->setProcessId($cases['PRO_ID']);
// Get the data
$result = $supervising->getData();
$this->assertCount(3, $result);
}
/**
* Tests the specific filter task
*
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserId()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setTaskId()
* @test
*/
public function it_filter_by_task()
{
$cases = $this->createSupervising();
// Instance the Supervising object
$supervising = new Supervising();
// Set the user UID
$supervising->setUserUid($cases['USR_UID']);
// Set the user ID
$supervising->setUserId($cases['USR_ID']);
// Set the task
$supervising->setTaskId($cases['TAS_ID']);
// Get the data
$result = $supervising->getData();
$this->assertCount(3, $result);
}
/**
* Tests the specific filter status
*
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserId()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setCaseStatus()
* @test
*/
public function it_filter_by_status()
{
$cases = $this->createSupervising();
// Instance the Supervising object
$supervising = new Supervising();
// Set the user UID
$supervising->setUserUid($cases['USR_UID']);
// Set the user ID
$supervising->setUserId($cases['USR_ID']);
// Set the task
$supervising->setCaseStatus('TO_DO');
// Get the data
$result = $supervising->getData();
$this->assertNotEmpty($result);
}
/**
* It tests the getData the specific filter setStartCaseFrom and getStartCaseTo
*
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserId()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setStartCaseFrom()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setStartCaseTo()
* @test
*/
public function it_filter_by_start_date()
{
$cases = $this->createSupervising();
// Instance the Supervising object
$supervising = new Supervising();
// Set the user UID
$supervising->setUserUid($cases['USR_UID']);
// Set the user ID
$supervising->setUserId($cases['USR_ID']);
// Set the range of dates
$date = date('Y-m-d');
$supervising->setStartCaseFrom($date);
$supervising->setStartCaseTo($date);
// Get the data
$result = $supervising->getData();
// This assert that the expected numbers of results are returned
$this->assertEmpty($result);
}
/**
* It tests the getData the specific filter setFinishCaseFrom and setFinishCaseTo
*
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getData()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserId()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setFinishCaseFrom()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setFinishCaseTo()
* @test
*/
public function it_filter_by_finish_date()
{
$cases = $this->createSupervising();
// Instance the Supervising object
$supervising = new Supervising();
// Set the user UID
$supervising->setUserUid($cases['USR_UID']);
// Set the user ID
$supervising->setUserId($cases['USR_ID']);
// Set the range of dates
$date = date('Y-m-d');
$supervising->setFinishCaseFrom($date);
$supervising->setFinishCaseTo($date);
// Get the data
$result = $supervising->getData();
// This assert that the expected numbers of results are returned
$this->assertEmpty($result);
}
/**
@@ -578,6 +663,8 @@ class SupervisingTest extends TestCase
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getColumnsView()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::filters()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setOrderByColumn()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserId()
* @test
*/
public function it_order_by_column()
@@ -594,18 +681,41 @@ class SupervisingTest extends TestCase
];
$index = array_rand($columnsView);
// Instance the Supervising object
$Supervising = new Supervising();
//Set the user UID
$Supervising->setUserUid($cases['USR_UID']);
//Set the user ID
$Supervising->setUserId($cases['USR_ID']);
//Set the order by value
$Supervising->setOrderByColumn($columnsView[$index]);
//Call the getData method
$result = $Supervising->getData();
$supervising = new Supervising();
// Set the user UID
$supervising->setUserUid($cases['USR_UID']);
// Set the user ID
$supervising->setUserId($cases['USR_ID']);
// Set the order by value
$supervising->setOrderByColumn($columnsView[$index]);
// Get the data
$result = $supervising->getData();
$this->assertNotEmpty($result);
}
/**
* Tests the getCounter() method
*
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::getCounter()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserUid()
* @covers \ProcessMaker\BusinessModel\Cases\Supervising::setUserId()
* @test
*/
public function it_should_count_the_data()
{
$cases = $this->createSupervising();
// Instance the Supervising object
$supervising = new Supervising();
// Set the user UID
$supervising->setUserUid($cases->USR_UID);
// Set the user
$supervising->setUserId($cases->USR_ID);
// Get the data
$result = $supervising->getCounter();
// Assert the counter
$this->assertEquals(3, $result);
}
/**
* It tests the getPagingCounters() method
*
@@ -618,8 +728,8 @@ class SupervisingTest extends TestCase
$supervising = new Supervising();
$supervising->setUserId($cases->USR_ID);
$supervising->setUserUid($cases->USR_UID);
$res = $supervising->getPagingCounters();
$this->assertEquals(3, $res);
// Get the count
$result = $supervising->getPagingCounters();
$this->assertEquals(3, $result);
}
}

View File

@@ -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) {

View File

@@ -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

View File

@@ -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') ,

View File

@@ -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']);

View File

@@ -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
{
@@ -18,6 +19,7 @@ class Draft extends AbstractCases
'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;
});

View File

@@ -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
{
@@ -21,6 +22,7 @@ class Inbox extends AbstractCases
'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;
});

View File

@@ -22,6 +22,7 @@ class Participated extends AbstractCases
'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
@@ -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;
});

View File

@@ -4,6 +4,7 @@ namespace ProcessMaker\BusinessModel\Cases;
use G;
use ProcessMaker\Model\Delegation;
use ProcessMaker\Model\User;
class Paused extends AbstractCases
{
@@ -20,6 +21,7 @@ class Paused extends AbstractCases
'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;
});

View File

@@ -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'])

View File

@@ -5,6 +5,7 @@ namespace ProcessMaker\BusinessModel\Cases;
use ProcessMaker\Model\AppNotes;
use ProcessMaker\Model\Delegation;
use ProcessMaker\Model\ProcessUser;
use ProcessMaker\Model\User;
class Supervising extends AbstractCases
{
@@ -19,6 +20,7 @@ class Supervising extends AbstractCases
'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
@@ -159,6 +161,13 @@ class Supervising extends AbstractCases
$information[] = $this->threadInformation($thread);
}
$item['PENDING'] = $information;
// 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;
});

View File

@@ -5,6 +5,7 @@ namespace ProcessMaker\BusinessModel\Cases;
use G;
use ProcessMaker\Model\Application;
use ProcessMaker\Model\Delegation;
use ProcessMaker\Model\User;
class Unassigned extends AbstractCases
{
@@ -21,6 +22,7 @@ class Unassigned extends AbstractCases
'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
@@ -136,6 +138,13 @@ class Unassigned 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;
});

View File

@@ -43,7 +43,7 @@ class Application extends Model
* @param int $user
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeUserId($query, $user)
public function scopeUserId($query, int $user)
{
return $query->where('APP_DELEGATION.USR_ID', '=', $user);
}
@@ -232,6 +232,19 @@ class Application extends Model
return $query->whereIn('APPLICATION.APP_STATUS_ID', $statuses);
}
/**
* Scope a query to only include specific category
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param int $category
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeCategory($query, $category)
{
return $query->where('PROCESS.CATEGORY_ID', $category);
}
/**
* Scope for query to get the applications by PRO_UID.
*

View File

@@ -611,7 +611,7 @@ class Delegation extends Model
* @param int $user
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeUserId($query, $user)
public function scopeUserId($query, int $user)
{
return $query->where('APP_DELEGATION.USR_ID', '=', $user);
}
@@ -1751,7 +1751,7 @@ class Delegation extends Model
*/
public static function getThreadInfo(int $appNumber, int $index)
{
$query = Delegation::query()->select(['APP_NUMBER', 'TAS_UID', 'TAS_ID', 'DEL_PREVIOUS', 'DEL_TITLE']);
$query = Delegation::query()->select(['APP_NUMBER', 'TAS_UID', 'TAS_ID', 'DEL_PREVIOUS', 'DEL_TITLE', 'USR_ID']);
$query->where('APP_NUMBER', $appNumber);
$query->where('DEL_INDEX', $index);
$query->limit(1);

View File

@@ -52,7 +52,7 @@ class User extends Model
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeUserId($query, string $usrId)
public function scopeUserId($query, int $usrId)
{
return $query->where('USR_ID', '=', $usrId);
}
@@ -212,7 +212,7 @@ class User extends Model
*
* @return array
*/
public static function getInformation($usrId)
public static function getInformation(int $usrId)
{
$query = User::query()->select([
'USR_USERNAME',

View File

@@ -460,6 +460,7 @@ class Home extends Api
* @url GET /search
*
* @param int $caseNumber
* @param int $category
* @param int $process
* @param int $task
* @param int $user
@@ -482,6 +483,7 @@ class Home extends Api
*/
public function doGetSearchCases(
int $caseNumber = 0,
int $category = 0,
int $process = 0,
int $task = 0,
int $user = 0,
@@ -500,6 +502,7 @@ class Home extends Api
// Define the filters to apply
$properties = [];
$properties['caseNumber'] = $caseNumber;
$properties['category'] = $category;
$properties['caseTitle'] = $caseTitle;
$properties['process'] = $process;
$properties['task'] = $task;