/home/awneajlw/.trash/app.1/Http/Controllers/Admin/ZakatController.php
<?php

namespace App\Http\Controllers\Admin;

use App\Models\Inventory;
use App\Models\Zakat;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Carbon\Carbon;

class ZakatController extends Controller
{
    public function index(Request $request)
    {
        $branchInventoryData = Inventory::selectRaw('branch_id, SUM(quantity) as total_inventory, SUM(price * quantity) as total_price')
            ->groupBy('branch_id')
            ->with('branch')
            ->get();

        $totalSumPrice = $branchInventoryData->sum('total_price');

        $branchData = [];
        foreach ($branchInventoryData as $data) {
            $zakat = $data->total_price * 0.025;
            $branchData[] = [
                'branch_id' => $data->branch_id,
                'branch_name' => $data->branch->name ?? 'Unknown Branch',
                'total_inventory' => $data->total_inventory,
                'total_price' => $data->total_price,
                'zakat' => $zakat
            ];
        }

        $totalZakatAmount = $totalSumPrice * 0.025;
        $branchDataJson = json_encode($branchData);
        $year = Carbon::now()->year;

        $zakatRecord = Zakat::where('year', $year)->first();

        if (!$zakatRecord) {
            $zakatRecord = Zakat::create([
                'total_income' => $totalSumPrice,
                'zakat_amount' => $totalZakatAmount,
                'year' => $year,
                'status' => 'unpaid',
                'branch_data' => $branchDataJson
            ]);
        } else {
            $zakatRecord->update([
                'total_income' => $totalSumPrice,
                'zakat_amount' => $totalZakatAmount,
                'branch_data' => $branchDataJson,
                'status' => $zakatRecord->status
            ]);
        }

        $zakatRecords = Zakat::orderBy('year', 'desc')->get(); // Fetch all Zakat records

        return view('admin.zakat.index', compact('branchInventoryData', 'totalSumPrice', 'totalZakatAmount', 'zakatRecord', 'zakatRecords'));
    }


    public function edit($id)
    {
        $zakatRecord = Zakat::findOrFail($id);
        return view('admin.zakat.edit', compact('zakatRecord'));
    }

    public function update(Request $request, $id)
    {
        $zakatRecord = Zakat::findOrFail($id);

        $request->validate([
            'status' => 'required|in:paid,unpaid',
        ]);

        $zakatRecord->status = $request->input('status');
        $zakatRecord->save();

        return redirect()->route('zakat.index')->with('success', 'Zakat status updated successfully.');
    }

}