diff --git a/app/Http/Controllers/ReportsController.php b/app/Http/Controllers/ReportsController.php index d9727ad..9845b66 100644 --- a/app/Http/Controllers/ReportsController.php +++ b/app/Http/Controllers/ReportsController.php @@ -17,6 +17,7 @@ use Maatwebsite\Excel\Concerns\WithHeadings; use Maatwebsite\Excel\Concerns\WithStyles; use Maatwebsite\Excel\Concerns\WithCustomStartCell; use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; +use Carbon\Carbon; class ReportsController extends Controller { @@ -107,7 +108,8 @@ class ReportsController extends Controller tvd.pool_code, tvd.dc_code FROM agg agg join t_vehicles_detail tvd on tvd.vid = agg.id - ORDER BY agg.id, trip_id "; + ORDER BY agg.id, trip_id + "; $d = [$from_date, $to_date, $vid, $vid]; $list = DB::select($q, $d); @@ -193,7 +195,88 @@ class ReportsController extends Controller } public function view_report_trip_detail(Request $req) { - return view('menu_v1.reports._trip_detail'); + $vid = $req->vid; + $tgl0 = $req->tgl0; + $tgl1 = $req->tgl1; + $nopol1 = $req->nopol1; + + $q = " + select + t.crt_s , t.latitude, t.longitude, t.speed, + tgta.fulladdress, + t.pre_milleage, t.vhc_milleage + FROM + t_gps_tracks t + join t_gps_tracks_address tgta on tgta.master_id = t.id + WHERE + t.vhc_id = ? + and t.latitude IS NOT NULL + AND t.longitude IS NOT NULL + AND t.action = 'location' + AND t.crt_s BETWEEN ? AND ? + ORDER BY t.crt_s asc + "; + $d = [$vid, $tgl0, $tgl1]; + $list = DB::select($q, $d); + + $start = [ + 'time' => date('d-m-Y H:i:s', $list[0]->crt_s), + 'fulladdress' => urldecode($list[0]->fulladdress), + 'mileage' => $list[0]->vhc_milleage, + ]; + $finish = [ + 'time' => date('d-m-Y H:i:s', $list[count($list) - 1]->crt_s), + 'fulladdress' => urldecode($list[count($list) - 1]->fulladdress), + 'mileage' => $list[count($list) - 1]->vhc_milleage, + ]; + + $t0 = Carbon::createFromTimestamp($list[0]->crt_s); + $t1 = Carbon::createFromTimestamp($list[count($list) - 1]->crt_s); + $diff = $t1->diff($t0); + $hours = $diff->h + ($diff->days * 24); // include days converted to hours + $minutes = $diff->i; + $duration = "{$hours} hour" . ($hours > 1 ? 's' : '') . " {$minutes} minute" . ($minutes > 1 ? 's' : ''); + + $distance = $list[count($list) - 1]->vhc_milleage - $list[0]->vhc_milleage; + + $polyline = []; + foreach ($list as $item) { + $polyline[] = [$item->latitude, $item->longitude]; + } + + // $q0 = " + // select + // t.crt_s , t.latitude, t.longitude, t.speed, + // tgta.fulladdress, + // t.pre_milleage, t.vhc_milleage + // FROM + // t_gps_tracks t + // join t_gps_tracks_address tgta on tgta.master_id = t.id + // WHERE + // t.vhc_id = ? + // and t.latitude IS NOT NULL + // AND t.longitude IS NOT NULL + // AND t.action = 'location' + // AND t.crt_s BETWEEN ? AND ? + // ORDER BY t.crt_s asc + // "; + // $d = [$vid, $tgl0, $tgl1]; + + + $data = [ + 'nopol1' => $nopol1, + 'vid' => $vid, + 'tgl0' => $tgl0, + 'tgl1' => $tgl1, + 'list' => $list, + 'start' => $start, + 'finish' => $finish, + 'duration' => $duration, + 'distance' => $distance, + 'polyline' => json_encode($polyline), + ]; + // dd($list); + return view('menu_v1.reports._trip_detail', $data); } public function view_report_abnormalities(Request $req) diff --git a/resources/views/menu_v1/reports/_trip_detail.blade.php b/resources/views/menu_v1/reports/_trip_detail.blade.php index 4c813c2..c189c64 100644 --- a/resources/views/menu_v1/reports/_trip_detail.blade.php +++ b/resources/views/menu_v1/reports/_trip_detail.blade.php @@ -11,10 +11,11 @@ } +