IMMREX7
<?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 -