Files
cheerstothe_season_2.0/app/Http/Controllers/Admin/DashboardController.php

213 lines
8.5 KiB
PHP
Raw Normal View History

2024-05-23 15:20:21 +05:30
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
2024-05-29 14:53:06 +05:30
use App\Models\IamPrincipal;
use Illuminate\Support\Facades\DB;
use App\Models\ManageRestaurant;
2024-07-05 19:46:27 +05:30
use App\Models\Subscriptions;
2024-07-29 15:05:11 +05:30
use Carbon\Carbon;
2024-07-08 20:11:31 +05:30
use App\Exports\DashboardExportUser;
use App\Exports\DashboardSelectedExportUser;
use Maatwebsite\Excel\Facades\Excel;
2024-05-23 15:20:21 +05:30
class DashboardController extends Controller
{
2024-06-11 15:09:59 +05:30
/**
2024-06-05 20:10:10 +05:30
* Created By : sayali parab
* Created at : 16 May 2024
* Use : To show the dashboard.
*/
2024-07-29 15:05:11 +05:30
public function showDashboard()
{
$dailyData = Subscriptions::select(DB::raw("COUNT(*) as count"), DB::raw("DATE(created_at) as date"))
->whereBetween('created_at', [now()->subDays(7), now()]) // Fetch data for the last 7 days
->groupBy(DB::raw("DATE(created_at)"))
->orderBy(DB::raw("DATE(created_at)"))
->pluck('count', 'date')
->toArray();
$start_date = now()->subDays(7)->startOfDay();
$end_date = now()->endOfDay();
$formattedDailyData = [];
while ($start_date <= $end_date) {
$formattedDailyData[$start_date->format('Y-m-d')] = $dailyData[$start_date->format('Y-m-d')] ?? 0;
$start_date->addDay();
}
$defaultData = Subscriptions::select(DB::raw("COUNT(*) as count"), DB::raw("MONTH(created_at) as month"))
->whereYear('created_at', date('Y'))
->groupBy(DB::raw("MONTH(created_at)"))
->orderBy(DB::raw("MONTH(created_at)"))
->pluck('count', 'month')
->toArray();
$months = range(1, 12);
$formattedDefaultData = [];
foreach ($months as $month) {
$formattedDefaultData[$month] = $defaultData[$month] ?? 0;
}
$quarterlyData = Subscriptions::select(DB::raw("COUNT(*) as count"), DB::raw("QUARTER(created_at) as quarter"))
->whereYear('created_at', date('Y'))
->groupBy(DB::raw("QUARTER(created_at)"))
->orderBy(DB::raw("QUARTER(created_at)"))
->pluck('count', 'quarter')
->toArray();
for ($i = 1; $i <= 4; $i++) {
$quarterlyData[$i] = $quarterlyData[$i] ?? 0;
}
ksort($quarterlyData);
$yearlyData = Subscriptions::select(DB::raw("COUNT(*) as count"), DB::raw("YEAR(created_at) as year"))
->groupBy(DB::raw("YEAR(created_at)"))
->pluck('count', 'year')
->toArray();
$dataMonthlyWithType3 = IamPrincipal::select(DB::raw("COUNT(*) as count"), DB::raw("MONTH(created_at) as month"))
->where('principal_type_xid', 3)
->whereYear('created_at', date('Y'))
->groupBy(DB::raw("MONTH(created_at)"))
->orderBy(DB::raw("MONTH(created_at)"))
->pluck('count', 'month')
->toArray();
$dataMonthlyWithType4 = Subscriptions::select(DB::raw("COUNT(*) as count"), DB::raw("MONTH(created_at) as month"))
->whereYear('created_at', date('Y'))
->groupBy(DB::raw("MONTH(created_at)"))
->orderBy(DB::raw("MONTH(created_at)"))
->pluck('count', 'month')
->toArray();
$dataMonthlyWithType3 = array_replace(array_fill_keys($months, 0), $dataMonthlyWithType3);
$dataMonthlyWithType4 = array_replace(array_fill_keys($months, 0), $dataMonthlyWithType4);
$dataQuarterlyWithType3 = IamPrincipal::select(DB::raw("COUNT(*) as count"), DB::raw("QUARTER(created_at) as quarter"))
->where('principal_type_xid', 3)
->groupBy(DB::raw("QUARTER(created_at)"))
->orderBy(DB::raw("QUARTER(created_at)"))
->pluck('count', 'quarter')
->toArray();
$dataQuarterlyWithType4 = Subscriptions::select(DB::raw("COUNT(*) as count"), DB::raw("QUARTER(created_at) as quarter"))
->groupBy(DB::raw("QUARTER(created_at)"))
->orderBy(DB::raw("QUARTER(created_at)"))
->pluck('count', 'quarter')
->toArray();
2024-06-11 12:24:42 +05:30
// Fill missing quarters with zeros
$quarters = range(1, 4);
$dataQuarterlyWithType3 = array_replace(array_fill_keys($quarters, 0), $dataQuarterlyWithType3);
$dataQuarterlyWithType4 = array_replace(array_fill_keys($quarters, 0), $dataQuarterlyWithType4);
2024-05-29 14:53:06 +05:30
2024-07-29 15:05:11 +05:30
$dataYearlyWithType3 = IamPrincipal::select(DB::raw("COUNT(*) as count"), DB::raw("YEAR(created_at) as year"))
->where('principal_type_xid', 3)
->groupBy(DB::raw("YEAR(created_at)"))
->pluck('count', 'year')
->toArray();
$dataYearlyWithType4 = Subscriptions::select(DB::raw("COUNT(*) as count"), DB::raw("YEAR(created_at) as year"))
->groupBy(DB::raw("YEAR(created_at)"))
->pluck('count', 'year')
->toArray();
$customerCount = IamPrincipal::where('principal_type_xid', 3)->count();
$restaurantCount = Subscriptions::where('is_active', 1)->count();
$formattedDateTime = now()->format('Y-m-d H:i:s');
$recent_transactions = Subscriptions::where('next_payment_date', '>=', $formattedDateTime)
->with('subscription')
->orderBy('id', 'desc')
->get();
$formatted_transactions = $recent_transactions->map(function ($transaction) {
return [
'id' => $transaction->id,
'subscription' => [
'first_name' => $transaction->subscription->first_name,
'last_name' => $transaction->subscription->last_name,
'id' => $transaction->subscription->id,
],
'amount' => $transaction->amount,
'subscription_id' => $transaction->subscription_id,
'stripe_customer_id' => $transaction->stripe_customer_id,
'subscription_status' => $transaction->subscription_status,
'current_period_start' => Carbon::parse($transaction->current_period_start)->format('m/d/y'),
'current_period_end' => Carbon::parse($transaction->current_period_end)->format('m/d/y'),
'next_payment_date' => Carbon::parse($transaction->next_payment_date)->format('m/d/y'),
];
})->toArray();
return view('Admin.dashboard', compact(
'customerCount',
'restaurantCount',
'dataMonthlyWithType3',
'dataMonthlyWithType4',
'dataQuarterlyWithType3',
'dataQuarterlyWithType4',
'dataYearlyWithType3',
'dataYearlyWithType4',
'formatted_transactions',
'dailyData',
'formattedDailyData',
'defaultData',
'formattedDefaultData',
'quarterlyData',
'yearlyData'
));
}
/*
2024-07-08 20:11:31 +05:30
Created By : Sayali Parab
Created at : 08 July 2024
Use : To Get Excel.
*/
2024-07-11 16:05:22 +05:30
2024-07-09 12:46:01 +05:30
2024-07-11 15:11:05 +05:30
// public function exportRecentTransactions(Request $request)
// {
// try {
// if ($request->has('all_id')) {
// $recentTransaction = Subscriptions::with('subscription')->get()->toArray();
// return Excel::download(new DashboardExportUser($recentTransaction), 'recent_transactions.xlsx');
// }
// $ids = $request->input('selected_id');
// $fileName = 'selected_customer_transaction_data.xlsx';
// return Excel::download(new DashboardSelectedExportUser($ids), $fileName);
// } catch (\Exception $e) {
// return response()->json(['error' => 'Export failed. Something went wrong.'], 500);
// }
// }
2024-07-08 20:11:31 +05:30
public function exportRecentTransactions(Request $request)
{
try {
if ($request->has('all_id')) {
2024-07-11 15:11:05 +05:30
$recentTransaction = Subscriptions::with(['iamPrincipal', 'subscriptionProduct'])->get()->toArray();
2024-07-08 20:11:31 +05:30
return Excel::download(new DashboardExportUser($recentTransaction), 'recent_transactions.xlsx');
}
2024-07-29 15:05:11 +05:30
2024-07-08 20:11:31 +05:30
$ids = $request->input('selected_id');
2024-07-11 15:11:05 +05:30
if (!is_array($ids)) {
$ids = explode(',', $ids);
}
2024-07-08 20:11:31 +05:30
$fileName = 'selected_customer_transaction_data.xlsx';
return Excel::download(new DashboardSelectedExportUser($ids), $fileName);
} catch (\Exception $e) {
return response()->json(['error' => 'Export failed. Something went wrong.'], 500);
}
}
2024-05-23 15:20:21 +05:30
}