Вход Регистрация
Файл: 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);
    }
}
Онлайн: 1
Реклама