Вход Регистрация
Файл: 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'));
    }
}
Онлайн: 0
Реклама