forked from ProcessMaker/processmaker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRequestController.php
More file actions
121 lines (102 loc) · 3.95 KB
/
Copy pathRequestController.php
File metadata and controls
121 lines (102 loc) · 3.95 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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
namespace ProcessMaker\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use ProcessMaker\Events\ScreenBuilderStarting;
use ProcessMaker\Http\Controllers\Controller;
use ProcessMaker\Managers\ScreenBuilderManager;
use ProcessMaker\Models\ProcessRequest;
use Spatie\MediaLibrary\Models\Media;
use Spatie\MediaLibrary\HasMedia\HasMedia;
use Spatie\MediaLibrary\HasMedia\HasMediaTrait;
use ProcessMaker\Traits\SearchAutocompleteTrait;
class RequestController extends Controller
{
use HasMediaTrait;
use SearchAutocompleteTrait;
/**
* Get the list of requests.
*
* @return \Illuminate\View\View|\Illuminate\Contracts\View
*/
public function index($type = null)
{
if ($type === 'all') {
$this->authorize('view-all_requests');
}
//load counters
$query = ProcessRequest::query();
if (!Auth::user()->is_administrator && !Auth::user()->can('view-all_requests')) {
$query->startedMe(Auth::user()->id);
}
$allRequest = $this->calculate('allRequest');
$startedMe = $this->calculate('startedMe');
$inProgress = $this->calculate('inProgress');
$completed = $this->calculate('completed');
$title = 'My Requests';
$types = ['all'=>'All Requests','in_progress'=>'Requests In Progress','completed'=>'Completed Requests'];
if(array_key_exists($type,$types)){
$title = $types[$type];
}
$currentUser = Auth::user()->only(['id', 'username', 'fullname', 'firstname', 'lastname', 'avatar']);
return view('requests.index', compact(
['allRequest', 'startedMe', 'inProgress', 'completed', 'type','title', 'currentUser']
));
}
private function calculate($type)
{
$result = 0;
$query = ProcessRequest::query();
if (!Auth::user()->is_administrator && !Auth::user()->can('view-all_requests')) {
$query->startedMe(Auth::user()->id);
}
switch ($type) {
case 'allRequest':
$result = $query->count();
break;
case 'startedMe':
$result = ProcessRequest::startedMe(Auth::user()->id)->notCompleted()->count();
break;
case 'inProgress':
$result =$query->inProgress()->count();
break;
case 'completed':
$result = $query->completed()->count();
break;
}
return $result;
}
/**
* Request Show
*
* @param ProcessRequest $request
*
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function show(ProcessRequest $request, Media $mediaItems)
{
$this->authorize('view', $request);
$request->participants;
$request->user;
$request->summary = $request->summary();
if ($request->status === 'CANCELED' && $request->process->cancel_screen_id) {
$request->summary_screen = $request->process->cancelScreen;
} else {
$request->summary_screen = $request->getSummaryScreen();
}
$canCancel = Auth::user()->can('cancel', $request->process);
$canViewComments = Auth::user()->hasPermissionsFor('comments')->count() > 0;
$canManuallyComplete = Auth::user()->is_administrator && $request->status === 'ERROR';
$files = $request->getMedia();
$manager = new ScreenBuilderManager();
event(new ScreenBuilderStarting($manager, ($request->summary_screen) ? $request->summary_screen->type : 'FORM'));
return view('requests.show', compact(
'request', 'files', 'canCancel', 'canViewComments', 'canManuallyComplete', 'manager'
));
}
public function downloadFiles(ProcessRequest $requestID, Media $fileID)
{
$requestID->getMedia();
return response()->download($fileID->getPath(), $fileID->name);
}
}