%PDF- %PDF-
| Direktori : /home/graphicd/public_html/vebto/app/Http/Controllers/ |
| Current File : /home/graphicd/public_html/vebto/app/Http/Controllers/ShareableLinksController.php |
<?php
namespace App\Http\Controllers;
use App\FileEntry;
use App\Http\Requests\CrupdateShareableLinkRequest;
use App\Services\Links\CrupdateShareableLink;
use App\Services\Links\GetShareableLink;
use App\ShareableLink;
use Common\Core\BaseController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class ShareableLinksController extends BaseController
{
/**
* @var Request
*/
private $request;
/**
* @var ShareableLink
*/
private $link;
/**
* @var FileEntry
*/
private $entry;
public function __construct(Request $request, ShareableLink $link, FileEntry $entry)
{
$this->request = $request;
$this->link = $link;
$this->entry = $entry;
}
/**
* @param int|string $idOrHash
* @return JsonResponse
*/
public function show($idOrHash)
{
$response = app(GetShareableLink::class)
->execute($idOrHash, $this->request->all());
$link = $response['link'];
if ( ! $link || ! $link->entry || $link->entry->trashed()) abort(404);
$this->authorize('show', $link);
return $this->success($response);
}
public function store(int $entryId, CrupdateShareableLinkRequest $request, CrupdateShareableLink $action)
{
$this->authorize('create', ShareableLink::class);
$this->authorize('update', [FileEntry::class, [$entryId]]);
$params = $request->all();
$params['userId'] = $request->user()->id;
$params['entryId'] = $entryId;
$link = $action->execute($params);
return $this->success(['link' => $link]);
}
/**
* @param int $id
* @param CrupdateShareableLinkRequest $request
* @param CrupdateShareableLink $action
*
* @return JsonResponse
*/
public function update($id, CrupdateShareableLinkRequest $request, CrupdateShareableLink $action)
{
$link = $this->link->findOrFail($id);
$this->authorize('update', $link);
$params = $request->all();
$params['userId'] = $request->user()->id;
$action->execute($params, $link);
return $this->success(['link' => $link]);
}
/**
* @param int $id
* @return JsonResponse
*/
public function destroy($id)
{
/**
* @var ShareableLink $link
*/
$link = $this->link->findOrFail($id);
$this->authorize('destroy', $link);
$link->delete();
return $this->success();
}
}