335 lines
9.4 KiB
PHP
Executable File
335 lines
9.4 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class Vehicles extends Model
|
|
{
|
|
const DEFAULT_CAT_ID = 1; // truck
|
|
const DEFAULT_TRACK_HOLIDAY = 1;
|
|
const DEFAULT_TRACK_SCH_H = 24;
|
|
const DEFAULT_TRACK_SCH_D = 7;
|
|
|
|
const MAX_DEVICE_ID = 16;
|
|
const ENABLED_TRACK_HOLIDAY = 1;
|
|
const DISABLED_TRACK_HOLIDAY = 2;
|
|
|
|
const STTS_ACTIVE = 1;
|
|
const STTS_INACTIVE = 2;
|
|
|
|
const IN_ORD_YES = 1;
|
|
const IN_ORD_NO = 2;
|
|
|
|
private const defaultSelectVehicle =
|
|
"" .
|
|
"v.*,vd.*," .
|
|
"v.id as vid,vd.id as vd_id,v.sum_milleage," .
|
|
"c.name as cat_name,t.name as type_name,b.name as brand_name,m.name as model_name," .
|
|
"dc.fullname as dc_fullname,dc.phone as dc_phone,dc.phone_code as dc_phone_code," .
|
|
"da.fullname as da_fullname,da.phone as da_phone,da.phone_code as da_phone_code," .
|
|
"dvc.name as dvc_name,dvc.type as dvc_type";
|
|
|
|
public static function listVehicles($auth, $filter = [])
|
|
{
|
|
$params = [];
|
|
$select = "";
|
|
$where = "";
|
|
|
|
if ($auth->role == Users::ROLE_VENDOR) {
|
|
$where .= " AND v.vendor_id = " . $auth->uid;
|
|
}
|
|
|
|
if (isset($filter["company"])) {
|
|
$where .= " AND client.id = ?";
|
|
$params[] = $filter["company"];
|
|
}
|
|
|
|
// vd.speed_limit,vd.fuel_capacity,vd.fuel_drop_treshold,vd.max_pressure,vd.fvhc_img,
|
|
return DB::select(
|
|
"SELECT
|
|
" .
|
|
self::defaultSelectVehicle .
|
|
"
|
|
,client.c_name as company_name
|
|
" .
|
|
$select .
|
|
"
|
|
FROM t_vehicles as v
|
|
INNER JOIN t_vehicles_detail AS vd ON v.id = vd.vid
|
|
LEFT JOIN t_vehicles_cats AS c ON v.cat_id = c.id
|
|
LEFT JOIN t_vehicles_types AS t ON v.type_id = t.id
|
|
LEFT JOIN t_vehicles_brands AS b ON v.brand_id = b.id
|
|
LEFT JOIN t_vehicles_models AS m ON v.model_id = m.id
|
|
LEFT JOIN t_drivers AS dc ON v.c_did = dc.id
|
|
LEFT JOIN t_drivers AS da ON v.a_did = da.id
|
|
LEFT JOIN t_users AS vdr ON v.vendor_id = vdr.id
|
|
LEFT JOIN t_clients AS client ON vdr.client_group_id = client.id
|
|
LEFT JOIN t_devices AS dvc ON v.device_id = dvc.device_id
|
|
WHERE v.dlt is null
|
|
" .
|
|
$where .
|
|
"
|
|
ORDER BY v.id ASC;",
|
|
$params
|
|
);
|
|
}
|
|
|
|
public static function getVehicles()
|
|
{
|
|
return DB::select("SELECT * FROM t_vehicles WHERE dlt is null;");
|
|
}
|
|
|
|
public static function showVehicleById($vid)
|
|
{
|
|
return DB::select(
|
|
"SELECT
|
|
" .
|
|
self::defaultSelectVehicle .
|
|
"
|
|
FROM t_vehicles as v
|
|
INNER JOIN t_vehicles_detail AS vd ON v.id = vd.vid
|
|
LEFT JOIN t_vehicles_cats AS c ON v.cat_id = c.id
|
|
LEFT JOIN t_vehicles_types AS t ON v.type_id = t.id
|
|
LEFT JOIN t_vehicles_brands AS b ON v.brand_id = b.id
|
|
LEFT JOIN t_vehicles_models AS m ON v.model_id = m.id
|
|
LEFT JOIN t_drivers AS dc ON v.c_did = dc.id
|
|
LEFT JOIN t_drivers AS da ON v.a_did = da.id
|
|
LEFT JOIN t_devices AS dvc ON v.device_id = dvc.device_id
|
|
WHERE v.dlt is null
|
|
AND v.id = ?
|
|
LIMIT 1;",
|
|
[$vid]
|
|
);
|
|
}
|
|
|
|
public static function getVehicleById($vid)
|
|
{
|
|
return DB::select(
|
|
"SELECT * FROM t_vehicles WHERE dlt is null AND id = ? LIMIT 1;",
|
|
[$vid]
|
|
);
|
|
}
|
|
|
|
public static function getVehicleByDeviceId($device_id)
|
|
{
|
|
return DB::select(
|
|
"SELECT v.*,vd.tax_exp,vd.kir_exp FROM t_vehicles as v INNER JOIN t_vehicles_detail as vd ON v.id = vd.vid WHERE v.dlt is null AND v.device_id = ? LIMIT 1;",
|
|
[$device_id]
|
|
);
|
|
}
|
|
|
|
public static function getVehicleBySimcard($simcard)
|
|
{
|
|
return DB::select(
|
|
"SELECT * FROM t_vehicles WHERE dlt is null AND simcard = ? LIMIT 1;",
|
|
[$simcard]
|
|
);
|
|
}
|
|
|
|
public static function getVehicleByPlatNo($nopol1, $nopol2, $nopol3)
|
|
{
|
|
return DB::select(
|
|
"SELECT v.*,vd.tax_exp,vd.kir_exp FROM t_vehicles as v INNER JOIN t_vehicles_detail as vd ON v.id = vd.vid WHERE v.dlt is null AND v.nopol1 = ? AND v.nopol2 = ? AND v.nopol3 = ? LIMIT 2;",
|
|
[$nopol1, $nopol2, $nopol3]
|
|
);
|
|
}
|
|
|
|
public static function searchVehicleByPlatNo($nopol1, $nopol2, $nopol3)
|
|
{
|
|
return DB::select(
|
|
"SELECT v.*,vd.tax_exp,vd.kir_exp FROM t_vehicles as v INNER JOIN t_vehicles_detail as vd ON v.id = vd.vid WHERE v.dlt is null AND v.nopol1 LIKE '%" .
|
|
$nopol1 .
|
|
"%' AND v.nopol2 LIKE '%" .
|
|
$nopol2 .
|
|
"%' AND v.nopol3 LIKE '%" .
|
|
$nopol3 .
|
|
"%';"
|
|
);
|
|
}
|
|
|
|
public static function getVehicleByIdAllData($vid)
|
|
{
|
|
return DB::select(
|
|
"SELECT
|
|
*,v.id as vhc_id
|
|
FROM t_vehicles as v
|
|
INNER JOIN t_vehicles_detail as vd ON v.id = vd.vid
|
|
WHERE v.dlt is null
|
|
AND v.id = ?
|
|
LIMIT 1;",
|
|
[$vid]
|
|
);
|
|
}
|
|
|
|
public static function getVehiclesInIds($vids)
|
|
{
|
|
$params = [];
|
|
$where_in = "";
|
|
|
|
$vids = explode(",", $vids);
|
|
foreach ($vids as $vid) {
|
|
$where_in .= "?,";
|
|
array_push($params, $vid);
|
|
}
|
|
if (strpos($where_in, ",") !== false) {
|
|
$where_in = substr($where_in, 0, -1);
|
|
}
|
|
return DB::select(
|
|
"SELECT * FROM t_vehicles WHERE dlt is null AND id IN (" .
|
|
$where_in .
|
|
");",
|
|
$params
|
|
);
|
|
}
|
|
|
|
public static function getVehiclesInIdsActiveNoInOrder($vids)
|
|
{
|
|
$params = [];
|
|
$where_in = "";
|
|
|
|
$vids = explode(",", $vids);
|
|
foreach ($vids as $vid) {
|
|
$where_in .= "?,";
|
|
array_push($params, $vid);
|
|
}
|
|
if (strpos($where_in, ",") !== false) {
|
|
$where_in = substr($where_in, 0, -1);
|
|
}
|
|
return DB::select(
|
|
"SELECT
|
|
v.*,ord.status as ord_status
|
|
FROM t_vehicles as v
|
|
LEFT JOIN (SELECT MAX(ord_id) as max_ord_id,vhc_id FROM t_orders_vehicles GROUP BY vhc_id) as ord_vhc1 ON (v.id = ord_vhc1.vhc_id)
|
|
LEFT JOIN t_orders as ord ON (ord_vhc1.max_ord_id = ord.id)
|
|
WHERE v.dlt is null
|
|
AND v.status = " .
|
|
Vehicles::STTS_ACTIVE .
|
|
"
|
|
AND v.is_in_ord = " .
|
|
Vehicles::IN_ORD_NO .
|
|
"
|
|
AND (ord.status is null OR ord.status IN (" .
|
|
Orders::STTS_CLIENT_PAY .
|
|
"," .
|
|
Orders::STTS_VENDOR_PAYED .
|
|
"," .
|
|
Orders::STTS_CLOSE .
|
|
"," .
|
|
Orders::STTS_CANCEL .
|
|
"))
|
|
AND v.id IN (" .
|
|
$where_in .
|
|
")
|
|
;",
|
|
$params
|
|
);
|
|
}
|
|
|
|
public static function getVehiclesInVendorIdsActiveNoInOrder(
|
|
$vendorIds,
|
|
$prefer_truck_type = 0
|
|
) {
|
|
$params = [];
|
|
$where_in = "";
|
|
$where_where = "";
|
|
|
|
$vendorIds = explode(",", $vendorIds);
|
|
foreach ($vendorIds as $vendorId) {
|
|
$where_in .= "?,";
|
|
array_push($params, $vendorId);
|
|
}
|
|
if (strpos($where_in, ",") !== false) {
|
|
$where_in = substr($where_in, 0, -1);
|
|
}
|
|
|
|
if ($prefer_truck_type != 0) {
|
|
$where_where = " AND v.type_id = ?";
|
|
array_push($params, $prefer_truck_type);
|
|
}
|
|
|
|
return DB::select(
|
|
"SELECT
|
|
v.*,ord.status as ord_status
|
|
FROM t_vehicles as v
|
|
LEFT JOIN (SELECT MAX(ord_id) as max_ord_id,vhc_id FROM t_orders_vehicles GROUP BY vhc_id) as ord_vhc1 ON (v.id = ord_vhc1.vhc_id)
|
|
LEFT JOIN t_orders as ord ON (ord_vhc1.max_ord_id = ord.id)
|
|
INNER JOIN t_gps_tracks as tr ON v.device_id = tr.device_id
|
|
WHERE v.dlt is null
|
|
AND v.status = " .
|
|
Vehicles::STTS_ACTIVE .
|
|
"
|
|
AND v.is_in_ord = " .
|
|
Vehicles::IN_ORD_NO .
|
|
"
|
|
AND (ord.status is null OR ord.status IN (" .
|
|
Orders::STTS_CLIENT_PAY .
|
|
"," .
|
|
Orders::STTS_VENDOR_PAYED .
|
|
"," .
|
|
Orders::STTS_CLOSE .
|
|
"," .
|
|
Orders::STTS_CANCEL .
|
|
"))
|
|
AND v.vendor_id IN (" .
|
|
$where_in .
|
|
")
|
|
$where_where
|
|
GROUP BY v.id
|
|
;",
|
|
$params
|
|
);
|
|
}
|
|
|
|
public static function addVehicle($data)
|
|
{
|
|
$vid = DB::table("t_vehicles")->insertGetId($data);
|
|
return $vid;
|
|
}
|
|
|
|
public static function updateVehicle($vid, $data)
|
|
{
|
|
return DB::table("t_vehicles")
|
|
->where("id", $vid)
|
|
->update($data);
|
|
}
|
|
|
|
public static function deleteVehicle($vid)
|
|
{
|
|
return DB::table("t_vehicles")
|
|
->where("id", $vid)
|
|
->delete();
|
|
}
|
|
|
|
// default 1: truck
|
|
public static function listCats()
|
|
{
|
|
return DB::select(
|
|
"SELECT * FROM t_vehicles_cats WHERE dlt is null AND is_active = 1;"
|
|
);
|
|
}
|
|
|
|
// default 1: unknown
|
|
public static function listBrands()
|
|
{
|
|
return DB::select(
|
|
"SELECT * FROM t_vehicles_brands WHERE dlt is null AND is_active = 1;"
|
|
);
|
|
}
|
|
|
|
public static function listTypes()
|
|
{
|
|
return DB::select(
|
|
"SELECT * FROM t_vehicles_types WHERE dlt is null AND is_active = 1;"
|
|
);
|
|
}
|
|
|
|
public static function listModels()
|
|
{
|
|
return DB::select(
|
|
"SELECT * FROM t_vehicles_models WHERE dlt is null AND is_active = 1;"
|
|
);
|
|
}
|
|
}
|