From 3c799743d3fcf627d199d00dab90d50865f99b41 Mon Sep 17 00:00:00 2001 From: Michal Feher Date: Wed, 27 Mar 2024 10:24:44 +0100 Subject: [PATCH] no message --- .../Http/Controllers/MasterTaskController.php | 85 +++++------ be/app/Http/Controllers/SubTaskController.php | 138 +++++++++--------- 2 files changed, 117 insertions(+), 106 deletions(-) diff --git a/be/app/Http/Controllers/MasterTaskController.php b/be/app/Http/Controllers/MasterTaskController.php index bc6ec4c..283d101 100644 --- a/be/app/Http/Controllers/MasterTaskController.php +++ b/be/app/Http/Controllers/MasterTaskController.php @@ -21,12 +21,14 @@ class MasterTaskController extends Controller $mastertasks = MasterTask::select('*'); // filtrovanie na zaklade parametrov - foreach ( $parameters as $field => $value ) { - if (!$value) continue; + foreach ($parameters as $field => $value) { + if ( ! $value) { + continue; + } switch ($field) { case 'month': - $mastertasks->where('created_at', 'like', $parameters['year'] . '-' . $parameters['month'] . '-%'); + $mastertasks->where('created_at', 'like', $parameters['year'] . '-' . $parameters['month'] . '-%'); break; case 'employee_id': @@ -47,12 +49,12 @@ class MasterTaskController extends Controller }); break; - // vracia vsetky mastertasky v jednoduchom formate pre potreby dropdownu na FE (problem bol dlhy load time na zaciatku appky) + // vracia vsetky mastertasky v jednoduchom formate pre potreby dropdownu na FE (problem bol dlhy load time na zaciatku appky) case 'simple': $mastertasks = MasterTask::select('id', 'title', 'project_id', 'color'); break; - // year sa pouziva iba pri month + // year sa pouziva iba pri month case 'year': break; @@ -74,39 +76,40 @@ class MasterTaskController extends Controller $created_by = User::getUserIdFromBearerToken($request->bearerToken()); $validator = Validator::make($request->all(), [ - 'data.name' => 'required', + 'data.name' => 'required', 'data.description' => 'required', - 'data.duration' => 'required', - 'data.deadline' => 'required', - 'data.project_id' => 'required', - 'data.employees' => 'required', + 'data.duration' => 'required', + 'data.deadline' => 'required', + 'data.project_id' => 'required', + 'data.employees' => 'required', ]); - if($validator->fails()){ + if ($validator->fails()) { return response()->json($validator->errors(), 400); } // validacia na max 50MB size pre attachmenty. neslo dat do klasickeho laravel validation, tak je to separe if ($files = $request->file('data')) { - foreach ( $files['files'] as $file ) { - if ($file->getSize() > 52428800) + foreach ($files['files'] as $file) { + if ($file->getSize() > 52428800) { return response()->json([ 'files' => 'File size must be less than 50MB', ], 400); + } } } // upratanie requestu, pretoze frontend pouziva inu nomenklaturu fieldov ako appka - $data['data'] = $request->all()['data']; - $data['data']['title'] = $request->all()['data']['name']; + $data['data'] = $request->all()['data']; + $data['data']['title'] = $request->all()['data']['name']; $data['data']['estimated_time'] = $request->all()['data']['duration']; - $data['data']['created_by'] = $created_by; + $data['data']['created_by'] = $created_by; - foreach ( $data['data']['employees'] as $key => $employee ) { - $data['data']['employees'][$key]['user_id'] = $employee['id']; + foreach ($data['data']['employees'] as $key => $employee) { + $data['data']['employees'][$key]['user_id'] = $employee['id']; $data['data']['employees'][$key]['estimated_time'] = $employee['duration']; - $data['data']['employees'][$key]['created_by'] = $created_by; + $data['data']['employees'][$key]['created_by'] = $created_by; } $request->merge($data); @@ -121,7 +124,7 @@ class MasterTaskController extends Controller } return response()->json([ - 'message' => 'Master Task created successfully', + 'message' => 'Master Task created successfully', 'mastertask' => $mastertask ], 201); } @@ -131,21 +134,20 @@ class MasterTaskController extends Controller $created_by = User::getUserIdFromBearerToken($request->bearerToken()); $validator = Validator::make($request->all(), [ - 'data.name' => 'required', + 'data.name' => 'required', 'data.description' => 'required', - 'data.duration' => 'required', - 'data.deadline' => 'required', - 'data.project_id' => 'required', + 'data.duration' => 'required', + 'data.deadline' => 'required', + 'data.project_id' => 'required', ]); - - if ($validator->fails()){ + if ($validator->fails()) { return response()->json($validator->errors(), 400); } $mastertask = MasterTask::find($id); // ak je Master task v stave ukončený, nedovolime update. vynimkou je iba znovuotvorenie mastertasku - if ($mastertask->is_finished == 1 && (!isset($request->all()['data']['is_finished']) || $request->all()['data']['is_finished'] == 1)) { + if ($mastertask->is_finished == 1 && ( ! isset($request->all()['data']['is_finished']) || $request->all()['data']['is_finished'] == 1)) { return response()->json([ 'message' => 'Cannot update mastertask that is finished.', ], 400); @@ -157,7 +159,7 @@ class MasterTaskController extends Controller $mastertask->save(); return response()->json([ - 'message' => 'Master Task opened successfully', + 'message' => 'Master Task opened successfully', 'mastertask' => $mastertask ]); } @@ -172,41 +174,42 @@ class MasterTaskController extends Controller } } - if (!$atLeastOneSubtaskHasTimesheet) + if ( ! $atLeastOneSubtaskHasTimesheet) { return response()->json([ 'message' => 'Finishing mastertask is only possible where at least one subtask contains timesheet', ], 400); + } $mastertask->is_finished = 1; $mastertask->save(); return response()->json([ - 'message' => 'Master Task finished successfully', + 'message' => 'Master Task finished successfully', 'mastertask' => $mastertask ]); } - // validacia na max 50MB size pre attachmenty. neslo dat do klasickeho laravel validation, tak je to separe if ($files = $request->file('data')) { - foreach ( $files['files'] as $file ) { - if ($file->getSize() > 52428800) + foreach ($files['files'] as $file) { + if ($file->getSize() > 52428800) { return response()->json([ 'files' => 'File size must be less than 50MB', ], 400); + } } } // upratanie requestu, pretoze frontend pouziva inu nomenklaturu fieldov ako appka - $data['data'] = $request->all()['data']; - $data['data']['title'] = $request->all()['data']['name']; + $data['data'] = $request->all()['data']; + $data['data']['title'] = $request->all()['data']['name']; $data['data']['estimated_time'] = $request->all()['data']['duration']; - foreach ( $data['data']['employees'] as $key => $employee ) { - $data['data']['employees'][$key]['user_id'] = $employee['id']; + foreach ($data['data']['employees'] as $key => $employee) { + $data['data']['employees'][$key]['user_id'] = $employee['id']; $data['data']['employees'][$key]['estimated_time'] = $employee['duration']; - $data['data']['employees'][$key]['created_by'] = $created_by; + $data['data']['employees'][$key]['created_by'] = $created_by; } $request->merge($data); @@ -238,7 +241,7 @@ class MasterTaskController extends Controller // $mastertask->subtasks()->createMany($request->all()['data']['employees']); return response()->json([ - 'message' => 'Master Task updated successfully', + 'message' => 'Master Task updated successfully', 'mastertask' => $mastertask ]); } @@ -258,7 +261,7 @@ class MasterTaskController extends Controller $mastertask->deleteAttachments(); - foreach ( $mastertask->subtasks as $subtask ) { + foreach ($mastertask->subtasks as $subtask) { $subtask->timeblocks()->delete(); } @@ -267,7 +270,7 @@ class MasterTaskController extends Controller $mastertask->delete(); return response()->json([ - 'message' => 'Master Task deleted successfully.', + 'message' => 'Master Task deleted successfully.', 'mastertask' => $mastertask ]); } diff --git a/be/app/Http/Controllers/SubTaskController.php b/be/app/Http/Controllers/SubTaskController.php index 27f2d62..9007bd3 100644 --- a/be/app/Http/Controllers/SubTaskController.php +++ b/be/app/Http/Controllers/SubTaskController.php @@ -2,7 +2,6 @@ namespace App\Http\Controllers; -use App\Events\SubTaskCreated; use App\Http\Resources\BlockerResource; use App\Http\Resources\SubTaskResource; use App\Models\Attachment; @@ -31,28 +30,27 @@ class SubTaskController extends Controller return $this->indexOngoing($request); } - $parameters['user_id'] = ( $parameters['employee_id'] ?? null ); + $parameters['user_id'] = ($parameters['employee_id'] ?? null); $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.' ); } }); - if ($validator->fails()){ + if ($validator->fails()) { return response()->json($validator->errors(), 400); } $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 @@ -62,21 +60,22 @@ class SubTaskController extends Controller })->get()->pluck('id')->toArray(); $subtasks = SubTask::whereIn('user_id', $userIdArray) - ->whereHas('timeblocks', function ($query) use ($start, $end) { - $query->where('start', '>=', $start); + ->whereHas('timeblocks', function ($query) use ($start, $end) { + $query->where('start', '>=', $start); + $query->where('end', '<', $end); + })->get(); + } elseif (isset($parameters['user_id'])) { + $subtasks = SubTask::where('user_id', $parameters['user_id'])->whereHas('timeblocks', + function ($query) use ($start, $end) { + $query->where('start', '>', $start); $query->where('end', '<', $end); })->get(); - } else if (isset($parameters['user_id'])) { - $subtasks = SubTask::where('user_id', $parameters['user_id'])->whereHas('timeblocks', function ($query) use ($start, $end) { - $query->where('start', '>', $start); - $query->where('end', '<', $end); - })->get(); - $userIdArray = [$parameters['user_id']]; } - $blockers = Blocker::whereIn('user_id', $userIdArray)->where('start', '>', $start)->where('end', '<', $end)->get(); + $blockers = Blocker::whereIn('user_id', $userIdArray)->where('start', '>', $start)->where('end', '<', + $end)->get(); return response()->json([ 'subtasks' => SubTaskResource::collection($subtasks), @@ -84,50 +83,52 @@ class SubTaskController extends Controller ], 200); } - private function indexUnscheduled(Request $request) { + private function indexUnscheduled(Request $request) + { // get query parameter from request $parameters = $request->query(); - $validator = Validator::make( $parameters, [ + $validator = Validator::make($parameters, [ 'employee_id' => 'required', - ] ); + ]); - if ( $validator->fails() ) { - return response()->json( $validator->errors(), 400 ); + if ($validator->fails()) { + return response()->json($validator->errors(), 400); } $parameters['user_id'] = $parameters['employee_id']; - $subtasks = SubTask::where('user_id', $parameters['user_id'])->where('is_finished', 0)->whereDoesntHave( 'timeblocks')->get(); + $subtasks = SubTask::where('user_id', $parameters['user_id'])->where('is_finished', + 0)->whereDoesntHave('timeblocks')->get(); - return response()->json( [ + return response()->json([ 'subtasks' => SubTaskResource::collection($subtasks) - ], 200 ); + ], 200); } - private function indexOngoing(Request $request) { + private function indexOngoing(Request $request) + { // get query parameter from request $parameters = $request->query(); - $validator = Validator::make( $parameters, [ + $validator = Validator::make($parameters, [ 'employee_id' => 'required', - ] ); + ]); - if ( $validator->fails() ) { - return response()->json( $validator->errors(), 400 ); + if ($validator->fails()) { + return response()->json($validator->errors(), 400); } $parameters['user_id'] = $parameters['employee_id']; $subtasks = SubTask::where('user_id', $parameters['user_id'])->where('is_finished', 0)->get(); - return response()->json( [ + return response()->json([ 'subtasks' => SubTaskResource::collection($subtasks) - ], 200 ); + ], 200); } - public function store($mastertask_id, Request $request) { $validator = Validator::make($request->all(), [ @@ -143,44 +144,47 @@ class SubTaskController extends Controller // } // }); - if ($validator->fails()){ + if ($validator->fails()) { return response()->json($validator->errors(), 400); } // validacia na max 50MB size pre attachmenty. neslo dat do klasickeho laravel validation, tak je to separe - if ($files = $request->file('data')) { - foreach ( $files['files'] as $file ) { - if ($file->getSize() > 52428800) + if ($files = $request->file('data')) { + foreach ($files['files'] as $file) { + if ($file->getSize() > 52428800) { return response()->json([ 'files' => 'File size must be less than 50MB', ], 400); + } } } // upratanie requestu, pretoze frontend pouziva inu nomenklaturu fieldov ako appka $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; + 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]['estimated_time'] = $employee['duration']; - $data['data']['employees'][$key]['created_by'] = User::getUserIdFromBearerToken($request->bearerToken()); - $data['data']['employees'][$key]['description'] = $request->all()['data']['description']; - $data['data']['employees'][$key]['deadline'] = $request->all()['data']['deadline']; + $data['data']['employees'][$key]['created_by'] = User::getUserIdFromBearerToken($request->bearerToken()); + $data['data']['employees'][$key]['description'] = $request->all()['data']['description']; + $data['data']['employees'][$key]['deadline'] = $request->all()['data']['deadline']; } $request->merge($data); $mastertask = MasterTask::find($mastertask_id); - $subtasks = $mastertask->subtasks()->createMany($request->all()['data']['employees']); + $subtasks = $mastertask->subtasks()->createMany($request->all()['data']['employees']); // syncnutie timeblocks - foreach ( $request->all()['data']['employees'] as $key => $employee ) { - if (!isset($data['data']['employees'][$key]['timeblocks']) || $data['data']['employees'][$key]['timeblocks'] == null) + foreach ($request->all()['data']['employees'] as $key => $employee) { + if ( ! isset($data['data']['employees'][$key]['timeblocks']) || $data['data']['employees'][$key]['timeblocks'] == null) { continue; + } - if ($data['data']['employees'][$key]['user_id'] == $employee['id']) + if ($data['data']['employees'][$key]['user_id'] == $employee['id']) { $subtasks[$key]->syncTimeblocks($data['data']['employees'][$key]['timeblocks']); + } } // upload attachmentu @@ -188,7 +192,7 @@ class SubTaskController extends Controller $attachments = Attachment::uploadAttachmentsToS3($request->file('data')['files'], $mastertask); } - foreach ( $subtasks as $subtask ) { + foreach ($subtasks as $subtask) { // upload attachmentu if ($request->file('data')) { $subtask->attachments()->createMany($attachments); @@ -196,7 +200,7 @@ class SubTaskController extends Controller } return response()->json([ - 'message' => 'Sub Task created successfully', + 'message' => 'Sub Task created successfully', 'subtasks' => $subtasks ], 201); } @@ -224,27 +228,28 @@ class SubTaskController extends Controller 'data.duration' => 'required', ]); - if ($validator->fails()){ + if ($validator->fails()) { return response()->json($validator->errors(), 400); } // validacia na max 50MB size pre attachmenty. neslo dat do klasickeho laravel validation, tak je to separe if ($files = $request->file('data')) { - foreach ( $files['files'] as $file ) { - if ($file->getSize() > 52428800) + foreach ($files['files'] as $file) { + if ($file->getSize() > 52428800) { return response()->json([ 'files' => 'File size must be less than 50MB', ], 400); + } } } // upratanie requestu, pretoze frontend pouziva inu nomenklaturu fieldov ako appka - $data['data'] = $request->all()['data']; - $data['data']['user_id'] = $request->all()['data']['employee_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']; + $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']; - $data['data']['updated_by'] = User::getUserIdFromBearerToken($request->bearerToken()); + $data['data']['updated_by'] = User::getUserIdFromBearerToken($request->bearerToken()); $request->merge($data); @@ -258,12 +263,14 @@ class SubTaskController extends Controller } // syncnutie vykazu - if (isset($data['data']['timesheets'])) + if (isset($data['data']['timesheets'])) { $subtask->syncTimesheets($data['data']['timesheets']); + } // syncnutie timeblocks - if (isset($data['data']['timeblocks'])) + if (isset($data['data']['timeblocks'])) { $subtask->syncTimeblocks($data['data']['timeblocks']); + } return response()->json([ 'message' => 'Subtask updated successfully', @@ -300,28 +307,29 @@ 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 $validator->after(function ($validator) use ($subtask, $request) { 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 . '.' + 'data.employee_id', + 'This user cannot submit timesheet for the selected subtask. Subtask is assigned to user with id: ' . $subtask->user_id . '.' ); } }); - if ($validator->fails()){ + if ($validator->fails()) { return response()->json($validator->errors(), 400); } $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([