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/qas.sports-crowd.com/app/Http/Controllers/Imports/CreditCoinsImport.php
<?php

namespace App\Http\Controllers\Imports;

use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
use DB;
use App\User;
use App\UserCoin;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use App\Http\Controllers\CreditCoinsController;

class CreditCoinsImport implements ToCollection, WithHeadingRow
{
    public $answer = [];

    public $edit = [
        'creados' => 0,
    ];

    public $is_error;
    public $request;
    /**
     * @param Collection $collection
     */

    public function collection(Collection $rows)
    {
        $is_error = false;
        DB::beginTransaction();
        $cont = 0;

        foreach ($rows as $row) {
            if ($row["email"] && $row["email"] != "") {
                $cont++;
                $email = $row["email"];
                $coins = intval(preg_replace("/[^0-9]/", "", $row["coins"]));

                $user = User::where('email', $email)->where('rol_id', 4)->first();
                if (!$user) {
                    $this->answer[] = [
                        'message' => trans('messages.controller_credit_coins_tag7') . ', linea: ' . ($cont + 1),
                        'state' => false,
                        'line' => $cont
                    ];

                    $is_error = true;
                    continue;
                }

                $userCoin = UserCoin::select('user_coins.*')
                    ->join('users', 'users.id', '=', 'user_coins.user_id')
                    ->where('users.email', $email)
                    ->first();
                if ($userCoin) {
                    $this->answer[] = [
                        'message' => trans('messages.controller_credit_coins_tag8') . ', linea: ' . ($cont + 1),
                        'state' => false,
                        'line' => $cont
                    ];

                    $is_error = true;
                    continue;
                }

                if ($coins && $user) {
                    $userCoin = UserCoin::create([
                        'all_coins' => $coins,
                        'credit_coins' => $coins,
                        'user_id' => $user->id
                    ]);
                    $reference = 'NEW_CREDIT_' .  time();
                    $sign = 1;
                    $detail = 'Nuevo crédito monedas registrado, total crédito monedas: ' . abs($coins);
                    $creditCoinsController = new CreditCoinsController();
                    $creditCoinsController->recordTransaction($creditCoinsController->mapPanelTransactionData($userCoin, $coins, $reference, $sign, $detail));

                    $this->edit['creados'] += 1;
                }
            }
        }

        if ($is_error || sizeof($rows) <= 0) {
            DB::rollback();
            return;
        } else {
            DB::commit();
        }
    }
}