You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.0 KiB
69 lines
2.0 KiB
<?php
|
|
|
|
namespace App\Imports;
|
|
|
|
use App\Models\ParkingLicensePlate;
|
|
use App\Models\ParkingSpaceType;
|
|
use App\Services\ApiResponseService;
|
|
use App\Services\OperationLogService;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use Maatwebsite\Excel\Concerns\ToModel;
|
|
use Maatwebsite\Excel\Concerns\WithHeadingRow;
|
|
|
|
class ParkingLicensePlateImport implements ToModel, WithHeadingRow
|
|
{
|
|
|
|
/**
|
|
* @var OperationLogService
|
|
*/
|
|
private OperationLogService $logService;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->logService = new OperationLogService();
|
|
$this->logService->menuTitle = 'cat_attr';
|
|
}
|
|
|
|
/**
|
|
* @param array $row
|
|
* @return ParkingLicensePlate|JsonResponse
|
|
*/
|
|
public function model(array $row)
|
|
{
|
|
$request = new Request();
|
|
$parking_space_type = $request->post('parking_space_type', '');
|
|
if (empty($parking_space_type)) {
|
|
return (new ApiResponseService())->businessError(
|
|
__('validation.parking_space.type_id_empty')
|
|
);
|
|
}
|
|
if (!ParkingSpaceType::query()->where('id', $parking_space_type)
|
|
->exists()
|
|
) {
|
|
return (new ApiResponseService())->businessError(
|
|
__('exception.exception_handler.resource')
|
|
);
|
|
}
|
|
$data = [];
|
|
foreach ($row as $value) {
|
|
$data[] = $value;
|
|
}
|
|
$where = [
|
|
'number' => $data[0],
|
|
'space_type_id' => $parking_space_type
|
|
];
|
|
if (!ParkingLicensePlate::query()->where($where)
|
|
->exists()
|
|
) {
|
|
$model = new ParkingLicensePlate([
|
|
'number' => $data[0],
|
|
'space_type_id' => $data[1],
|
|
'created_at' => get_datetime()
|
|
]);
|
|
$this->logService->logCreated($model, 'license_plate.create');
|
|
return $model;
|
|
}
|
|
return new ParkingLicensePlate();
|
|
}
|
|
}
|
|
|