ok
Direktori : /home2/selectio/public_html/fms-worksuite/app/Traits/ |
Current File : /home2/selectio/public_html/fms-worksuite/app/Traits/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 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; } }