1, ]; if ($req->cptid) { $filter["company"] = $req->cptid; } if ($req->auth->is_tracking === Users::IS_TRACK_VHC_YES) { if ($req->auth->vhcs) { $filter["vids"] = explode(",", $req->auth->vhcs); } else { $filter["vid"] = 0; } } elseif ($req->auth->is_tracking === Users::IS_TRACK_VHC_DEFAULT) { if ($req->auth->role === Users::ROLE_ADMIN) { if ($req->ord_id) { $ord = Orders::showOrder(["id" => $req->ord_id]); if (count($ord) > 0) { $filter["vid"] = $ord[0]->vhc_id; } else { $filter["vid"] = 0; } } elseif ($req->ord_code) { $ord = Orders::showOrder(["code" => $req->ord_code]); if (count($ord) > 0) { $filter["vid"] = $ord[0]->vhc_id; } else { $filter["vid"] = 0; } } } elseif ($req->auth->role === Users::ROLE_VENDOR) { $filter["own_by_vdr_id"] = $req->auth->uid; } elseif ($req->auth->role === Users::ROLE_CLIENT_ADMIN) { $ords = Orders::listOrders([ "client_id_active_orders" => $req->auth->uid, "is_accident" => Orders::IS_ACCIDENT_NO, ]); $filter["vids"] = []; $filter["client_id"] = $req->auth->uid; foreach ($ords as $k => $v) { $filter["vids"][] = $v->vhc_id; } } elseif ($req->auth->role === Users::ROLE_SPECIAL_TRACKING) { $filter["company"] = $req->auth->client_group_id; } else { $filter["vid"] = 0; } } else { $filter["vid"] = 0; } $list = Tracks::listCurrentTracks($filter); // dd($list); foreach ($list as $key => $row) { $list[$key]->DT_RowIndex = $key + 1; $list[$key]->is_track_holiday_text = $list[$key]->is_track_holiday == Vehicles::ENABLED_TRACK_HOLIDAY ? "Enabled" : "Disabled"; $list[$key]->alert_zones = "-"; $list[$key]->cameras = "-"; $insideZones = []; $insideZoneCircle = Zone::insideZoneCircle($row->lst_lat, $row->lst_lng); if (count($insideZoneCircle) > 0) { array_push($insideZones, ...$insideZoneCircle); } $insideZoneShape = Zone::insideZoneShape($row->lst_lat, $row->lst_lng); if (count($insideZoneShape) > 0) { array_push($insideZones, ...$insideZoneShape); } if (count($insideZones) > 0) { $list[$key]->inside_zones = $insideZones; } else { $list[$key]->inside_zones = null; } } $apiResp = Responses::success("success list vehicles"); $apiResp["data"] = $list; return new Response($apiResp, $apiResp["meta"]["code"]); } catch (\Exception $e) { $apiResp = Responses::error($e->getMessage()); return new Response($apiResp, $apiResp["meta"]["code"]); } } public function api_last_move_track_vhc(Request $req) { try { $now = time(); $input = [ "vid" => $req->vid, "end_at" => $req->end_at, ]; $rulesInput = [ "vid" => "required|integer", "end_at" => "nullable|date", ]; // validasi input $isValidInput = Validator::make($input, $rulesInput); if (!$isValidInput->passes()) { $apiResp = Responses::bad_input($isValidInput->messages()->first()); return new Response($apiResp, $apiResp["meta"]["code"]); } $filter = [ "limit" => 500, ]; // default 500, jika ada filter date maka max 5K if ( $req->start_date != null && $req->start_date != "" && ($req->end_date != null && $req->end_date != "") ) { $filter["start_date"] = $req->start_date; $filter["end_date"] = $req->end_date; $filter["start_date"] = strtotime(gmdate("Y-m-d H:i:s", $req->start_date)); $filter["end_date"] = strtotime(gmdate("Y-m-d H:i:s", $req->end_date)); $filter["limit"] = 5000; } $list = Tracks::lastMoveTracks($req->vid, $filter); $apiResp = Responses::success("success get last movements"); $apiResp["data"] = $list; return new Response($apiResp, $apiResp["meta"]["code"]); } catch (\Exception $e) { $apiResp = Responses::error($e->getMessage()); return new Response($apiResp, $apiResp["meta"]["code"]); } } public function api_conf_list_logs_gps(Request $req) { try { $now = time(); $input = []; $rulesInput = []; // validasi input // $isValidInput = Validator::make($input, $rulesInput); // if (!$isValidInput->passes()) { // $apiResp = Responses::bad_input($isValidInput->messages()->first()); // return new Response($apiResp, $apiResp['meta']['code']); // } $filter = [ "limit" => 1000, "crt_greater_than" => 1646122574, ]; $list = Tracks::listLogsGps($filter); foreach ($list as $key => $row) { $list[$key]->DT_RowIndex = $key + 1; $list[$key]->action = "-"; } $apiResp = Responses::success("success list gps tracker"); $apiResp["count"] = count($list); $apiResp["data"] = $list; return new Response($apiResp, $apiResp["meta"]["code"]); } catch (\Exception $e) { $apiResp = Responses::error($e->getMessage()); return new Response($apiResp, $apiResp["meta"]["code"]); } } public function api_track_order(Request $req) { try { $now = time(); $input = []; $rulesInput = []; // validasi input // $isValidInput = Validator::make($input, $rulesInput); // if (!$isValidInput->passes()) { // $apiResp = Responses::bad_input($isValidInput->messages()->first()); // return new Response($apiResp, $apiResp['meta']['code']); // } $ord = []; $filter = [ "get_pic_zone" => 1, "get_zone_data" => 1, ]; if ($req->ord_id) { $filter["id"] = $req->ord_id; } elseif ($req->ord_code) { $filter["code"] = $req->ord_code; } $ord = Orders::showOrder($filter); if (count($ord) < 1) { $apiResp = Responses::not_found("order not found"); return new Response($apiResp, $apiResp["meta"]["code"]); } $vid = $ord[0]->vhc_id; $history = Tracks::lastMoveTracks($vid, [ "start_at" => $ord[0]->confirm_at, ]); $apiResp = Responses::success("success track order"); $apiResp["data"] = [ "order" => $ord[0], "history" => $history, ]; return new Response($apiResp, $apiResp["meta"]["code"]); } catch (\Exception $e) { $apiResp = Responses::error($e->getMessage()); return new Response($apiResp, $apiResp["meta"]["code"]); } } }