-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMainController.php
More file actions
173 lines (140 loc) · 4.65 KB
/
Copy pathMainController.php
File metadata and controls
173 lines (140 loc) · 4.65 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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
<?php
namespace App\Http\Controllers;
use App\Models\Note;
use App\Models\User;
use App\Services\Operations;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
class MainController extends Controller
{
public function index(): View
{
$id = session('user.id');
// $user = User::find($id)->toArray();
$notes = User::find($id)
->notes()
->whereNull('deleted_at')
->get()
->toArray();
// echo '<pre>';
// print_r($user);
// print_r($notes);
return view('home', ['notes' => $notes]);
}
public function newNote()
{
return view('new_note');
}
public function newNoteSubmit(Request $request)
{
// validate request
$request->validate(
// rules
[
'text_title' => 'required|min:3|max:200',
'text_note' => 'required|min:3|max:3000'
],
// error messages
[
'text_title.required' => 'O título é obrigatório!',
'text_title.min' => 'O título deve ter pelo menos :min caracteres',
'text_title.max' => 'O título deve ter no máximo :max caracteres',
'text_note.required' => 'A nota é obrigatória!',
'text_note.min' => 'A nota deve ter pelo menos :min caracteres',
'text_note.max' => 'A nota deve ter no máximo :max caracteres',
]
);
// get user id
$id = session('user.id');
// create new note
$note = new Note();
$note->user_id = $id;
$note->title = $request->text_title;
$note->text = $request->text_note;
$note->save();
// redirect to home
return redirect()->route('home');
}
public function editNote($id): View
{
$id = Operations::decryptId($id);
if($id === null){
return redirect()->route('home');
}
//echo "I'm editing note with id = {$id}";
// load note
$note = Note::find($id);
// show edit note view
return view('edit_note', ['note' => $note]);
}
public function editNoteSubmit(Request $request): RedirectResponse
{
// validate request
$request->validate(
// rules
[
'text_title' => 'required|min:3|max:200',
'text_note' => 'required|min:3|max:3000'
],
// error messages
[
'text_title.required' => 'O título é obrigatório!',
'text_title.min' => 'O título deve ter pelo menos :min caracteres',
'text_title.max' => 'O título deve ter no máximo :max caracteres',
'text_note.required' => 'A nota é obrigatória!',
'text_note.min' => 'A nota deve ter pelo menos :min caracteres',
'text_note.max' => 'A nota deve ter no máximo :max caracteres',
]
);
// check if note_id exists
if ($request->note_id == null) {
return redirect()->route('home');
}
// decrypt note_id
$id = Operations::decryptId($request->note_id);
if($id === null){
return redirect()->route('home');
}
// load note
$note = Note::find($id);
// update note
$note->title = $request->text_title;
$note->text = $request->text_note;
$note->save();
// redirect to home
return redirect()->route('home');
}
public function deleteNote($id): View
{
$id = Operations::decryptId($id);
if($id === null){
return redirect()->route('home');
}
// echo "I'm deleting note with id = {$id}";
// load note
$note = Note::find($id);
// show edit note view
return view('delete_note', ['note' => $note]);
}
public function deleteNoteConfirm($id)
{
$id = Operations::decryptId($id);
if($id === null){
return redirect()->route('home');
}
// load note
$note = Note::find($id);
// hard delete
// $note->delete();
// soft delete
// $note->deleted_at = date('Y-m-d H:i:s');
// $note->save();
// soft delete (property SoftDeletes in model)
$note->delete();
// hard delete (property SoftDeletes in model)
// $note->forceDelete();
// redirect to home
return redirect()->route('home');
}
}