refactor(SubTaskController): improve code formatting and consistency in validation and response handling

This commit is contained in:
StudioTem committed 2026-01-09 13:47:48 +01:00
1 parent b101da8da5
commit b7bad5f985
2 files changed
+63 -65

No files matched your search

-1
View File
@@ -1 +0,0 @@
VUE_APP_WAXIOS_URL=http://127.0.0.1:8001/api/
+63 -64
View File
@@ -39,11 +39,11 @@ class SubTaskController extends Controller
$validator = Validator::make($request->all(), [ $validator = Validator::make($request->all(), [
'start' => 'required', 'start' => 'required',
'end' => 'required', 'end' => 'required',
]); ]);
$validator->after(function ($validator) use ($parameters) { $validator->after(function ($validator) use ($parameters) {
if ( ! isset($parameters['employee_id']) && ! isset($parameters['team_id'])) { if (! isset($parameters['employee_id']) && ! isset($parameters['team_id'])) {
$validator->errors()->add( $validator->errors()->add(
'error', 'You must provide either employee_id or team_id.' 'error', 'You must provide either employee_id or team_id.'
); );
@@ -55,7 +55,7 @@ class SubTaskController extends Controller
} }
$start = Carbon::parse($parameters['start']); $start = Carbon::parse($parameters['start']);
$end = Carbon::parse($parameters['end'])->addDay(); $end = Carbon::parse($parameters['end'])->addDay();
if (isset($parameters['team_id'])) { if (isset($parameters['team_id'])) {
// ak je zadany team, tak najdem vsetkych userov, ktori su v tomto teame. potom najdem vsetky subtasky, ktore su priradene ludom v tomto teame. nevyhladavam na zaklade team_id v master_taskoch, pretoze toto je nepresne. Jandl chce vidiet tasky aj pre jednotlivcov v danom teame aj ked ten task nebol assignuty pod tymto teamom // ak je zadany team, tak najdem vsetkych userov, ktori su v tomto teame. potom najdem vsetky subtasky, ktore su priradene ludom v tomto teame. nevyhladavam na zaklade team_id v master_taskoch, pretoze toto je nepresne. Jandl chce vidiet tasky aj pre jednotlivcov v danom teame aj ked ten task nebol assignuty pod tymto teamom
@@ -73,10 +73,10 @@ class SubTaskController extends Controller
} elseif (isset($parameters['user_id'])) { } elseif (isset($parameters['user_id'])) {
$subtasks = SubTask::published() $subtasks = SubTask::published()
->where('user_id', $parameters['user_id'])->whereHas('timeblocks', ->where('user_id', $parameters['user_id'])->whereHas('timeblocks',
function ($query) use ($start, $end) { function ($query) use ($start, $end) {
$query->where('start', '>', $start); $query->where('start', '>', $start);
$query->where('end', '<', $end); $query->where('end', '<', $end);
})->get(); })->get();
$userIdArray = [$parameters['user_id']]; $userIdArray = [$parameters['user_id']];
} }
@@ -116,7 +116,7 @@ class SubTaskController extends Controller
->get(); ->get();
return response()->json([ return response()->json([
'subtasks' => SubTaskResource::collection($subtasks) 'subtasks' => SubTaskResource::collection($subtasks),
], 200); ], 200);
} }
@@ -141,7 +141,7 @@ class SubTaskController extends Controller
->get(); ->get();
return response()->json([ return response()->json([
'subtasks' => SubTaskResource::collection($subtasks) 'subtasks' => SubTaskResource::collection($subtasks),
], 200); ], 200);
} }
@@ -162,7 +162,7 @@ class SubTaskController extends Controller
} }
return response()->json([ return response()->json([
'subtasks' => SubTaskResource::collection($query->get()) 'subtasks' => SubTaskResource::collection($query->get()),
], 200); ], 200);
} }
@@ -206,14 +206,14 @@ class SubTaskController extends Controller
if ($isDraft) { if ($isDraft) {
// Pripravíme dáta pre draft // Pripravíme dáta pre draft
$draftData = [ $draftData = [
'user_id' => $creatorId, 'user_id' => $creatorId,
'created_by' => $creatorId, 'created_by' => $creatorId,
'title' => $request->all()['data']['title'] ?? null, 'title' => $request->all()['data']['title'] ?? null,
'description' => $request->all()['data']['description'] ?? null, 'description' => $request->all()['data']['description'] ?? null,
'deadline' => $request->all()['data']['deadline'] ?? null, 'deadline' => $request->all()['data']['deadline'] ?? null,
'estimated_time' => 0, // celkový odhadovaný čas sa vypočíta z employees 'estimated_time' => 0, // celkový odhadovaný čas sa vypočíta z employees
'is_draft' => true, 'is_draft' => true,
'draft_data' => $request->all()['data']['employees'], // uložíme všetky employees data 'draft_data' => $request->all()['data']['employees'], // uložíme všetky employees data
]; ];
// Vypočítame celkový odhadovaný čas // Vypočítame celkový odhadovaný čas
@@ -230,8 +230,8 @@ class SubTaskController extends Controller
} }
return response()->json([ return response()->json([
'message' => 'Draft created successfully', 'message' => 'Draft created successfully',
'subtasks' => SubTaskResource::collection([$subtask]) 'subtasks' => SubTaskResource::collection([$subtask]),
], 201); ], 201);
} }
@@ -240,13 +240,13 @@ class SubTaskController extends Controller
$data['data'] = $request->all()['data']; $data['data'] = $request->all()['data'];
foreach ($request->all()['data']['employees'] as $key => $employee) { foreach ($request->all()['data']['employees'] as $key => $employee) {
$data['data']['employees'][$key]['user_id'] = $employee['id']; $data['data']['employees'][$key]['user_id'] = $employee['id'];
$data['data']['employees'][$key]['title'] = isset($request->all()['data']['title']) ? $request->all()['data']['title'] : null; $data['data']['employees'][$key]['title'] = isset($request->all()['data']['title']) ? $request->all()['data']['title'] : null;
$data['data']['employees'][$key]['estimated_time'] = $employee['duration']; $data['data']['employees'][$key]['estimated_time'] = $employee['duration'];
$data['data']['employees'][$key]['created_by'] = $creatorId; $data['data']['employees'][$key]['created_by'] = $creatorId;
$data['data']['employees'][$key]['description'] = $request->all()['data']['description']; $data['data']['employees'][$key]['description'] = $request->all()['data']['description'];
$data['data']['employees'][$key]['deadline'] = $request->all()['data']['deadline']; $data['data']['employees'][$key]['deadline'] = $request->all()['data']['deadline'];
$data['data']['employees'][$key]['is_draft'] = false; $data['data']['employees'][$key]['is_draft'] = false;
} }
$request->merge($data); $request->merge($data);
@@ -255,7 +255,7 @@ class SubTaskController extends Controller
// syncnutie timeblocks // syncnutie timeblocks
foreach ($request->all()['data']['employees'] as $key => $employee) { foreach ($request->all()['data']['employees'] as $key => $employee) {
if ( ! isset($data['data']['employees'][$key]['timeblocks']) || $data['data']['employees'][$key]['timeblocks'] == null) { if (! isset($data['data']['employees'][$key]['timeblocks']) || $data['data']['employees'][$key]['timeblocks'] == null) {
continue; continue;
} }
@@ -277,8 +277,8 @@ class SubTaskController extends Controller
} }
return response()->json([ return response()->json([
'message' => 'Sub Task created successfully', 'message' => 'Sub Task created successfully',
'subtasks' => SubTaskResource::collection($subtasks) 'subtasks' => SubTaskResource::collection($subtasks),
], 201); ], 201);
} }
@@ -287,9 +287,9 @@ class SubTaskController extends Controller
{ {
$subtask = SubTask::find($id); $subtask = SubTask::find($id);
if (!$subtask) { if (! $subtask) {
return response()->json([ return response()->json([
'message' => 'Subtask not found.' 'message' => 'Subtask not found.',
], 404); ], 404);
} }
@@ -309,7 +309,7 @@ class SubTaskController extends Controller
// validácia pri publikovaní draftu (is_draft: false) // validácia pri publikovaní draftu (is_draft: false)
$isPublishing = $subtask->is_draft && isset($request->all()['data']['is_draft']) && $request->all()['data']['is_draft'] == false; $isPublishing = $subtask->is_draft && isset($request->all()['data']['is_draft']) && $request->all()['data']['is_draft'] == false;
// Pri publikovaní draftu s draft_data (viacero zamestnancov) - vytvoríme subtasky pre každého // Pri publikovaní draftu s draft_data (viacero zamestnancov) - vytvoríme subtasky pre každého
if ($isPublishing && $subtask->draft_data) { if ($isPublishing && $subtask->draft_data) {
return $this->publishDraftWithMultipleEmployees($subtask, $request); return $this->publishDraftWithMultipleEmployees($subtask, $request);
@@ -318,18 +318,18 @@ class SubTaskController extends Controller
if ($isPublishing) { if ($isPublishing) {
$publishValidator = Validator::make([ $publishValidator = Validator::make([
'master_task_id' => $subtask->master_task_id, 'master_task_id' => $subtask->master_task_id,
'user_id' => $request->all()['data']['employee_id'] ?? $subtask->user_id, 'user_id' => $request->all()['data']['employee_id'] ?? $subtask->user_id,
'estimated_time' => $request->all()['data']['duration'] ?? $subtask->estimated_time, 'estimated_time' => $request->all()['data']['duration'] ?? $subtask->estimated_time,
], [ ], [
'master_task_id' => 'required', 'master_task_id' => 'required',
'user_id' => 'required', 'user_id' => 'required',
'estimated_time' => 'required|numeric|min:0', 'estimated_time' => 'required|numeric|min:0',
]); ]);
if ($publishValidator->fails()) { if ($publishValidator->fails()) {
return response()->json([ return response()->json([
'message' => 'Draft cannot be published. Missing required fields.', 'message' => 'Draft cannot be published. Missing required fields.',
'errors' => $publishValidator->errors() 'errors' => $publishValidator->errors(),
], 400); ], 400);
} }
} }
@@ -341,7 +341,7 @@ class SubTaskController extends Controller
} }
// Pre drafty je validácia duration voliteľná // Pre drafty je validácia duration voliteľná
if (!$subtask->is_draft) { if (! $subtask->is_draft) {
$validator = Validator::make($request->all(), [ $validator = Validator::make($request->all(), [
'data.duration' => 'required', 'data.duration' => 'required',
]); ]);
@@ -363,13 +363,13 @@ class SubTaskController extends Controller
} }
// upratanie requestu, pretoze frontend pouziva inu nomenklaturu fieldov ako appka // upratanie requestu, pretoze frontend pouziva inu nomenklaturu fieldov ako appka
$data['data'] = $request->all()['data']; $data['data'] = $request->all()['data'];
$data['data']['user_id'] = $request->all()['data']['employee_id'] ?? $subtask->user_id; $data['data']['user_id'] = $request->all()['data']['employee_id'] ?? $subtask->user_id;
$data['data']['title'] = isset($request->all()['data']['title']) ? $request->all()['data']['title'] : null; $data['data']['title'] = isset($request->all()['data']['title']) ? $request->all()['data']['title'] : null;
$data['data']['deadline'] = isset($request->all()['data']['deadline']) ? $request->all()['data']['deadline'] : null; $data['data']['deadline'] = isset($request->all()['data']['deadline']) ? $request->all()['data']['deadline'] : null;
$data['data']['estimated_time'] = $request->all()['data']['duration'] ?? $subtask->estimated_time; $data['data']['estimated_time'] = $request->all()['data']['duration'] ?? $subtask->estimated_time;
$data['data']['updated_by'] = User::getUserIdFromBearerToken($request->bearerToken()); $data['data']['updated_by'] = User::getUserIdFromBearerToken($request->bearerToken());
// publikovanie draftu // publikovanie draftu
if (isset($request->all()['data']['is_draft'])) { if (isset($request->all()['data']['is_draft'])) {
$data['data']['is_draft'] = $request->all()['data']['is_draft']; $data['data']['is_draft'] = $request->all()['data']['is_draft'];
@@ -400,7 +400,7 @@ class SubTaskController extends Controller
return response()->json([ return response()->json([
'message' => $message, 'message' => $message,
'subtask' => new SubTaskResource($subtask) 'subtask' => new SubTaskResource($subtask),
]); ]);
} }
@@ -420,15 +420,15 @@ class SubTaskController extends Controller
// Validácia a doplnenie duration z timeblocks // Validácia a doplnenie duration z timeblocks
foreach ($employees as $key => $employee) { foreach ($employees as $key => $employee) {
if (!isset($employee['id'])) { if (! isset($employee['id'])) {
return response()->json([ return response()->json([
'message' => 'Draft cannot be published. Each employee must have id.', 'message' => 'Draft cannot be published. Each employee must have id.',
], 400); ], 400);
} }
// Ak duration nie je nastavený, vypočítaj ho z timeblocks // Ak duration nie je nastavený, vypočítaj ho z timeblocks
if (!isset($employee['duration']) || $employee['duration'] === null) { if (! isset($employee['duration']) || $employee['duration'] === null) {
if (isset($employee['timeblocks']) && !empty($employee['timeblocks'])) { if (isset($employee['timeblocks']) && ! empty($employee['timeblocks'])) {
$totalDuration = 0; $totalDuration = 0;
foreach ($employee['timeblocks'] as $timeblock) { foreach ($employee['timeblocks'] as $timeblock) {
if (isset($timeblock['start']) && isset($timeblock['end'])) { if (isset($timeblock['start']) && isset($timeblock['end'])) {
@@ -452,20 +452,20 @@ class SubTaskController extends Controller
// Vytvoríme subtask pre každého zamestnanca // Vytvoríme subtask pre každého zamestnanca
foreach ($employees as $employee) { foreach ($employees as $employee) {
$subtaskData = [ $subtaskData = [
'user_id' => $employee['id'], 'user_id' => $employee['id'],
'title' => $draft->title, 'title' => $draft->title,
'description' => $draft->description, 'description' => $draft->description,
'deadline' => $draft->deadline, 'deadline' => $draft->deadline,
'estimated_time' => $employee['duration'], 'estimated_time' => $employee['duration'],
'created_by' => $draft->created_by, 'created_by' => $draft->created_by,
'is_draft' => false, 'is_draft' => false,
'draft_data' => null, 'draft_data' => null,
]; ];
$newSubtask = $mastertask->subtasks()->create($subtaskData); $newSubtask = $mastertask->subtasks()->create($subtaskData);
// Sync timeblocks ak existujú // Sync timeblocks ak existujú
if (isset($employee['timeblocks']) && !empty($employee['timeblocks'])) { if (isset($employee['timeblocks']) && ! empty($employee['timeblocks'])) {
$newSubtask->syncTimeblocks($employee['timeblocks']); $newSubtask->syncTimeblocks($employee['timeblocks']);
} }
@@ -488,8 +488,8 @@ class SubTaskController extends Controller
$draft->delete(); $draft->delete();
return response()->json([ return response()->json([
'message' => 'Draft published successfully', 'message' => 'Draft published successfully',
'subtasks' => SubTaskResource::collection($createdSubtasks) 'subtasks' => SubTaskResource::collection($createdSubtasks),
], 201); ], 201);
} }
@@ -512,7 +512,7 @@ class SubTaskController extends Controller
return response()->json([ return response()->json([
'message' => 'Subtask deleted successfully.', 'message' => 'Subtask deleted successfully.',
'subtask' => $subtask 'subtask' => $subtask,
]); ]);
} }
@@ -522,7 +522,7 @@ class SubTaskController extends Controller
$validator = Validator::make($request->all(), [ $validator = Validator::make($request->all(), [
'data.employee_id' => 'required', 'data.employee_id' => 'required',
'data.time' => 'required', 'data.time' => 'required',
]); ]);
// validacia, ci dany user moze submitovat timesheet - ci mu patri subtask // validacia, ci dany user moze submitovat timesheet - ci mu patri subtask
@@ -530,7 +530,7 @@ class SubTaskController extends Controller
if ($subtask->user_id != $request->all()['data']['employee_id']) { if ($subtask->user_id != $request->all()['data']['employee_id']) {
$validator->errors()->add( $validator->errors()->add(
'data.employee_id', 'data.employee_id',
'This user cannot submit timesheet for the selected subtask. Subtask is assigned to user with id: ' . $subtask->user_id . '.' 'This user cannot submit timesheet for the selected subtask. Subtask is assigned to user with id: '.$subtask->user_id.'.'
); );
} }
}); });
@@ -540,17 +540,16 @@ class SubTaskController extends Controller
} }
$subtask->timesheets()->insert([ $subtask->timesheets()->insert([
'time' => $request->all()['data']['time'], 'time' => $request->all()['data']['time'],
'user_id' => $request->all()['data']['employee_id'], 'user_id' => $request->all()['data']['employee_id'],
'sub_task_id' => $subtask->id, 'sub_task_id' => $subtask->id,
"created_at" => Carbon::now(), 'created_at' => Carbon::now(),
"updated_at" => Carbon::now(), 'updated_at' => Carbon::now(),
]); ]);
return response()->json([ return response()->json([
'message' => 'Subtask timesheet submitted successfully.', 'message' => 'Subtask timesheet submitted successfully.',
'subtask' => $subtask 'subtask' => $subtask,
], 201); ], 201);
} }
} }