%PDF- %PDF-
Direktori : /var/www/html/conference/app/Http/Controllers/ |
Current File : /var/www/html/conference/app/Http/Controllers/AuthorController.php |
<?php namespace App\Http\Controllers; use App\Models\Author; use Illuminate\Http\Request; use App\Models\Media; use App\Providers\MorphableName; use Carbon\Carbon; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; class AuthorController extends Controller { /** * @param Request $request * @return string */ public function index(Request $request) { $searchString = $request->query('term'); $authors = Author::query()->where('name', 'like', "%$searchString%") ->orWhere('surname', 'like', "%$searchString%")->get(); return json_encode($authors); } /** * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function showAll() { $authors = Author::query() ->paginate(10); return view('admin.authors.index', [ 'authors' => $authors ]); } /** * @param $author * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function show($author) { $author = Author::query()->find($author); if (!$author) { $author = new Author(); } return view('admin.authors.show', [ 'author' => $author ]); } /** * @param Request $request */ public function store(Request $request) { $rules = [ 'name' => 'required|string', 'surname' => 'required|string', 'email' => 'required|email', 'title' => 'required|string', 'job' => 'required|string', 'file' => 'required|image', ]; $this->validate($request, $rules); DB::beginTransaction(); try { $author = Author::query() ->create($request->all());; $file = $request->file('file'); $fileName = $author->name . $author->surname . Carbon::now()->formatLocalized('%d%m%Y%H%M%S') . '.' . last(explode('/', $file->getClientMimeType())); $file->move('uploads/profile', $fileName); $media = Media::query()->make([ 'model_id' => $author->id, 'model_type' => MorphableName::forClass(Author::class), 'file_name' => $fileName, 'real_file_name' => $file->getClientOriginalName(), 'media_type' => Media::IMAGE_PROFILE, ]); $media->save(); DB::commit(); } catch (\Exception $exception) { DB::rollback(); \File::delete(public_path('uploads/profile') . '/' . $fileName); return $this->show('new'); } return redirect('/admin/authors'); } public function delete($id) { try{ $author = Author::find($id); if($author){ \File::delete(public_path('uploads/profile') . '/' . $author->media->first()->file_name); $author->media()->get()->destroy(); $author->destroy(); return redirect('/admin/authors'); } }catch (\Exception $exception){ return $exception; } } }