CustomerController.php 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\Customer;
  4. use App\Http\Requests\Customer\StoreCustomerRequest;
  5. use App\Http\Requests\Customer\UpdateCustomerRequest;
  6. class CustomerController extends Controller
  7. {
  8. public function __construct()
  9. {
  10. $this->authorizeResource(Customer::class);
  11. }
  12. /**
  13. * Display a listing of the resource.
  14. *
  15. * @return \Illuminate\Http\Response
  16. */
  17. public function index()
  18. {
  19. return inertia("Customers/Index", [
  20. "initialFilters" => request()->only("search"),
  21. "customers" => Customer::search(request()->only("search"))
  22. ->latest()
  23. ->paginate(10)
  24. ->withQueryString()
  25. ->through(
  26. fn($customer) => [
  27. "id" => $customer->id,
  28. "name" => $customer->name,
  29. "address" => $customer->address,
  30. "phone" => $customer->phone,
  31. "npwp" => $customer->npwp,
  32. "isUsed" => $customer->sales()->exists(),
  33. ]
  34. ),
  35. ]);
  36. }
  37. /**
  38. * Show the form for creating a new resource.
  39. *
  40. * @return \Illuminate\Http\Response
  41. */
  42. public function create()
  43. {
  44. return inertia("Customers/Create");
  45. }
  46. /**
  47. * Store a newly created resource in storage.
  48. *
  49. * @param \Illuminate\Http\Request $request
  50. * @return \Illuminate\Http\Response
  51. */
  52. public function store(StoreCustomerRequest $request)
  53. {
  54. Customer::create($request->validated());
  55. return back()->with("success", __("messages.success.store.customer"));
  56. }
  57. /**
  58. * Display the specified resource.
  59. *
  60. * @param Customer $customer
  61. * @return \Illuminate\Http\Response
  62. */
  63. public function show(Customer $customer)
  64. {
  65. return inertia("Customers/Show", [
  66. "customer" => $customer,
  67. "historyPurchase" => $customer
  68. ->sales()
  69. ->latest()
  70. ->paginate(10)
  71. ->withQueryString()
  72. ->through(
  73. fn($sale) => [
  74. "id" => $sale->id,
  75. "createdAt" => $sale->created_at,
  76. "number" => $sale->number,
  77. "status" => $sale->status,
  78. "ppn" => $sale->ppn,
  79. ]
  80. ),
  81. ]);
  82. }
  83. /**
  84. * Show the form for editing the specified resource.
  85. *
  86. * @param Customer $customer
  87. * @return \Illuminate\Http\Response
  88. */
  89. public function edit(Customer $customer)
  90. {
  91. return inertia("Customers/Edit", compact("customer"));
  92. }
  93. /**
  94. * Update the specified resource in storage.
  95. *
  96. * @param \Illuminate\Http\Request $request
  97. * @param Customer $customer
  98. * @return \Illuminate\Http\Response
  99. */
  100. public function update(UpdateCustomerRequest $request, Customer $customer)
  101. {
  102. $customer->update($request->validated());
  103. return back()->with("success", __("messages.success.update.customer"));
  104. }
  105. /**
  106. * Remove the specified resource from storage.
  107. *
  108. * @param Customer $customer
  109. * @return \Illuminate\Http\Response
  110. */
  111. public function destroy(Customer $customer)
  112. {
  113. $customer->delete();
  114. return back()->with("success", __("messages.success.destroy.customer"));
  115. }
  116. }