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

declare(strict_types=1);

namespace 
AppHttpControllers;

use 
AppClassesValidator;
use 
AppModelsTransfer;
use 
AppModelsUser;
use 
IlluminateHttpRedirectResponse;
use 
IlluminateHttpRequest;
use 
IlluminateSupportFacadesDB;
use 
IlluminateViewView;

class 
TransferController extends Controller
{
    public ?
User $user;

    
/**
     * Конструктор
     */
    
public function __construct()
    {
        
$this->middleware('check.user');

        
$this->middleware(function ($request$next) {
            
$login $request->input('user');
            
$this->user getUserByLogin($login);

            return 
$next($request);
        });
    }

    
/**
     * Главная страница
     */
    
public function index(): View
    
{
        return 
view('transfers/index', ['user' => $this->user]);
    }

    
/**
     * Перевод денег
     */
    
public function send(Request $requestValidator $validator): RedirectResponse
    
{
        
$money int($request->input('money'));
        
$msg $request->input('msg');

        
$validator
            
->equal($request->input('_token'), csrf_token(), ['msg' => __('validator.token')])
            ->
true($this->user, ['user' => __('validator.user')])
            ->
length($msg0setting('comment_length'), ['msg' => __('validator.comment_long')])
            ->
gte(getUser('point'), setting('sendmoneypoint'), ['money' => __('transfers.transfer_point', ['point' => plural(setting('sendmoneypoint'), setting('scorename'))])])
            ->
gt($money0, ['money' => __('transfers.transfer_wrong_amount')])
            ->
lte($moneygetUser('money'), ['money' => __('transfers.transfer_not_money')]);

        if (
$this->user) {
            
$validator
                
->notEqual($this->user->idgetUser('id'), ['user' => __('transfers.transfer_yourself')])
                ->
false($this->user->isIgnore(getUser()), ['user' => __('ignores.you_are_ignoring')]);
        }

        if (
$validator->isValid()) {
            
DB::transaction(function () use ($money$msg) {
                
getUser()->decrement('money'$money);
                
$this->user->increment('money'$money);

                
$comment $msg ?? __('ignores.not_specified');
                
$text textNotice('transfer', ['login' => getUser('login'), 'money' => plural($moneysetting('moneyname')), 'comment' => $comment]);
                
$this->user->sendMessage(null$text);

                
// Запись логов
                
Transfer::query()->create([
                    
'user_id'      => getUser('id'),
                    
'recipient_id' => $this->user->id,
                    
'text'         => $comment,
                    
'total'        => $money,
                    
'created_at'   => SITETIME,
                ]);
            });

            
setFlash('success'__('transfers.transfer_success_completed'));
        } else {
            
setInput($request->all());
            
setFlash('danger'$validator->getErrors());
        }

        return 
redirect('transfers');
    }
}
Онлайн: 1
Реклама