forked from ProcessMaker/processmaker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRequestAction.php
More file actions
80 lines (66 loc) · 1.78 KB
/
RequestAction.php
File metadata and controls
80 lines (66 loc) · 1.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php
namespace ProcessMaker\Events;
use Carbon\Carbon;
use Illuminate\Foundation\Events\Dispatchable;
use ProcessMaker\Contracts\SecurityLogEventInterface;
use ProcessMaker\Models\Process;
use ProcessMaker\Models\ProcessRequest;
class RequestAction implements SecurityLogEventInterface
{
use Dispatchable;
const ACTION_CANCELED = 'CANCELED';
const ACTION_COMPLETED = 'COMPLETED';
const ACTION_CREATED = 'CREATED';
const ACTIONS = [
'COMPLETED' => 'completed_at',
'CANCELED' => 'canceled_at',
'CREATED' => 'created_at',
];
private ProcessRequest $data;
private string $action;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(ProcessRequest $data, string $action)
{
$this->data = $data;
$this->action = $action;
}
/**
* Return event data
*/
public function getData(): array
{
$parentProcess = Process::find($this->data->getAttribute('process_id'));
return [
'process' => [
'label' => $parentProcess->getAttribute('name'),
'link' => route('modeler.show', $parentProcess),
],
'request' => [
'label' => $this->data->getAttribute('id'),
'link' => route('requests.show', $this->data),
],
'action' => $this->action,
$this::ACTIONS[$this->action] => Carbon::now(),
];
}
/**
* Return event changes
*/
public function getChanges(): array
{
return [
'request_id' => $this->data->getAttribute('id'),
];
}
/**
* return event name
*/
public function getEventName(): string
{
return 'RequestAction';
}
}