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.
58 lines
1.9 KiB
58 lines
1.9 KiB
<?php
|
|
|
|
namespace App\Services;
|
|
|
|
use App\Models\Parking;
|
|
use App\Models\ParkingChannel;
|
|
use App\Models\ParkingLicensePlate;
|
|
use App\Models\ParkingReservation;
|
|
use App\Models\ParkingSpaceType;
|
|
|
|
class ParkingGateControlService extends BaseService
|
|
{
|
|
protected string $menuTitle = 'gate_control';
|
|
|
|
public static array $typeArr = [
|
|
1 => 'automatic',
|
|
2 => 'manual'
|
|
];
|
|
|
|
/**
|
|
* @return array|string[]
|
|
*/
|
|
public function getType(): array
|
|
{
|
|
$typeArr = self::$typeArr;
|
|
foreach ($typeArr as $key => $value) {
|
|
$typeArr[$key] = __service($this->menuTitle . '.' . $value);
|
|
}
|
|
return $typeArr;
|
|
}
|
|
|
|
public function getItem($item)
|
|
{
|
|
$typeArr = $this->getType();
|
|
$date = date("Y-m-d", strtotime($item['enter_at']));
|
|
$item['reserve_id'] = ParkingReservation::query()->where(
|
|
'license_plate_id',
|
|
$item['license_plate_id']
|
|
)->where('date', $date)->value('reserve_id');
|
|
$item['member_type'] = ParkingSpaceType::getName($item['member_type']);
|
|
$item['license_plate'] = ParkingLicensePlate::getNumber($item['license_plate_id']);
|
|
$ParkingChannel = ParkingChannel::getFirst($item['channel_id']);
|
|
$item['channel'] = '';
|
|
$item['parking'] = '';
|
|
if ($ParkingChannel) {
|
|
$item['channel'] = $ParkingChannel['name'];
|
|
$item['parking'] = Parking::getName($ParkingChannel['parking_id']);
|
|
}
|
|
$item['enter_type_str'] = $typeArr[$item['enter_type']];
|
|
$item['leave_type_str'] = $typeArr[$item['leave_type']] ?? '';
|
|
$item['dwell_time'] = get_time_difference_str($item['enter_at'], $item['leave_at']);
|
|
|
|
$item['enter_img'] = get_image_url($item['enter_img']);
|
|
$item['leave_img'] = get_image_url($item['leave_img']);
|
|
unset($item['license_plate_id'], $item['channel_id']);
|
|
return $item;
|
|
}
|
|
}
|
|
|