ProductController.php 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\Product\StoreProductRequest;
  4. use App\Http\Requests\Product\UpdateProductRequest;
  5. use App\Models\Product;
  6. use App\Services\ProductService;
  7. class ProductController extends Controller
  8. {
  9. public function __construct()
  10. {
  11. $this->authorizeResource(Product::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("Products/Index", [
  21. "initialFilters" => request()->only("search"),
  22. "products" => Product::search(request()->only("search"))
  23. ->latest()
  24. ->paginate(10)
  25. ->withQueryString()
  26. ->through(
  27. fn($product) => [
  28. "id" => $product->id,
  29. "number" => $product->number,
  30. "name" => $product->name,
  31. "unit" => $product->unit,
  32. "profit" => $product->profit . "%",
  33. "isUsed" => ProductService::isUsed($product),
  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("Products/Create", [
  46. "number" => "PDK" . now()->format("YmdHis"),
  47. ]);
  48. }
  49. /**
  50. * Store a newly created resource in storage.
  51. *
  52. * @param \Illuminate\Http\Request $request
  53. * @return \Illuminate\Http\Response
  54. */
  55. public function store(StoreProductRequest $request)
  56. {
  57. Product::create($request->validated());
  58. return back()->with("success", __("messages.success.store.product"));
  59. }
  60. /**
  61. * Display the specified resource.
  62. *
  63. * @param Product $product
  64. * @return \Illuminate\Http\Response
  65. */
  66. public function show(Product $product)
  67. {
  68. //
  69. }
  70. /**
  71. * Show the form for editing the specified resource.
  72. *
  73. * @param Product $product
  74. * @return \Illuminate\Http\Response
  75. */
  76. public function edit(Product $product)
  77. {
  78. return inertia("Products/Edit", compact("product"));
  79. }
  80. /**
  81. * Update the specified resource in storage.
  82. *
  83. * @param \Illuminate\Http\Request $request
  84. * @param Product $product
  85. * @return \Illuminate\Http\Response
  86. */
  87. public function update(UpdateProductRequest $request, Product $product)
  88. {
  89. $product->update($request->validated());
  90. return back()->with("success", __("messages.success.update.product"));
  91. }
  92. /**
  93. * Remove the specified resource from storage.
  94. *
  95. * @param Product $product
  96. * @return \Illuminate\Http\Response
  97. */
  98. public function destroy(Product $product)
  99. {
  100. $product->delete();
  101. return back()->with("success", __("messages.success.destroy.product"));
  102. }
  103. }