Вход Регистрация
Файл: app/Http/Controllers/Admin/InvitationController.php
Строк: 172
<?php

declare(strict_types=1);

namespace 
AppHttpControllersAdmin;

use 
AppClassesValidator;
use 
AppModelsInvite;
use 
AppModelsUser;
use 
IlluminateHttpRedirectResponse;
use 
IlluminateHttpRequest;
use 
IlluminateSupportStr;
use 
IlluminateViewView;

class 
InvitationController extends AdminController
{
    
/**
     * Главная страница
     */
    
public function index(Request $request): View
    
{
        
$used $request->input('used') ? 0;

        
$invites Invite::query()
            ->
where('used'$used)
            ->
orderByDesc($used 'used_at' 'created_at')
            ->
with('user''inviteUser')
            ->
paginate(setting('listinvite'))
            ->
appends(['used' => $used]);

        return 
view('admin/invitations/index'compact('invites''used'));
    }

    
/**
     * Создание ключей
     *
     *
     * @return View|RedirectResponse
     */
    
public function create(Request $requestValidator $validator)
    {
        if (
$request->isMethod('post')) {
            
$keys int($request->input('keys'));

            
$validator->equal($request->input('_token'), csrf_token(), __('validator.token'))
                ->
notEmpty($keys, ['keys' => __('admin.invitations.keys_not_amount')]);

            if (
$validator->isValid()) {
                
$newKeys = [];

                for (
$i 0$i $keys$i++) {
                    
$newKeys[] = [
                        
'hash'       => Str::random(),
                        
'user_id'    => getUser('id'),
                        
'created_at' => SITETIME,
                    ];
                }

                
Invite::query()->insert($newKeys);

                
setFlash('success'__('admin.invitations.keys_success_created'));

                return 
redirect('admin/invitations');
            }

            
setInput($request->all());
            
setFlash('danger'$validator->getErrors());
        }

        
$listKeys = [12345101520304050];

        return 
view('admin/invitations/create'compact('listKeys'));
    }

    
/**
     * Отправка ключей пользователю
     */
    
public function send(Request $requestValidator $validator): RedirectResponse
    
{
        
$userkeys int($request->input('userkeys'));

        
/* @var User $user */
        
$user getUserByLogin($request->input('user'));

        
$validator->equal($request->input('_token'), csrf_token(), __('validator.token'))
            ->
notEmpty($user, ['user' => __('validator.user')])
            ->
notEmpty($userkeys, ['userkeys' => __('admin.invitations.keys_not_amount')]);

        if (
$validator->isValid()) {
            
$newKeys = [];
            
$listKeys = [];

            for (
$i 0$i $userkeys$i++) {
                
$key Str::random();

                
$listKeys[] = $key;

                
$newKeys[] = [
                    
'hash'       => $key,
                    
'user_id'    => $user->id,
                    
'created_at' => SITETIME,
                ];
            }

            
Invite::query()->insert($newKeys);

            
$text textNotice('invite', ['key' => implode(', '$listKeys)]);
            
$user->sendMessage(null$text);

            
setFlash('success'__('admin.invitations.keys_success_sent'));

            return 
redirect('admin/invitations');
        }

        
setInput($request->all());
        
setFlash('danger'$validator->getErrors());

        return 
redirect('admin/invitations/create');
    }

    
/**
     * Отправка ключей активным пользователям
     */
    
public function mail(Request $requestValidator $validator): RedirectResponse
    
{
        
$validator->equal($request->input('_token'), csrf_token(), __('validator.token'))
            ->
true(isAdmin(User::BOSS), __('main.page_only_owner'));

        
$users User::query()->where('updated_at''>'strtotime('-1 week'SITETIME))->get();

        
$users $users->filter(static function ($value$key) {
            return 
$value->id !== getUser('id');
        });

        
$validator->false($users->isEmpty(), __('admin.invitations.keys_empty_recipients'));

        if (
$validator->isValid()) {
            
/** @var User $user */
            
foreach ($users as $user) {
                
$key Str::random(mt_rand(1215));

                
Invite::query()->create([
                    
'hash'       => $key,
                    
'user_id'    => $user->id,
                    
'created_at' => SITETIME,
                ]);

                
$text textNotice('invite'compact('key'));
                
$user->sendMessage(null$text);
            }

            
setFlash('success'__('admin.invitations.keys_success_sent') . ' (' $users->count() . ')');

            return 
redirect('admin/invitations');
        }

        
setInput($request->all());
        
setFlash('danger'$validator->getErrors());

        return 
redirect('admin/invitations/create');
    }

    
/**
     * Удаление ключей
     */
    
public function delete(Request $requestValidator $validator): RedirectResponse
    
{
        
$page int($request->input('page'1));
        
$del intar($request->input('del'));
        
$used $request->input('used') ? 0;

        
$validator->equal($request->input('_token'), csrf_token(), __('validator.token'))
            ->
true($del__('validator.deletion'));

        if (
$validator->isValid()) {
            
Invite::query()->whereIn('id'$del)->delete();

            
setFlash('success'__('admin.invitations.keys_success_deleted'));
        } else {
            
setFlash('danger'$validator->getErrors());
        }

        return 
redirect('admin/invitations?used=' $used '&page=' $page);
    }
}
Онлайн: 1
Реклама