<?php declare(strict_types=1);

namespace App\Http\Controllers\Private;

use App\Contracts\ServiceResultError as ServiceResultErrorContract;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller as BaseController;

class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    final protected function errors(ServiceResultErrorContract $result): never
    {
        if ($result->getCode() === Response::HTTP_UNPROCESSABLE_ENTITY) {
            redirect()->back()->withInput()->withErrors($result->getErrors());
            exit;
        }
        abort($result->getCode(), $result->getMessage());
    }
}