mirror of
https://bitbucket.org/studiotem/jandl-taskmanager-app.git
synced 2026-10-21 06:20:21 +00:00
refactor(SubTaskController): improve code formatting and consistency in validation and response handling
This commit is contained in:
1 parent
b101da8da5
commit
b7bad5f985
2 files changed
+63
-65
No files matched your search
@@ -1 +0,0 @@
|
|||||||
VUE_APP_WAXIOS_URL=http://127.0.0.1:8001/api/
|
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user