-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathMeetController.php
executable file
·113 lines (95 loc) · 3.05 KB
/
MeetController.php
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
<?php
namespace App\Http\Controllers;
use App\Models\Meet;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Orchid\Support\Facades\Toast;
class MeetController extends Controller
{
/**
* @return \Illuminate\Contracts\View\View
*/
public function index()
{
$most = Meet::approved()
->whereDate('start_date', '>=', now())
->orderBy('start_date', 'asc')
->first();
$actual = Meet::approved()
->whereDate('start_date', '>=', now())
->where('id', '!=', $most?->id)
->orderBy('start_date', 'asc')
->get();
$past = Meet::approved()
->whereDate('start_date', '<', now())
->orderBy('start_date', 'desc')
->simplePaginate(6);
return view('meet.index', [
'most' => $most,
'actual' => $actual,
'past' => $past,
]);
}
public function edit(Request $request, Meet $meet)
{
$this->authorize('update', $meet);
return view('meet.edit', [
'meet' => $meet,
]);
}
/**
* @param Request $request
* @param Meet $meet
*
* @throws AuthorizationException
*
* @return RedirectResponse
*/
public function update(Request $request, Meet $meet)
{
$this->authorize('update', $meet);
$dateMax = now()->toDateString();
$request->validate([
'meet' => 'required|array',
'meet.name' => 'required|string',
'meet.description' => 'required|string',
'meet.start_date' => 'date|after:'.$dateMax,
'meet.location' => 'required_without:meet.online|string|nullable',
'meet.online' => 'sometimes|boolean',
'meet.link' => 'required|url',
],
[],
[
'meet.location' => 'Адрес',
'meet.link' => 'ссылка',
'meet.online' => 'Онлайн',
]);
$meet->fill(array_merge($request->get('meet'), [
'online' => $request->boolean('meet.online'),
'user_id' => $request->user()->id,
]))
->save();
if ($meet->approved) {
Toast::success('Изменения успешно сохранены.')->disableAutoHide();
} else {
Toast::success('Ваш запрос принят и будет проверен модератором.')
->disableAutoHide();
}
return redirect()->route('meets');
}
/**
* @param Meet $meet
*
* @throws AuthorizationException
*
* @return RedirectResponse
*/
public function delete(Request $request, Meet $meet)
{
$this->authorize('delete', $meet);
$meet->delete();
Toast::success('Событие удалено.')->disableAutoHide();
return redirect()->route('profile.meets', $request->user());
}
}