ReportMutationController.php 1.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Exports\MutationExport;
  4. use App\Http\Controllers\Controller;
  5. use App\Models\Mutation;
  6. use App\Models\Outlet;
  7. use Inertia\Inertia;
  8. class ReportMutationController extends Controller
  9. {
  10. /**
  11. * Display a listing of the resource.
  12. *
  13. * @return \Inertia\Response
  14. */
  15. public function index()
  16. {
  17. return inertia('mutation/Report', [
  18. 'filters' => request()->all('startDate', 'endDate', 'outlet'),
  19. 'mutations' => Inertia::lazy(
  20. fn() => Mutation::filter(request()->only('startDate', 'endDate', 'outlet'))
  21. ->latest()
  22. ->paginate(10)
  23. ->withQueryString()
  24. ->through(fn($mutation) => [
  25. 'createdAt' => $mutation->created_at,
  26. 'outlet' => $mutation->outlet->name,
  27. 'amount' => $mutation->amount,
  28. 'type' => $mutation->type,
  29. 'transactionId' => $mutation->transaction_id,
  30. 'expenseId' => $mutation->expense_id,
  31. ])
  32. ),
  33. 'outlets' => Outlet::all()
  34. ->transform(fn($outlet) => [
  35. 'label' => $outlet->name,
  36. 'value' => $outlet->id,
  37. ]),
  38. ]);
  39. }
  40. /**
  41. * Export to excel
  42. */
  43. public function exportExcel()
  44. {
  45. return new MutationExport(request());
  46. }
  47. }