635 lines
25 KiB
PHP
Executable File
635 lines
25 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Support\Facades\DB;
|
|
use App\Models\OrdersVendors;
|
|
use App\Models\Users;
|
|
|
|
class Orders extends Model
|
|
{
|
|
const ONE_KG_ONE_CBM = 1328;
|
|
|
|
const TYPE_FCL = 1;
|
|
const TYPE_LCL = 2;
|
|
|
|
const STTS_WAIT = 1;
|
|
const STTS_CONFIRM = 21;
|
|
const STTS_HAVE_GET_VHC = 22;
|
|
const STTS_PCK = 2;
|
|
const STTS_GO = 3;
|
|
const STTS_ARV = 4;
|
|
const STTS_DROP = 5;
|
|
const STTS_CLIENT_PAY = 6;
|
|
const STTS_VENDOR_PAYED = 8;
|
|
const STTS_CLOSE = 10;
|
|
const STTS_CANCEL = 11;
|
|
|
|
const IS_FIX_PRICE_NO = 0;
|
|
const IS_FIX_PRICE_YES = 1;
|
|
|
|
const CANCEL_TYPE_IGNORE = 1;
|
|
const CANCEL_TYPE_CLIENT = 2;
|
|
const CANCEL_TYPE_VDR_NOT_READY = 3;
|
|
|
|
const IS_ACCIDENT_NO = 0;
|
|
const IS_ACCIDENT_YES = 1;
|
|
|
|
const CHK_STTS_WAITING = 0;
|
|
const CHK_STTS_HAS_PICKUP = 1;
|
|
const CHK_STTS_HAS_DROP = 3;
|
|
|
|
const IS_PAID_NO = 0;
|
|
const IS_PAID_YES = 1;
|
|
|
|
const IS_ACTIVE_NO = 0;
|
|
const IS_ACTIVE_YES = 1;
|
|
|
|
const CRT_TYPE_ORDER_CLIENT = 1; // normal_via_client;
|
|
const CRT_TYPE_ORDER_ADMIN = 2; // normal_via_admin;
|
|
const CRT_TYPE_ORDER_ADMIN_SPECIAL = 3; // special_via_admin;
|
|
|
|
// merge per trx
|
|
const STTS_MERGE_NO = 0;
|
|
const STTS_MERGE_TO = 1;
|
|
const STTS_MERGE_RESULT = 2;
|
|
|
|
/**
|
|
* column merge disini untuk merge per trx
|
|
*/
|
|
|
|
const defaultSelectedOrders = "
|
|
ord.*
|
|
,ord.id as ord_id,ord.code as ord_code
|
|
,ord_pck.pck_name,ord_pck.stts_pck,ord_pck.pck_addr
|
|
,ord_drop.drop_name,ord_drop.stts_drop,ord_drop.drop_addr
|
|
,ord_c.c_name
|
|
,ord_vdr.vdr_name
|
|
,ord_drv.drv_name
|
|
,ord_vhc.vhc_id,ord_vhc.vhc_name,ord_vhc.vhc_nopol1,ord_vhc.vhc_nopol2,ord_vhc.vhc_nopol3
|
|
,ord_rate.id as ord_rate_id
|
|
";
|
|
const defaultWhereOrders = "
|
|
WHERE ord.dlt is null
|
|
";
|
|
|
|
const defaultSelectedOrdersDetail = "
|
|
ord.*
|
|
,ord.id as ord_id,ord.code as ord_code
|
|
,ord_pck.id as ord_pck_id,ord_pck.pck_id as ord_pck_zone_id,ord_pck.pck_name,ord_pck.pck_addr,ord_pck.set_pck_at,ord_pck.pck_at,ord_pck.pck_enter_at,ord_pck.pck_leave_at
|
|
,ord_drop.id as ord_drop_id,ord_drop.drop_id as ord_drop_zone_id,ord_drop.drop_name,ord_drop.drop_addr,ord_drop.drop_at,ord_drop.drop_enter_at,ord_drop.drop_leave_at
|
|
,ord_c.id as ord_client_id,ord_c.c_id,ord_c.c_name,ord_c.c_phone_code,ord_c.c_phone_val,ord_c.c_mail,ord_c.prefer_truck_type
|
|
,ord_vdr.id as ord_vdr_id,ord_vdr.vdr_id,ord_vdr.vdr_name,ord_vdr.vdr_phone_code,ord_vdr.vdr_phone_val,ord_vdr.vdr_mail,ord_vdr.vdr_addr,ord_vdr.status as vdr_status,ord_vdr.respond_at as vdr_respond_at,ord_vdr.crt as vdr_crt,ord_vdr.is_pkp as is_vdr_pkp
|
|
,ord_drv.drv_id,ord_drv.drv_name,ord_drv.drv_phone_code,ord_drv.drv_phone_val,ord_drv.drv_name2,ord_drv.drv_phone2_val,ord_drv.drv_mail,ord_drv.drv_addr
|
|
,ord_vhc.vhc_id,ord_vhc.vhc_name,ord_vhc.vhc_nopol1,ord_vhc.vhc_nopol2,ord_vhc.vhc_nopol3
|
|
,ord_rate.id as ord_rate_id,ord_rate.buy_ftl
|
|
";
|
|
const defaultWhereOrdersDetail = "
|
|
WHERE ord.dlt is null
|
|
";
|
|
|
|
public static function listOrders($filter = [])
|
|
{
|
|
$params = [];
|
|
$select_order = "";
|
|
$join_join = "";
|
|
$where_where = "";
|
|
$group_by = "";
|
|
$order_by = "";
|
|
|
|
if (isset($filter["client_id"])) {
|
|
$where_where .= " AND ord_c.c_id = ? ";
|
|
array_push($params, $filter["client_id"]);
|
|
}
|
|
|
|
if (isset($filter["client_pt_id"])) {
|
|
$where_where .= " AND ord_c.c_pt_id = ? ";
|
|
array_push($params, $filter["client_pt_id"]);
|
|
}
|
|
|
|
if (isset($filter["vendor_id"])) {
|
|
$where_where .= " AND ord_vdr.vdr_id = ? ";
|
|
$where_where .= " AND ord_vdr.status = " . OrdersVendors::STTS_ACC;
|
|
array_push($params, $filter["vendor_id"]);
|
|
}
|
|
|
|
if (isset($filter["get_stts_checker"])) {
|
|
$select_order .=
|
|
" ,ord_pck.chk_id as pck_chk_id,ord_pck.chk_at as pck_chk_at,ord_pck.chk_stts as pck_chk_stts";
|
|
$select_order .=
|
|
" ,ord_drop.chk_id as drop_chk_id,ord_drop.chk_at as drop_chk_at,ord_drop.chk_stts as drop_chk_stts";
|
|
}
|
|
if (isset($filter["chk_id"])) {
|
|
if ($filter["chk_type"] == Users::CHK_TYPE_PICKUP) {
|
|
$where_where .= " AND (ord_pck.chk_id = ? OR ord_pck.chk_id = 0) ";
|
|
array_push($params, $filter["chk_id"]);
|
|
} elseif ($filter["chk_type"] == Users::CHK_TYPE_DROP) {
|
|
$where_where .= " AND (ord_drop.chk_id = ? OR ord_drop.chk_id = 0) ";
|
|
array_push($params, $filter["chk_id"]);
|
|
}
|
|
}
|
|
if (isset($filter["order_open"])) {
|
|
$where_where .= " AND ord.status IN (?,?,?,?,?,?,?,?) ";
|
|
array_push(
|
|
$params,
|
|
Orders::STTS_WAIT,
|
|
Orders::STTS_WAIT,
|
|
Orders::STTS_CONFIRM,
|
|
Orders::STTS_HAVE_GET_VHC,
|
|
Orders::STTS_GO,
|
|
Orders::STTS_PCK,
|
|
Orders::STTS_ARV,
|
|
Orders::STTS_DROP,
|
|
);
|
|
}
|
|
|
|
if (isset($filter["ready_checker"])) {
|
|
$where_where .= " AND ord.status IN (?,?,?,?,?,?,?,?) ";
|
|
array_push(
|
|
$params,
|
|
Orders::STTS_HAVE_GET_VHC,
|
|
Orders::STTS_GO,
|
|
Orders::STTS_PCK,
|
|
Orders::STTS_ARV,
|
|
Orders::STTS_DROP,
|
|
Orders::STTS_CLIENT_PAY,
|
|
Orders::STTS_VENDOR_PAYED,
|
|
Orders::STTS_CLOSE,
|
|
);
|
|
}
|
|
|
|
if (isset($filter["client_id_active_orders"])) {
|
|
$where_where .= " AND ord_c.c_id = ? AND ord.status IN (?,?,?,?,?) ";
|
|
array_push(
|
|
$params,
|
|
$filter["client_id_active_orders"],
|
|
Orders::STTS_HAVE_GET_VHC,
|
|
Orders::STTS_GO,
|
|
Orders::STTS_PCK,
|
|
Orders::STTS_ARV,
|
|
Orders::STTS_DROP,
|
|
);
|
|
}
|
|
if (isset($filter["is_accident"])) {
|
|
$where_where .= " AND ord.is_accident = ? ";
|
|
array_push($params, $filter["is_accident"]);
|
|
}
|
|
|
|
if (isset($filter["couple_pck_drop"])) {
|
|
$select_order .=
|
|
" ,ord_pck_drop.id as ord_pck_drop_id,ord_pck_drop.stts as stts_delivery,ord_pck_drop.is_aprv_pck,ord_pck_drop.aprv_pck_at";
|
|
$join_join .= " INNER JOIN t_orders_pck_drop as ord_pck_drop ON ord.id = ord_pck_drop.ord_id";
|
|
$join_join .= " INNER JOIN t_orders_pickups as ord_pck ON ord_pck_drop.pck_id = ord_pck.id";
|
|
$join_join .= " INNER JOIN t_orders_drops as ord_drop ON ord_pck_drop.drop_id = ord_drop.id";
|
|
|
|
if (isset($filter["ord_pck_drop_id"])) {
|
|
$where_where .= " AND ord_pck_drop.id = ?";
|
|
array_push($params, $filter["ord_pck_drop_id"]);
|
|
}
|
|
} else {
|
|
$join_join .= " INNER JOIN t_orders_pickups as ord_pck ON ord.id = ord_pck.ord_id";
|
|
$join_join .= " INNER JOIN t_orders_drops as ord_drop ON ord.id = ord_drop.ord_id";
|
|
}
|
|
|
|
if (isset($filter["join_pockets"])) {
|
|
$select_order .=
|
|
" ,ord_pocket.pocket_id,ord_pocket.pocket_type,ord_pocket.id as ord_pocket_id,ord_pocket.pocket_name";
|
|
$join_join .= " INNER JOIN t_orders_pockets as ord_pocket ON ord.id = ord_pocket.ord_id";
|
|
}
|
|
|
|
// $group_by .= ' GROUP BY ord.group_code';
|
|
if (isset($filter["group_by"])) {
|
|
$group_by .= " GROUP BY " . $filter["group_by"];
|
|
}
|
|
if (isset($filter["order_by"])) {
|
|
$order_by .= " ORDER BY " . $filter["order_by"];
|
|
}
|
|
|
|
return DB::select(
|
|
"SELECT
|
|
" .
|
|
Orders::defaultSelectedOrders .
|
|
"
|
|
" .
|
|
$select_order .
|
|
"
|
|
FROM t_orders as ord
|
|
INNER JOIN t_orders_clients as ord_c ON ord.id = ord_c.ord_id
|
|
LEFT JOIN t_orders_rates as ord_rate ON ord.id = ord_rate.ord_id
|
|
LEFT JOIN ( SELECT MIN(respond_at) as respond_at,ord_id,vdr_id FROM t_orders_vendors WHERE status = " .
|
|
OrdersVendors::STTS_ACC .
|
|
" GROUP BY ord_id ) AS ord_vdr1 ON (ord.id = ord_vdr1.ord_id)
|
|
LEFT JOIN t_orders_vendors as ord_vdr ON ( ord_vdr.respond_at = ord_vdr1.respond_at)
|
|
LEFT JOIN t_orders_drivers as ord_drv ON ord.id = ord_drv.ord_id
|
|
LEFT JOIN t_orders_vehicles as ord_vhc ON ord.id = ord_vhc.ord_id
|
|
" .
|
|
$join_join .
|
|
"
|
|
" .
|
|
Orders::defaultWhereOrders .
|
|
"
|
|
" .
|
|
$where_where .
|
|
"
|
|
" .
|
|
$group_by .
|
|
"
|
|
" .
|
|
$order_by .
|
|
"
|
|
;",
|
|
$params,
|
|
);
|
|
}
|
|
|
|
public static function showOrder($filter)
|
|
{
|
|
$params = [];
|
|
$select_order = "";
|
|
$where_order = "";
|
|
$join_order = "";
|
|
$group_by = "";
|
|
|
|
if (isset($filter["id"])) {
|
|
$where_order .= " AND ord.id = ? ";
|
|
array_push($params, $filter["id"]);
|
|
} elseif (isset($filter["code"])) {
|
|
$where_order .= " AND ord.code = ? ";
|
|
array_push($params, $filter["code"]);
|
|
} elseif (isset($filter["codes"])) {
|
|
$binds_codes = "";
|
|
foreach ($filter["codes"] as $k => $v) {
|
|
$binds_codes .= "?,";
|
|
$params[] = $v;
|
|
}
|
|
if (substr($binds_codes, -1) === ",") {
|
|
$binds_codes = substr($binds_codes, 0, -1);
|
|
}
|
|
$where_order .= " AND ord.code IN ($binds_codes)";
|
|
} elseif (isset($filter["group_merge_code"])) {
|
|
$where_order .= " AND ord.group_merge_code IN (?)";
|
|
$params[] = $filter["group_merge_code"];
|
|
} else {
|
|
return false;
|
|
}
|
|
|
|
if (isset($filter["center_pck"])) {
|
|
$select_order .= ",ST_AsText(ST_Centroid(pck_points)) as pck_center";
|
|
}
|
|
|
|
if (isset($filter["get_prefer_type_truck"])) {
|
|
$select_order .= ",tt.name as prefer_truck_type_name";
|
|
$join_order .= " LEFT JOIN t_vehicles_types as tt ON ord_c.prefer_truck_type = tt.id";
|
|
}
|
|
|
|
if (isset($filter["get_additional_vehicles_info"])) {
|
|
$select_order .=
|
|
",ord_vhc.vhc_type_id, tt2.name as vhc_type_name, ord_vhc.vhc_brand_id, tb.name as vhc_brand_name";
|
|
$join_order .= " LEFT JOIN t_vehicles_types as tt2 ON ord_vhc.vhc_type_id = tt2.id";
|
|
$join_order .= " LEFT JOIN t_vehicles_brands as tb ON ord_vhc.vhc_brand_id = tb.id";
|
|
}
|
|
|
|
if (isset($filter["get_zone_data"])) {
|
|
$select_order .=
|
|
",ord_pck.pck_hex_color,ord_pck.pck_shape,ord_pck.pck_radius,ord_pck.pck_bounds,ord_pck.pck_latlngs,ST_AsText(ST_Centroid(pck_points)) as pck_center";
|
|
$select_order .=
|
|
",ord_drop.drop_hex_color,ord_drop.drop_shape,ord_drop.drop_radius,ord_drop.drop_bounds,ord_drop.drop_latlngs,ST_AsText(ST_Centroid(drop_points)) as drop_center";
|
|
}
|
|
|
|
if (isset($filter["get_zone_zonasi"])) {
|
|
$select_order .=
|
|
",(SELECT nmProvinsiKel FROM t_region WHERE kodeProv = ord_pck.pck_prid LIMIT 1) as pck_prid_name ,(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_pck.pck_ktid LIMIT 1) as pck_ktid_name";
|
|
$select_order .=
|
|
",(SELECT nmProvinsiKel FROM t_region WHERE kodeProv = ord_drop.drop_prid LIMIT 1) as drop_prid_name ,(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_drop.drop_ktid LIMIT 1) as drop_ktid_name";
|
|
}
|
|
|
|
if (isset($filter["get_pic_zone"])) {
|
|
$select_order .=
|
|
",ord_pck.pic_name as pck_pic_name,ord_pck.pic_phone_code as pck_pic_phone_code,ord_pck.pic_phone_val as pck_pic_phone_val,ord_pck.pic_mail as pck_pic_mail";
|
|
$select_order .=
|
|
",ord_drop.pic_name as drop_pic_name,ord_drop.pic_phone_code as drop_pic_phone_code,ord_drop.pic_phone_val as drop_pic_phone_val,ord_drop.pic_mail as drop_pic_mail";
|
|
}
|
|
if (isset($filter["get_client_pt"])) {
|
|
$select_order .=
|
|
",ord_c.c_pt_id,ord_c.c_pt_name,ord_c.c_pt_phone_code,ord_c.c_pt_phone_val,ord_c.c_pt_mail,ord_c.c_pt_addr";
|
|
$select_order .=
|
|
",ord_c.c_pt_pic_name,ord_c.c_pt_pic_phone_code,ord_c.c_pt_pic_phone_val,ord_c.c_pt_pic_mail,ord_c.c_pt_pic_addr";
|
|
}
|
|
|
|
if (isset($filter["get_exp_vendor"])) {
|
|
$select_order .= ",ord_vdr.is_exp as vdr_is_exp,ord_vdr.exp_at as vdr_exp_at";
|
|
}
|
|
if (isset($filter["vdr_id"])) {
|
|
$select_order .= ",ord_vdr.find_vhcs";
|
|
$where_order .= " AND ord_vdr.vdr_id = ?";
|
|
array_push($params, $filter["vdr_id"]);
|
|
$join_order .= " LEFT JOIN t_orders_vendors as ord_vdr ON ord.id = ord_vdr.ord_id";
|
|
} else {
|
|
$join_order .=
|
|
"
|
|
LEFT JOIN ( SELECT MIN(respond_at) as respond_at,ord_id,vdr_id FROM t_orders_vendors WHERE status = " .
|
|
OrdersVendors::STTS_ACC .
|
|
" GROUP BY ord_id ) AS ord_vdr1 ON (ord.id = ord_vdr1.ord_id)
|
|
LEFT JOIN t_orders_vendors as ord_vdr ON ( ord_vdr.respond_at = ord_vdr1.respond_at)
|
|
";
|
|
}
|
|
|
|
if (isset($filter["get_drv_bank"])) {
|
|
$select_order .=
|
|
",ord_drv.drv_bank_id,ord_drv.drv_bank_code,ord_drv.drv_bank_name,ord_drv.drv_bank_short_name,ord_drv.drv_bank_branch_name,ord_drv.drv_bank_acc_number,ord_drv.drv_bank_acc_name";
|
|
}
|
|
if (isset($filter["get_vdr_bank"])) {
|
|
$select_order .=
|
|
",ord_vdr.vdr_bank_id,ord_vdr.vdr_bank_code,ord_vdr.vdr_bank_name,ord_vdr.vdr_bank_short_name,ord_vdr.vdr_bank_acc_number,ord_vdr.vdr_bank_acc_name";
|
|
}
|
|
|
|
if (isset($filter["get_stts_checker"])) {
|
|
$select_order .=
|
|
" ,ord_pck.chk_id as pck_chk_id,ord_pck.chk_at as pck_chk_at,ord_pck.chk_stts as pck_chk_stts";
|
|
$select_order .=
|
|
" ,ord_drop.chk_id as drop_chk_id,ord_drop.chk_at as drop_chk_at,ord_drop.chk_stts as drop_chk_stts";
|
|
}
|
|
if (isset($filter["chk_id"])) {
|
|
if ($filter["chk_type"] == Users::CHK_TYPE_PICKUP) {
|
|
$where_order .= " AND (ord_pck.chk_id = ? OR ord_pck.chk_id = 0) ";
|
|
array_push($params, $filter["chk_id"]);
|
|
} elseif ($filter["chk_type"] == Users::CHK_TYPE_DROP) {
|
|
$where_order .= " AND (ord_drop.chk_id = ? OR ord_drop.chk_id = 0) ";
|
|
array_push($params, $filter["chk_id"]);
|
|
}
|
|
}
|
|
if (isset($filter["get_checker_user"])) {
|
|
$select_order .=
|
|
" ,ord_pck.chk_name as pck_chk_name,ord_pck.chk_mail as pck_chk_mail,ord_pck.chk_phone_val as pck_chk_phone_val";
|
|
$select_order .=
|
|
" ,ord_drop.chk_name as drop_chk_name,ord_drop.chk_mail as drop_chk_mail,ord_drop.chk_phone_val as drop_chk_phone_val";
|
|
}
|
|
|
|
if (isset($filter["get_bid_info"])) {
|
|
$select_order .=
|
|
" ,ord_vdr.is_mailing_bid,ord_vdr.is_mailing_bid_at,ord_vdr.is_want,ord_vdr.is_want_at";
|
|
}
|
|
|
|
// get img pickup and drop
|
|
if (isset($filter["get_checker_data"])) {
|
|
$select_order .=
|
|
" ,ord_pck.chk_seal_number as ord_pck_seal_number,ord_pck.chk_seal_img as ord_pck_seal_img,ord_pck.chk_drv_armd_img as ord_pck_drv_armd_img,ord_pck.chk_nopol_img as ord_pck_nopol_img,ord_pck.chk_docs_client_img as ord_pck_docs_client_img,ord_pck.chk_seal_install_img as ord_pck_seal_install_img,ord_pck.chk_goods_img as ord_pck_goods_img";
|
|
$select_order .=
|
|
" ,ord_drop.chk_arrived_img as ord_drop_arrived_img,ord_drop.chk_handover_img as ord_drop_handover_img,ord_drop.chk_do_ttd_img as ord_drop_do_ttd_img,ord_drop.chk_spk_img as ord_drop_spk_img";
|
|
}
|
|
|
|
if (isset($filter["get_accidents"])) {
|
|
$select_order .=
|
|
",ord_acdnt.id as ord_acdnt_id,ord_acdnt.accident_location as ord_acdnt_location,ord_acdnt.accident_story as ord_acdnt_story,ord_acdnt.accident_imgs as ord_acdnt_imgs";
|
|
$select_order .=
|
|
",ord_acdnt.new_nopol1 as ord_acdnt_new_nopol1,ord_acdnt.new_nopol2 as ord_acdnt_new_nopol2,ord_acdnt.new_nopol3 as ord_acdnt_new_nopol3,ord_acdnt.new_vhc_type_id as ord_acdnt_new_vhc_type_id";
|
|
$select_order .= ",tt3.name as ord_acdnt_new_vhc_type_name";
|
|
$select_order .=
|
|
",ord_acdnt.new_drv_name as ord_acdnt_new_drv_name,ord_acdnt.new_drv_phone_code as ord_acdnt_new_drv_phone_code,ord_acdnt.new_drv_phone_val as ord_acdnt_new_drv_phone_val";
|
|
$select_order .= ",ord_acdnt.crt as ord_acdnt_crt_at,ord_acdnt.updt as ord_acdnt_updt_at";
|
|
$join_order .= " LEFT JOIN t_orders_accidents as ord_acdnt ON ord.id = ord_acdnt.ord_id";
|
|
$join_order .= " LEFT JOIN t_vehicles_types as tt3 ON ord_vhc.vhc_type_id = tt3.id";
|
|
}
|
|
|
|
if (isset($filter["select_region_pck_drop"])) {
|
|
$select_order .=
|
|
",(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_pck.pck_ktid LIMIT 1) pck_ktname, (SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_drop.drop_ktid LIMIT 1) drop_ktname";
|
|
}
|
|
|
|
if (isset($filter["couple_pck_drop"])) {
|
|
$select_order .=
|
|
" ,ord_pck_drop.id as ord_pck_drop_id,ord_pck_drop.stts as stts_delivery,ord_pck_drop.is_aprv_pck,ord_pck_drop.aprv_pck_at";
|
|
$join_order .= " INNER JOIN t_orders_pck_drop as ord_pck_drop ON ord.id = ord_pck_drop.ord_id";
|
|
$join_order .= " INNER JOIN t_orders_pickups as ord_pck ON ord_pck_drop.pck_id = ord_pck.id";
|
|
$join_order .= " INNER JOIN t_orders_drops as ord_drop ON ord_pck_drop.drop_id = ord_drop.id";
|
|
|
|
if (isset($filter["ord_pck_drop_id"])) {
|
|
$where_order .= " AND ord_pck_drop.id = ?";
|
|
array_push($params, $filter["ord_pck_drop_id"]);
|
|
}
|
|
if (isset($filter["get_user_aprv_pck"])) {
|
|
$select_order .=
|
|
" ,(SELECT first_name FROM t_users WHERE id = ord_pck_drop.aprv_pck_by LIMIT 1) as aprv_pck_by_name";
|
|
}
|
|
} else {
|
|
$join_order .= " INNER JOIN t_orders_pickups as ord_pck ON ord.id = ord_pck.ord_id";
|
|
$join_order .= " INNER JOIN t_orders_drops as ord_drop ON ord.id = ord_drop.ord_id";
|
|
}
|
|
|
|
if (isset($filter["join_pockets"])) {
|
|
$select_order .=
|
|
" ,ord_pocket.pocket_id,ord_pocket.pocket_type,ord_pocket.id as ord_pocket_id,ord_pocket.pocket_name";
|
|
$join_order .= " INNER JOIN t_orders_pockets as ord_pocket ON ord.id = ord_pocket.ord_id";
|
|
}
|
|
|
|
if (isset($filter["group_by"])) {
|
|
$group_by .= " GROUP BY " . $filter["group_by"];
|
|
}
|
|
|
|
if (!isset($filter["limit"])) {
|
|
$filter["limit"] = 1;
|
|
}
|
|
|
|
return DB::select(
|
|
"SELECT
|
|
" .
|
|
Orders::defaultSelectedOrdersDetail .
|
|
"
|
|
" .
|
|
$select_order .
|
|
"
|
|
FROM t_orders as ord
|
|
INNER JOIN t_orders_clients as ord_c ON ord.id = ord_c.ord_id
|
|
LEFT JOIN t_orders_rates as ord_rate ON ord.id = ord_rate.ord_id
|
|
LEFT JOIN t_orders_drivers as ord_drv ON ord.id = ord_drv.ord_id
|
|
LEFT JOIN t_orders_vehicles as ord_vhc ON ord.id = ord_vhc.ord_id
|
|
" .
|
|
$join_order .
|
|
"
|
|
" .
|
|
Orders::defaultWhereOrdersDetail .
|
|
"
|
|
" .
|
|
$where_order .
|
|
"
|
|
" .
|
|
$group_by .
|
|
"
|
|
LIMIT " .
|
|
$filter["limit"] .
|
|
";",
|
|
$params,
|
|
);
|
|
}
|
|
|
|
public static function getOrders()
|
|
{
|
|
return DB::select("SELECT * FROM t_orders WHERE dlt is null;");
|
|
}
|
|
|
|
public static function getOrdersClientActive($client_id)
|
|
{
|
|
$stts =
|
|
Orders::STTS_WAIT .
|
|
"," .
|
|
Orders::STTS_CONFIRM .
|
|
"," .
|
|
Orders::STTS_HAVE_GET_VHC .
|
|
"," .
|
|
Orders::STTS_PCK .
|
|
"," .
|
|
Orders::STTS_GO .
|
|
"," .
|
|
Orders::STTS_ARV .
|
|
"," .
|
|
Orders::STTS_DROP;
|
|
return DB::select(
|
|
"SELECT
|
|
ord.*,ord_c.*
|
|
,ord_c.pay_at as client_pay_at,ord_c.is_pay as client_is_pay
|
|
FROM t_orders as ord
|
|
INNER JOIN t_orders_clients as ord_c ON ord.id = ord_c.ord_id
|
|
WHERE ord.dlt is null AND ord.status IN (?) AND ord_c.c_id = ?;",
|
|
[$stts, $client_id],
|
|
);
|
|
}
|
|
|
|
public static function getOrdersByClient($client_id, $limit = 1000)
|
|
{
|
|
return DB::select(
|
|
"SELECT
|
|
ord.*,ord_c.*
|
|
,ord_c.pay_at as client_pay_at,ord_c.is_pay as client_is_pay
|
|
FROM t_orders as ord
|
|
INNER JOIN t_orders_clients as ord_c ON ord.id = ord_c.ord_id
|
|
WHERE ord.dlt is null AND ord_c.c_id = ?
|
|
LIMIT ?;",
|
|
[$client_id, $limit],
|
|
);
|
|
}
|
|
|
|
public static function getOrderById($ordid)
|
|
{
|
|
return DB::select("SELECT * FROM t_orders WHERE dlt is null AND id = ? LIMIT 1;", [$ordid]);
|
|
}
|
|
|
|
public static function getOrderByCode($ordcode)
|
|
{
|
|
return DB::select("SELECT * FROM t_orders WHERE dlt is null AND code = ? LIMIT 1;", [$ordcode]);
|
|
}
|
|
|
|
// special case utk generate order code tanpa where dlt is null
|
|
public static function getOrderLikeCode($ordcode)
|
|
{
|
|
// return DB::select("SELECT COUNT(id) as total FROM t_orders WHERE dlt is null AND code LIKE ? LIMIT 1;", [$ordcode.'%']);
|
|
return DB::select("SELECT COUNT(id) as total FROM t_orders WHERE code LIKE ? LIMIT 1;", [
|
|
$ordcode . "%",
|
|
]);
|
|
}
|
|
|
|
public static function getPoints($filter)
|
|
{
|
|
$params = [];
|
|
$select = "";
|
|
$join = "";
|
|
$where = "";
|
|
$limit = "";
|
|
|
|
if (isset($filter["id"])) {
|
|
$where .= " AND ord.id = ? ";
|
|
array_push($params, $filter["id"]);
|
|
} elseif (isset($filter["code"])) {
|
|
$where .= " AND ord.code = ? ";
|
|
array_push($params, $filter["code"]);
|
|
} else {
|
|
return false;
|
|
}
|
|
|
|
if (isset($filter["point_id"])) {
|
|
$where .= " AND topd.id = ? ";
|
|
array_push($params, $filter["point_id"]);
|
|
}
|
|
|
|
if (isset($filter["center_pck"])) {
|
|
$select .= ",ST_AsText(ST_Centroid(pck_points)) as pck_center";
|
|
}
|
|
|
|
if (isset($filter["get_zone_data"])) {
|
|
$select .=
|
|
",ord_pck.pck_hex_color,ord_pck.pck_shape,ord_pck.pck_radius,ord_pck.pck_bounds,ord_pck.pck_latlngs,ST_AsText(ST_Centroid(pck_points)) as pck_center";
|
|
$select .=
|
|
",ord_drop.drop_hex_color,ord_drop.drop_shape,ord_drop.drop_radius,ord_drop.drop_bounds,ord_drop.drop_latlngs,ST_AsText(ST_Centroid(drop_points)) as drop_center";
|
|
}
|
|
|
|
if (isset($filter["get_pic_zone"])) {
|
|
$select .=
|
|
",ord_pck.pic_name as pck_pic_name,ord_pck.pic_phone_code as pck_pic_phone_code,ord_pck.pic_phone_val as pck_pic_phone_val,ord_pck.pic_mail as pck_pic_mail";
|
|
$select .=
|
|
",ord_drop.pic_name as drop_pic_name,ord_drop.pic_phone_code as drop_pic_phone_code,ord_drop.pic_phone_val as drop_pic_phone_val,ord_drop.pic_mail as drop_pic_mail";
|
|
}
|
|
|
|
if (isset($filter["select_region_pck_drop"])) {
|
|
$select .=
|
|
",(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_pck.pck_ktid LIMIT 1) pck_ktname, (SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_drop.drop_ktid LIMIT 1) drop_ktname";
|
|
}
|
|
|
|
if (isset($filter["limit"])) {
|
|
$limit .= " LIMIT " . $filter["limit"];
|
|
}
|
|
|
|
// -- total_pck must be equal to total_drop
|
|
return DB::select(
|
|
"SELECT
|
|
ord.*
|
|
,ord.id as ord_id,ord.code as ord_code
|
|
,ord_pck.id as ord_pck_id,ord_pck.pck_id as ord_pck_zone_id,ord_pck.pck_name,ord_pck.pck_addr,ord_pck.set_pck_at,ord_pck.pck_at,ord_pck.pck_enter_at,ord_pck.pck_leave_at
|
|
,ord_drop.id as ord_drop_id,ord_drop.drop_id as ord_drop_zone_id,ord_drop.drop_name,ord_drop.drop_addr,ord_drop.drop_at,ord_drop.drop_enter_at,ord_drop.drop_leave_at
|
|
,topd.id as point_id
|
|
" .
|
|
$select .
|
|
"
|
|
FROM t_orders as ord
|
|
LEFT JOIN t_orders_pck_drop topd ON
|
|
topd.ord_id = ord.id
|
|
LEFT JOIN t_orders_pickups as ord_pck ON
|
|
topd.pck_id = ord_pck.id
|
|
LEFT JOIN t_orders_drops as ord_drop ON
|
|
topd.drop_id = ord_drop.id
|
|
" .
|
|
$join .
|
|
"
|
|
" .
|
|
Orders::defaultWhereOrdersDetail .
|
|
"
|
|
" .
|
|
$where .
|
|
"
|
|
" .
|
|
$limit .
|
|
"
|
|
",
|
|
$params,
|
|
);
|
|
}
|
|
|
|
public static function addOrder($data)
|
|
{
|
|
$ordid = DB::table("t_orders")->insertGetId($data);
|
|
return $ordid;
|
|
}
|
|
|
|
public static function updateOrder($ordid, $data)
|
|
{
|
|
return DB::table("t_orders")
|
|
->where("id", $ordid)
|
|
->update($data);
|
|
}
|
|
|
|
public static function deleteOrder($ordid)
|
|
{
|
|
return DB::table("t_orders")
|
|
->where("id", $ordid)
|
|
->delete();
|
|
}
|
|
} |