Anons79 Mini Shell

Directory : /home/aplikasiposinfo/www/ayam-canton.aplikasipos.info/app/Imports/
Upload File :
Current File : /home/aplikasiposinfo/www/ayam-canton.aplikasipos.info/app/Imports/BarangsImport.php

<?php

namespace App\Imports;

use App\Barang;
use App\Jenis;
use App\Kategori;
use App\Rak;
use App\Merek;
use App\Satuan;
use App\HargaBarang;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithCalculatedFormulas;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Worksheet\MemoryDrawing;


class BarangsImport implements ToCollection,WithCalculatedFormulas
{

    protected $excel_data = []; //Wadah Image
    protected $index = 0;
    public $error = [];
    
    public function collection(Collection $rows)
    {   
        $i = 1; // Baris

        try {
            $spreadsheet = IOFactory::load(request()->file('file'));
            foreach ($spreadsheet->getActiveSheet()->getDrawingCollection() as $drawing) {
                if ($drawing instanceof MemoryDrawing) {
                    ob_start();
                    call_user_func(
                        $drawing->getRenderingFunction(),
                        $drawing->getImageResource()
                    );
                    $imageContents = ob_get_contents();
                    ob_end_clean();
                    switch ($drawing->getMimeType()) {
                        case MemoryDrawing::MIMETYPE_PNG :
                            $extension = 'png';
                            break;
                        case MemoryDrawing::MIMETYPE_GIF:
                            $extension = 'gif';
                            break;
                        case MemoryDrawing::MIMETYPE_JPEG :
                            $extension = 'jpg';
                            break;
                    }
                } else {
                    $zipReader = fopen($drawing->getPath(), 'r');
                    $imageContents = '';
                    while (!feof($zipReader)) {
                        $imageContents .= fread($zipReader, 1024);
                    }
                    fclose($zipReader);
                    $extension = $drawing->getExtension();
                }
    
                $myFileName = time() .++$this->index. '.' . $extension;
                // Simpan Kedalam Array
                $this->excel_data[$drawing->getCoordinates()] = [
                    'file_name' => $myFileName,
                    'image' => $imageContents,
                ];    
            }
        } catch (\Throwable $th) {
            array_push($this->error, 'Terjadi Error Gambar Pada  Excel Baris <b> ' . $i . '  </b> ' . $th->getMessage());
        }

        
        foreach ($rows as $row) {
            if(isset($row[1]) && $row[1] != NULL && strtolower($row[0]) != 'barcode' && isset($row[2]) && isset($row[3]) && isset($row[4]) && isset($row[5]) && isset($row[4])){


                /**
                 * Script Import Gambar
                 */
            try {
                $barang = Barang::where('nm_barang',$row[1])->first();
                    $ck = Kategori::where('nm_kategori',$row[2])->first();
                    if($ck){
                        $kd_kategori = $ck->kd_kategori;
                    } else {
                        $kategori = Kategori::create([
                            'kd_kategori'=>"K-". (\Helper::strtotime() + $i),
                            'nm_kategori'=>$row[2],
                        ]);

                        $kd_kategori = $kategori->kd_kategori;
                    }

                    $cr = Rak::where('kd_rak',$row[3])->first();
                    if($cr){
                        $kd_rak = $cr->kd_rak;
                    } else {
                        $rak = Rak::create([
                            'kd_rak'=>$row[3],
                        ]);

                        $kd_rak = $rak->kd_rak;
                    }

                    $cm = Satuan::where('nm_satuan',$row[4])->first();
                    if($cm){
                        $kd_satuan = $cm->kd_satuan;
                    } else {
                        $satuan = Satuan::create([
                            'kd_satuan'=> "SN-".(\Helper::strtotime() + $i),
                            'nm_satuan'=>$row[4],
                        ]);

                        $kd_satuan = $satuan->kd_satuan;
                    }
            } catch (\Throwable $th) {
                array_push($this->error, 'Terjadi Error Pada Master Excel Baris <b> ' . $i . '  </b> ' . $th->getMessage());
            }

            try {
                if($barang){
                    if(isset($row[9]) || isset($row[10])){
                        foreach ($barang->harga_barang as $hb) {
                            // Jika Harga Sudah Tersedia, Tidak Perlu Create Lagi
                            if ($hb->harga_beli != $row[9] && $hb->harga_beli != $row[10]) {
                                $harga = [
                                    'kd_barang'=>$barang->kd_barang,
                                    'kd_satuan_beli'=>$kd_satuan,
                                    'jumlah_persatuan_beli'=>1,
                                    'jumlah_persatuan_jual'=>1,
                                    'beli_isi'=>1,
                                    'kd_sinkron'=> (\Helper::strtotime() + $i),
                                    'kd_satuan_jual'=>$kd_satuan,
                                    'harga_beli'=>($row[9] != null)?$row[9]:0,
                                    'harga_jual'=>($row[10] != null)?$row[10]:0,
                                    'diskon'=>0
                                ];
                                HargaBarang::create($harga);
                            }
                        }
                    }
                    
                } else {
                    $barcode = ($row[0] != null && isset($row[0]) && strlen(trim($row[0])) > 0)?$row[0]:\Helper::strtotime();
                    $nm_barang = $row[1];
                    $kd_barang = "BRG-".(\Helper::strtotime() + $i);
                    
                    $barang = Barang::create([
                        'kd_barang'=> $kd_barang,
                        'barcode'=>$barcode,
                        'nm_barang'=>$nm_barang,
                        'kd_kategori'=>$kd_kategori,
                        'kd_rak'=>$kd_rak,
                        'kd_satuan_stok'=>$kd_satuan,
                        'stok'=>($row[5] != null)?$row[5]:0,
                        'stok_opname'=>($row[6] != null)?$row[6]:0,
                        'stok_minimal'=>($row[7] != null)?$row[7]:0,
                        'stok_maksimal'=>($row[8] != null)?$row[8]:0,
                        
                    ]);

                    if(isset($row[9]) || isset($row[10])){
                        $harga = [
                            'kd_barang'=>$kd_barang,
                            'kd_satuan_beli'=>$kd_satuan,
                            'jumlah_persatuan_beli'=>1,
                            'jumlah_persatuan_jual'=>1,
                            'beli_isi'=>1,
                            'kd_sinkron'=> (\Helper::strtotime() + $i),
                            'kd_satuan_jual'=>$kd_satuan,
                            'harga_beli'=>($row[9] != null)?$row[9]:0,
                            'harga_jual'=>($row[10] != null)?$row[10]:0,
                            'diskon'=>0
                        ];
                        HargaBarang::create($harga);
                    }
                }
                
                $file_name = null;
                if(isset($this->excel_data['L'.$i])){
                    $file_name = $this->excel_data['L'.$i]['file_name'];
                    file_put_contents(public_path('images/barang/') . $file_name, $this->excel_data['L'.$i]['image']);
                }
                $barang->update([
                    'gambar_barang' => $file_name
                ]);

            } catch (\Throwable $th) {
                array_push($this->error, 'Terjadi Error Pada Input Excel Baris <b> ' . $i . '  </b> ' . $th->getMessage());
            }
                    
            }
            $i++;
        }
    }
}



Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]