%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/digiprint/app/Http/Controllers/
Upload File :
Create Path :
Current File : /var/www/html/digiprint/app/Http/Controllers/TechnologiesController.php

<?php

namespace Digiprint\Http\Controllers;

use Carbon\Carbon;
use Digiprint\Models\Media;
use Digiprint\Models\Technology;
use Digiprint\Providers\MorphableName;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class TechnologiesController extends Controller
{
    /**
     * Create a new controller instance.
     *
     */
    public function ShowAll()
    {
        $technologies = Technology::query()
            ->get();

        return view('technology')->with([
            'technologies' => $technologies,
        ]);
    }

    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function index()
    {
        $technologies = Technology::query()
            ->get();

        return view('dashboard.technologies')->with([
            'technologies' => $technologies,
        ]);
    }

    public function show($id)
    {
        $technology = Technology::query()
            ->find($id);
        if (!$technology) {
            $technology = new Technology();
        }
        return view('dashboard.technologiesDetails', [
            'technology' => $technology,
            'id' => $id,
        ]);
    }

    /**
     * @param \Illuminate\Http\Request $request
     * @param                          $id
     *
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
     */
    public function createOrUpdate(Request $request, $id)
    {
        /** @var Technology $technology */
        $technology = Technology::query()
            ->find($id);
        $this->validate($request, [
            'name' => 'required|string',
            'description' => 'required|string',
            'order' => 'required|integer',
            'file' => $technology
                ? 'nullable'
                : 'required' . '|image',
        ]);
        DB::beginTransaction();
        try {
            if ($technology) {
                $technology->update($request->all());
            } else {
                $technology = Technology::query()
                    ->create($request->all());
            }
            if ($file = $request->file('file')) {
                $media = $technology->media()
                    ->where('media_type', Media::MEDIA_TYPE_IMAGE_CATEGORY)
                    ->first();
                if ($media) {
                    \File::delete(public_path('uploads') . '/' . $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', $fileName);
                Media::query()
                    ->create([
                        'model_id' => $technology->id,
                        'model_type' => MorphableName::forClass(Technology::class),
                        'file_name' => $fileName,
                        'real_file_name' => $file->getClientOriginalName(),
                        'media_type' => Media::MEDIA_TYPE_IMAGE_CATEGORY,
                    ]);
            }
            DB::commit();
            if ($id !== 'new') {
                return redirect(route('dashboard.technologies'));
            }
            return redirect(route('dashboard.technologies.details', $technology->id));
        } catch (\Exception $exception) {
            DB::rollback();
            return redirect(route('dashboard.technologies.details', $technology->id));
        }
    }

    public function gallery($id)
    {
        $technology = Technology::query()
            ->find($id);
        return view('dashboard.technologiesGallery', [
            'technology' => $technology,
        ]);
    }

    public function uploadGallery(Request $request, $id)
    {
        $rules = [
            'photos' => 'array',
        ];

        for ($i = 0; $i < count($request->file('photos')); $i++) {
            $rules["photos.{$i}"] = 'image';
        }

        $this->validate($request, $rules);
        $technology = Technology::query()
            ->find($id);

        $photos = $request->file('photos');
        foreach ($photos as $photo) {

            $fileName = head(explode('.', $photo->getClientOriginalName())) . Carbon::now()
                    ->formatLocalized('%d%m%Y%H%M%S') . '.' . last(explode('/', $photo->getClientMimeType()));
            $photo->move('uploads', $fileName);
            Media::query()
                ->create([
                    'model_id' => $technology->id,
                    'model_type' => MorphableName::forClass(Technology::class),
                    'file_name' => $fileName,
                    'real_file_name' => $photo->getClientOriginalName(),
                    'media_type' => Media::MEDIA_TYPE_IMAGE_GALLERY,
                ]);
        }
        return redirect(route('dashboard.technologies.gallery', $technology->id));
    }

    public function deleteGallery(Request $request, $id, $galleryId)
    {
        try {
            /** @var Technology $technology */
            $technology = Technology::query()
                ->find($id);
            $media = $technology->media()
                ->where('id', $galleryId)
                ->first();
            \File::delete(public_path('uploads/') . $media->file_name);
            $media->delete();
            return redirect(route('dashboard.technologies.gallery', $technology->id));
        } catch (\Exception $exception) {
            return redirect(route('dashboard.technologies'));
        }
    }

}

Zerion Mini Shell 1.0