SalesController.php 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\Sales\StoreSaleRequest;
  4. use App\Models\Customer;
  5. use App\Models\Product;
  6. use App\Models\Sale;
  7. use Illuminate\Http\Request;
  8. use Inertia\Inertia;
  9. class SalesController extends Controller
  10. {
  11. public function __construct()
  12. {
  13. $this->authorizeResource(Sale::class);
  14. }
  15. /**
  16. * Display a listing of the resource.
  17. *
  18. * @return \Illuminate\Http\Response
  19. */
  20. public function index()
  21. {
  22. return inertia('Sales/Index', [
  23. 'initialSearch' => request('search'),
  24. 'sales' => Sale::filter(request()->only('search'))
  25. ->latest()
  26. ->paginate(10)
  27. ->withQueryString()
  28. ->through(fn($sale) => [
  29. 'id' => $sale->id,
  30. 'updatedAt' => $sale->updated_at,
  31. 'number' => $sale->number,
  32. 'status' => $sale->status,
  33. 'price' => $sale->saleDetail->price,
  34. 'ppn' => $sale->saleDetail->ppn,
  35. 'qty' => $sale->saleDetail->qty,
  36. 'productName' => $sale->product->name,
  37. 'productNumber' => $sale->product->number
  38. ])
  39. ]);
  40. }
  41. /**
  42. * Show the form for creating a new resource.
  43. *
  44. * @return \Illuminate\Http\Response
  45. */
  46. public function create()
  47. {
  48. return inertia('Sales/Create', [
  49. 'number' => 'PJN' . now()->format('YmdHis'),
  50. 'productNumber' => Inertia::lazy(
  51. fn() => 'PDK' . now()->format('YmdHis')
  52. ),
  53. 'customers' => Inertia::lazy(
  54. fn() => Customer::filter(['search' => request('customer')])
  55. ->get()
  56. ->transform(fn($customer) => [
  57. 'id' => $customer->id,
  58. 'name' => $customer->name,
  59. 'address' => $customer->address,
  60. 'npwp' => $customer->npwp
  61. ])),
  62. 'products' => Inertia::lazy(
  63. fn() => Product::filter(['search' => request('product')])
  64. ->get()
  65. ->transform(fn($product) => [
  66. 'id' => $product->id,
  67. 'number' => $product->number,
  68. 'name' => $product->name,
  69. 'unit' => $product->unit
  70. ])
  71. )
  72. ]);
  73. }
  74. /**
  75. * Store a newly created resource in storage.
  76. *
  77. * @param \Illuminate\Http\Request $request
  78. * @return \Illuminate\Http\Response
  79. */
  80. public function store(StoreSaleRequest $request)
  81. {
  82. $validated = $request->safe()->merge([
  83. 'user_id' => auth()->user()->id,
  84. 'ppn' => 11
  85. ])->all();
  86. $sale = Sale::create($validated);
  87. $sale->saleDetail()->create($validated);
  88. return back()->with('success', __('messages.success.store.sale'));
  89. }
  90. /**
  91. * Display the specified resource.
  92. *
  93. * @param Sale $sale
  94. * @return \Illuminate\Http\Response
  95. */
  96. public function show(Sale $sale)
  97. {
  98. //
  99. }
  100. /**
  101. * Show the form for editing the specified resource.
  102. *
  103. * @param Sale $sale
  104. * @return \Illuminate\Http\Response
  105. */
  106. public function edit(Sale $sale)
  107. {
  108. //
  109. }
  110. /**
  111. * Update the specified resource in storage.
  112. *
  113. * @param \Illuminate\Http\Request $request
  114. * @param Sale $sale
  115. * @return \Illuminate\Http\Response
  116. */
  117. public function update(Request $request, Sale $sale)
  118. {
  119. //
  120. }
  121. /**
  122. * Remove the specified resource from storage.
  123. *
  124. * @param Sale $sale
  125. * @return \Illuminate\Http\Response
  126. */
  127. public function destroy(Sale $sale)
  128. {
  129. //
  130. }
  131. }