Размер файла: 1.99Kb
- <?php
-
- declare(strict_types=1);
-
- namespace App\Http\Controllers;
-
- use App\Http\Requests\Invitation\StoreRequest;
- use App\Models\Invite;
- use App\Models\User;
- use App\Services\InviteService;
- use Illuminate\Http\RedirectResponse;
- use Illuminate\Http\Request;
- use Illuminate\Support\Str;
- use Illuminate\View\View;
-
- 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'));
- }
- }
-
- /**
- * Главная страница
- *
- * @param Request $request
- *
- * @return View
- */
- 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'));
- }
-
- /**
- * Создание ключей
- *
- * @param StoreRequest $request
- *
- * @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'));
- }
- }