Вход Регистрация
Файл: 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', 'Карта убрана из колоды!');
    }
}
Онлайн: 2
Реклама