File: /home/imensosw/www/mpl.imenso.co/app/Http/Controllers/VenueImpersonationAuthorisationController.php
<?php
namespace App\Http\Controllers;
use App\Http\Requests\VenueImpersonation\VenueAuthoriseImpersonationRequest;
use App\Http\Requests\VenueImpersonation\VenueDeauthoriseImpersonationRequest;
use App\Http\Requests\VenueImpersonation\VenueStoreImpersonationRequest;
use App\Models\Notification;
use App\Models\User;
class VenueImpersonationAuthorisationController extends Controller
{
public function store(VenueStoreImpersonationRequest $request)
{
$requestee = $request->user();
$requestor = User::where('id', $request->input('requestee_id'))->firstOrFail();
$requestee->sentImpersonationRequests()->attach([$requestor->id => [
'requestee_type' => $requestor->getMorphClass(),
]]);
Notification::addNew([
'type_id' => 410,
'content' => '<div class="image-holder" style="background-image: url(\'{!App\Models\User::' . $requestee->id . '::profileImageSrc()!}\')"></div><div class="text"><a style="font-weight: normal;" href="/multiple-venue-access"><span style="font-weight: bold;">{!App\Models\User::' . $requestee->id . '::getName()!}</span> has requested access to your venue!</a></div>',
'user_id' => $requestor->id,
]);
return redirect()->back();
}
public function authorise(VenueAuthoriseImpersonationRequest $request)
{
$requestee = $request->user();
$requestor = User::where('id', $request->input('requestor_id'))->firstOrFail();
$requestee->receivedImpersonationRequests()
->updateExistingPivot($requestor->id, [
'approved_at' => now(),
]);
return redirect()->back();
}
public function revoke(VenueDeauthoriseImpersonationRequest $request)
{
$requestee = $request->user();
$requestor = User::where('id', $request->input('requestor_id'))->firstOrFail();
$requestee->receivedImpersonationRequests()->detach([$requestor->id]);
return redirect()->back();
}
}