rejuvallife/app/Http/Controllers/Admin/LabsController.php
2024-10-25 01:02:11 +05:00

74 lines
2.0 KiB
PHP

<?php
namespace App\Http\Controllers\admin;
use App\Http\Controllers\Controller;
use App\Models\Cart;
use App\Models\Lab;
use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
class LabsController extends Controller
{
public function index()
{
$labs = Lab::all();
return view('admin.labs.index', ['labs' => $labs]);
}
public function create()
{
return view('admin.labs.create');
}
public function save(Request $request)
{
Lab::create([
'name' => $request->name,
'address' => $request->address,
'city' => $request->city,
'state' => $request->state,
'zip_code' => $request->zip
]);
return redirect('admin/labs');
}
public function edit($id)
{
$labEdit = Lab::find($id);
return view('admin.labs.edit', ['labEdit' => $labEdit]);
}
public function update($id, Request $request)
{
$labEdit = Lab::find($id);
$labEdit->name = $request->name;
$labEdit->address = $request->address;
$labEdit->city = $request->city;
$labEdit->state = $request->state;
$labEdit->zip_code = $request->zip;
$labEdit->save();
return redirect('admin/labs');
}
public function getOrderData(Request $request)
{
$perPage = $request->get('per_page', 20); // Items per page (default 10)
// Get carts with patient data and order count
$carts = Cart::with('patient')
->select('patient_id', DB::raw('COUNT(*) as cart_count'))
->groupBy('patient_id')
->paginate($perPage);
// Manually create paginator instance (due to aggregation)
$paginator = new LengthAwarePaginator(
$carts->items(),
$carts->total(),
$perPage,
$carts->currentPage()
);
return response()->json([
'status' => 'Success',
'orderData' => $paginator
], 200);
}
}