%PDF- %PDF-
Direktori : /var/www/html/sljcon/app/Http/Controllers/ |
Current File : /var/www/html/sljcon/app/Http/Controllers/SectionController.php |
<?php namespace App\Http\Controllers; use App\Models\Project; use App\Models\Section; use App\Models\Media; use Illuminate\Http\Request; use Carbon\Carbon; use App\Providers\MorphableName; use Illuminate\Support\Facades\DB; class SectionController extends Controller { /** * @param $id * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function index($id) { $sections = Section::query() ->where('project_id', $id) ->get(); $project = Project::query() ->find($id); return view('admin.section.all', [ 'sections' => $sections, 'project_id' => $id, 'project' => $project ]); } /** * @param Request $request * @param $id * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function newOrEdit(Request $request, $id) { $section = Section::query() ->find($id); if (!$section) { $section = new Section(); } $project_id = $request->query('project_id'); return view('admin.section.form', [ 'section' => $section, 'id' => $id, 'project_id' => $project_id ]); } /** * @param Request $request * @param $id * @return $this|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ public function store(Request $request, $id) { $section = Section::query() ->find($id); $rules = [ 'title' => 'required|string', 'order' => 'required|integer', 'description' => 'required|string', //'project_id' => 'required|integer|exists:projects,id', 'file' => $section ? 'nullable' : 'required' . '|image', ]; $validate = $this->validate($request, $rules); DB::beginTransaction(); try { if ($section) { $section->update($request->all()); } else { $section = Section::query() ->create($request->all()); } if ($file = $request->file('file')) { $media = $section->media() ->where('media_type', Media::MEDIA_TYPE_SECTION_IMAGE) ->first(); if ($media) { \File::delete(public_path('uploads/section') . '/' . $media->file_name); $media->delete(); } $fileName = head(explode('.', $file->getClientOriginalName())) . Carbon::now() ->formatLocalized('%d%m%Y%H%M%S') . '.' . last(explode('/', $file->getClientMimeType())); $file->move('uploads/section', $fileName); Media::query() ->create([ 'reference_id' => $section->id, 'reference_type' => MorphableName::forClass(Section::class), 'file_name' => $fileName, 'real_file_name' => $file->getClientOriginalName(), 'media_type' => Media::MEDIA_TYPE_SECTION_IMAGE, ]); } DB::commit(); return redirect(route('admin.project.section', $section->project_id)); } catch (\Exception $exception) { DB::rollback(); return back() ->withErrors($validate) ->withInput(); } } public function delete(Request $request) { $data = $request->all(); DB::beginTransaction(); try { $section = Section::query() ->find($data['id']); if ($section) { $media = $section->media() ->where('media_type', Media::MEDIA_TYPE_SECTION_IMAGE) ->first(); if ($media) { \File::delete(public_path('uploads/section') . '/' . $media->file_name); $media->delete(); } $section->delete(); } DB::commit(); } catch (\Exception $exception) { DB::rollback(); } return back(); } }