File "NumberGuess.php"

Full Path: /home/trinadezambia/public_html/gambling/app/Games/NumberGuess.php
File size: 2.8 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace App\Games;

use App\Constants\Status;
use App\Models\Game as GameModel;
use App\Models\GuessBonus;
use Illuminate\Support\Facades\Crypt;

class NumberGuess extends Game {
    protected $alias                  = 'number_guess';
    protected $hasCustomCompleteLogic = true;
    protected $extraEndValidationRule = [
        'number' => 'required|integer|between:0,100',
    ];
    protected function gameResult() {
        $winLossData['result'] = Crypt::encrypt(mt_rand(1, 100));
        return $winLossData;
    }

    protected function customCompleteLogic($gameLog) {
        if ($gameLog->user_select != null) {
            $userSelect = json_decode($gameLog->user_select);
            array_push($userSelect, $this->request->number);
        } else {
            $userSelect[] = $this->request->number;
        }
        $game  = GameModel::find($gameLog->game_id);
        $data  = GuessBonus::where('alias', $game->alias)->get();
        $count = $data->count();

        if ($gameLog->status == 1) {
            $res['gameSt']  = 1;
            $res['message'] = 'Time Over';
            return ['should_return' => true, 'data' => $res];
        }

        $gameLog->try         = $gameLog->try + 1;
        $gameLog->user_select = json_encode($userSelect);
        if ($gameLog->try >= $count) {
            $gameLog->status = Status::ENABLE;
        }
        $gameLog->save();

        $bonus  = GuessBonus::where('alias', $game->alias)->where('chance', $gameLog->try)->first()->percent;
        $amount = $gameLog->invest * $bonus / 100;

        $result = $gameLog->result;
        if ($this->request->number < $result) {
            $mes['message'] = 'The Number is short';
            $mes['type']    = 0;
        }

        if ($this->request->number > $result) {
            $mes['message'] = 'The Number is high';
            $mes['type']    = 1;
        }

        if ($gameLog->status == 1) {
            $mes['gameSt']     = 1;
            $mes['message']    = 'The Number was ' . $result;
            $mes['win_status'] = 0;
            $mes['result']     = $result;
        } else {
            $nextBonus   = GuessBonus::where('alias', $game->alias)->where('chance', $gameLog->try + 1)->first();
            $mes['data'] = $nextBonus->percent . '%';
        }

        if ($this->request->number == $result) {
            $gameLog->win_status = Status::WIN;
            $gameLog->status     = Status::ENABLE;
            $gameLog->win_amo    = $amount;
            $gameLog->result     = $result;
            $gameLog->save();

            $mes['gameSt']            = 1;
            $mes['win_status']        = 1;
            $this->extraResponseOnEnd = array_merge($this->extraResponseOnEnd, $mes);
            return ['should_return' => false];
        }
        return ['should_return' => true, 'data' => $mes];
    }
}