ProductController.php 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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. use Inertia\Inertia;
  8. class ProductController extends Controller
  9. {
  10. /**
  11. * Display a listing of the resource.
  12. *
  13. * @return \Illuminate\Http\Response
  14. */
  15. public function index()
  16. {
  17. return inertia('Products/Index', [
  18. 'initialSearch' => request('search'),
  19. 'products' => Product::filter(request()->only('search'))
  20. ->latest()
  21. ->paginate(10)
  22. ->withQueryString()
  23. ->through(fn($product) => [
  24. 'id' => $product->id,
  25. 'number' => $product->number,
  26. 'name' => $product->name,
  27. 'unit' => $product->unit,
  28. 'isUsed' => ProductService::isUsed($product)
  29. ])
  30. ]);
  31. }
  32. /**
  33. * Show the form for creating a new resource.
  34. *
  35. * @return \Illuminate\Http\Response
  36. */
  37. public function create()
  38. {
  39. return inertia('Products/Create', [
  40. 'number' => 'PDK' . now()->format('YmdHis')
  41. ]);
  42. }
  43. /**
  44. * Store a newly created resource in storage.
  45. *
  46. * @param \Illuminate\Http\Request $request
  47. * @return \Illuminate\Http\Response
  48. */
  49. public function store(StoreProductRequest $request)
  50. {
  51. Product::create($request->validated());
  52. return back()->with('success', __('messages.success.store.product'));
  53. }
  54. /**
  55. * Display the specified resource.
  56. *
  57. * @param Product $product
  58. * @return \Illuminate\Http\Response
  59. */
  60. public function show(Product $product)
  61. {
  62. //
  63. }
  64. /**
  65. * Show the form for editing the specified resource.
  66. *
  67. * @param Product $product
  68. * @return \Illuminate\Http\Response
  69. */
  70. public function edit(Product $product)
  71. {
  72. return inertia('Products/Edit', compact('product'));
  73. }
  74. /**
  75. * Update the specified resource in storage.
  76. *
  77. * @param \Illuminate\Http\Request $request
  78. * @param Product $product
  79. * @return \Illuminate\Http\Response
  80. */
  81. public function update(UpdateProductRequest $request, Product $product)
  82. {
  83. $product->update($request->validated());
  84. return back()->with('success', __('messages.success.update.product'));
  85. }
  86. /**
  87. * Remove the specified resource from storage.
  88. *
  89. * @param Product $product
  90. * @return \Illuminate\Http\Response
  91. */
  92. public function destroy(Product $product)
  93. {
  94. $product->delete();
  95. return back()->with('success', __('messages.success.destroy.product'));
  96. }
  97. }