diff --git a/database/factories/ApplicationFactory.php b/database/factories/ApplicationFactory.php index b227f108e..ca6e89756 100644 --- a/database/factories/ApplicationFactory.php +++ b/database/factories/ApplicationFactory.php @@ -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]) ]; }); diff --git a/resources/assets/js/api/Api.js b/resources/assets/js/api/Api.js index 90f83e324..77f2c80af 100644 --- a/resources/assets/js/api/Api.js +++ b/resources/assets/js/api/Api.js @@ -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}" }; diff --git a/resources/assets/js/api/Filters.js b/resources/assets/js/api/Filters.js index a82c6cc8b..644674cc1 100644 --- a/resources/assets/js/api/Filters.js +++ b/resources/assets/js/api/Filters.js @@ -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 */ diff --git a/resources/assets/js/components/search/AdvancedFilter.vue b/resources/assets/js/components/search/AdvancedFilter.vue index 2a5c30337..10f4ae45f 100644 --- a/resources/assets/js/components/search/AdvancedFilter.vue +++ b/resources/assets/js/components/search/AdvancedFilter.vue @@ -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 }); } }); diff --git a/resources/assets/js/components/search/CasesFilter.vue b/resources/assets/js/components/search/CasesFilter.vue index 12310e9c9..18bef4fea 100644 --- a/resources/assets/js/components/search/CasesFilter.vue +++ b/resources/assets/js/components/search/CasesFilter.vue @@ -15,12 +15,13 @@ name="flavour-2a" stacked > + + {{$t('ID_BY_PROCESS_NAME') }} diff --git a/resources/assets/js/components/search/popovers/Participation.vue b/resources/assets/js/components/search/popovers/Participation.vue new file mode 100644 index 000000000..a1a3b95f4 --- /dev/null +++ b/resources/assets/js/components/search/popovers/Participation.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/resources/assets/js/components/search/popovers/ProcessCategory.vue b/resources/assets/js/components/search/popovers/ProcessCategory.vue new file mode 100644 index 000000000..b526ca305 --- /dev/null +++ b/resources/assets/js/components/search/popovers/ProcessCategory.vue @@ -0,0 +1,97 @@ + + updateSearchTag + + + diff --git a/resources/assets/js/home/AdvancedSearch.vue b/resources/assets/js/home/AdvancedSearch.vue index 28e19c015..c9b494fa0 100644 --- a/resources/assets/js/home/AdvancedSearch.vue +++ b/resources/assets/js/home/AdvancedSearch.vue @@ -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) => { diff --git a/resources/assets/js/home/Draft/Draft.vue b/resources/assets/js/home/Draft/Draft.vue index 0f457da10..6f8e8f01b 100644 --- a/resources/assets/js/home/Draft/Draft.vue +++ b/resources/assets/js/home/Draft/Draft.vue @@ -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 diff --git a/resources/assets/js/home/Inbox/Todo.vue b/resources/assets/js/home/Inbox/Todo.vue index b0b90de6e..5aceed80c 100644 --- a/resources/assets/js/home/Inbox/Todo.vue +++ b/resources/assets/js/home/Inbox/Todo.vue @@ -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 diff --git a/resources/assets/js/home/MyCases.vue b/resources/assets/js/home/MyCases.vue index 0d4dea897..3f49420fe 100644 --- a/resources/assets/js/home/MyCases.vue +++ b/resources/assets/js/home/MyCases.vue @@ -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 diff --git a/resources/assets/js/home/Paused.vue b/resources/assets/js/home/Paused.vue index 4d76037d9..826ae956f 100644 --- a/resources/assets/js/home/Paused.vue +++ b/resources/assets/js/home/Paused.vue @@ -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 diff --git a/resources/assets/js/home/Unassigned.vue b/resources/assets/js/home/Unassigned.vue index c9a291541..16e253169 100644 --- a/resources/assets/js/home/Unassigned.vue +++ b/resources/assets/js/home/Unassigned.vue @@ -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 diff --git a/tests/unit/workflow/engine/classes/PmFunctions/ExecuteQueryTest.php b/tests/unit/workflow/engine/classes/PmFunctions/ExecuteQueryTest.php index cc839a6f2..2a068fd73 100644 --- a/tests/unit/workflow/engine/classes/PmFunctions/ExecuteQueryTest.php +++ b/tests/unit/workflow/engine/classes/PmFunctions/ExecuteQueryTest.php @@ -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(); diff --git a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/AbstractCasesTest.php b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/AbstractCasesTest.php index c45110219..f46714b6d 100644 --- a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/AbstractCasesTest.php +++ b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/AbstractCasesTest.php @@ -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); + } } } \ No newline at end of file diff --git a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/BatchRoutingTest.php b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/BatchRoutingTest.php index 5df3ceaf9..0d0b420ff 100644 --- a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/BatchRoutingTest.php +++ b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/BatchRoutingTest.php @@ -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']); diff --git a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/CanceledTest.php b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/CanceledTest.php index 1979dd194..6d58ddf5e 100644 --- a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/CanceledTest.php +++ b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/CanceledTest.php @@ -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 * diff --git a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/CompletedTest.php b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/CompletedTest.php index 94c25032d..6746cc585 100644 --- a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/CompletedTest.php +++ b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/CompletedTest.php @@ -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 * diff --git a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/ParticipatedTest.php b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/ParticipatedTest.php index f963f8c28..4db7f0ef9 100644 --- a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/ParticipatedTest.php +++ b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/ParticipatedTest.php @@ -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); } diff --git a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/SearchTest.php b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/SearchTest.php index 711248446..4f32d0d4a 100644 --- a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/SearchTest.php +++ b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/SearchTest.php @@ -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); diff --git a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/SupervisingTest.php b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/SupervisingTest.php index e1bfe467e..27f54c809 100644 --- a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/SupervisingTest.php +++ b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/SupervisingTest.php @@ -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); } } diff --git a/tests/unit/workflow/engine/src/ProcessMaker/TaskScheduler/TaskTest.php b/tests/unit/workflow/engine/src/ProcessMaker/TaskScheduler/TaskTest.php index 4c3dc0355..f2f846e49 100644 --- a/tests/unit/workflow/engine/src/ProcessMaker/TaskScheduler/TaskTest.php +++ b/tests/unit/workflow/engine/src/ProcessMaker/TaskScheduler/TaskTest.php @@ -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) { diff --git a/workflow/engine/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po index 7ff1bf71c..c03bf1b52 100755 --- a/workflow/engine/content/translations/english/processmaker.en.po +++ b/workflow/engine/content/translations/english/processmaker.en.po @@ -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 diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index da12307a5..811315f10 100755 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -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') , diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/AbstractCases.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/AbstractCases.php index bd66fc067..52afbf0f6 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/AbstractCases.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/AbstractCases.php @@ -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']); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Draft.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Draft.php index 1d9e0d9b6..9ce4c1989 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Draft.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Draft.php @@ -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; }); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Inbox.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Inbox.php index 42901fcdb..67d6754d5 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Inbox.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Inbox.php @@ -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; }); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Participated.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Participated.php index 83a1ca085..cd5130693 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Participated.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Participated.php @@ -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; }); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Paused.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Paused.php index 755e3a117..e12525fc8 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Paused.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Paused.php @@ -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; }); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Search.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Search.php index 4b8dfa495..84085fc12 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Search.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Search.php @@ -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']) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Supervising.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Supervising.php index 16b66b482..2119faabb 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Supervising.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Supervising.php @@ -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 { @@ -14,11 +15,12 @@ class Supervising extends AbstractCases 'APP_DELEGATION.APP_NUMBER', // Case # 'APP_DELEGATION.DEL_TITLE', // Case Title 'PROCESS.PRO_TITLE', // Process Name - 'TASK.TAS_TITLE', // Pending Task - '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 + 'TASK.TAS_TITLE', // Pending Task + '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 @@ -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; }); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Unassigned.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Unassigned.php index 283cb5527..bab220af2 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Unassigned.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Unassigned.php @@ -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 { @@ -14,13 +15,14 @@ class Unassigned 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 @@ -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; }); diff --git a/workflow/engine/src/ProcessMaker/Model/Application.php b/workflow/engine/src/ProcessMaker/Model/Application.php index 63201c023..197742587 100644 --- a/workflow/engine/src/ProcessMaker/Model/Application.php +++ b/workflow/engine/src/ProcessMaker/Model/Application.php @@ -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. * diff --git a/workflow/engine/src/ProcessMaker/Model/Delegation.php b/workflow/engine/src/ProcessMaker/Model/Delegation.php index 63e61b5ef..16cf27c25 100644 --- a/workflow/engine/src/ProcessMaker/Model/Delegation.php +++ b/workflow/engine/src/ProcessMaker/Model/Delegation.php @@ -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); diff --git a/workflow/engine/src/ProcessMaker/Model/User.php b/workflow/engine/src/ProcessMaker/Model/User.php index f664a2d39..752d1f2a4 100644 --- a/workflow/engine/src/ProcessMaker/Model/User.php +++ b/workflow/engine/src/ProcessMaker/Model/User.php @@ -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', diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Home.php b/workflow/engine/src/ProcessMaker/Services/Api/Home.php index fabed4940..62a9c7c63 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Home.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Home.php @@ -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;