ReportMutationController.php 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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\Http\Request;
  8. use Maatwebsite\Excel\Facades\Excel;
  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. return inertia('mutation/Report', [
  19. 'filters' => request()->all('startDate', 'endDate', 'outlet'),
  20. 'mutations' => Mutation::latest()
  21. ->filter(request()->only('startDate', 'endDate', 'outlet'))
  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. 'outlets' => Outlet::all()
  33. ->transform(fn($outlet) => [
  34. 'label' => $outlet->name,
  35. 'value' => $outlet->id,
  36. ]),
  37. ]);
  38. }
  39. /**
  40. * Export to excel
  41. */
  42. public function exportExcel()
  43. {
  44. return Excel::download(new MutationExport(request()), 'report-mutation.xls');
  45. }
  46. }