all(), [ 'data.employee_id' => 'required', 'data.duration' => 'required', ]); // validacia, ci uz subtask pre tohto usera a mastertask neexistuje $validator->after(function ($validator) use ($mastertask_id, $request) { if (SubTask::where('master_task_id', $mastertask_id)->where('user_id', $request->all()['data']['employee_id'])->exists()) { $validator->errors()->add( 'data.employee_id', 'Sub task already exists for this employee and master task.' ); } }); if($validator->fails()){ return response()->json($validator->errors(), 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']['estimated_time'] = $request->all()['data']['duration']; $request->merge($data); $mastertask = MasterTask::find($mastertask_id); $subtask = $mastertask->subtasks()->create($request->all()['data']); return response()->json([ 'message' => 'Sub Task created successfully', 'subtask' => $subtask ], 201); } public function delete($id) { $subtask = SubTask::find($id); // ak existuje timesheet k subtasku, nemoze sa zmazat if ($subtask->timesheets()->exists()) { return response()->json([ 'message' => 'Cannot delete subtask with submitted timesheets.', ], 400); } $subtask->timeblocks()->delete(); // TODO budu mat attachmenty? // $subtask->attachments()->delete(); $subtask->delete(); return response()->json([ 'message' => 'Subtask deleted successfully.', 'subtask' => $subtask ]); } }