CustomerController.php 3.5KB

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