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();
}
}
}