storeArray($featureData); } public function createFeatures($featuresData, $projectId) { $selectedFeatures = $this->model->whereIn('id', $featuresData['feature_ids'])->get(); DB::beginTransaction(); foreach ($selectedFeatures as $feature) { $newFeature = $feature->replicate(); $newFeature->project_id = $projectId; $newFeature->save(); $selectedTasks = $feature->tasks()->whereIn('id', $featuresData[$feature->id . '_task_ids'])->get(); foreach ($selectedTasks as $task) { $newTask = $task->replicate(); $newTask->progress = 0; $newTask->feature_id = $newFeature->id; $newTask->save(); } } DB::commit(); return 'ok'; } public function getTasksByFeatureId($featureId) { return Task::whereFeatureId($featureId)->get(); } public function requireTaskById($taskId) { return Task::findOrFail($taskId); } public function update($featureData = [], $featureId) { foreach ($featureData as $key => $value) { if (!$featureData[$key]) $featureData[$key] = null; } $featureData['price'] = str_replace('.', '', $featureData['price']); $feature = $this->requireById($featureId); $feature->update($featureData); return $feature; } }