You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.4 KiB
PHP
60 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Imports;
|
|
|
|
use App\Models\Booking;
|
|
use Maatwebsite\Excel\Concerns\ToModel;
|
|
use Maatwebsite\Excel\Concerns\WithStartRow;
|
|
use Maatwebsite\Excel\Concerns\WithUpserts;
|
|
|
|
class BookingsImport implements ToModel, WithStartRow, WithUpserts
|
|
{
|
|
/**
|
|
* @param array $row
|
|
*
|
|
* @return \Illuminate\Database\Eloquent\Model|null
|
|
*/
|
|
public function model(array $row)
|
|
{
|
|
if (!isset($row[0])) {
|
|
return null;
|
|
}
|
|
|
|
$exists = Booking::where([
|
|
['master_awb', '=', $row[0]],
|
|
['flight_number', '=', $row[1]],
|
|
['departure', '=', $row[2]],
|
|
['destination', '=', $row[3]],
|
|
['jumlah_koli', '=', $row[4]],
|
|
['kemasan', '=', $row[5]],
|
|
['booked', '=', $row[6]],
|
|
['used', '=', $row[7]],
|
|
])->count();
|
|
|
|
if ($exists > 0) {
|
|
return null;
|
|
}
|
|
|
|
return new Booking([
|
|
'master_awb' => $row[0],
|
|
'flight_number' => $row[1],
|
|
'departure' => $row[2],
|
|
'destination' => $row[3],
|
|
'jumlah_koli' => $row[4],
|
|
'kemasan' => $row[5],
|
|
'booked' => $row[6],
|
|
'used' => $row[7],
|
|
]);
|
|
}
|
|
|
|
public function startRow(): int
|
|
{
|
|
return 2;
|
|
}
|
|
|
|
public function uniqueBy()
|
|
{
|
|
return 'master_awb';
|
|
}
|
|
}
|