CustomerController.php 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\Customer\StoreCustomerRequest;
  4. use App\Http\Requests\Customer\UpdateCustomerRequest;
  5. use App\Models\Customer;
  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. "initialSearch" => request("search"),
  21. "customers" => Customer::filter(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. //
  66. }
  67. /**
  68. * Show the form for editing the specified resource.
  69. *
  70. * @param Customer $customer
  71. * @return \Illuminate\Http\Response
  72. */
  73. public function edit(Customer $customer)
  74. {
  75. return inertia("Customers/Edit", compact("customer"));
  76. }
  77. /**
  78. * Update the specified resource in storage.
  79. *
  80. * @param \Illuminate\Http\Request $request
  81. * @param Customer $customer
  82. * @return \Illuminate\Http\Response
  83. */
  84. public function update(UpdateCustomerRequest $request, Customer $customer)
  85. {
  86. $customer->update($request->validated());
  87. return back()->with("success", __("messages.success.update.customer"));
  88. }
  89. /**
  90. * Remove the specified resource from storage.
  91. *
  92. * @param Customer $customer
  93. * @return \Illuminate\Http\Response
  94. */
  95. public function destroy(Customer $customer)
  96. {
  97. $customer->delete();
  98. return back()->with("success", __("messages.success.destroy.customer"));
  99. }
  100. }