diff --git a/be/app/Http/Controllers/MasterTaskController.php b/be/app/Http/Controllers/MasterTaskController.php index 7b0d16e..7ddefa5 100644 --- a/be/app/Http/Controllers/MasterTaskController.php +++ b/be/app/Http/Controllers/MasterTaskController.php @@ -117,7 +117,7 @@ class MasterTaskController extends Controller } } - $mastertask->attachments()->delete(); + $mastertask->deleteAttachments(); foreach ( $mastertask->subtasks as $subtask ) { $subtask->timeblocks()->delete(); diff --git a/be/app/Http/Controllers/SubTaskController.php b/be/app/Http/Controllers/SubTaskController.php index 93a0a93..d3fee1f 100644 --- a/be/app/Http/Controllers/SubTaskController.php +++ b/be/app/Http/Controllers/SubTaskController.php @@ -7,6 +7,7 @@ use App\Models\MasterTask; use App\Models\SubTask; use App\Models\Team; use App\Models\Timesheet; +use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; @@ -155,8 +156,8 @@ class SubTaskController extends Controller $subtask->timeblocks()->delete(); - // TODO budu mat attachmenty? - // $subtask->attachments()->delete(); + $subtask->deleteAttachments(); + $subtask->delete(); return response()->json([ @@ -164,4 +165,40 @@ class SubTaskController extends Controller 'subtask' => $subtask ]); } + + public function submitTimesheet($id, Request $request) + { + $subtask = SubTask::find($id); + + $validator = Validator::make($request->all(), [ + 'data.employee_id' => '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 . '.' + ); + } + }); + + if ($validator->fails()){ + return response()->json($validator->errors(), 400); + } + + $subtask->timesheets()->insert([ + '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(), + ]); + + return response()->json([ + 'message' => 'Subtask timesheet submitted successfully.', + 'subtask' => $subtask + ], 201); + } } diff --git a/be/app/Models/Attachment.php b/be/app/Models/Attachment.php index e1c0a4a..3c4ebbb 100644 --- a/be/app/Models/Attachment.php +++ b/be/app/Models/Attachment.php @@ -47,4 +47,12 @@ class Attachment extends Model return $attachmentDataArray; } + + public function deleteFromS3() + { + $path = 'jandl_taskmanager/attachments/' . $this->master_task_id . '/' . $this->disk_name; + Storage::disk('s3')->delete($path); + + return true; + } } diff --git a/be/app/Models/MasterTask.php b/be/app/Models/MasterTask.php index 5cbcb6d..54d1b32 100644 --- a/be/app/Models/MasterTask.php +++ b/be/app/Models/MasterTask.php @@ -53,4 +53,15 @@ class MasterTask extends Model // return random value from array return collect(['#E9FFE5', '#F6ECD3', '#FDE1FF', '#FFC9C9', '#DADEF8', '#EDFFFE'])->random(); } + + public function deleteAttachments() + { + foreach ( $this->attachments as $attachment ) { + $attachment->deleteFromS3(); + } + + $this->attachments()->delete(); + + return true; + } }