File: //var/www/html/punjabcabs/Original_Backup/app/Http/Controllers/AdminController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Helpers\Helper;
use DB;
use Auth;
use Setting;
use Exception;
use PushNotification;
use \Carbon\Carbon;
use App\Http\Controllers\SendPushNotification;
use Twilio;
use App\User;
use App\Fleet;
use App\Admin;
use App\Provider;
use App\UserPayment;
use App\ServiceType;
use App\UserRequests;
use App\ProviderService;
use App\ProviderDevice;
use App\UserRequestRating;
use App\UserRequestPayment;
use App\Waypoint;
use Mail;
class AdminController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('admin');
}
/**
* Dashboard.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function dashboard()
{
$days = 20;
$range = \Carbon\Carbon::now()->subDays($days);
$range = date($range);
$result = DB::select("SELECT
Date(user_requests.created_at) as date,
COUNT(CASE WHEN user_requests.status = 'COMPLETED' THEN 1 END) AS completed,
COUNT(CASE WHEN user_requests.status = 'CANCELLED' THEN 1 END) AS cancelled,
IFNULL(ROUND(SUM(user_request_payments.total),2), 0) as revenue
FROM user_requests
LEFT JOIN user_request_payments
ON user_requests.id = user_request_payments.request_id
WHERE user_requests.created_at >= '$range'
GROUP BY date
ORDER BY date DESC");
$stats = json_encode($result);
$days = 7;
$barrange = \Carbon\Carbon::now()->subDays($days);
$barrange = date($range);
$barresult = DB::select("SELECT
Date(user_requests.created_at) as date,
COUNT(CASE WHEN user_requests.booking_by = 'APP' THEN 1 END) AS app,
COUNT(CASE WHEN user_requests.booking_by = 'DISPATCHER' THEN 1 END) AS dispatcher,
COUNT(CASE WHEN user_requests.booking_by = 'STREET' THEN 1 END) AS street
FROM user_requests
WHERE user_requests.created_at >= '$barrange'
GROUP BY date
ORDER BY date ASC");
foreach($barresult as $key =>$stat){
$barresult[$key]->date = Helper::date_formatter_rev($stat->date);
}
$bar = json_encode($barresult);
$pierange = Carbon::today();
$pierange = date($pierange);
$pieresult = DB::select("SELECT
COUNT(CASE WHEN user_requests.cancelled_by = 'USER' THEN 1 END) AS user,
COUNT(CASE WHEN user_requests.cancelled_by = 'DISPATCHER' THEN 1 END) AS dispatcher,
COUNT(CASE WHEN (user_requests.cancelled_by = 'NODRIVER' || user_requests.cancelled_by = 'REJECTED') THEN 1 END) AS rejected,
COUNT(CASE WHEN user_requests.cancelled_by = 'PROVIDER' THEN 1 END) AS provider
FROM user_requests
WHERE user_requests.created_at >= '$pierange'");
$pie = $pieresult;
return view('admin.dashboard',compact('stats', 'bar', 'pie'));
}
public function content(Request $request)
{
try{
$fromdate = Carbon::today();
$todate = Carbon::now();
if($request->fromdate !=''){
$fromdate = Helper::date_formatter($request->fromdate);
}
if($request->todate !=''){
$todate = Helper::date_formatter($request->todate);
}
$rides = UserRequests::has('user')
->where('created_at', '>=', $fromdate)
->where('created_at', '<', $todate)
->orderBy('id','desc')
->get();
$completed_rides = UserRequests::where('status','COMPLETED')
->where('created_at', '>=', $fromdate)
->where('created_at', '<', $todate)
->count();
$cancel_rides = UserRequests::where('status','CANCELLED')
->where('created_at', '>=', $fromdate)
->where('created_at', '<', $todate)
->get();
$scheduled_rides = UserRequests::where('created_at', '>=', $fromdate)
->where('created_at', '<', $todate)
->where('status','SCHEDULED')
->count();
$dispatcher_rides = UserRequests::where('created_at', '>=', $fromdate)
->where('created_at', '<', $todate)
->where('booking_by','DISPATCHER')
->count();
$street_rides = UserRequests::where('created_at', '>=', $fromdate)
->where('created_at', '<', $todate)
->where('booking_by','STREET')
->count();
$user_cancelled = UserRequests::where('status','CANCELLED')
->where('created_at', '>=', $fromdate)
->where('created_at', '<', $todate)
->where('cancelled_by','USER')
->count();
$provider_cancelled = UserRequests::where('status','CANCELLED')
->where('created_at', '>=', $fromdate)
->where('created_at', '<', $todate)
->where('cancelled_by','PROVIDER')
->count();
$dispatcher_cancelled = UserRequests::where('status','CANCELLED')
->where('created_at', '>=', $fromdate)
->where('created_at', '<', $todate)
->where('cancelled_by','DISPATCHER')
->count();
$service = ServiceType::count();
$fleet = Fleet::count();
$revenue = UserRequestPayment::where('created_at', '>=', $fromdate)
->where('created_at', '<', $todate)
->sum('total');
$commision = UserRequestPayment::where('created_at', '>=', $fromdate)
->where('created_at', '<', $todate)
->sum('commision');
$providers = Provider::take(10)->orderBy('rating','desc')->get();
return view('admin.dashboard-content',compact('providers','fleet','scheduled_rides','service','rides','completed_rides','user_cancelled','provider_cancelled','dispatcher_cancelled','cancel_rides','revenue','commision','dispatcher_rides','street_rides'));
}
catch(Exception $e){
return redirect()->route('admin.user.index')->with('flash_error','Something Went Wrong with Dashboard!');
}
}
/**
* Heat Map.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function heatmap()
{
try{
$rides = UserRequests::has('user')->orderBy('id','desc')->get();
$providers = Provider::take(10)->orderBy('rating','desc')->get();
return view('admin.heatmap',compact('providers','rides'));
}
catch(Exception $e){
return redirect()->route('admin.user.index')->with('flash_error','Something Went Wrong with Dashboard!');
}
}
/**
* Map of all Users and Drivers.
*
* @return \Illuminate\Http\Response
*/
public function map_index()
{
return view('admin.map.index');
}
/**
* Map of all Users and Drivers.
*
* @return \Illuminate\Http\Response
*/
public function map_ajax()
{
try {
$Providers = Provider::where('latitude', '!=', 0)
->where('longitude', '!=', 0)
->with('service')
->get();
$Users = User::where('latitude', '!=', 0)
->where('longitude', '!=', 0)
->get();
for ($i=0; $i < sizeof($Users); $i++) {
$Users[$i]->status = 'user';
}
$All = $Users->merge($Providers);
return $All;
} catch (Exception $e) {
return [];
}
}
/**
* Map of all Users and Drivers.
*
* @return \Illuminate\Http\Response
*/
public function dispatch_ajax()
{
try {
$Providers = Provider::join('provider_devices', 'providers.id', '=', 'provider_devices.provider_id')
->join('provider_services', 'providers.id', '=', 'provider_services.provider_id')
->where('providers.latitude','!=', 0)
->where('providers.longitude', '!=', 0)
->where('provider_devices.udid','!=','')
->whereIn('provider_services.status', array('active','riding','offline'))
->select('providers.id','providers.first_name','providers.last_name','providers.latitude','providers.longitude','provider_services.status')
->getQuery()
->get();
return $Providers;
} catch (Exception $e) {
return [];
}
}
/**
* Map of all Users and Drivers.
*
* @return \Illuminate\Http\Response
*/
public function driver_ajax()
{
try {
$result = Provider::join('provider_devices', 'providers.id', '=', 'provider_devices.provider_id')
->join('provider_services', 'providers.id', '=', 'provider_services.provider_id')
->join('service_types', 'provider_services.service_type_id', '=', 'service_types.id')
->where('provider_devices.udid','!=','')
->select('providers.id AS id','providers.first_name AS firstname', 'providers.last_name AS lastname', 'provider_services.service_number AS taxinumber', 'provider_services.status AS currentstatus', 'service_types.name AS servicename')
->getQuery()
->get();
return $result;
} catch (Exception $e) {
return [];
}
}
/**
* Default map coordinates.
*
* @return \Illuminate\Http\Response
*/
public function default_map()
{
$lat = Setting::get('address_lat');
$lng = Setting::get('address_long');
$zoom = Setting::get('zoom');
$result = array($lat, $lng, $zoom);
return $result;
}
/**
* Remove the specified resource from storage.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function settings()
{
return view('admin.settings.application');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function settings_store(Request $request)
{
$this->validate($request,[
'site_title' => 'required',
'site_icon' => 'mimes:jpeg,jpg,bmp,png|max:5242880',
'site_logo' => 'mimes:jpeg,jpg,bmp,png|max:5242880',
]);
if($request->hasFile('site_icon')) {
$site_icon = Helper::upload_picture($request->file('site_icon'));
Setting::set('site_icon', $site_icon);
}
if($request->hasFile('site_logo')) {
$site_logo = Helper::upload_picture($request->file('site_logo'));
Setting::set('site_logo', $site_logo);
}
if($request->hasFile('site_email_logo')) {
$site_email_logo = Helper::upload_picture($request->file('site_email_logo'));
Setting::set('site_email_logo', $site_email_logo);
}
Setting::set('site_title', $request->site_title);
Setting::set('store_link_android', $request->store_link_android);
Setting::set('store_link_ios', $request->store_link_ios);
Setting::set('mail_enable', $request->mail_enable);
Setting::set('sms_enable', $request->sms_enable);
Setting::set('country_code', $request->country_code);
Setting::set('provider_select_timeout', $request->provider_select_timeout);
Setting::set('provider_search_radius', $request->provider_search_radius);
Setting::set('distance_unit', $request->distance_unit);
Setting::set('sos_number', $request->sos_number);
Setting::set('contact_number', $request->contact_number);
Setting::set('contact_email', $request->contact_email);
Setting::set('site_copyright', $request->site_copyright);
Setting::set('social_login', $request->social_login);
Setting::set('country', $request->country);
Setting::set('state', $request->state);
Setting::set('city', $request->city);
Setting::set('address', $request->address);
Setting::set('address_lat', $request->address_lat);
Setting::set('address_long', $request->address_long);
Setting::set('zoom', $request->zoom);
Setting::save();
return back()->with('flash_success','Settings Updated Successfully');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function settings_payment()
{
$wheelservices = ServiceType::select('id','name')->get();
return view('admin.payment.settings', compact('wheelservices'));
}
/**
* Save payment related settings.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function settings_payment_store(Request $request)
{
$this->validate($request, [
'CARD' => 'in:on',
'CASH' => 'in:on',
'stripe_secret_key' => 'required_if:CARD,on|max:255',
'stripe_publishable_key' => 'required_if:CARD,on|max:255',
'tax_percentage' => 'required|min:0|max:100',
'commission_percentage' => 'required|numeric|min:0|max:100',
'currency' => 'required'
]);
Setting::set('CARD', $request->has('CARD') ? 1 : 0 );
Setting::set('CASH', $request->has('CASH') ? 1 : 0 );
Setting::set('stripe_secret_key', $request->stripe_secret_key);
Setting::set('stripe_publishable_key', $request->stripe_publishable_key);
Setting::set('transaction_percentage', $request->transaction_percentage);
Setting::set('tax_percentage', $request->tax_percentage);
Setting::set('sro_levy', $request->sro_levy);
Setting::set('commission_enable', $request->commission_enable);
Setting::set('commission_percentage', $request->commission_percentage);
Setting::set('cancellation_min', $request->cancellation_min);
Setting::set('cancellation_fare', $request->cancellation_fare);
Setting::set('wheelchair_service', $request->wheelchair_service);
Setting::set('wheelchair_discount', $request->wheelchair_discount);
Setting::set('currency', $request->currency);
Setting::set('booking_prefix', $request->booking_prefix);
Setting::save();
return back()->with('flash_success','Settings Updated Successfully');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function profile()
{
return view('admin.account.profile');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function profile_update(Request $request)
{
$this->validate($request,[
'name' => 'required|max:255',
'email' => 'required',
'picture' => 'mimes:jpeg,jpg,bmp,png|max:5242880',
]);
try{
$admin = Auth::guard('admin')->user();
$admin->name = $request->name;
$admin->email = $request->email;
if($request->hasFile('picture')){
$admin->picture = $request->picture->store('admin/profile');
}
$admin->save();
return redirect()->back()->with('flash_success','Profile Updated');
}
catch (Exception $e) {
return back()->with('flash_error','Something Went Wrong!');
}
}
/**
* Remove the specified resource from storage.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function password()
{
return view('admin.account.change-password');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function password_update(Request $request)
{
$this->validate($request,[
'old_password' => 'required',
'password' => 'required|min:6|confirmed',
]);
try {
$Admin = Admin::find(Auth::guard('admin')->user()->id);
if(password_verify($request->old_password, $Admin->password))
{
$Admin->password = bcrypt($request->password);
$Admin->save();
return redirect()->back()->with('flash_success','Password Updated');
}
} catch (Exception $e) {
return back()->with('flash_error','Something Went Wrong!');
}
}
/**
* Remove the specified resource from storage.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function payment()
{
try {
$payments = UserRequests::where('paid', 1)
->has('user')
->has('provider')
->has('payment')
->orderBy('user_requests.created_at','desc')
->get();
return view('admin.payment.payment-history', compact('payments'));
} catch (Exception $e) {
return back()->with('flash_error','Something Went Wrong!');
}
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function payment_row(Request $request){
$columns = array(
0 =>'request_id',
1 =>'transaction_id',
2=> 'from',
3=> 'to',
4=> 'total_amount',
5=> 'payment_mode',
6=> 'payment_status',
);
$payment_list = UserRequests::where('paid', 1)
->has('user')
->has('provider')
->has('payment')
->orderBy('user_requests.created_at','desc');
$totalData = $payment_list->count();
$totalFiltered = $totalData;
$limit = $request->input('length');
$start = $request->input('start');
$order = $columns[$request->input('order.0.column')];
$dir = $request->input('order.0.dir');
if(empty($request->input('search.value')))
{
$Payments = $payment_list->offset($start)
->limit($limit)
->orderBy('id','desc')
->get();
}
else {
$search = $request->input('search.value');
$Payments = $payment_list->where('id','LIKE',"%{$search}%")
->offset($start)
->limit($limit)
->orderBy('id','desc')
->get();
$totalFiltered = $payment_list->where('id','LIKE',"%{$search}%")
->count();
}
$data = array();
if(!empty($Payments))
{
foreach ($Payments as $index => $payment)
{
if($payment->user){
if($payment->user->first_name != ''){ $first_name = $payment->user->first_name;}else{$first_name = "";}
if($payment->user->last_name != ''){ $last_name = $payment->user->last_name;}else{$last_name = "";}
}else{
$first_name ='Not Found';
$last_name ='Not Found';
}
if($payment->provider){
if($payment->provider->first_name != ''){ $provider_first_name = $payment->provider->first_name;}else{$provider_first_name = "";}
if($payment->provider->last_name != ''){ $provider_last_name = $payment->provider->last_name;}else{$provider_last_name = "";}
}else{
$provider_first_name = 'Not Found';
$provider_last_name = 'Not Found';
}
if($payment->paid){
$status ='Paid';
}else{
$status ='Not Paid';
}
$user_name = $first_name.' '.$last_name;
$provider_name = $provider_first_name.' '.$provider_last_name;
$nestedData['request_id'] = $payment->id;
$nestedData['transaction_id'] = $payment->payment->payment_id;
$nestedData['from'] = $user_name;
$nestedData['to'] = $provider_name;
$nestedData['total_amount'] = '<span class="text-info">'.currency($payment->payment->total).'</span>';
$nestedData['payment_mode'] = $payment->payment_mode;
$nestedData['payment_status'] = $status;
$data[] = $nestedData;
$start++;
}
}
$json_data = array(
"draw" => intval($request->input('draw')),
"recordsTotal" => intval($totalData),
"recordsFiltered" => intval($totalFiltered),
"data" => $data
);
echo json_encode($json_data);
}
/**
* Remove the specified resource from storage.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function help()
{
try {
return view('admin.help');
} catch (Exception $e) {
return back()->with('flash_error','Something Went Wrong!');
}
}
/**
* User Rating.
*
* @return \Illuminate\Http\Response
*/
public function user_review()
{
try {
$Reviews = UserRequestRating::where('user_id','!=', 0)->has('user')->has('provider')->get();
return view('admin.review.user_review',compact('Reviews'));
} catch(Exception $e) {
return redirect()->route('admin.setting')->with('flash_error','Something ');
}
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function reviewuser_row(Request $request){
$columns = array(
0 =>'id',
1 =>'request_id',
2=> 'user_name',
3=> 'provider_name',
4=> 'rating',
5=> 'date_time',
6=> 'comments',
);
$user_review = UserRequestRating::where('user_id','!=', 0)->with('user','provider');
$totalData = $user_review->count();
$totalFiltered = $totalData;
$limit = $request->input('length');
$start = $request->input('start');
$order = $columns[$request->input('order.0.column')];
$dir = $request->input('order.0.dir');
if(empty($request->input('search.value')))
{
$Reviews = $user_review->offset($start)
->limit($limit)
->orderBy('id','desc')
->get();
}
else {
$search = $request->input('search.value');
$Reviews = $user_review->where('request_id','LIKE',"%{$search}%")
->offset($start)
->limit($limit)
->orderBy('id','desc')
->get();
$totalFiltered = $user_review->where('request_id','LIKE',"%{$search}%")
->count();
}
$data = array();
if(!empty($Reviews))
{
foreach ($Reviews as $index => $review)
{
if($review->user){
if($review->user->first_name != ''){ $first_name = $review->user->first_name;}else{$first_name = "";}
if($review->user->last_name != ''){ $last_name = $review->user->last_name;}else{$last_name = "";}
}else{
$first_name ='Not Found';
$last_name ='Not Found';
}
if($review->provider){
if($review->provider->first_name != ''){ $provider_first_name = $review->provider->first_name;}else{$provider_first_name = "";}
if($review->provider->last_name != ''){ $provider_last_name = $review->provider->last_name;}else{$provider_last_name = "";}
}else{
$provider_first_name = 'Not Found';
$provider_last_name = 'Not Found';
}
$rating = '<div className="rating-outer">
<input type="hidden" value="'.$review->user_rating.'" name="rating" class="rating"/>
</div>';
$user_name = $first_name.' '.$last_name;
$provider_name = $provider_first_name.' '.$provider_last_name;
$nestedData['id'] = $start + 1;
$nestedData['request_id'] = $review->request_id;
$nestedData['user_name'] = $user_name;
$nestedData['provider_name'] = $provider_name;
$nestedData['rating'] = $rating;
$nestedData['date_time'] = date_formatter($review->created_at);
$nestedData['comments'] = $review->user_comment;
$data[] = $nestedData;
$start++;
}
}
$json_data = array(
"draw" => intval($request->input('draw')),
"recordsTotal" => intval($totalData),
"recordsFiltered" => intval($totalFiltered),
"data" => $data
);
echo json_encode($json_data);
}
/**
* Provider Rating.
*
* @return \Illuminate\Http\Response
*/
public function provider_review()
{
try {
$Reviews = UserRequestRating::where('provider_id','!=',0)->has('user')->has('provider')->get();
return view('admin.review.provider_review',compact('Reviews'));
} catch(Exception $e) {
return redirect()->route('admin.setting')->with('flash_error','Something Went Wrong!');
}
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function reviewprovider_row(Request $request){
$columns = array(
0 =>'id',
1 =>'request_id',
2=> 'user_name',
3=> 'provider_name',
4=> 'rating',
5=> 'date_time',
6=> 'comments',
);
$provider_review = UserRequestRating::where('provider_id','!=', 0)->with('user','provider');
$totalData = $provider_review->count();
$totalFiltered = $totalData;
$limit = $request->input('length');
$start = $request->input('start');
$order = $columns[$request->input('order.0.column')];
$dir = $request->input('order.0.dir');
if(empty($request->input('search.value')))
{
$Reviews = $provider_review->offset($start)
->limit($limit)
->orderBy('id','desc')
->get();
}
else {
$search = $request->input('search.value');
$Reviews = $provider_review->where('request_id','LIKE',"%{$search}%")
->offset($start)
->limit($limit)
->orderBy('id','desc')
->get();
$totalFiltered = $provider_review->where('request_id','LIKE',"%{$search}%")
->count();
}
$data = array();
if(!empty($Reviews))
{
foreach ($Reviews as $index => $review)
{
if($review->user){
if($review->user->first_name != ''){ $first_name = $review->user->first_name;}else{$first_name = "";}
if($review->user->last_name != ''){ $last_name = $review->user->last_name;}else{$last_name = "";}
}else{
$first_name ='Not Found';
$last_name ='Not Found';
}
if($review->provider){
if($review->provider->first_name != ''){ $provider_first_name = $review->provider->first_name;}else{$provider_first_name = "";}
if($review->provider->last_name != ''){ $provider_last_name = $review->provider->last_name;}else{$provider_last_name = "";}
}else{
$provider_first_name = 'Not Found';
$provider_last_name = 'Not Found';
}
$rating = '<div className="rating-outer">
<input type="hidden" value="'.$review->provider_rating.'" name="rating" class="rating"/>
</div>';
$user_name = $first_name.' '.$last_name;
$provider_name = $provider_first_name.' '.$provider_last_name;
$nestedData['id'] = $start + 1;
$nestedData['request_id'] = $review->request_id;
$nestedData['user_name'] = $user_name;
$nestedData['provider_name'] = $provider_name;
$nestedData['rating'] = $rating;
$nestedData['date_time'] = date_formatter($review->created_at);
$nestedData['comments'] = $review->provider_comment;
$data[] = $nestedData;
$start++;
}
}
$json_data = array(
"draw" => intval($request->input('draw')),
"recordsTotal" => intval($totalData),
"recordsFiltered" => intval($totalFiltered),
"data" => $data
);
echo json_encode($json_data);
}
/**
* Remove the specified resource from storage.
*
* @param \App\ProviderService
* @return \Illuminate\Http\Response
*/
public function destory_provider_service($id){
try {
ProviderService::find($id)->delete();
return back()->with('message', 'Service deleted successfully');
} catch (Exception $e) {
return back()->with('flash_error','Something Went Wrong!');
}
}
/**
* Testing page for push notifications.
*
* @return \Illuminate\Http\Response
*/
public function push_index()
{
$data = PushNotification::app('IOSUser')
->to('163e4c0ca9fe084aabeb89372cf3f664790ffc660c8b97260004478aec61212c')
->send('Hello World, i`m a push message');
dd($data);
$data = PushNotification::app('IOSProvider')
->to('a9b9a16c5984afc0ea5b681cc51ada13fc5ce9a8c895d14751de1a2dba7994e7')
->send('Hello World, i`m a push message');
dd($data);
}
/**
* Testing page for push notifications.
*
* @return \Illuminate\Http\Response
*/
public function push_store(Request $request)
{
try {
ProviderService::find($id)->delete();
return back()->with('message', 'Service deleted successfully');
} catch (Exception $e) {
return back()->with('flash_error','Something Went Wrong!');
}
}
/**
* privacy.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function privacy(){
return view('admin.pages.static')
->with('title',"Privacy Page")
->with('page', "privacy");
}
/**
* pages.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function pages(Request $request){
$this->validate($request, [
'page' => 'required|in:page_privacy',
'content' => 'required',
]);
Setting::set($request->page, $request->content);
Setting::save();
return back()->with('flash_success', 'Content Updated!');
}
/**
* legal pages.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function term_pages(Request $request){
$this->validate($request, [
'page' => 'required|in:term_condition',
'content' => 'required',
]);
Setting::set($request->page, $request->content);
Setting::save();
return back()->with('flash_success', 'Content Updated!');
}
/**
* account statements.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function statement($type = 'individual'){
try{
$page = 'Ride Statement';
if($type == 'individual'){
$page = 'Provider Ride Statement';
}elseif($type == 'today'){
$page = 'Today Statement - '. date('d M Y');
}elseif($type == 'monthly'){
$page = 'This Month Statement - '. date('F');
}elseif($type == 'yearly'){
$page = 'This Year Statement - '. date('Y');
}
$type_data = $type;
return view('admin.providers.statement', compact('page','type_data'));
} catch (Exception $e) {
return back()->with('flash_error','Something Went Wrong!');
}
}
public function statement_content(Request $request){
$columns = array(
0 =>'id',
1 =>'booking_id',
2=> 's_address',
3=> 'd_address',
4=> 'detail',
5=> 'created_at',
6=> 'status',
7=> 'payment_mode',
8=> 'total',
9=> 'commission',
10=> 'earned',
);
$fromdate = '';
$todate = Carbon::now();
$payment_type ='';
$tripstatus ='';
if($request->type_data !=''){
$type = $request->type_data;
if($type == 'today'){ $fromdate = Carbon::today(); }
if($type == 'monthly'){ $fromdate = Carbon::now()->startOfMonth(); }
if($type == 'yearly'){ $fromdate = Carbon::now()->year; }
}
if($request->fromdate !=''){
$fromdate = Helper::date_formatter($request->fromdate);
}
if($request->todate !=''){
$todate = Helper::date_formatter($request->todate);
}
if($request->has('payment')){
$payment_type = $request->payment;
}
if($request->has('tripstatus')){
$tripstatus = $request->tripstatus;
}
$main_detail = UserRequests::with('payment')
->where('created_at', '>=', $fromdate)
->where('created_at', '<', $todate)
->where('status', 'LIKE', '%'.$tripstatus.'%')
->where('payment_mode','LIKE', '%'.$payment_type.'%');
$cancel_rides = UserRequests::where('status','CANCELLED')
->where('created_at', '>=', $fromdate)
->where('created_at', '<', $todate)
->where('status', 'LIKE', '%'.$tripstatus.'%')
->where('payment_mode','LIKE', '%'.$payment_type.'%');
$revenue = UserRequestPayment::where('created_at', '>=', $fromdate)
->where('created_at', '<', $todate)
->sum('total');
$commision = UserRequestPayment::where('created_at', '>=', $fromdate)
->where('created_at', '<', $todate)
->sum('commision');
$total_cancel = $cancel_rides->count();
$total_revenue = currency($revenue);
$total_commission = currency($commision);
$totalData = $main_detail->count();
$totalFiltered = $totalData;
$limit = $request->input('length');
$start = $request->input('start');
$order = $columns[$request->input('order.0.column')];
$dir = $request->input('order.0.dir');
if(empty($request->input('search.value')))
{
$rides = $main_detail
->offset($start)
->limit($limit)
->orderBy('id','desc')
->get();
}
else {
$search = $request->input('search.value');
$rides = $main_detail
->where('booking_id','LIKE',"%{$search}%")
->orWhere('s_address', 'LIKE',"%{$search}%")
->orWhere('d_address', 'LIKE',"%{$search}%")
->orWhere('created_at', 'LIKE',"%{$search}%")
->offset($start)
->limit($limit)
->orderBy('id','desc')
->get();
$totalFiltered = $main_detail
->where('booking_id','LIKE',"%{$search}%")
->orWhere('s_address', 'LIKE',"%{$search}%")
->orWhere('d_address', 'LIKE',"%{$search}%")
->orWhere('created_at', 'LIKE',"%{$search}%")
->count();
}
$data = array();
if(!empty($rides))
{
foreach ($rides as $index => $ride)
{
$view = route('admin.requests.show',$ride->id);
if($ride->s_address != ''){ $s_address = $ride->s_address;}else{$s_address = "Not Provided";}
if($ride->d_address != ''){ $d_address = $ride->d_address;}else{$d_address = "Not Provided";}
if($ride->status != 'CANCELLED'){ $detail = '<a class="text-primary" href="'.$view.'"><div class="label label-table label-info">'.trans("admin.member.view").'</div></a>'; }else{$detail= '<span>'.trans("admin.member.no_details_found").'</span>'; }
if($ride->status == "COMPLETED"){$status = '<span class="label label-table label-success">'.$ride->status.'</span>';}
elseif($ride->status == "CANCELLED"){$status = '<span class="label label-table label-danger">'.$ride->status.'</span>';}
else{$status = '<span class="label label-table label-primary">'.$ride->status.'</span>';}
$nestedData['id'] = $start + 1;
$nestedData['booking_id'] = $ride->booking_id;
$nestedData['s_address'] = $s_address;
$nestedData['d_address'] = $d_address;
$nestedData['detail'] = $detail;
$nestedData['created_at'] = date_formatter($ride->created_at);
$nestedData['status'] = $status;
$nestedData['payment_mode'] = $ride->payment_mode;
$nestedData['total'] = currency($ride->payment['total']);
$nestedData['commission'] = currency($ride->payment['commision']);
$nestedData['earned'] = currency($ride->payment['total'] - $ride->payment['commision']);
$data[] = $nestedData;
$start++;
}
}
$percentage = 0.00;
if($total_cancel != 0){
$percentage = round($total_cancel / $totalFiltered, 2);
}
$json_data = array(
"draw" => intval($request->input('draw')),
"recordsTotal" => intval($totalData),
"recordsFiltered" => intval($totalFiltered),
"data" => $data,
"cancel_rides" => $total_cancel,
"revenue" => $total_revenue,
"commission" => $total_commission,
"percentage" => $percentage
);
echo json_encode($json_data);
}
/**
* account statements today.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function statement_today(){
return $this->statement('today');
}
/**
* account statements monthly.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function statement_monthly(){
return $this->statement('monthly');
}
/**
* account statements monthly.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function statement_yearly(){
return $this->statement('yearly');
}
/**
* account statements.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function statement_provider(){
try{
$Providers = Provider::all();
return view('admin.providers.provider-statement', compact('Providers'))->with('page','Driver Statement');
} catch (Exception $e) {
return back()->with('flash_error','Something Went Wrong!');
}
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function statement_providerlist(Request $request){
$columns = array(
0 =>'id',
1 =>'provider_name',
2=> 'mobile',
3=> 'status',
4=> 'total_rides',
5=> 'total',
6=> 'commission',
7=> 'earnings',
8=> 'joined_at',
9=> 'details',
);
$Providerslist = Provider::all();
foreach($Providerslist as $index => $Provider){
$Rides = UserRequests::where('provider_id',$Provider->id)
->orderBy('id','desc')
->get()->pluck('id');
$Providerslist[$index]->rides_count = $Rides->count();
$Providerslist[$index]->payment = UserRequestPayment::whereIn('request_id', $Rides)
->select(\DB::raw(
'SUM(total) as overall, SUM(commision) as commission, SUM(total - commision) as earning' ))->get();
}
$totalData = $Providerslist->count();
$totalFiltered = $totalData;
$limit = $request->input('length');
$start = $request->input('start');
$order = $columns[$request->input('order.0.column')];
$dir = $request->input('order.0.dir');
if(empty($request->input('search.value')))
{
$Providers = Provider::offset($start)
->limit($limit)
->orderBy('id','desc')
->get();
foreach($Providers as $index => $Provider){
$Rides = UserRequests::where('provider_id',$Provider->id)
->orderBy('id','desc')
->get()->pluck('id');
$Providers[$index]->rides_count = $Rides->count();
$Providers[$index]->payment = UserRequestPayment::whereIn('request_id', $Rides)
->select(\DB::raw(
'SUM(total) as overall, SUM(commision) as commission, SUM(total - commision) as earning' ))->get();
}
}
else {
$search = $request->input('search.value');
$Providers = Provider::where('first_name','LIKE',"%{$search}%")
->orWhere('last_name','LIKE',"%{$search}%")
->orWhere('mobile','LIKE',"%{$search}%")
->orWhere('status','LIKE',"%{$search}%")
->offset($start)
->limit($limit)
->orderBy('id','desc')
->get();
foreach($Providers as $index => $Provider){
$Rides = UserRequests::where('provider_id',$Provider->id)
->orderBy('id','desc')
->get()->pluck('id');
$Providers[$index]->rides_count = $Rides->count();
$Providers[$index]->payment = UserRequestPayment::whereIn('request_id', $Rides)
->select(\DB::raw(
'SUM(total) as overall, SUM(commision) as commission, SUM(total - commision) as earning' ))->get();
}
$totalFiltered = Provider::where('first_name','LIKE',"%{$search}%")
->orWhere('last_name','LIKE',"%{$search}%")
->orWhere('mobile','LIKE',"%{$search}%")
->orWhere('status','LIKE',"%{$search}%")
->count();
}
$data = array();
if(!empty($Providers))
{
foreach ($Providers as $index => $provider)
{
if($provider->first_name != ''){ $first_name = $provider->first_name;}else{$first_name = "-";}
if($provider->last_name != ''){ $last_name = $provider->last_name;}else{$last_name = "-";}
if($provider->status == "approved"){
$status = '<span class="label label-table label-success">'.$provider->status.'</span>';
}elseif($provider->status == "banned"){
$status = '<span class="label label-table label-danger">'.$provider->status.'</span>';
}else{
$status = '<span class="label label-table label-primary">'.$provider->status.'</span>';
}
if($provider->rides_count){
$rides = $provider->rides_count;
}else{
$rides = '-';
}
if($provider->payment){
$total = currency($provider->payment[0]->overall);
}else{
$total = '-';
}
if($provider->payment){
$commission = currency($provider->payment[0]->commission);
}else{
$commission = '-';
}
if($provider->payment){
$earnings = currency($provider->payment[0]->earning);
}else{
$earnings = '-';
}
if($provider->created_at){
$joined_at = date_formatter($provider->created_at);
}else{
$joined_at = '-';
}
$details = '<a href="'.route('admin.provider.statement', $provider->id).'"><div class="label label-table label-info">'.trans("admin.member.view").'</div></a>';
$provider_name = $first_name.' '.$last_name;
$nestedData['id'] = $start + 1;
$nestedData['provider_name'] = $provider_name;
$nestedData['mobile'] = $provider->mobile;
$nestedData['status'] = $status;
$nestedData['total_rides'] = $rides;
$nestedData['total'] = $total;
$nestedData['commission'] = $commission;
$nestedData['earnings'] = $earnings;
$nestedData['joined_at'] = $joined_at;
$nestedData['details'] = $details;
$data[] = $nestedData;
$start++;
}
}
$json_data = array(
"draw" => intval($request->input('draw')),
"recordsTotal" => intval($totalData),
"recordsFiltered" => intval($totalFiltered),
"data" => $data
);
echo json_encode($json_data);
}
/**
* Remove the specified resource from storage.
*
* @param \App\Provider $provider
* @return \Illuminate\Http\Response
*/
public function translation(){
try{
return view('admin.translation');
}
catch (Exception $e) {
return back()->with('flash_error','Something Went Wrong!');
}
}
public function fcm(){
$result = PushNotification::setService('fcm')
->setMessage([/*'notification' => [
'title'=>'This is the title driver',
'body'=>'This is the message',
'sound' => 'default'
],*/
'data' => [
'title'=>'This is the title data',
'body'=>'This is the message',
]
])
->setApiKey('AAAADyP26dw:APA91bHzu8EoO1z6v5X61XKGDQpMRf9ki8-K6NNDB8Co53oyTjcVZ3D1FqGpHof8GTaYLqSQ2ucQxbZl5RSHEjCHixZCA-Ijz4hvCbDOFcE8e1O8FkCsq2CAPHKuoj-rak9imNdA36eH')
->setDevicesToken('cxUcpG3HNAQ:APA91bFUNip59J3G_59hazuVbP4oYSBL0LxeSxZFNaFOe9boAn-SCXhTlH2L2296L8YagM3Z8rFJbUdkvqtbcEZu0CMvqwEhWKZPRUA2Z1FXFC1PmuIi-qdfhCJiJvFRaY9qGq9y3_n8CIpMviybxa7brp3coxhEdQ')
->send()
->getFeedback();
dd($result);
}
}