Skip to content

Commit 45ca57d

Browse files
authored
Revert "FOUR-9547: Import Project"
1 parent 8e3fd56 commit 45ca57d

31 files changed

Lines changed: 1217 additions & 111 deletions

ProcessMaker/Facades/MessageBrokerService.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
* @method static void connect()
1313
* @method static void disconnect()
1414
* @method static void sendMessage(string $subject, string $collaborationId, mixed $body)
15+
* @method static void sendAboutMessage()
1516
* @method static string receiveMessage(string $queueName)
1617
* @method static void worker()
1718
*/

ProcessMaker/Http/Controllers/AboutController.php

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
namespace ProcessMaker\Http\Controllers;
44

55
use Exception;
6+
use Illuminate\Support\Facades\Cache;
67
use Illuminate\Support\Facades\Http;
78
use Illuminate\Support\Facades\Log;
9+
use ProcessMaker\Facades\MessageBrokerService;
810
use ProcessMaker\Models\Setting;
911

1012
class AboutController extends Controller
@@ -70,7 +72,13 @@ public function index()
7072
$microServices = [$aiMicroService];
7173
}
7274

73-
return view('about.index',
75+
$nayraMicroService = $this->getNayraMicroServiceAbout();
76+
if ($nayraMicroService) {
77+
$microServices[] = $nayraMicroService;
78+
}
79+
80+
$view = request()->get('partial') === 'ms' ? 'about.microservices' : 'about.index';
81+
return view($view,
7482
compact(
7583
'packages',
7684
'indexedSearch',
@@ -93,4 +101,27 @@ private function getAiMicroService()
93101

94102
return null;
95103
}
104+
105+
/**
106+
* Get the Nayra microservice about information from cache or send about message to receive it.
107+
*
108+
* @return array|null
109+
*/
110+
private function getNayraMicroServiceAbout(): ?array
111+
{
112+
if (config('app.message_broker_driver') !== 'default') {
113+
$about = Cache::get('nayra.about', null);
114+
if (!$about) {
115+
// Send about message to receive about information from nayra service
116+
MessageBrokerService::sendAboutMessage();
117+
$about = [
118+
'name' => 'processmaker/nayra-service',
119+
'waiting' => true,
120+
];
121+
}
122+
return $about;
123+
}
124+
125+
return null;
126+
}
96127
}

ProcessMaker/Http/Controllers/Api/TaskController.php

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,7 @@ public function index(Request $request, $getTotal = false, User $user = null)
102102
}
103103

104104
$query = ProcessRequestToken::with(['processRequest', 'user']);
105-
106105
$query->select('process_request_tokens.*');
107-
108106
$include = $request->input('include') ? explode(',', $request->input('include')) : [];
109107

110108
if (in_array('data', $include)) {
@@ -118,7 +116,14 @@ public function index(Request $request, $getTotal = false, User $user = null)
118116
$query->filter($filter);
119117
}
120118

121-
$filterByFields = ['process_id', 'process_request_tokens.user_id' => 'user_id', 'process_request_tokens.status' => 'status', 'element_id', 'element_name', 'process_request_id'];
119+
$filterByFields = [
120+
'process_id',
121+
'process_request_tokens.user_id' => 'user_id',
122+
'process_request_tokens.status' => 'status',
123+
'element_id',
124+
'element_name',
125+
'process_request_id'
126+
];
122127
$parameters = $request->all();
123128
foreach ($parameters as $column => $fieldFilter) {
124129
if (in_array($column, $filterByFields)) {
@@ -133,10 +138,16 @@ public function index(Request $request, $getTotal = false, User $user = null)
133138
$user = User::find($fieldFilter);
134139
$query->where(function ($query) use ($user) {
135140
foreach ($user->groups as $group) {
136-
$query->orWhereJsonContains('process_request_tokens.self_service_groups', strval($group->getKey())); // backwards compatibility
137-
$query->orWhereJsonContains('process_request_tokens.self_service_groups->groups', strval($group->getKey()));
141+
$query->orWhereJsonContains(
142+
'process_request_tokens.self_service_groups', strval($group->getKey())
143+
); // backwards compatibility
144+
$query->orWhereJsonContains(
145+
'process_request_tokens.self_service_groups->groups', strval($group->getKey())
146+
);
138147
}
139-
$query->orWhereJsonContains('process_request_tokens.self_service_groups->users', strval($user->getKey()));
148+
$query->orWhereJsonContains(
149+
'process_request_tokens.self_service_groups->users', strval($user->getKey())
150+
);
140151
});
141152
});
142153
});
@@ -191,9 +202,9 @@ public function index(Request $request, $getTotal = false, User $user = null)
191202
try {
192203
$query->pmql($pmql, null, $user);
193204
} catch (QueryException $e) {
194-
return response(['message' => __('Your PMQL search could not be completed.')], 400);
205+
abort('Your PMQL search could not be completed.', 400);
195206
} catch (SyntaxError $e) {
196-
return response(['message' => __('Your PMQL contains invalid syntax.')], 400);
207+
abort('Your PMQL contains invalid syntax.', 400);
197208
}
198209
}
199210

@@ -202,13 +213,18 @@ public function index(Request $request, $getTotal = false, User $user = null)
202213
return $query->count();
203214
}
204215

216+
// Apply filter overdue
217+
$query->overdue($request->input('overdue'));
218+
205219
try {
206220
$response = $this->handleOrderByRequestName($request, $query->get());
207-
} catch (\Illuminate\Database\QueryException $e) {
221+
} catch (QueryException $e) {
208222
$regex = '~Column not found: 1054 Unknown column \'(.*?)\' in \'where clause\'~';
209223
preg_match($regex, $e->getMessage(), $m);
210224

211-
return response(['message' => __('PMQL Is Invalid.') . ' ' . __('Column not found: ') . '"' . $m[1] . '"'], 422);
225+
return response([
226+
'message' => __('PMQL Is Invalid.') . ' ' . __('Column not found: ') . '"' . $m[1] . '"'
227+
], 422);
212228
}
213229

214230
// Only filter results if the user id was specified
@@ -217,12 +233,11 @@ public function index(Request $request, $getTotal = false, User $user = null)
217233
if ($request->input('status') === 'CLOSED') {
218234
return $user->can('view', $processRequestToken->processRequest);
219235
}
220-
221236
return $user->can('view', $processRequestToken);
222237
})->values();
223238
}
224239

225-
//Map each item through its resource
240+
// Map each item through its resource
226241
$response = $response->map(function ($processRequestToken) use ($request) {
227242
return new Resource($processRequestToken);
228243
});

ProcessMaker/Http/Controllers/Auth/LoginController.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@ public function showLoginForm()
8080
false,
8181
'none'
8282
);
83-
$response = response(view('auth.login', compact('addons', 'block')));
83+
$loginView = empty(config('app.login_view')) ? 'auth.login' : config('app.login_view');
84+
$response = response(view($loginView, compact('addons', 'block')));
8485
$response->withCookie($cookie);
8586

8687
return $response;

ProcessMaker/Http/Controllers/Process/ScreenBuilderController.php

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

55
use Illuminate\Contracts\View\Factory;
6+
use Illuminate\Support\Facades\Auth;
67
use Illuminate\View\View;
78
use ProcessMaker\Events\ScreenBuilderStarting;
89
use ProcessMaker\Http\Controllers\Controller;
@@ -38,13 +39,16 @@ public function edit(ScreenBuilderManager $manager, Screen $screen, $processId =
3839
]));
3940
}
4041

42+
$currentUser = Auth::user()->only(['id', 'username', 'fullname', 'firstname', 'lastname', 'avatar']);
43+
4144
return view('processes.screen-builder.screen', [
4245
'screen' => $screen,
4346
'manager' => $manager,
4447
'autoSaveDelay' => config('versions.delay.process', 5000),
4548
'isVersionsInstalled' => PackageHelper::isPmPackageVersionsInstalled(),
4649
'isDraft' => $draft !== null,
4750
'processId' => $processId,
51+
'currentUser' => $currentUser,
4852
]);
4953
}
5054
}

ProcessMaker/Models/ProcessRequestToken.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,18 @@ public function subProcessRequest()
509509
return $this->belongsTo(ProcessRequest::class, 'subprocess_request_id');
510510
}
511511

512+
/**
513+
* Scope overdue
514+
*
515+
* @var Builder
516+
*/
517+
public function scopeOverdue($query, $overdue = '')
518+
{
519+
if (!empty($overdue)) {
520+
return $query->where('due_at', '<', Carbon::now());
521+
}
522+
}
523+
512524
/**
513525
* Filter tokens with a string
514526
*

ProcessMaker/Nayra/MessageBrokers/Service.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,15 @@ public static function create()
1818
switch ($type) {
1919
case 'rabbitmq':
2020
$service = new ServiceRabbitMq();
21+
// Send about message
22+
$service->sendAboutMessage();
2123
break;
2224
case 'kafka':
2325
$service = new ServiceKafka();
26+
// Send about message
27+
$service->sendAboutMessage();
2428
break;
2529
case 'default':
26-
$service = new ServiceKafka();
2730
echo "\033[0;31m" . 'The default driver does not use this consumer. MESSAGE_BROKER_DRIVER=' . config('app.message_broker_driver') . "\033[0m" . PHP_EOL;
2831
sleep(10);
2932
throw new Exception('This action requires a message broker configured and enabled in the configuration.');

ProcessMaker/Nayra/MessageBrokers/ServiceKafka.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace ProcessMaker\Nayra\MessageBrokers;
44

5+
use Exception;
6+
use Illuminate\Support\Facades\Log;
57
use Junges\Kafka\Contracts\KafkaConsumerMessage;
68
use Junges\Kafka\Facades\Kafka;
79
use ProcessMaker\Helpers\DBHelper;
@@ -11,6 +13,8 @@ class ServiceKafka
1113
{
1214
const QUEUE_NAME = 'nayra-store';
1315

16+
const PROCESSES_QUEUE = 'processes';
17+
1418
/**
1519
* Connect to the message broker service
1620
*
@@ -89,8 +93,31 @@ private function storeData(array $transactions)
8993
{
9094
DBHelper::db_health_check();
9195
$handler = new PersistenceHandler();
96+
if (isset($transactions['type'])) {
97+
// Single transaction like about message
98+
$transactions = [$transactions];
99+
}
92100
foreach ($transactions as $transaction) {
93101
$handler->save($transaction);
94102
}
95103
}
104+
105+
public function sendAboutMessage()
106+
{
107+
$prefix = config('kafka.prefix', '');
108+
// Get about information from composer.json
109+
$composerJsonPath = base_path('composer.json');
110+
$composerJson = json_decode(file_get_contents($composerJsonPath), true);
111+
$about = [
112+
'name' => $composerJson['name'],
113+
'version' => $composerJson['version'],
114+
'description' => $composerJson['description'],
115+
];
116+
// Send about message
117+
try {
118+
$this->sendMessage($prefix . self::PROCESSES_QUEUE, '', ['type' => 'about', 'data' => $about]);
119+
} catch (Exception $e) {
120+
Log::error('Error sending about message', ['error' => $e->getMessage()]);
121+
}
122+
}
96123
}

ProcessMaker/Nayra/MessageBrokers/ServiceRabbitMq.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace ProcessMaker\Nayra\MessageBrokers;
44

5+
use Exception;
6+
use Illuminate\Support\Facades\Log;
57
use PhpAmqpLib\Connection\AMQPStreamConnection;
68
use PhpAmqpLib\Message\AMQPMessage;
79
use ProcessMaker\Helpers\DBHelper;
@@ -12,6 +14,7 @@ class ServiceRabbitMq
1214
const QUEUE_NAME_CONSUME = 'nayra-store';
1315

1416
const QUEUE_NAME_PUBLISH = 'requests';
17+
const PROCESSES_QUEUE = 'processes';
1518

1619
private $connection;
1720

@@ -137,8 +140,30 @@ public function worker(): void
137140
private function storeData(array $transactions): void
138141
{
139142
$handler = new PersistenceHandler();
143+
if (isset($transactions['type'])) {
144+
// Single transaction like about message
145+
$transactions = [$transactions];
146+
}
140147
foreach ($transactions as $transaction) {
141148
$handler->save($transaction);
142149
}
143150
}
151+
152+
public function sendAboutMessage()
153+
{
154+
// Get about information from composer.json
155+
$composerJsonPath = base_path('composer.json');
156+
$composerJson = json_decode(file_get_contents($composerJsonPath), true);
157+
$about = [
158+
'name' => $composerJson['name'],
159+
'version' => $composerJson['version'],
160+
'description' => $composerJson['description'],
161+
];
162+
// Send about message
163+
try {
164+
$this->sendMessage(self::PROCESSES_QUEUE, '', ['type' => 'about', 'data' => $about]);
165+
} catch (Exception $e) {
166+
Log::error('Error sending about message', ['error' => $e->getMessage()]);
167+
}
168+
}
144169
}

ProcessMaker/Nayra/Repositories/PersistenceHandler.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ public function save(array $transaction)
5454
try {
5555
// Save data according to the type
5656
switch ($transaction['type']) {
57+
case 'about':
58+
$this->persistAbout($transaction['data']);
59+
break;
5760
case 'activity_activated':
5861
$this->persistActivityActivated($transaction);
5962
break;

0 commit comments

Comments
 (0)