Файл: app/Http/Controllers/API/WebsiteController.php
Строк: 103
<?php
namespace AppHttpControllersAPI;
use AppHttpControllersController;
use AppHttpRequestsAPIStoreWebsiteRequest;
use AppHttpRequestsAPIUpdateWebsiteRequest;
use AppHttpResourcesWebsiteResource;
use AppModelsWebsite;
use AppTraitsWebsiteTrait;
use IlluminateHttpRequest;
class WebsiteController extends Controller
{
use WebsiteTrait;
/**
* Display a listing of the resource.
*
* @param Request $request
* @return IlluminateHttpResourcesJsonAnonymousResourceCollection
*/
public function index(Request $request)
{
$search = $request->input('search');
$searchBy = in_array($request->input('search_by'), ['domain']) ? $request->input('search_by') : 'domain';
$sortBy = in_array($request->input('sort_by'), ['id', 'domain']) ? $request->input('sort_by') : 'id';
$sort = in_array($request->input('sort'), ['asc', 'desc']) ? $request->input('sort') : 'desc';
$perPage = in_array($request->input('per_page'), [10, 25, 50, 100]) ? $request->input('per_page') : config('settings.paginate');
return WebsiteResource::collection(Website::where('user_id', $request->user()->id)
->when($search, function ($query) use ($search, $searchBy) {
return $query->searchDomain($search);
})
->orderBy($sortBy, $sort)
->paginate($perPage)
->appends(['search' => $search, 'search_by' => $searchBy, 'sort_by' => $sortBy, 'sort' => $sort, 'per_page' => $perPage]))
->additional(['status' => 200]);
}
/**
* Store a newly created resource in storage.
*
* @param StoreWebsiteRequest $request
* @return WebsiteResource|IlluminateHttpJsonResponse
*/
public function store(StoreWebsiteRequest $request)
{
$created = $this->websiteStore($request);
if ($created) {
return WebsiteResource::make($created);
}
return response()->json([
'message' => __('Resource not found.'),
'status' => 404
], 404);
}
/**
* Display the specified resource.
*
* @param Request $request
* @param $id
* @return WebsiteResource|IlluminateHttpJsonResponse
*/
public function show(Request $request, $id)
{
$link = Website::where([['id', '=', $id], ['user_id', $request->user()->id]])->first();
if ($link) {
return WebsiteResource::make($link);
}
return response()->json([
'message' => __('Resource not found.'),
'status' => 404
], 404);
}
/**
* Update the specified resource in storage.
*
* @param UpdateWebsiteRequest $request
* @param int $id
* @return WebsiteResource
*/
public function update(UpdateWebsiteRequest $request, $id)
{
$website = Website::where([['id', '=', $id], ['user_id', '=', $request->user()->id]])->firstOrFail();
$updated = $this->websiteUpdate($request, $website);
if ($updated) {
return WebsiteResource::make($updated);
}
return response()->json(404, [
'message' => __('Resource not found.'),
'status' => 404
]);
}
/**
* Remove the specified resource from storage.
*
* @param Request $request
* @param $id
* @return IlluminateHttpJsonResponse
* @throws Exception
*/
public function destroy(Request $request, $id)
{
$website = Website::where([['id', '=', $id], ['user_id', '=', $request->user()->id]])->first();
if ($website) {
$website->delete();
return response()->json([
'id' => $website->id,
'object' => 'website',
'deleted' => true,
'status' => 200
], 200);
}
return response()->json([
'message' => __('Resource not found.'),
'status' => 404
], 404);
}
}