migrate to gtea from bistbucket

This commit is contained in:
2026-03-15 17:08:23 +07:00
commit 129ca2260c
3716 changed files with 566316 additions and 0 deletions

View File

@@ -0,0 +1,244 @@
<?php
namespace Modules\Business\App\Http\Controllers;
use App\Models\Business;
use Carbon\Carbon;
use App\Models\Sale;
use App\Models\Party;
use App\Models\Income;
use App\Models\Expense;
use App\Models\Product;
use App\Models\Purchase;
use App\Models\SaleReturn;
use App\Models\PurchaseReturn;
use App\Models\SaleReturnDetails;
use App\Http\Controllers\Controller;
use App\Models\PurchaseReturnDetail;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
class DashboardController extends Controller
{
public function index()
{
$businessId = auth()->user()->business_id;
$allProducts = Product::with('stocks')
->withSum('stocks', 'productStock')
->where('business_id', $businessId)
->latest()
->get();
$stocks = $allProducts->filter(function ($product) {
return $product->stocks->sum('productStock') <= $product->alert_qty;
})->take(5);
// Latest sales
$sales = Sale::with('party:id,name', 'details')
->where('business_id', $businessId)
->latest()
->limit(5)
->get();
// Latest purchases
$purchases = Purchase::with('details', 'party:id,name')
->where('business_id', $businessId)
->latest()
->limit(5)
->get();
return view('business::dashboard.index', compact('stocks', 'purchases', 'sales'));
}
public function getDashboardData()
{
$businessId = auth()->user()->business_id;
$data['total_sales'] = currency_format(Sale::where('business_id', $businessId)->sum('totalAmount'), currency: business_currency(), abbreviate: true);
$data['this_month_total_sales'] = currency_format(Sale::where('business_id', $businessId)
->whereMonth('created_at', Carbon::now()->month)
->whereYear('created_at', Carbon::now()->year)
->sum('totalAmount'), currency: business_currency(), abbreviate: true);
$data['total_purchase'] = currency_format(Purchase::where('business_id', $businessId)->sum('totalAmount'), currency: business_currency(), abbreviate: true);
$data['this_month_total_purchase'] = currency_format(Purchase::where('business_id', $businessId)
->whereMonth('created_at', Carbon::now()->month)
->whereYear('created_at', Carbon::now()->year)
->sum('totalAmount'), currency: business_currency(), abbreviate: true);
// Get total and monthly lossProfit
$sale_loss_profit = Sale::where('business_id', auth()->user()->business_id)->sum('lossProfit');
$this_month_loss_profit = Sale::where('business_id', auth()->user()->business_id)
->whereMonth('created_at', Carbon::now()->month)
->whereYear('created_at', Carbon::now()->year)
->sum('lossProfit');
// Get total income and expense
$total_income = Income::where('business_id', $businessId)->sum('amount');
$this_month_total_income = Income::where('business_id', $businessId)
->whereMonth('created_at', Carbon::now()->month)
->whereYear('created_at', Carbon::now()->year)
->sum('amount');
$total_expense = Expense::where('business_id', $businessId)->sum('amount');
$this_month_total_expense = Expense::where('business_id', $businessId)
->whereMonth('created_at', Carbon::now()->month)
->whereYear('created_at', Carbon::now()->year)
->sum('amount');
// Update income and expense based on lossProfit value
$total_income += $sale_loss_profit > 0 ? $sale_loss_profit : 0;
$total_expense += $sale_loss_profit < 0 ? abs($sale_loss_profit) : 0;
$this_month_total_income += $this_month_loss_profit > 0 ? $this_month_loss_profit : 0;
$this_month_total_expense += $this_month_loss_profit < 0 ? abs($this_month_loss_profit) : 0;
// Format data for display
$data['total_income'] = currency_format($total_income, currency: business_currency(), abbreviate: true);
$data['this_month_total_income'] = currency_format($this_month_total_income, currency: business_currency(), abbreviate: true);
$data['total_expense'] = currency_format($total_expense, currency: business_currency(), abbreviate: true);
$data['this_month_total_expense'] = currency_format($this_month_total_expense, currency: business_currency(), abbreviate: true);
$data['total_customer'] = Party::where('business_id', $businessId)->where('type', '!=', 'Supplier')->count();
$data['this_month_total_customer'] = Party::where('business_id', $businessId)
->where('type', '!=', 'Supplier')
->whereMonth('created_at', Carbon::now()->month)
->whereYear('created_at', Carbon::now()->year)
->count();
$data['total_supplier'] = Party::where('business_id', $businessId)->whereType('Supplier')->count();
$data['this_month_total_supplier'] = Party::where('business_id', $businessId)
->whereType('Supplier')
->whereMonth('created_at', Carbon::now()->month)
->whereYear('created_at', Carbon::now()->year)
->count();
$sale_return_id = SaleReturn::where('business_id', $businessId)
->pluck('id');
$data['total_sales_return'] = currency_format(SaleReturnDetails::whereIn('sale_return_id', $sale_return_id)
->sum('return_amount'), currency: business_currency(), abbreviate: true);
$saleReturns = SaleReturn::where('business_id', $businessId)
->whereYear('return_date', now()->year)
->whereMonth('return_date', now()->month)
->pluck('id');
$data['this_month_total_sale_return'] = currency_format(SaleReturnDetails::whereIn('sale_return_id', $saleReturns)
->sum('return_amount'), currency: business_currency(), abbreviate: true);
$purchase_return_id = PurchaseReturn::where('business_id', $businessId)
->pluck('id');
$data['total_purchase_return'] = currency_format(PurchaseReturnDetail::whereIn('purchase_return_id', $purchase_return_id)
->sum('return_amount'), currency: business_currency(), abbreviate: true);
$purchaseReturns = PurchaseReturn::where('business_id', $businessId)
->whereYear('return_date', now()->year)
->whereMonth('return_date', now()->month)
->pluck('id');
$data['this_month_total_purchase_return'] = currency_format(PurchaseReturnDetail::whereIn('purchase_return_id', $purchaseReturns)
->sum('return_amount'), currency: business_currency(), abbreviate: true);
return response()->json($data);
}
public function overall_report()
{
$businessId = auth()->user()->business_id;
// Calculate overall values
$overall_purchase = Purchase::where('business_id', $businessId)
->whereYear('created_at', request('year') ?? date('Y'))
->sum('totalAmount');
$overall_sale = Sale::where('business_id', $businessId)
->whereYear('created_at', request('year') ?? date('Y'))
->sum('totalAmount');
$overall_income = Income::where('business_id', $businessId)
->whereYear('created_at', request('year') ?? date('Y'))
->sum('amount');
$overall_expense = Expense::where('business_id', $businessId)
->whereYear('created_at', request('year') ?? date('Y'))
->sum('amount');
// Get the total loss/profit for the month
$sale_loss_profit = Sale::where('business_id', $businessId)
->whereYear('created_at', request('year') ?? date('Y'))
->sum('lossProfit');
// Update income and expense based on lossProfit value
$overall_income += $sale_loss_profit > 0 ? $sale_loss_profit : 0;
$overall_expense += $sale_loss_profit < 0 ? abs($sale_loss_profit) : 0;
$data = [
'overall_purchase' => $overall_purchase,
'overall_sale' => $overall_sale,
'overall_income' => $overall_income,
'overall_expense' => $overall_expense,
];
return response()->json($data);
}
public function revenue()
{
$data['loss'] = Sale::where('business_id', auth()->user()->business_id)
->whereYear('created_at', request('year') ?? date('Y'))
->where('lossProfit', '<', 0)
->selectRaw('MONTHNAME(created_at) as month, SUM(ABS(lossProfit)) as total')
->orderBy('created_at')
->groupBy('created_at')
->get();
$data['profit'] = Sale::where('business_id', auth()->user()->business_id)
->whereYear('created_at', request('year') ?? date('Y'))
->where('lossProfit', '>=', 0)
->selectRaw('MONTHNAME(created_at) as month, SUM(ABS(lossProfit)) as total')
->orderBy('created_at')
->groupBy('created_at')
->get();
return response()->json($data);
}
public function updateExpireDate(Request $request)
{
$days = $request->query('days', 0);
$operation = $request->query('operation');
$business = Business::where('id', auth()->user()->business_id)->first();
if (!$business) {
return response()->json([
'message' => 'Business not found.',
], 404);
}
if ($operation === 'add') {
$business->will_expire = now()->addDays($days);
} elseif ($operation === 'sub') {
$business->will_expire = now()->subDays($days);
} else {
return response()->json([
'message' => 'Invalid operation. Use "add" or "sub".',
], 400);
}
$business->save();
Cache::forget("plan-data-{$business->id}");
return response()->json([
'message' => 'Expiry date updated successfully.',
'will_expire' => $business->will_expire,
]);
}
}