%PDF- %PDF-
Direktori : /var/www/html/diaspora/api_internal/app/Http/Controllers/Api/v1/ |
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); } }