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

91 lines
2.9 KiB

<?php
namespace App\Services;
use App\Models\AdminFloor;
use App\Models\ParkingSpace;
use App\Models\ParkingSpaceAttributes;
use App\Models\ParkingSpaceType;
use App\Models\ParkingUtilizationRate;
use Illuminate\Database\Eloquent\Builder;
class UtilizationRateService extends BaseService
{
protected string $menuTitle = 'utilization_rate';
public function getItem($item)
{
$item['floor'] = '';
$item['number'] = '';
$item['space_type'] = '';
$item['space_attr'] = '';
$parkingSpace = ParkingSpace::query()->find(
$item['space_id']
);
if ($parkingSpace) {
$item['floor'] = AdminFloor::getName(
$parkingSpace['floor_id']
);
$item['number'] = $parkingSpace['number'];
$item['space_type'] = ParkingSpaceType::getName(
$parkingSpace['space_type_id']
);
$item['space_attr'] = ParkingSpaceAttributes::getAttr(
$parkingSpace['space_attr_id']
);
}
$item['rate'] = rtrim($item['rate'], ' ') . '%';
$format = $item['date_type'] == 1 ? 'Y/m/d H:i' : 'Y/m/d';
$item['start_time'] = date($format, strtotime($item['start_time']));
$item['end_time'] = date($format, strtotime($item['end_time']));
unset($item['space_id'], $item['date_type']);
return $item;
}
/**
* @param $parents
* @return Builder
*/
public function searchQuery($parents): Builder
{
$query = ParkingUtilizationRate::query();
$start_time = $parents['start_time'] ??
get_datetime('date') . ' 00:00:00';
$ent_time = $parents['end_time'] ??
get_datetime('date') . ' 23:59:59';
$start_date = get_datetime('date', strtotime($start_time));
$end_date = get_datetime('date', strtotime($ent_time));
$date_type = $start_date == $end_date ? 1 : 2;
$query->where('date_type', $date_type);
$query->where('start_time', '>=', $start_time);
$query->where('end_time', '<', $ent_time);
$spaceIdsWhere = [];
if (isset($parents['floor_id']) && $parents['floor_id']) {
$spaceIdsWhere['floor_id'] = $parents['floor_id'];
}
if (isset($parents['number']) && $parents['number']) {
$spaceIdsWhere['number'] = $parents['number'];
}
if (isset($parents['parking_space_type'])
&& $parents['parking_space_type']
) {
$spaceIdsWhere['space_type_id'] = $parents['parking_space_type'];
}
if ($spaceIdsWhere) {
$spaceIds = ParkingSpace::query()->where($spaceIdsWhere)->pluck(
'id'
);
if ($spaceIds) {
$query->whereIn('space_id', $spaceIds);
} else {
$query->where('id', 0);
}
}
return $query;
}
}