You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.1 KiB
PHP
67 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Customer;
|
|
use App\Models\Product;
|
|
use App\Models\Sale;
|
|
use App\Models\SaleItem;
|
|
use Carbon\Carbon;
|
|
use Illuminate\Http\Request;
|
|
|
|
class GeneralController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
$totalSaleToday = Sale::where('date', now()->format('m/d/Y'))->count();
|
|
$totalItem = SaleItem::whereHas('sale', function ($q) {
|
|
return $q->where('date', now()->format('m/d/Y'));
|
|
})->sum('quantity');
|
|
$totalProduct = Product::count();
|
|
$totalCustomer = Customer::count();
|
|
|
|
$startDate = now()->subDays(6)->format('m/d/Y');
|
|
$endDate = now()->format('m/d/Y');
|
|
if ($request->start_date != '') {
|
|
$startDate = Carbon::parse($request->start_date)->format('m/d/Y');
|
|
}
|
|
if ($request->end_date != '') {
|
|
$endDate = Carbon::parse($request->end_date)->format('m/d/Y');
|
|
}
|
|
|
|
$charts = Sale::selectRaw('COUNT(id) as count, date')
|
|
->whereBetween('date', [$startDate, $endDate])
|
|
->orderBy('date', 'asc')
|
|
->groupBy('date')
|
|
->get();
|
|
|
|
$favoriteProducts = SaleItem::selectRaw('product_id, sum(quantity) as qty')
|
|
->groupBy('product_id')
|
|
->orderBy('qty', 'desc')
|
|
->with('product')
|
|
->get();
|
|
|
|
$transactionCustomers = Sale::selectRaw('customer_id, sum(total) as stotal')
|
|
->where('date', now()->format('m/d/Y'))
|
|
->groupBy('customer_id')
|
|
->orderBy('stotal')
|
|
->with('customer')
|
|
->get();
|
|
|
|
return inertia('Dashboard', [
|
|
'total_sale_today' => $totalSaleToday,
|
|
'total_item_today' => $totalItem,
|
|
'total_product' => $totalProduct,
|
|
'total_customer' => $totalCustomer,
|
|
'sale_days' => $charts,
|
|
'list_favorite_product' => $favoriteProducts,
|
|
'list_customer' => $transactionCustomers
|
|
]);
|
|
}
|
|
|
|
public function maintance()
|
|
{
|
|
return inertia('Maintance');
|
|
}
|
|
}
|