IMMREX7

aku nok ndi : /home/spdtg/www/gomygps/app/Http/Controllers/
File Up :
aku nok ndi : /home/spdtg/www/gomygps/app/Http/Controllers/ParkingEvents.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Carbon\Carbon;
use DB;
use App\Http\GpsReport;

class ParkingEvents extends Controller
{
    public function index(Request $request){
        $invehicle = \App\ParkingEvent::select('event_time','ecno')->where('status','IN')->where('event_time',Carbon::now()->format('Y-m-d'))->groupBy('event_time','ecno')->get()->count();
        $outvehicle = \App\ParkingEvent::select('event_time','ecno')->where('status','OUT')->where('event_time',Carbon::now()->format('Y-m-d'))->groupBy('event_time','ecno')->get()->count();
        $vehicles = \App\ParkingEvent::leftJoin('report_gps','parking_events.vehicleNo','=','report_gps.vehicle_no')->select(DB::raw('ANY_VALUE(report_gps.status) as gps'),'parking_events.ecno','parking_events.vehicleNo','parking_events.model','parking_events.event','parking_events.status')->groupBy('ecno','vehicleNo','model','event','status')->where('event_time',Carbon::now()->format('Y-m-d'))->orderBy('event','DESC')->limit(1)->get();
        return view('parking',compact('invehicle','outvehicle','vehicles'));
    }

    public function fetchParking(){
        $invehicle = \App\ParkingEvent::select('event_time','ecno')->where('status','IN')->where('event_time',Carbon::now()->format('Y-m-d'))->groupBy('event_time','ecno')->get()->count();
        $outvehicle = \App\ParkingEvent::select('event_time','ecno')->where('status','OUT')->where('event_time',Carbon::now()->format('Y-m-d'))->groupBy('event_time','ecno')->get()->count();
        $vehicles = \App\ParkingEvent::leftJoin('report_gps','parking_events.vehicleNo','=','report_gps.vehicle_no')->select(DB::raw('ANY_VALUE(report_gps.status) as gps'),'parking_events.ecno','parking_events.vehicleNo','parking_events.model','parking_events.event','parking_events.status')->groupBy('ecno','vehicleNo','model','event','status')->where('event_time',Carbon::now()->format('Y-m-d'))->orderBy('event','DESC')->limit(1)->get();
        
        date_default_timezone_set("Asia/Kolkata");
        if(count($vehicles) > 0){
            $vehicles[0]['event'] = Carbon::createFromTimestamp($vehicles[0]['event'])->format('d-m-Y g:i A');

            if($vehicles[0]['gps'] == 0 && $vehicles[0]['status'] == "IN"){
                $ids =  \App\DeviceToken::where('type','web')->orderBy('id','DESC')->first();
                $now = Carbon::now();
                $end = Carbon::parse($ids->updated_at);
                $diff = $end->diffInMinutes($now);
                if($diff > 10){
                    $data["token"] = $ids->token;
                    $data["title"] = "GPS Inactive";
                    $data["body"] = $vehicles[0]['vehicleNo']." gps is not active. Please check the dashboard for more information.";
                    $ids->updated_at =  date('Y-m-d H:i:s');
                    $diff = GpsReport::sendNotification($data);
                    $ids->update();
                }
            }
        }
        
        $data = array(
            "in" => $invehicle ,
            "out" => $outvehicle,
            "vehicles" =>$vehicles
        );
        return json_encode($data);
    }

    public function fetchGps(Request $request){
        date_default_timezone_set("Asia/Kolkata");
        GpsReport::generateReport();
        $data = array(
            "result" => 1,
            "message" => "Information successfully inserted",
            "event_time" => Carbon::now()->format('Y-m-d H:i:s')
        );
        return json_encode($data);
    }

    public function fetchReport(Request $request){
        $today_date = Carbon::today()->format('Y-m-d');
        if ($request->has('from') && $request->from != null) {
            $from_date = Carbon::createFromFormat('d-m-Y', $request->from)->format('Y-m-d');
        }
        if ($request->has('to') && $request->to != null) {
            $to_date = Carbon::createFromFormat('d-m-Y', $request->to)->format('Y-m-d');
        }

        if (($request->has('to') && $request->to != null) && ($request->has('from') && $request->from != null)) {
            $parkings = \App\ParkingEvent::whereBetween('event_time', [$from_date, $to_date]);
        } else if ($request->has('from') && $request->from != null) {
            $parkings = \App\ParkingEvent::whereBetween('event_time', [$from_date, $today_date]);
        } else if ($request->has('to') && $request->to != null) {
            $parkings = \App\ParkingEvent::whereDate('event_time', '<=', $to_date);
        }else{
            $parkings = \App\ParkingEvent::whereDate('event_time', '=', $today_date);
        }
       
        if ($request->has('vehicleNo') && $request->vehicleNo != 'All') {
            $parkings = $parkings->where('vehicleNo', '=', $request->vehicleNo)->get();
        }else if($request->vehicleNo == 'All'){
            $parkings = $parkings->get();
        }

        $vehicles = \App\Vehicle::whereNotNUll('ecno')->pluck('vehicleNo','vehicleNo')->toArray();
        return view('reports.parking-report',compact('parkings','vehicles'));
    }

    public function fetchGpsReport(Request $request){
        if ($request->has('from') && $request->from != null) {
            $from_date = Carbon::createFromFormat('d-m-Y', $request->from)->format('Y-m-d');
        }
        if ($request->has('to') && $request->to != null) {
            $to_date = Carbon::createFromFormat('d-m-Y', $request->to)->format('Y-m-d');
        }

        if (($request->has('to') && $request->to != null) && ($request->has('from') && $request->from != null)) {
            $parkings = \App\DeviceReport::whereBetween('gps_update', [$from_date, $to_date]);
        } else if ($request->has('from') && $request->from != null) {
            $parkings = \App\DeviceReport::whereBetween('gps_update', [$from_date, $to_date]);
        } else if ($request->has('to') && $request->to != null) {
            $parkings = \App\DeviceReport::whereDate('gps_update', '<=', $to_date);
        }else{
            $parkings = \App\DeviceReport::select('report_gps.*');
        }
       
        if ($request->has('status') && $request->status != 'All') {
            $parkings = $parkings->where('status', '=', $request->status)->get();
        }else if($request->status == 'All'){
            $parkings = $parkings->get();
        }

        $vehicles = \App\Vehicle::whereNotNUll('ecno')->pluck('vehicleNo','vehicleNo')->toArray();
        return view('reports.gps-report',compact('parkings','vehicles'));
    }

    public function addNotificationToken($id){
        $token = \App\DeviceToken::where('token', '=', $id)->first();
        if($token == null){
            $tokens = new \App\DeviceToken();
            $tokens->token = $id;
            $tokens->save();
        }
        $data = array(
            "result" => 1,
            "message" => "Information successfully inserted",
            "event_time" => Carbon::now()->format('Y-m-d H:i:s')
        );
        return json_encode($data);
    }


    public function gpsNotifications(Request $request){
        $vehicles = \App\ParkingEvent::leftJoin('report_gps','parking_events.vehicleNo','=','report_gps.vehicle_no')->select(DB::raw('ANY_VALUE(report_gps.status) as gps'),'parking_events.ecno','parking_events.vehicleNo','parking_events.model','parking_events.event','parking_events.status')->groupBy('ecno','vehicleNo','model','event','status')->where('event_time',Carbon::now()->format('Y-m-d'))->orderBy('event','DESC')->limit(1)->get();
        date_default_timezone_set("Asia/Kolkata");
        if(count($vehicles) > 0){
            $vehicles[0]['event'] = Carbon::createFromTimestamp($vehicles[0]['event'])->format('d-m-Y g:i A');
        }
        return view('reports.gps-notification',compact('vehicles'));
    }

    public function parkingEvent(Request $request){
        if(!isset($request->ecno)){
            $data = array(
                "result" => 0,
                "message" => "ecno is a required field"
            );
            return json_encode($data);
        }
        if(!isset($request->timestamp)){
            $data = array(
                "result" => 0,
                "message" => "timestamp is a required field"
            );
            return json_encode($data);
        }
        if(!isset($request->status)){
            $data = array(
                "result" => 0,
                "message" => "status is a required field"
            );
            return json_encode($data);
        }
        date_default_timezone_set("Asia/Kolkata");
        $checkEventExists = \App\ParkingEvent::where('ecno',$request->ecno)
        ->where('event_time',Carbon::createFromTimestamp($request->timestamp)->format('Y-m-d'))
        ->where('status',$request->status)
        ->first();
        if($checkEventExists == null){
            $event = new \App\ParkingEvent();
            $event->ecno = $request->ecno;
            $vehicles = \App\Vehicle::where('ecno',$request->ecno)->first();
            if($vehicles != null){
                $event->vehicleNo = $vehicles->vehicleNo;
                $event->model = $vehicles->model;
            }else{
                $data = array(
                    "result" => 0,
                    "message" => "Ecno information is invalid"
                );
                return json_encode($data);
            }
            $event->event_time = Carbon::createFromTimestamp($request->timestamp)->format('Y-m-d'); 
            $event->event = $request->timestamp;
            $event->status = $request->status;
            if($event->save()){
                $data = array(
                    "result" => 1,
                    "message" => "Information successfully inserted",
                    "event_time" => Carbon::createFromTimestamp($request->timestamp)->format('Y-m-d H:i:s')
                );
            }else{
                $data = array(
                    "result" => 0,
                    "message" => "Failed to insert information"
                );
            }
        }else{
            $checkEventExists->event_time = Carbon::createFromTimestamp($request->timestamp)->format('Y-m-d'); 
            $checkEventExists->event = $request->timestamp;
            $checkEventExists->status = $request->status;
            if($checkEventExists->update()){
                $data = array(
                    "result" => 1,
                    "message" => "Information successfully inserted",
                    "event_time" => Carbon::createFromTimestamp($request->timestamp)->format('Y-m-d H:i:s')
                );
            }else{
                $data = array(
                    "result" => 0,
                    "message" => "Failed to insert information"
                );
            }
        }
        
        return json_encode($data);
    }
}

Copyright © 2021 - 2025 IMMREX7