<?php
namespace App\Imports;
use App\Models\Armada;
use App\Models\Perusahaan;
use Illuminate\Support\Facades\Storage;
use Maatwebsite\Excel\Concerns\ToModel;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
use Illuminate\Support\Str;
class ArmadasImport implements ToModel
{
/**
* @var
*/
protected $excel;
/**
* @var
*/
protected $work_sheet;
/**
* @var array
*/
protected $excel_data = [];
protected $index = 0;
/**
* ExcelImport constructor.
* @param Request $request
* @throws \PHPExcel_Exception
* @throws \PHPExcel_Reader_Exception
*/
public function __construct($file)
{
//Load file from request
$this->excel = IOFactory::load($file->path());
//Get active sheet
$this->work_sheet = $this->excel->getActiveSheet();
}
/**
* @param array $row
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row)
{
if(!isset($row[0]) || $row[0] == "" || $row[0] == null || strtolower($row[0]) == "nama ekspedisi"){
return;
}
foreach ($this->work_sheet->getDrawingCollection() as $drawing) {
//check if it is instance of drawing
if ($drawing instanceof Drawing) {
$file_name = str_replace(' ', '_', $drawing->getName()).'.'.$drawing->getExtension();
$this->excel_data[$drawing->getCoordinates()] = [
'file_name' => $file_name,
'path' => $drawing->getPath(),
];
}
}
$this->index++;
$uuid = Str::uuid();
$foto_tampak_samping = null;
if(isset($this->excel_data['E'.$this->index])){
$path = 'armada/'.$uuid.'/'.$this->excel_data['E'.$this->index]['file_name'];
Storage::disk('public')->put($path, file_get_contents($this->excel_data['E'.$this->index]['path']));
$foto_tampak_samping = $path;
}
$foto_tampak_depan = null;
if(isset($this->excel_data['F'.$this->index])){
$path = 'armada/'.$uuid.'/'.$this->excel_data['F'.$this->index]['file_name'];
Storage::disk('public')->put($path, file_get_contents($this->excel_data['F'.$this->index]['path']));
$foto_tampak_depan = $path;
}
$p = Perusahaan::firstOrCreate(['nama_perusahaan'=>$row[0]]);
return new Armada([
'id'=>$uuid,
'nomor_armada'=>$row[1],
'nama_armada' => $row[2] ?? null,
'jenis_armada' => $row[3],
'perusahaan_id'=>$p->id,
'foto_tampak_samping'=>$foto_tampak_samping,
'foto_tampak_depan' => $foto_tampak_depan,
'ramp'=>($row[6] == "Ada")?1:0,
'kapasitas'=>$row[7] ?? null,
'dimensi_panjang_total'=>$row[8] ?? null,
'dimensi_panjang_bak'=>$row[9] ?? null,
'dimensi_lebar'=>$row[10] ?? null,
'dimensi_tinggi'=>$row[11] ?? null,
'odol_status_keseluruhan'=>$row[12] ?? null,
'odol_panjang'=>$row[13] ?? null,
'odol_lebar'=>$row[14] ?? null,
'odol_tinggi'=>$row[15] ?? null,
'tahun_produksi' => $row[16],
'keterangan_armada'=>$row[17] ?? null,
]);
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]