%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/CountriesController.php

<?php

namespace App\Http\Controllers\Api\v1;

use App\Http\Controllers\Api\ApiController;
use App\Http\Requests\Api\v1\Countries\CreateCountryRequest;
use App\Models\Country;
use App\Transformers\CountryTransformer;
use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator;

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

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

    /**
     * @param Request $request
     * @return CountriesController
     */
    public function index(Request $request)
    {
        /** @var LengthAwarePaginator $result */
        $result = $this->filterCountries($request)
                       ->paginate($request->get('perPage'));
        return $this->withPaginated($result, new CountryTransformer());
    }

    private function filterCountries(Request $request)
    {
        $result = Country::query();

        if ($name = $request->get('name')) {
            $result = $result->whereTranslationLike('name', "%$name%", app()->getLocale());
        }
        return $result;
    }

    public function getTravelCautions()
    {
        return response()->json([
            ['code' => Country::DO_NOT_TRAVEL, 'description' => trans("cautions." . Country::DO_NOT_TRAVEL), [], app()->getLocale()],
            ['code' => Country::HIGH_CAUTION, 'description' => trans("cautions." . Country::HIGH_CAUTION), [], app()->getLocale()],
            [
                'code'        => Country::NORMAL_PRECAUTION,
                'description' => trans("cautions." . Country::NORMAL_PRECAUTION, [], app()->getLocale()),
            ],
        ]);
    }

    /**
     * @param $id
     * @return CountriesController
     */
    public function show($id)
    {
        $country = Country::query()
                          ->findOrFail($id);
        return $this->item($country, new CountryTransformer());
    }

    public function store(CreateCountryRequest $request)
    {
        /** @var Country $country */
        $country = Country::query()
                          ->create($request->all());

        activity()
            ->causedBy($this->user)
            ->performedOn($country)
            ->log('created');

        return $this->item($country, new CountryTransformer());
    }

    public function update(CreateCountryRequest $request, $id)
    {
        $country = Country::query()
                          ->findOrFail($id);
        $country->update($request->all());
        activity()
            ->causedBy($this->user)
            ->performedOn($country)
            ->log('updated');
        return $this->item($country, new CountryTransformer());
    }

    /**
     * @param $id
     * @return \Illuminate\Http\JsonResponse
     */
    public function disable($id)
    {
        /** @var Country $country */
        $country = Country::query()
                          ->findOrFail($id);
        $country->disable();
        activity()
            ->causedBy($this->user)
            ->performedOn($country)
            ->log('disabled');
        return $this->item($country, new CountryTransformer);
    }

    /**
     * @param $id
     * @return \Illuminate\Http\JsonResponse
     */
    public function enable($id)
    {
        /** @var Country $country */
        $country = Country::query()
                          ->findOrFail($id);
        $country->enable();
        activity()
            ->causedBy($this->user)
            ->performedOn($country)
            ->log('enabled');
        return $this->item($country, new CountryTransformer);
    }

    public function getEnabled()
    {
        $countries = Country::query()
                            ->where('is_enabled', true)
                            ->get();
        return $this->collection($countries, new CountryTransformer);
    }

}

Zerion Mini Shell 1.0