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

namespace AppHttpControllers;

use 
AppHttpRequestsActionValidateRequest;
use 
AppHttpRequestsCardValidationRequest;
use 
AppHttpRequestsEditCardValidationRequest;
use 
AppModelsBlockedIPModel;
use 
AppModelsCardModel;
use 
AppModelsArenaBattleModel;
use 
AppModelsArenaCardsModel;
use 
AppModelsCardUserModel;
use 
AppModelsChatModel;
use 
AppModelsMailDialogModel;
use 
AppModelsMailListModel;
use 
AppModelsMailMessageModel;
use 
AppModelsMarketCardModel;
use 
AppModelsNotificationModel;
use 
IlluminateHttpRequest;
use 
Auth;
use 
DB;
use 
AppModelsSupportTicketModel;
use 
AppModelsUserModel;
use 
AppModelsForumTopicModel;
use 
AppModelsForumPostModel;
use 
AppModelsGameSettingModel;
use 
AppRulesBlockRule;
use 
URL;
use 
Cache;

class 
AdminController extends Controller
{
    public function 
__construct()
    {
        
$this->game_settings = ['mail_enable''chat_enable''register_enable'];
    }

    public function 
access()
    {
        return 
view('admin.access');
    }

    public function 
accessConfirm(Request $request)
    {
        if(
session('admin') == 1) return redirect('/admin');
        
$messages = [
            
'password.required' => 'Введите пароль',
            
'password.string' => 'Неверный формат!',
            
'password.in' => 'Неверный пароль'
        
];
        
$this->validate($request, [
            
'password' => 'required|string|in:'.config('game.admin')
        ], 
$messages);
        
session(['admin' => 1]);
        return 
redirect(session('referer_url'));
    }

    public function 
index()
    {
        
$mailStatus GameSettingModel::where('key''mail_enable')->first()->value;
        
$chatStatus GameSettingModel::where('key''chat_enable')->first()->value;
        
$registerStatus GameSettingModel::where('key''register_enable')->first()->value;
        return 
view('admin.index', ['mail' => $mailStatus'chat' => $chatStatus'register' => $registerStatus]);
    }

    public function 
supportTickets()
    {
        return 
view('admin.support.index');
    }

    public function 
supportTicketsType($type)
    {
        if (!
in_array($type, [1234])) return back();
        
$tickets SupportTicketModel::where('type'$type)->orderBy('updated_at''DESC')->paginate(10);
        return 
view('admin.support.tickets', ["tickets" => $tickets]);
    }

    public function 
addNews()
    {
        return 
view('admin.addNews');
    }

    public function 
addNewsConfirm(Request $request)
    {
        
$messages = [
            
'name.required' => 'Введите название темы!',
            
'text.required' => 'Введите текст!',
        ];
        
$this->validate($request, [
            
'name' => 'required|string',
            
'text' => 'required|string'
        
], $messages);
        
$topic ForumTopicModel::create([
            
'author' => Auth::user()->id,
            
'name' => $request->name,
            
'category' => 1,
            
'status' => $request->close == 'on' 'close' 'open'
        
]);
        
ForumPostModel::create([
            
'topic' => $topic->id,
            
'author' => Auth::user()->id,
            
'text' => $request->text,
            
'type' => 'starter'
        
]);
        
$users UserModel::get();
        
$notify '<center>
        '
.$topic->name.'<br>
        Текст: '
.mb_strimwidth($request->text050'...').'<br>
        <a href="/forum/top'
.$topic->id.'">Перейти</a>
        </center>'
;
        foreach(
$users as $us)
        {
            
NotificationModel::create([
                
'user' => $us->id,
                
'notification' => $notify,
                
'read' => 0
            
]);
        }
        return 
redirect('/forum/top' $topic->id)->with('ok''Новость добавлена!');
    }

    public function 
changeSettingStatus($setting)
    {
        
$setting .= '_enable';
        if (!
in_array($setting$this->game_settings)) return back();
        
$settingInfo GameSettingModel::where('key'$setting)->first();
        if (
$settingInfo->value == 0$settingInfo->value 1;
        else 
$settingInfo->value 0;
        
$settingInfo->save();
        return 
back()->with('ok''Настройка сохранена!');
    }

    public function 
blockUser($id null)
    {
        if(
$id != null)
        {
            
$info UserModel::findOrFail($id);
            return 
view('admin.blockUser', ['user' => 1'info' => $info]);
        }
        return 
view('admin.blockUser', ['user' => 0]);
    }

    public function 
blockUserConfirm(Request $request)
    {
        
$messages = [
            
'login.required' => 'Введите имя игрока!',
            
'login.string' => 'Ошибка!',
            
'login.exists' => 'Игрока не существует!',
            
'login.not_in' => 'Нельзя заблокировать самого себя!',
            
'type.required' => 'Укажите тип блокировки!',
            
'type.string' => 'Ошибка!',
            
'type.in' => 'Неверный тип блокировки!',
            
'time.required' => 'Введите время блокировки!',
            
'time.integer' => 'Неверный формат времени блокировки!',
            
'_time.required' => 'Ошибка!',
            
'_time.integer' => 'Ошибка!',
            
'_time.in' => 'Ошибка!',
            
'reason.required' => 'Введите причину блокировки!',
            
'reason.string' => 'Ошибка!',
        ];
        
$this->validate($request, [
            
'login' => ['required''string''exists:users,login', new BlockRule'not_in:' Auth::user()->login],
            
'type' => 'required|string|in:ban,mute',
            
'time' => 'required|integer',
            
'_time' => 'required|integer|in:1,60,3600,86400',
            
'reason' => 'required|string'
        
], $messages);
        
$user UserModel::where('login'$request->login)->first();
        
$user->block_type $request->type;
        
$user->block_time time() + ($request->time $request->_time);
        
$user->block_reason $request->reason;
        
$user->save();
        return 
redirect('/admin')->with('ok''Игрок заблокирован!');
    }

    public function 
gift()
    {
        
$cards CardModel::all();
        return 
view('admin.gift', ['cards' => $cards]);
    }

    public function 
giftConfirm(Request $request)
    {
        
$messages = [
            
'id.integer' => 'Неверный формат ID!',
            
'id.required' => 'Введите ID игрока!',
            
'valmers.integer' => 'Неверный формат кол-ва вальмер!',
            
'valmers.required' => 'Введите кол-во вальмер!',
            
'diamonds.integer' => 'Неверный формат кол-ва алмазов!',
            
'diamonds.required' => 'Введите кол-во алмазов!',
            
'exp.integer' => 'Неверный формат кол-ва монет!',
            
'exp.required' => 'Введите кол-во монет!',
            
'card.integer' => 'Неверный формат карты!',
            
'card.exists' => 'Карты не существует!'
        
];
        
$this->validate($request, [
            
'id' => 'integer|required',
            
'valmers' => 'integer|required',
            
'diamonds' => 'integer|required',
            
'exp' => 'integer|required',
            
'card' => 'integer|exists:cards,id'
        
], $messages);
        
$gift = [];
        if (
$request->valmers 0$gift['valmers'] = $request->valmers;
        if (
$request->diamonds 0$gift['diamonds'] = $request->diamonds;
        if (
$request->exp 0$gift['exp'] = $request->exp;
        if (
$request->card 0$gift['card'] = $request->card;
        if (
$request->id <= 0DB::table('users')->update(['gift' => json_encode($gift)]);
        else {
            
$user UserModel::find($request->id);
            if(
$user == null) return back()->with('error''Игрок не найден!');
            
$user->gift json_encode($gift);
            
$user->save();
        }
        return 
redirect('/admin')->with('ok''Подарок выдан!');
    }

    public function 
deleteUser()
    {
        return 
view('admin.deleteUser');
    }

    public function 
deleteUserConfirm(Request $request)
    {
        
$messages = [
            
'id.required' => 'Введите ID удаляемого игрока!',
            
'id.integer' => 'Неверный формат ID!',
            
'id.exists' => 'Игрока с данным ID не существует!',
            
'id.not_in' => 'Нельзя удалить самого себя!',
            
'agree.required' => 'Подтвердите удаление!'
        
];
        
$this->validate($request, [
            
'id' => 'required|integer|exists:users,id|not_in:' Auth::user()->id,
            
'agree' => 'required'
        
], $messages);
        
CardUserModel::where('user'$request->id)->delete();
        
ChatModel::where('user'$request->id)->delete();
        
NotificationModel::where('user'$request->id)->delete();
        
MarketCardModel::where('user'$request->id)->delete();
        
$mailDialogs MailDialogModel::where('user1'$request->id)->orWhere('user2'$request->id)->get();
        foreach (
$mailDialogs as $mD) {
            
MailMessageModel::where('dialog'$mD->id)->delete();
            
MailDialogModel::destroy($mD->id);
        }
        
$topics ForumTopicModel::where('author'$request->id)->get();
        foreach (
$topics as $t) {
            
ForumPostModel::where('topic'$t->id)->delete();
            
ForumTopicModel::destroy($t->id);
        }
        
MailListModel::where('user1'$request->id)->orWhere('user2'$request->id)->delete();
        
$arenaBattles ArenaBattleModel::where('user1'$request->id)->orWhere('user2'$request->id)->get();
        foreach (
$arenaBattles as $aB) {
            
ArenaCardsModel::where('battle'$aB->id)->delete();
            
ArenaBattleModel::destroy($aB->id);
        }
        
UserModel::destroy($request->id);
        return 
redirect('/admin')->with('ok''Игрок удалён!');
    }

    public function 
addCard()
    {
        return 
view('admin.card.add');
    }

    public function 
addCardConfirm(CardValidationRequest $request)
    {
        
$image $request->image;
        
$imageName 'card'.time();
        
$image->move(public_path('/images/cards'), $imageName.'.jpg');
        
CardModel::create([
            
'name' => $request->name,
            
'level' => $request->level,
            
'type' => $request->type,
            
'min_attack' => $request->min_attack,
            
'max_attack' => $request->max_attack,
            
'health' => $request->health,
            
'armor' => $request->armor,
            
'attack_count' => $request->attack_count,
            
'cooldown' => $request->cooldown,
            
'learn_time' => $request->learn_time,
            
'open_cost' => $request->open_cost,
            
'buyout_cost' => $request->buyout_cost,
            
'image' => $imageName,
        ]);
        return 
redirect('/admin/card/list')->with('ok''Карта добавлена!');
    }

    public function 
listCard()
    {
        
$cards CardModel::orderBy('level''ASC')->paginate(10);
        return 
view('admin.card.list', ['cards' => $cards]);
    }

    public function 
editCard($id)
    {
        
$card CardModel::findOrFail($id);
        return 
view('admin.card.edit', ['card' => $card]);
    }

    public function 
editCardConfirm($idEditCardValidationRequest $request)
    {
        
$card CardModel::findOrFail($id);
        
$card->name $request->name;
        
$card->level $request->level;
        
$card->type $request->type;
        
$card->min_attack $request->min_attack;
        
$card->max_attack $request->max_attack;
        
$card->health $request->health;
        
$card->armor $request->armor;
        
$card->attack_count $request->attack_count;
        
$card->cooldown $request->cooldown;
        
$card->learn_time $request->learn_time;
        
$card->open_cost $request->open_cost;
        
$card->buyout_cost $request->buyout_cost;
        
$card->save();
        return 
redirect('/admin/card/list')->with('ok''Карта изменена!');
    }

    public function 
deleteCard($id)
    {
        
$card CardModel::findOrFail($id);
        
unlink(public_path('/images/cards/').$card->image.'.jpg');
        
$card->delete();
        return 
redirect('/admin/card/list')->with('ok''Карта удалена!');
    }

    public function 
action()
    {
        
$cards CardModel::all();
        return 
view('admin.action', ['cards' => $cards]);
    }

    public function 
actionConfirm($typeActionValidateRequest $request)
    {
        
$result = [
            
'action' => $type,
            
'time' => time()+$request->time*3600
        
];
        if(
$type == 1$result['percent'] = $request->percent;
        elseif(
$type == 2)
        {
            
$result['card'] = $request->card;
            
$result['summ'] = $request->summ;
        }
        elseif(
$type == 3)
        {
            
$result['percent'] = $request->percent;
            
$result['summ'] = $request->summ;
        }
        elseif(
$type == 4$result['percent'] = $request->percent;
        
GameSettingModel::where('key''action')->update(['value' => json_encode($result)]);
        
DB::table('users')->update(['action_used' => 0]);
        return 
redirect('/admin')->with('ok''Акция включена!');
    }

    public function 
referalTournament()
    {
        
$cards CardModel::all();
        return 
view('admin.referal', ['cards' => $cards]);
    }

    public function 
referalTournamentConfirm(Request $request)
    {
        
$messages = [
            
'time.integer' => 'Неверный формат времени!',
            
'time.required' => 'Введите время конкурса!',
            
'valmers.integer' => 'Неверный формат кол-ва вальмер!',
            
'valmers.required' => 'Введите кол-во вальмер!',
            
'exp.integer' => 'Неверный формат кол-ва монет!',
            
'exp.required' => 'Введите кол-во монет!',
            
'card.integer' => 'Неверный формат карты!',
            
'card.exists' => 'Карты не существует!'
        
];
        
$this->validate($request, [
            
'time' => 'integer|required',
            
'valmers' => 'integer|required',
            
'exp' => 'integer|required',
            
'card' => 'integer|exists:cards,id'
        
], $messages);
        
$tourn = [];
        if (
$request->valmers 0$tourn['valmers'] = $request->valmers;
        if (
$request->exp 0$tourn['exp'] = $request->exp;
        if (
$request->card 0$tourn['card'] = $request->card;
        
$tourn['time'] = time()+$request->time*86400;
        
GameSettingModel::where('key''referal_tournament')->update(['value' => json_encode($tourn)]);
        return 
redirect('/admin')->with('ok''Конкурс начат!');
    }

    public function 
blockList()
    {
        
$blockedUsers UserModel::where('block_time''>='time())->paginate(10);
        return 
view('admin.blockList', ['blocked' => $blockedUsers]);
    }

    public function 
delBlock($id)
    {
        
$user UserModel::findOrFail($id);
        
$user->block_type '';
        
$user->block_time 0;
        
$user->block_reason '';
        
$user->save();
        return 
back()->with('ok''Блокировка снята!');
    }

    public function 
editBlock($id)
    {
        
$user UserModel::findOrFail($id);
        return 
view('admin.blockEdit', ['user' => $user]);
    }

    public function 
editBlockConfirm($idRequest $request)
    {
        
$messages = [
            
'type.required' => 'Укажите тип блокировки!',
            
'type.string' => 'Ошибка!',
            
'type.in' => 'Неверный тип блокировки!',
            
'time.required' => 'Введите время блокировки!',
            
'time.integer' => 'Неверный формат времени блокировки!',
            
'_time.required' => 'Ошибка!',
            
'_time.integer' => 'Ошибка!',
            
'_time.in' => 'Ошибка!',
            
'reason.required' => 'Введите причину блокировки!',
            
'reason.string' => 'Ошибка!',
        ];
        
$this->validate($request, [
            
'type' => 'required|string|in:ban,mute',
            
'time' => 'required|integer|min:0',
            
'_time' => 'required|integer|in:1,60,3600,86400',
            
'reason' => 'required|string'
        
], $messages);
        
$user UserModel::findOrFail($id);
        
$user->block_type $request->type;
        
$user->block_time += ($request->time $request->_time);
        
$user->block_reason $request->reason;
        
$user->save();
        return 
redirect('/admin')->with('ok''Блокировка изменена!');
    }

    public function 
blockIP()
    {
        return 
view('admin.blockIP');
    }

    public function 
blockIPConfirm(Request $request)
    {
        
$messages = [
            
'ip.required' => 'Введите IP-адрес!',
            
'ip.ip' => 'Некорректный формат IP-адреса!',
            
'ip.unique' => 'IP-адрес уже заблокирован!'
        
];
        
$this->validate($request, [
            
'ip' => 'required|ip|unique:blocked_ip,ip'
        
], $messages);
        if(
$request->input('ip') == $request->ip()) return back()->with('error''Нельзя заблокировать себя!');
        
BlockedIPModel::create([
            
'ip' => $request->input('ip')
        ]);
        return 
redirect('/admin')->with('ok''IP-адрес заблокирован!');
    }
    
    public function 
authorizeOtherAccount()
    {
        return 
view('admin.authorize');
    }

    public function 
authorizeOtherAccountConfirm(Request $request)
    {
        
$messages = [
            
'id.required' => 'Введите ID игрока!',
            
'id.exists' => 'Игрок не найден!',
            
'id.integer' => 'Неверный формат!'
        
];
        
$this->validate($request, [
            
'id' => 'required|integer|exists:users,id'
        
], $messages);
        
Cache::put('auth:'.$request->idAuth::user()->id, (time()+86400), 1);
        
Auth::loginUsingId($request->id);
        return 
redirect('/game');
    }

    public function 
returnToAccount()
    {
        
$key 'auth:'.Auth::user()->id;
        if(!
Cache::has($key)) return back();
        
$id Cache::get($key);
        
Auth::loginUsingId($id);
        
Cache::forget($key);
        return 
redirect('/game');
    }
}
Онлайн: 1
Реклама