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