ReportMutationController.php 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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 Illuminate\Support\Facades\Gate;
  8. use Inertia\Inertia;
  9. class ReportMutationController extends Controller
  10. {
  11. /**
  12. * Display a listing of the resource.
  13. *
  14. * @return \Inertia\Response
  15. */
  16. public function index()
  17. {
  18. if (Gate::allows('isOutletHead')) {
  19. request()->merge(['outlet' => request()->user()->outlet_id]);
  20. } else if (Gate::allows('isEmployee')) {
  21. request()->merge(['outlet' => request()->user()->outlet_id]);
  22. }
  23. return inertia('mutation/Report', [
  24. 'filters' => request()->all('startDate', 'endDate', 'outlet'),
  25. 'mutations' => Inertia::lazy(
  26. fn() => Mutation::filter(request()->only('startDate', 'endDate', 'outlet'))
  27. ->latest()
  28. ->paginate(10)
  29. ->withQueryString()
  30. ->through(fn($mutation) => [
  31. 'createdAt' => $mutation->created_at,
  32. 'outlet' => $mutation->outlet->name,
  33. 'amount' => $mutation->amount,
  34. 'type' => $mutation->type,
  35. 'transactionId' => $mutation->transaction_id,
  36. 'expenseId' => $mutation->expense_id,
  37. ])
  38. ),
  39. 'outlets' => Outlet::all()
  40. ->transform(fn($outlet) => [
  41. 'label' => $outlet->name,
  42. 'value' => $outlet->id,
  43. ]),
  44. ]);
  45. }
  46. /**
  47. * Export to excel
  48. */
  49. public function exportExcel()
  50. {
  51. return new MutationExport(request());
  52. }
  53. }