Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
webbingbrasil/courses-module / Http / Controllers / Admin / SlidesController.php
Size: Mime:
<?php namespace Modules\Courses\Http\Controllers\Admin;

use Illuminate\Http\Request;

use Modules\Core\Http\Controllers\AdminController;
use Modules\Core\Services\Asset;
use Modules\Courses\Entities\Slide;
use Modules\Courses\Http\Requests\CadastroSlideRequest;
use Modules\Courses\Services\CourseService;

class SlidesController extends AdminController
{
    /**
     * @var CourseService
     */
    private $service;

    public function __construct(CourseService $service){
        parent::__construct();
        $this->service = $service;
    }

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index($course)
    {
        //$this->authorize($this);
        Asset::add(\Config::get('core.assets.sortable'));
        $data = $this->service->findByIdWithSlides($course);
        return view('courses::admin.course_details', ['data' => $data]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @param  int  $course
     * @return \Illuminate\Http\Response
     */
    public function create($course)
    {
        //$this->authorize($this);
        Asset::add(\Config::get('core.assets.fineuploader'));
        $data = $this->service->findById($course);
        return view('courses::admin.create-slide', ['data' => $data]);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(CadastroSlideRequest $request, $course)
    {
        $input = $request->all();

        if ($request->hasFile('slide_photo') and $request->file('slide_photo')->isValid()) {
            $fileName = $request->file('slide_photo')->getClientOriginalName();
            $folder = 'uploads/course_'.$course.'/';
            $destination = public_path() . '/' . $folder;
            $request->file('slide_photo')->move($destination, $fileName);
            $input['slide_photo'] = $folder . $fileName;
        }

        /** @var Slide $result */
        $result = $this->service->addSlide($course, $input);

        if ($result instanceof Slide) {
            $msg = trans('courses::slides.create.alerts.success', ['slide' => $result->title]);
            $response = response()->json([
                'success' => true,
                'url' => $result->slide_photo
            ], 200);
        } else {
            $msg = trans('courses::slides.create.alerts.error', ['slide' => $result->title]);
            $response = response()->json([
                'success' => false,
                'error' => 'teste'
            ], 400);
        }

        return $response;
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $course
     * @param  int  $slide
     * @return \Illuminate\Http\Response
     */
    public function edit($course, $slide)
    {
        //$this->authorize($this);
        Asset::add(\Config::get('core.assets.fineuploader'));
        $data = $this->service->findSlideById($slide);
        return view('courses::admin.edit-slide', ['data' => $data]);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(CadastroSlideRequest $request, $course, $slide)
    {
        //$data = $this->service->editId($id);
        $input = $request->all();

        /*$rules = [];
        if ($input['cnpj'] != $laboratorio->cnpj) {
            $rules['cnpj'] = 'required|cnpj|max:50|unique:laboratorios';
        }
        if (!empty($rules)) {
            $validation = Validator::make($request->all(), $rules);

            if ($validation->fails()) {
                return response()->json($validation->messages(), 400);
            }
        }*/

        /** @var Slide $result */
        $result = $this->service->updateSlide($slide, $input);

        if ($result instanceof Slide) {
            $msg = trans('courses::slides.edit.alerts.success'. ['slide' => $result->title]);
            $response = $this->getResponse($msg, 200, 'courses.index');
        } else {
            $msg = trans('courses::slides.edit.alerts.error'. ['slide' => $result->title]);
            $response = $this->getResponse($msg, 400);
        }

        return $response;

    }

    /**
     * Load previou uploaded file
     *
     * @param  int  $course
     * @param  int  $slide
     * @return \Illuminate\Http\Response
     */
    public function loadFile($course, $slide)
    {
        //$this->authorize($this);

        $files = $this->service->loadSlideFileById($slide);

        return response()->json([$files['data']], 200);
    }

    /**
     * Delete uploaded file
     *
     * @param  int  $course
     * @param  int  $slide
     * @return \Illuminate\Http\Response
     */
    public function deleteFile($course, $slide)
    {
        //$this->authorize($this);

        $status = $this->service->deleteSlideFile($slide);

        return response()->json([
            'success' => $status
        ], 200);
    }

    /**
     * Save slides order
     *
     * @param  Request  $request
     * @param int       $course
     * @return \Illuminate\Http\Response
     */
    public function saveOrder(Request $request, $course)
    {
        //$this->authorize($this);

        $order = $request->get('sortable');
        $result = $this->service->updateSlideOrder($course, $order);

        return response()->json(['success'=> $result], 200);
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($course, $slide)
    {
        //$this->authorize($this);
        $status = $this->service->deleteSlide($slide);

        return response()->json([
            'success' => $status
        ], 200);
    }
}