Initial commit
This commit is contained in:
249
app/Http/Controllers/TrackController.php
Executable file
249
app/Http/Controllers/TrackController.php
Executable file
@ -0,0 +1,249 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Validator;
|
||||
use App\Responses;
|
||||
use App\Helper;
|
||||
use App\Models\Tracks;
|
||||
use App\Models\Vehicles;
|
||||
use App\Models\Zone;
|
||||
use App\Models\Users;
|
||||
use App\Models\Orders;
|
||||
|
||||
class TrackController extends Controller
|
||||
{
|
||||
public function api_list_currect_track_vhc(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 = [
|
||||
"get_order_data" => 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['vid'] = 0;
|
||||
$filter["company"] = $req->auth->client_group_id;
|
||||
} else {
|
||||
$filter["vid"] = 0;
|
||||
}
|
||||
} else {
|
||||
$filter["vid"] = 0;
|
||||
}
|
||||
|
||||
$list = Tracks::listCurrentTracks($filter);
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
// $list[$key]->mileage_km = '-';
|
||||
$list[$key]->track_schedule = $row->track_sch_h . "/" . $row->track_sch_d; // combine track_sch_h + track_sch_d
|
||||
$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["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"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user