%PDF- %GIF98; %PNG;
Server : ApacheSystem : Linux host.digitalbabaji.in 4.18.0-513.11.1.el8_9.x86_64 #1 SMP Wed Jan 17 02:00:40 EST 2024 x86_64 User : addictionfreeind ( 1003) PHP Version : 7.2.34 Disable Function : exec,passthru,shell_exec,system Directory : /home/addictionfreeind/www/admin1/app/Traits/ |
Upload File : |
<?php
namespace App\Traits;
use App\Helper\Files;
use Illuminate\Support\Facades\Bus;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Support\Facades\Artisan;
use Maatwebsite\Excel\HeadingRowImport;
use Maatwebsite\Excel\Imports\HeadingRowFormatter;
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 = [];
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;
}
}