Skip to content

Commit 28b0942

Browse files
Add filter collections in signal api
1 parent 6eb842f commit 28b0942

3 files changed

Lines changed: 47 additions & 3 deletions

File tree

‎ProcessMaker/Http/Controllers/Api/SignalController.php‎

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace ProcessMaker\Http\Controllers\Api;
44

55
use DOMXPath;
6+
use Illuminate\Support\Arr;
67
use Illuminate\Contracts\Foundation\Application;
78
use Illuminate\Contracts\Routing\ResponseFactory;
89
use Illuminate\Http\Request;
@@ -36,6 +37,38 @@ public function index(Request $request)
3637

3738
$signals = SignalManager::getAllSignals(false, $query->get()->all());
3839

40+
$collections = [];
41+
42+
if(hasPackage('package-collections')) {
43+
$collection = \ProcessMaker\Plugins\Collections\Models\Collection::get();
44+
45+
foreach ($collection as $item) {
46+
if (!$item->signal_create) {
47+
$collections[] = 'collection_' . $item->id . '_create';
48+
}
49+
if (!$item->signal_update) {
50+
$collections[] = 'collection_' . $item->id . '_update';
51+
}
52+
if (!$item->signal_delete) {
53+
$collections[] = 'collection_' . $item->id . '_delete';
54+
}
55+
};
56+
}
57+
58+
//verify active signals
59+
$signals = $signals->transform(function($item) use($collections) {
60+
if (!in_array($item['id'], $collections)) {
61+
$item['type'] = 'signal';
62+
if (preg_match('/\bcollection_[0-9]_(create|update|delete)\b/', $item['id'])) {
63+
$item['type'] = 'collection';
64+
}
65+
return $item;
66+
}
67+
});
68+
69+
//remove items nulls
70+
$signals = $signals->filter();
71+
3972
$filter = $request->input('filter', '');
4073
if ($filter) {
4174
$signals = $signals->filter(function ($signal, $key) use($filter) {

‎ProcessMaker/Http/Controllers/Process/SignalController.php‎

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,19 @@ public function index(Request $request)
2424
{
2525
$collections = [];
2626

27-
if(hasPackage('package-collections')) {
28-
$collections = \ProcessMaker\Plugins\Collections\Models\Collection::pluck('id')->toArray();
29-
}
27+
/*if(hasPackage('package-collections')) {
28+
\ProcessMaker\Plugins\Collections\Models\Collection::get()->map(function ($item) {
29+
if ($item->signal_create) {
30+
$collections[] = 'collection_' . $item->id . '_create';
31+
}
32+
if ($item->signal_update) {
33+
$collections[] = 'collection_' . $item->id . '_update';
34+
}
35+
if ($item->signal_delete) {
36+
$collections[] = 'collection_' . $item->id . '_delete';
37+
}
38+
});
39+
}*/
3040

3141
return view('processes.signals.index', compact('collections'));
3242
}

‎resources/js/processes/signals/components/SignalListing.vue‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ export default {
110110
.replace('_delete', '');
111111
},
112112
isCollection(data) {
113+
return data.type === 'collection';
113114
const myRegex = new RegExp('\\bcollection_[0-9]_(create|update|delete)\\b', 'g');
114115
return (!!data.id.match(myRegex)) && this.collections.includes(parseInt(this.getIdCollection(data)));
115116
},

0 commit comments

Comments
 (0)