Файл: app/Http/Controllers/InvitationController.php
Строк: 67
<?php
declare(strict_types=1);
namespace AppHttpControllers;
use AppHttpRequestsInvitationStoreRequest;
use AppModelsInvite;
use AppModelsUser;
use AppServicesInviteService;
use IlluminateHttpRedirectResponse;
use IlluminateHttpRequest;
use IlluminateSupportStr;
use IlluminateViewView;
class InvitationController extends Controller
{
    public ?User $user;
    /**
     * Конструктор
     */
    public function __construct(private InviteService $inviteService)
    {
        $this->middleware('check.user');
        $this->user = getUser();
        if ($this->user && $this->user->rating < setting('invite_rating')) {
            abort(403, __('invitations.access'));
        }
    }
    /**
     * Главная страница
     */
    public function index(Request $request): View
    {
        $used = $request->input('used') ? 1 : 0;
        $invites = Invite::query()
            ->where('user_id', $this->user->id)
            ->where('used', $used)
            ->orderByDesc('created_at')
            ->with('user', 'inviteUser')
            ->paginate(setting('listinvite'))
            ->appends(['used' => $used]);
        $lastInvite = $this->inviteService->getLastInviteByUserId($this->user->id);
        return view('invitations/index', compact('invites', 'used', 'lastInvite'));
    }
    /**
     * Создание ключей
     *
     *
     * @return RedirectResponse
     */
    public function store(StoreRequest $request)
    {
        $newKeys = [];
        for ($i = 0; $i < setting('invite_count'); $i++) {
            $newKeys[] = [
                'hash'       => Str::random(),
                'user_id'    => $this->user->id,
                'created_at' => SITETIME,
            ];
        }
        Invite::query()->insert($newKeys);
        return redirect('/invitations')->with('success', __('admin.invitations.keys_success_created'));
    }
}