<?php

namespace App\Imports;

use App\Models\Customer;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithLimit;
use Maatwebsite\Excel\Concerns\WithChunkReading;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMultipleSheets;
use Illuminate\Contracts\Queue\ShouldQueue;
use Maatwebsite\Excel\Concerns\WithBatchInserts;

class CustomersImport implements ToCollection, WithMultipleSheets
{
    /**
    * @param Collection $collection
    */
    public function collection(Collection $collection)
    {
        $batchData = [];

        foreach ($collection->skip(1) as $row) {
            if (!isset($row[0]) || empty($row[0])) {
                continue;
            }

            $latitude = filter_var($row[4], FILTER_VALIDATE_FLOAT) ? bcadd($row[4], '0', 18) : null;
            $longitude = filter_var($row[5], FILTER_VALIDATE_FLOAT) ? bcadd($row[5], '0', 18) : null;

            $batchData[] = [
                'nomor_pelanggan' => $row[0],
                'kota_pelayanan' => $row[1],
                'nama' => $row[2],
                'alamat' => $row[3],
                'latitude' => $latitude,
                'longitude' => $longitude,
            ];
        }

        if (!empty($batchData)) {
            Customer::upsert($batchData, ['nomor_pelanggan'], ['kota_pelayanan', 'nama', 'alamat', 'latitude', 'longitude']);
        }
    }

    public function sheets(): array {
        return [
            0 => $this
        ];
    }
}
