2
2
3
3
namespace App \Http \Controllers ;
4
4
5
+ use App \Http \Resources \ProjectResource ;
5
6
use App \Http \Resources \TaskResource ;
7
+ use App \Http \Resources \UserResource ;
8
+ use App \Models \Project ;
6
9
use App \Models \Task ;
7
10
use App \Http \Requests \StoreTaskRequest ;
8
11
use App \Http \Requests \UpdateTaskRequest ;
12
+ use App \Models \User ;
13
+ use Illuminate \Support \Facades \Auth ;
14
+ use Illuminate \Support \Facades \Storage ;
15
+ use Illuminate \Support \Str ;
9
16
10
17
class TaskController extends Controller
11
18
{
@@ -33,6 +40,7 @@ public function index()
33
40
return inertia ("Task/Index " , [
34
41
"tasks " => TaskResource::collection ($ tasks ),
35
42
'queryParams ' => request ()->query () ?: null ,
43
+ 'success ' => session ('success ' ),
36
44
]);
37
45
}
38
46
@@ -41,46 +49,116 @@ public function index()
41
49
*/
42
50
public function create ()
43
51
{
44
- //
52
+ $ projects = Project::query ()->orderBy ('name ' , 'asc ' )->get ();
53
+ $ users = User::query ()->orderBy ('name ' , 'asc ' )->get ();
54
+
55
+ return inertia ("Task/Create " , [
56
+ 'projects ' => ProjectResource::collection ($ projects ),
57
+ 'users ' => UserResource::collection ($ users ),
58
+ ]);
45
59
}
46
60
47
61
/**
48
62
* Store a newly created resource in storage.
49
63
*/
50
64
public function store (StoreTaskRequest $ request )
51
65
{
52
- //
66
+ $ data = $ request ->validated ();
67
+ /** @var $image \Illuminate\Http\UploadedFile */
68
+ $ image = $ data ['image ' ] ?? null ;
69
+ $ data ['created_by ' ] = Auth::id ();
70
+ $ data ['updated_by ' ] = Auth::id ();
71
+ if ($ image ) {
72
+ $ data ['image_path ' ] = $ image ->store ('task/ ' . Str::random (), 'public ' );
73
+ }
74
+ Task::create ($ data );
75
+
76
+ return to_route ('task.index ' )
77
+ ->with ('success ' , 'Task was created ' );
53
78
}
54
79
55
80
/**
56
81
* Display the specified resource.
57
82
*/
58
83
public function show (Task $ task )
59
84
{
60
- //
85
+ return inertia ('Task/Show ' , [
86
+ 'task ' => new TaskResource ($ task ),
87
+ ]);
61
88
}
62
89
63
90
/**
64
91
* Show the form for editing the specified resource.
65
92
*/
66
93
public function edit (Task $ task )
67
94
{
68
- //
95
+ $ projects = Project::query ()->orderBy ('name ' , 'asc ' )->get ();
96
+ $ users = User::query ()->orderBy ('name ' , 'asc ' )->get ();
97
+
98
+ return inertia ("Task/Edit " , [
99
+ 'task ' => new TaskResource ($ task ),
100
+ 'projects ' => ProjectResource::collection ($ projects ),
101
+ 'users ' => UserResource::collection ($ users ),
102
+ ]);
69
103
}
70
104
71
105
/**
72
106
* Update the specified resource in storage.
73
107
*/
74
108
public function update (UpdateTaskRequest $ request , Task $ task )
75
109
{
76
- //
110
+ $ data = $ request ->validated ();
111
+ $ image = $ data ['image ' ] ?? null ;
112
+ $ data ['updated_by ' ] = Auth::id ();
113
+ if ($ image ) {
114
+ if ($ task ->image_path ) {
115
+ Storage::disk ('public ' )->deleteDirectory (dirname ($ task ->image_path ));
116
+ }
117
+ $ data ['image_path ' ] = $ image ->store ('task/ ' . Str::random (), 'public ' );
118
+ }
119
+ $ task ->update ($ data );
120
+
121
+ return to_route ('task.index ' )
122
+ ->with ('success ' , "Task \"$ task ->name \" was updated " );
77
123
}
78
124
79
125
/**
80
126
* Remove the specified resource from storage.
81
127
*/
82
128
public function destroy (Task $ task )
83
129
{
84
- //
130
+ $ name = $ task ->name ;
131
+ $ task ->delete ();
132
+ if ($ task ->image_path ) {
133
+ Storage::disk ('public ' )->deleteDirectory (dirname ($ task ->image_path ));
134
+ }
135
+ return to_route ('task.index ' )
136
+ ->with ('success ' , "Task \"$ name \" was deleted " );
137
+ }
138
+
139
+ public function myTasks ()
140
+ {
141
+ $ user = auth ()->user ();
142
+ $ query = Task::query ()->where ('assigned_user_id ' , $ user ->id );
143
+
144
+ $ sortField = request ("sort_field " , 'created_at ' );
145
+ $ sortDirection = request ("sort_direction " , "desc " );
146
+
147
+ if (request ("name " )) {
148
+ $ query ->where ("name " , "like " , "% " . request ("name " ) . "% " );
149
+ }
150
+ if (request ("status " )) {
151
+ $ query ->where ("status " , request ("status " ));
152
+ }
153
+
154
+ $ tasks = $ query ->orderBy ($ sortField , $ sortDirection )
155
+ ->paginate (10 )
156
+ ->onEachSide (1 );
157
+
158
+ return inertia ("Task/Index " , [
159
+ "tasks " => TaskResource::collection ($ tasks ),
160
+ 'queryParams ' => request ()->query () ?: null ,
161
+ 'success ' => session ('success ' ),
162
+ ]);
85
163
}
86
164
}
0 commit comments