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

+63 -64
View File
@@ -39,11 +39,11 @@ class SubTaskController extends Controller
$validator = Validator::make($request->all(), [
'start' => 'required',
'end' => 'required',
'end' => 'required',
]);
$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(
'error', 'You must provide either employee_id or team_id.'
);
@@ -55,7 +55,7 @@ class SubTaskController extends Controller
}
$start = Carbon::parse($parameters['start']);
$end = Carbon::parse($parameters['end'])->addDay();
$end = Carbon::parse($parameters['end'])->addDay();
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
@@ -73,10 +73,10 @@ class SubTaskController extends Controller
} elseif (isset($parameters['user_id'])) {
$subtasks = SubTask::published()
->where('user_id', $parameters['user_id'])->whereHas('timeblocks',
function ($query) use ($start, $end) {
$query->where('start', '>', $start);
$query->where('end', '<', $end);
})->get();
function ($query) use ($start, $end) {
$query->where('start', '>', $start);
$query->where('end', '<', $end);
})->get();
$userIdArray = [$parameters['user_id']];
}
@@ -116,7 +116,7 @@ class SubTaskController extends Controller
->get();
return response()->json([
'subtasks' => SubTaskResource::collection($subtasks)
'subtasks' => SubTaskResource::collection($subtasks),
], 200);
}
@@ -141,7 +141,7 @@ class SubTaskController extends Controller
->get();
return response()->json([
'subtasks' => SubTaskResource::collection($subtasks)
'subtasks' => SubTaskResource::collection($subtasks),
], 200);
}
@@ -162,7 +162,7 @@ class SubTaskController extends Controller
}
return response()->json([
'subtasks' => SubTaskResource::collection($query->get())
'subtasks' => SubTaskResource::collection($query->get()),
], 200);
}
@@ -206,14 +206,14 @@ class SubTaskController extends Controller
if ($isDraft) {
// Pripravíme dáta pre draft
$draftData = [
'user_id' => $creatorId,
'created_by' => $creatorId,
'title' => $request->all()['data']['title'] ?? null,
'description' => $request->all()['data']['description'] ?? null,
'deadline' => $request->all()['data']['deadline'] ?? null,
'user_id' => $creatorId,
'created_by' => $creatorId,
'title' => $request->all()['data']['title'] ?? null,
'description' => $request->all()['data']['description'] ?? null,
'deadline' => $request->all()['data']['deadline'] ?? null,
'estimated_time' => 0, // celkový odhadovaný čas sa vypočíta z employees
'is_draft' => true,
'draft_data' => $request->all()['data']['employees'], // uložíme všetky employees data
'is_draft' => true,
'draft_data' => $request->all()['data']['employees'], // uložíme všetky employees data
];
// Vypočítame celkový odhadovaný čas
@@ -230,8 +230,8 @@ class SubTaskController extends Controller
}
return response()->json([
'message' => 'Draft created successfully',
'subtasks' => SubTaskResource::collection([$subtask])
'message' => 'Draft created successfully',
'subtasks' => SubTaskResource::collection([$subtask]),
], 201);
}
@@ -240,13 +240,13 @@ class SubTaskController extends Controller
$data['data'] = $request->all()['data'];
foreach ($request->all()['data']['employees'] as $key => $employee) {
$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]['user_id'] = $employee['id'];
$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]['created_by'] = $creatorId;
$data['data']['employees'][$key]['description'] = $request->all()['data']['description'];
$data['data']['employees'][$key]['deadline'] = $request->all()['data']['deadline'];
$data['data']['employees'][$key]['is_draft'] = false;
$data['data']['employees'][$key]['created_by'] = $creatorId;
$data['data']['employees'][$key]['description'] = $request->all()['data']['description'];
$data['data']['employees'][$key]['deadline'] = $request->all()['data']['deadline'];
$data['data']['employees'][$key]['is_draft'] = false;
}
$request->merge($data);
@@ -255,7 +255,7 @@ class SubTaskController extends Controller
// syncnutie timeblocks
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;
}
@@ -277,8 +277,8 @@ class SubTaskController extends Controller
}
return response()->json([
'message' => 'Sub Task created successfully',
'subtasks' => SubTaskResource::collection($subtasks)
'message' => 'Sub Task created successfully',
'subtasks' => SubTaskResource::collection($subtasks),
], 201);
}
@@ -287,9 +287,9 @@ class SubTaskController extends Controller
{
$subtask = SubTask::find($id);
if (!$subtask) {
if (! $subtask) {
return response()->json([
'message' => 'Subtask not found.'
'message' => 'Subtask not found.',
], 404);
}
@@ -309,7 +309,7 @@ class SubTaskController extends Controller
// validácia pri publikovaní draftu (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
if ($isPublishing && $subtask->draft_data) {
return $this->publishDraftWithMultipleEmployees($subtask, $request);
@@ -318,18 +318,18 @@ class SubTaskController extends Controller
if ($isPublishing) {
$publishValidator = Validator::make([
'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,
], [
'master_task_id' => 'required',
'user_id' => 'required',
'user_id' => 'required',
'estimated_time' => 'required|numeric|min:0',
]);
if ($publishValidator->fails()) {
return response()->json([
'message' => 'Draft cannot be published. Missing required fields.',
'errors' => $publishValidator->errors()
'errors' => $publishValidator->errors(),
], 400);
}
}
@@ -341,7 +341,7 @@ class SubTaskController extends Controller
}
// Pre drafty je validácia duration voliteľná
if (!$subtask->is_draft) {
if (! $subtask->is_draft) {
$validator = Validator::make($request->all(), [
'data.duration' => 'required',
]);
@@ -363,13 +363,13 @@ class SubTaskController extends Controller
}
// upratanie requestu, pretoze frontend pouziva inu nomenklaturu fieldov ako appka
$data['data'] = $request->all()['data'];
$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']['deadline'] = isset($request->all()['data']['deadline']) ? $request->all()['data']['deadline'] : null;
$data['data'] = $request->all()['data'];
$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']['deadline'] = isset($request->all()['data']['deadline']) ? $request->all()['data']['deadline'] : null;
$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
if (isset($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([
'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
foreach ($employees as $key => $employee) {
if (!isset($employee['id'])) {
if (! isset($employee['id'])) {
return response()->json([
'message' => 'Draft cannot be published. Each employee must have id.',
], 400);
}
// Ak duration nie je nastavený, vypočítaj ho z timeblocks
if (!isset($employee['duration']) || $employee['duration'] === null) {
if (isset($employee['timeblocks']) && !empty($employee['timeblocks'])) {
if (! isset($employee['duration']) || $employee['duration'] === null) {
if (isset($employee['timeblocks']) && ! empty($employee['timeblocks'])) {
$totalDuration = 0;
foreach ($employee['timeblocks'] as $timeblock) {
if (isset($timeblock['start']) && isset($timeblock['end'])) {
@@ -452,20 +452,20 @@ class SubTaskController extends Controller
// Vytvoríme subtask pre každého zamestnanca
foreach ($employees as $employee) {
$subtaskData = [
'user_id' => $employee['id'],
'title' => $draft->title,
'description' => $draft->description,
'deadline' => $draft->deadline,
'user_id' => $employee['id'],
'title' => $draft->title,
'description' => $draft->description,
'deadline' => $draft->deadline,
'estimated_time' => $employee['duration'],
'created_by' => $draft->created_by,
'is_draft' => false,
'draft_data' => null,
'created_by' => $draft->created_by,
'is_draft' => false,
'draft_data' => null,
];
$newSubtask = $mastertask->subtasks()->create($subtaskData);
// Sync timeblocks ak existujú
if (isset($employee['timeblocks']) && !empty($employee['timeblocks'])) {
if (isset($employee['timeblocks']) && ! empty($employee['timeblocks'])) {
$newSubtask->syncTimeblocks($employee['timeblocks']);
}
@@ -488,8 +488,8 @@ class SubTaskController extends Controller
$draft->delete();
return response()->json([
'message' => 'Draft published successfully',
'subtasks' => SubTaskResource::collection($createdSubtasks)
'message' => 'Draft published successfully',
'subtasks' => SubTaskResource::collection($createdSubtasks),
], 201);
}
@@ -512,7 +512,7 @@ class SubTaskController extends Controller
return response()->json([
'message' => 'Subtask deleted successfully.',
'subtask' => $subtask
'subtask' => $subtask,
]);
}
@@ -522,7 +522,7 @@ class SubTaskController extends Controller
$validator = Validator::make($request->all(), [
'data.employee_id' => 'required',
'data.time' => 'required',
'data.time' => 'required',
]);
// 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']) {
$validator->errors()->add(
'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([
'time' => $request->all()['data']['time'],
'user_id' => $request->all()['data']['employee_id'],
'time' => $request->all()['data']['time'],
'user_id' => $request->all()['data']['employee_id'],
'sub_task_id' => $subtask->id,
"created_at" => Carbon::now(),
"updated_at" => Carbon::now(),
'created_at' => Carbon::now(),
'updated_at' => Carbon::now(),
]);
return response()->json([
'message' => 'Subtask timesheet submitted successfully.',
'subtask' => $subtask
'subtask' => $subtask,
], 201);
}
}