停车场管理系统
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

<?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();
}
}