Viewing file: DashboardController.php (6.88 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers\Customer;
use App\Http\Controllers\Controller;
use App\Models\SenderId; use App\Models\Ticket; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\Date; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Response;
class DashboardController extends Controller {
public function index() { $user = auth()->guard('customer')->user();
$data['newMessageCount'] = $user->messages()->where('type', 'inbox')->whereDate('created_at', '>=', Carbon::now())->count();
$data['inboxCount'] = $user->messages()->where('type', 'inbox')->whereDate('created_at', Carbon::now())->count(); $data['totalInboxCount'] = $user->messages()->where('type', 'inbox')->count(); $data['sentCount'] = $user->messages()->where('type', 'sent')->where('status', 'succeed')->whereColumn('created_at', '<', 'updated_at')->whereDate('updated_at', Carbon::now())->count(); $data['totalSsentCount'] = $user->messages()->where('type', 'sent')->where('status', 'succeed')->whereColumn('created_at', '<', 'updated_at')->count();
$inboxes = $user->messages() ->select(DB::Raw('count(*) as count'),DB::Raw('DATE(created_at) day')) ->whereDate('created_at', '>', Carbon::now()->startOfWeek()) ->where('type','inbox') ->groupBy('day')->get() ->pluck('count','day'); $weekDates=[]; foreach (getLastNDays(7) as $day){ $day=Carbon::createFromTimeString(str_replace('"','',$day." 0:00:00")); $weekDates[]= $day->format('m-d-Y'); }
$data['weekDates']=$weekDates; $chatInboxes=[]; foreach (getLastNDays(7) as $day){ $chatInboxes[]=isset($inboxes[trim($day, '"')])?$inboxes[trim($day, '"')]:0; } $data['chart_inbox']=$chatInboxes; $data['todayExpense']= 0; $data['weeklyExpense']= 0; $data['totalExpense']= 0; $inboundResponse = auth('customer')->user()->messages()->whereDate('created_at', now())->where('type','inbox')->count(); $outboundResponse = auth('customer')->user()->messages()->whereColumn('created_at', '<', 'updated_at')->whereDate('updated_at', now())->where('type','sent')->count();
$weeklySent = $user->messages() ->select(DB::raw("COUNT(*) as count"),DB::Raw('DATE(updated_at) day')) ->whereDate('updated_at', '>', Carbon::now()->startOfWeek()) ->where('type','sent') ->groupBy('day')->pluck('count','day'); $weeklyReceived = $user->messages() ->select(DB::raw("COUNT(*) as count"),DB::Raw('DATE(created_at) day')) ->whereDate('created_at', '>', Carbon::now()->startOfWeek()) ->where('type','inbox') ->groupBy('day')->pluck('count','day');
$weeklyResponseArray=[]; foreach (getLastNDays(7) as $day){ $day=trim($day,'"'); if(isset($weeklySent[$day]) && isset($weeklyReceived[$day]) && $weeklyReceived[$day]>0 ){ $weeklyResponseArray[]= round(($weeklyReceived[$day]/$weeklySent[$day] ) * 100, 2); }else{ $weeklyResponseArray[]=0; } } $allInboundResponse = $user->messages()->where('type','inbox')->count(); $allOutboundResponse = $user->messages()->where('type','sent')->count(); $todayTotalMessages = $user->messages()->where('type', 'sent')->whereColumn('created_at', '<', 'updated_at')->whereDate('updated_at', now())->count(); $todayMessages = $user->messages()->where('type', 'sent')->whereColumn('created_at', '<', 'updated_at')->count();
// Failed $totalFailed = $user->messages()->where('type', 'sent')->where('status', 'failed')->count(); $dailyFailed = $user->messages()->where('type', 'sent')->where('status', 'failed')->whereColumn('created_at', '<', 'updated_at')->whereDate('updated_at', now())->count(); $weeklyFailed = $user->messages()->where('type', 'sent')->whereDate('updated_at','>', Carbon::now()->startOfWeek())->count(); // Delivered $totalDelivered = $user->messages()->where('status', 'succeed')->whereColumn('created_at', '<', 'updated_at')->where('type', 'sent')->count(); $dailyDelivered = $user->messages()->where('status', 'succeed')->whereColumn('created_at', '<', 'updated_at')->whereDate('updated_at', now())->where('type', 'sent')->count(); $weeklyDelivered = $user->messages()->where('status', 'succeed')->whereColumn('created_at', '<', 'updated_at')->whereDate('updated_at','>', Carbon::now()->startOfWeek())->where('type', 'sent')->count(); $totalDelivered = $user->messages()->where('status', 'succeed')->whereColumn('created_at', '<', 'updated_at')->where('type', 'sent')->count();
$data['weeklyResponseArray']=$weeklyResponseArray; $data['dailyResponseRate'] = $outboundResponse > 0 && $inboundResponse > 0?formatNumber(($inboundResponse / $outboundResponse) * 100):0; $data['responseRate'] = $allOutboundResponse > 0 && $allInboundResponse > 0?formatNumber(($allInboundResponse / $allOutboundResponse) * 100):0;
$data['deliveryRate'] =$todayTotalMessages > 0 && $dailyDelivered > 0 ? formatNumber(($dailyDelivered * 100) / $todayTotalMessages) : 0; $data['totalDeliveryRate'] =$todayMessages > 0 && $totalDelivered > 0 ? formatNumber(($totalDelivered * 100) / $todayMessages) : 0;
$availableSettings=[];
// Local $local_setting=json_decode(get_settings('local_setting'));
$numbers = auth('customer')->user()->numbers()->count(); $gateways=auth('customer')->user()->gateways()->count(); if(!$local_setting || !isset($local_setting->timezone)){ $availableSettings[]=[ 'title'=>trans("Configure Timezone"), 'url'=>route('customer.settings.index',['settings_type'=>'local_setting_tab']) ]; } if(!cache()->get('cronjob') || cache()->get('cronjob') == 'false'){ $availableSettings[]=[ 'title'=>trans("Configure CronJob"), 'url'=>route('customer.settings.index',['settings_type'=>'cronjob']) ]; } if($numbers <= 0){ $availableSettings[]=[ 'title'=>trans("Configure Senders"), 'url'=>route('customer.numbers.create') ]; } if($gateways <= 0){ $availableSettings[]=[ 'title'=>trans("Configure Gateway"), 'url'=>route('customer.gateway.create') ]; } if(!cache()->get('webhook') || cache()->get('webhook') == 'false'){ $availableSettings[]=[ 'title'=>trans("Configure Webhook"), 'url'=>route('customer.inbound.webhook') ]; }
$data['available_setting']=$availableSettings;
return view('customer.dashboard', $data); } }
|