public static function resolveTaskDependencies(&$task, $categories = null) { if (!$categories) { $categories = Category::getAllFromCache(); } $task->category_name = $categories[$task->category_id - 1]->name; $cache_name = __METHOD__ . '_task_id=' . $task->id; $task->files = Cache::remember($cache_name, Config::get('constants.CACHE_TIME_DAY'), function () use($task, $cache_name) { if (App::environment('local')) { Log::debug('Cache: ' . $cache_name); } return TaskFile::where('task_id', $task->id)->where('deleted', false)->select('id', 'name', 'user_id', 'task_id', 'created_at', 'updated_at')->get(); }); $task->solutions = Solution::getTaskSolutionsDependencies($task->id); }
public function createOrEdit(Request $request) { $this->validate($request, ['name' => 'required|max:60|min:4', 'author' => 'required|max:60|min:4', 'description' => 'max:500', 'category_id' => 'required|numeric', 'files.*.name' => 'required|min:2|max:60', 'files.*.data' => 'required|min:2|max:1000000'], ['files' => 'test']); $category = Category::where('id', $request->input('category_id'))->first(); if (!$category) { App::abort(406); } $task_id = $request->input('task_id'); $task = null; if (!empty($task_id) && is_numeric($task_id)) { $task = Task::where('id', $task_id)->where('user_id', $request->user()->id)->where('deleted', false)->first(); if (!$task) { abort(406); } DB::table('task_files')->where('task_id', $task_id)->where('user_id', $request->user()->id)->update(array('deleted' => true)); } else { $task_id = null; $task = new Task(); Statistic::AddTask(); } $task->name = $request->input('name'); $task->author = $request->input('author'); $task->description = $request->input('description'); $task->category_id = $request->input('category_id'); $task->user_id = $request->user()->id; $filesArray = $request->input('files'); $pass = $task->save(); $this->clearCache($task); if (is_array($filesArray)) { foreach ($filesArray as $file) { $taskFile = new TaskFile(); $taskFile->name = $file['name']; $taskFile->data = $file['data']; $taskFile->user_id = $request->user()->id; $taskFile->task_id = $task->id; if (!$taskFile->save()) { $pass = false; } } } if ($pass) { Alert::setSuccessAlert(Lang::get('app.task_saved')); } else { Log::alert(__METHOD__ . '(' . __FILE__ . ')', array('task_id' => $task->id, 'user_id' => Auth::user()->id)); Alert::setErrorAlert(Lang::get('app.unknown_error')); } return redirect()->action('HomeController@index'); }