-
app/Http/Controllers/OfficeController.php
Open in GitHubuse App\Http\Resources\OfficeResource; use App\Models\Office; use App\Models\User; use App\Models\Validators\OfficeValidator; use Illuminate\Http\Resources\Json\JsonResource; use App\Notifications\OfficePendingApproval; use Illuminate\Http\Response; use Illuminate\Support\Facades\Notification; class OfficeController extends Controller { // public function create(): JsonResource { abort_unless(auth()->user()->tokenCan('office.create'), Response::HTTP_FORBIDDEN ); $attributes = (new OfficeValidator())->validate( $office = new Office(), request()->all() ); $attributes['approval_status'] = Office::APPROVAL_PENDING; $attributes['user_id'] = auth()->id(); $office = DB::transaction(function () use ($office, $attributes) { $office->fill( Arr::except($attributes, ['tags']) )->save(); if (isset($attributes['tags'])) { $office->tags()->attach($attributes['tags']); } return $office; }); Notification::send(User::where('is_admin', true)->get(), new OfficePendingApproval($office)); return OfficeResource::make( $office->load(['images', 'tags', 'user']) ); } // }