HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/demo.sports-crowd.com/app/Http/Controllers/CoinsController.php
<?php

namespace App\Http\Controllers;

use stdClass;
use Datatables;
use DB;
use App\User;
use App\LealCoin;
use App\LealCoinTransactionDetail;
use App\Rol;
use Illuminate\Http\Request;

class CoinsController extends Controller
{
    public function index()
    {
        $fans = User::where('rol_id', '=', 4)->orderBy('first_name', 'ASC')->get();
        $rols = Rol::all();
        return view('wallet.coins')->with('fans', $fans)->with('rols', $rols);
    }

    public function table()
    {
        $obj = $obj = DB::table('users')
            ->select('users.id', 'users.first_name', 'users.last_name', 'users.email', 'leal_coins.all_coins as all_coins', 'leal_coins.locked as locked')
            ->join('leal_coins', 'leal_coins.user_id', '=', 'users.id')
            ->whereIn('rol_id', [4]);

        return Datatables::of($obj)
            ->addColumn('actions', function ($obj) {
                return '<i class="fa fa-list-alt iconMini" onClick="clickTransactionCancellation(' . $obj->id . ')" name="cancellation" data-id="' . $obj->id . '"  title="Movimientos"></i>';/*'<i class="fa fa-eye iconMini" onClick="clickCoinDetail(' . $obj->id . ')" name="detail" data-id="' . $obj->id . '"  title="Detalle Credito"></i>
                    <i class="fa fa-pencil iconMini" onClick="clickUpdateCoins(' . $obj->id . ')" name="update" data-id="' . $obj->id . '"  title="Actualizar monedas"></i>
                    <i class="fa fa-list-alt iconMini" onClick="clickTransactionCancellation(' . $obj->id . ')" name="cancellation" data-id="' . $obj->id . '"  title="Movimientos"></i>';*/
            })
            ->editColumn('all_coins', function ($obj) {
                return $obj->all_coins . ' <i class="fa fa-money"></i>';
            })
            ->editColumn('locked', function ($obj) {
                if ($obj->locked == 1) {
                    return '<div class="switch"><label><div class="checkbox checbox-switch switch-success"> <label> No <input type="checkbox" onChange="chkLocked(' . $obj->id . ')" data-id="' . $obj->id . '" id="checkLocked' . $obj->id . '" name="checkLocked" /> <span></span>Si </label></div> </label> </div>';
                } else {
                    return '<div class="switch"><label> <div class="checkbox checbox-switch switch-success"> <label>   No <input type="checkbox" onChange="chkLocked(' . $obj->id . ')" data-id="' . $obj->id . '" id="checkLocked' . $obj->id . '" name="checkLocked" checked="" /><span></span> Si </label> </div>  </label> </div>';
                }
            })
            ->rawColumns(['actions', 'all_coins', 'locked'])
            ->make(true);
    }

    public function locked(Request $request)
    {
        $id = $request['id'];
        $state = $request['state'];
        $userCoin = LealCoin::where('user_id', $id)->first();
        $userCoin->locked = $state;
        $userCoin->update();
        return array('r' => true, 'm' => trans('messages.controller_credit_coins_tag1'));
    }

    public function infoCoins(Request $request)
    {
        $id = $request['id'];
        $userCoin = LealCoin::where('user_id', $id)->first();
        $transactionsDetail = LealCoinTransactionDetail::where('leal_coins_id', $userCoin->id)->orderBy('created_at', 'DESC')->skip(0)->take(20)->get();
        $userCoin->transactions = $transactionsDetail;
        return array('r' => true, 'u' => $userCoin->toArray());
    }

    public function editCoin($id)
    {
        $fan = User::find($id);
        $info = LealCoin::where('user_id', $fan->id)->first();
        return view('wallet.editCoin')->with('fan', $fan)->with('info', $info);
    }

    public function update($id, $lealResponse)
    {
        $coins = $lealResponse['puntos_totales'];
        $userCoin = LealCoin::find($id);
        $this->recordTransaction($id, $lealResponse);
        $userCoin->all_coins = $coins;
        $userCoin->update();
        return array('r' => true, 'm' => trans('messages.controller_credit_coins_tag1'));
    }

    public function transactions($id)
    {
        $fan = User::find($id);
        $info = LealCoin::where('user_id', $fan->id)->first();
        return view('wallet.transactions')->with('info', $info);
    }

    public function filterTransactions(Request $request)
    {
        $obj = $obj = DB::table('leal_coins_transactions_details')
            ->select('leal_coins_transactions_details.id', 'leal_coins_transactions_details.sign', 'leal_coins_transactions_details.created_at', 'leal_coins_transactions_details.reference', 'leal_coins_transactions_details.coins', 'leal_coins_transactions_details.detail', 'leal_coins_transactions_details.cancelled')
            ->where('leal_coins_id', '=', $request['userCoinId'])
            ->orderBy('created_at', 'DESC');

        return Datatables::of($obj)
            ->addColumn('actions', function ($obj) {
                return ''; //$obj->cancelled == 1 ? '' : '<i class="fa fa-ban iconMini" onClick="clickCancelTransaction(' . $obj->id . ')" name="detail" data-id="' . $obj->id . '"  title="Cancelar Transacción"></i>';
            })
            ->editColumn('sign', function ($obj) {
                return ($obj->cancelled == 1 ? '<i class="fa fa-minus" style="color: orange;">' : ($obj->sign == 1 ? '<i class="fa fa-location-arrow" style="color: green;">' : '<i class="fa fa-location-arrow" style="color: red; transform: rotate(180deg);">'));
            })
            ->editColumn('created_at', function ($obj) {
                return \Carbon\Carbon::parse($obj->created_at)->format('Y-m-d h:i:s A');
            })
            ->editColumn('coins', function ($obj) {
                return '<div style="color:' . ($obj->cancelled == 1 ? 'orange' : ($obj->sign == 1 ? 'green' : 'red')) . ';">' . ($obj->sign == 1 ? '' : '-') . $obj->coins . ' <i class="fa fa-money"></i></div>';
            })
            ->editColumn('cancelled', function ($obj) {
                return $obj->cancelled == 1 ? 'SI' : 'NO';
            })
            ->rawColumns(['actions', 'sign', 'created_at', 'coins', 'cancelled'])
            ->make(true);
    }

    public function cancel(Request $request)
    {
        $id = $request['id'];
        $transaction = LealCoinTransactionDetail::find($id);
        $transaction->cancelled = true;
        $transaction->update();
        $userCoin = LealCoin::find($transaction->leal_coins_id);
        $userCoin->all_coins += ($transaction->coins * $transaction->sign);
        $userCoin->update();
        return array('r' => true, 'm' => trans('messages.controller_credit_coins_tag5'));
    }

    private function mapPanelTransactionData($userCoin, $coins)
    {
        $data = new stdClass();
        $data->reference = ($coins > 0 ? 'RECARGA' : 'DESCUENTO') . '_' .  time();
        $data->coins = abs($coins);
        $data->sign = $coins > 0 ? 1 : -1;
        $data->detail = ($coins > 0 ? 'Recarga' : 'Descuento') . ' comercio monedas desde panel, total comercio monedas: ' . abs($coins);
        $data->leal_coins_id = $userCoin->id;
        return array($data);
    }

    private function mapCreditCheckoutTransactionData($userCoin, $coins, $ticketPayment)
    {
        $data = new stdClass();
        $data->reference = $ticketPayment->payment_reference;
        $data->coins = abs($coins);
        $data->sign = -1;
        $data->detail = $ticketPayment->comment_purchase_log ? $ticketPayment->comment_purchase_log : 'Compra realizada en App con credito monedas';
        $data->leal_coins_id = $userCoin->id;
        return array($data);
    }

    private function recordTransaction($id, $lealResponse)
    {
        $transactionsDetail = new LealCoinTransactionDetail();
        $transactionsDetail->reference = $lealResponse['codigo_transaccion']['id'];
        $transactionsDetail->coins = $lealResponse['puntos_usados'];
        $transactionsDetail->sign = -1;
        $transactionsDetail->detail = $lealResponse['message'];
        $transactionsDetail->leal_coins_id = $id;
        $transactionsDetail->cancelled = false;
        $transactionsDetail->invoice = $lealResponse['codigo_transaccion']['codigo_transaccion'];
        $transactionsDetail->save();
    }

    private function getFanCoins()
    {
        $userCoin = LealCoin::where('user_id', Auth::user()->id)->first();
        if ($userCoin) {
            $transactionsDetail = LealCoinTransactionDetail::where('leal_coins_id', $userCoin->id)->orderBy('created_at', 'DESC')->skip(0)->take(20)->get();
            $userCoin->transactions = $transactionsDetail;
            return array($userCoin);
        }
        return array();
    }

    private function generatePurchaseTickets($paymentTicket)
    {
        $tickets = new TicketsController();
        $tickets->generateTickets($paymentTicket->ticket_user_blocks, $paymentTicket->id);
        $paymentTicket->payment_state = 'CONFIRMED';
        $paymentTicket->payment_comment = 'Compra realizada con credito del hincha';
        $paymentTicket->update();
    }
}