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

namespace AppHttpControllers;

use 
AppModelsArenaCardsModel;
use 
AppModelsUserModel;
use 
AppServicesServices;
use 
IlluminateHttpRequest;
use 
Auth;
use 
AppModelsCardUserModel;
use 
AppModelsMarketCardModel;
use 
AppRulesSellCardRule;

class 
DeckController extends Controller
{
    public function 
index()
    {
        
$cards CardUserModel::with('getCardInfo')->where('user'Auth::user()->id)->whereIn('status', ['redeemed''selling'])->paginate(10);
        return 
view('game.deck.index', ["cards" => $cards]);
    }

    public function 
card($id)
    {
        
$deck explode(';'Auth::user()->deck);
        
$card CardUserModel::findOrFail($id);
        if(
$card->user != Auth::user()->id) return redirect('/deck')->with('error''Ошибка!');
        return 
view('game.deck.info', ["card" => $card'deck' => $deck]);
    }

    public function 
sellCard($id)
    {
        return 
view('game.deck.sell', ['id' => $id]);
    }

    public function 
sellCardConfirm(Request $request)
    {
        
$messages = [
            
'card.integer' => 'Ошибка!',
            
'card.required' => 'Ошибка!',
            
'cost.integer' => 'Ошибка ввода!',
            
'cost.required' => 'Введите цену!'
        
];
        
$this->validate($request, [
            
'card' => ['integer''required', new SellCardRule],
            
'cost' => 'integer|required'
        
], $messages);
        
$arenaCards ArenaCardsModel::where('card'$request->input('card'))->count();
        if(
$arenaCards 0) return back()->with('error''Невозможно продать карту!');
        
$deck explode(';'Auth::user()->deck);
        if(
in_array($id$deck)) return back()->with('error''Невозможно продать карту!');
        if(
$request->input('card') == Auth::user()->mob_card) return back()->with('error''Невозможно продать карту!');
        
$card CardUserModel::findOrFail($request->input('card'));
        
$card->status 'selling';
        
$card->save();
        
MarketCardModel::create([
            
"user" => Auth::user()->id,
            
"card" => $card->id,
            
"cost" => $request->input('cost')
        ]);
        return 
redirect('/deck')->with('ok''Карта выставлена на продажу!');
    }

    public function 
cancelSell($id)
    {
        
$marketCard MarketCardModel::where('card'$id)->first();
        if(
$marketCard != null && $marketCard->user == Auth::user()->id$marketCard->delete();
        
CardUserModel::findOrFail($id)->update(['status' => 'redeemed']);
        return 
back()->with('ok''Карта снята с продажи!');
    }

    public function 
upgradeCard($id)
    {
        
$card CardUserModel::with('getCardInfo')->findOrFail($id);
        if(
$card->user != Auth::user()->id) return back()->with('error''Ошибка!');
        
$cost Services::getUpgradeData($card->upgrade_level+1'cost');
        
$currency = ($card->getCardInfo->type == 'premium' || $card->getCardInfo->type == 'tutorial-premium') ? 'valmers' 'exp';
        if(
Auth::user()->$currency $cost) return back()->with('error''Недостаточно '.($currency == 'valmers' 'вальмер' 'монет').'!');
        
$card->upgrade_level++;
        
$card->save();
        
$user UserModel::find(Auth::user()->id);
        
$user->$currency -= $cost;
        
$user->save();
        return 
back()->with('ok''Карта улучшена!');
    }

    public function 
destroyCard($id)
    {
        
$card CardUserModel::with('getCardInfo')->findOrFail($id);
        if(
$card->user != Auth::user()->id) return back();
        if(
$card->status != 'redeemed') return back();
        return 
view('game.deck.destroyConfirm', ['card' => $card]);
    }

    public function 
destroyCardConfirm($id)
    {
        
$card CardUserModel::with('getCardInfo')->findOrFail($id);
        
$arenaCards ArenaCardsModel::where('card'$id)->count();
        if(
$arenaCards 0) return back()->with('error''Невозможно разобрать карту!');
        if(
$card->id == Auth::user()->mob_card) return back()->with('error''Невозможно разобрать карту!');
        
$deck explode(';'Auth::user()->deck);
        if(
in_array($id$deck)) return back()->with('error''Невозможно разобрать карту!');
        if(
$card->user != Auth::user()->id) return back();
        if(
$card->status != 'redeemed') return back();
        
$progress $card->getCardInfo->progress+Services::getUpgradeData($card->upgrade_level'progress');
        
$user UserModel::find(Auth::user()->id);
        
$user->progress += $progress;
        
$user->save();
        
$card->delete();
        return 
redirect('/deck')->with('ok''Карта разобрана!');
    }

    public function 
progressUpgrade($id)
    {
        
$card CardUserModel::findOrFail($id);
        if(
$card->user != Auth::user()->id) return back()->with('error''Ошибка!');
        
$cost Services::getUpgradeData($card->upgrade_level+1'progress');
        if(
Auth::user()->progress $cost) return back()->with('error''Недостаточно прогресса!');
        
$user UserModel::find(Auth::user()->id);
        
$user->progress -= $cost;
        
$user->save();
        
$card->upgrade_level++;
        
$card->save();
        return 
back()->with('ok''Карта улучшена!');
    }

    public function 
myDeck()
    {
        
$deck explode(';'Auth::user()->deck);
        
$cards CardUserModel::with('getCardInfo')->whereIn('id'$deck)->get();
        return 
view('game.deck.my', ['cards' => $cards]);
    }

    public function 
inDeck($id)
    {
        
$deck explode(';'Auth::user()->deck);
        
$card CardUserModel::find($id);
        if(
$card->user != Auth::user()->id) return back();
        if(!
in_array(0$deck)) return back()->with('error''В колоде нет места!');
        if(
in_array($id$deck)) return back()->with('error''Карта уже в колоде!');
        if(
$card->status != 'redeemed') return back();
        foreach(
$deck as $key => $value)
        {
            if(
$value == 0)
            {
                
$deck[$key] = $id;
                break;
            }
        }
        
$user UserModel::find(Auth::user()->id);
        
$user->deck implode(';'$deck);
        
$user->save();
        return 
back()->with('ok''Карта установлена в колоду!');
    }

    public function 
outDeck($id)
    {
        
$deck explode(';'Auth::user()->deck);
        
$card CardUserModel::find($id);
        if(
$card->user != Auth::user()->id) return back();
        if(!
in_array($id$deck)) return back()->with('error''Карты нет в колоде!');
        if(
$card->status != 'redeemed') return back();
        foreach(
$deck as $key => $value)
        {
            if(
$value == $id)
            {
                
$deck[$key] = 0;
                break;
            }
        }
        
$user UserModel::find(Auth::user()->id);
        
$user->deck implode(';'$deck);
        
$user->save();
        return 
back()->with('ok''Карта убрана из колоды!');
    }
}
Онлайн: 3
Реклама