TestTransactionController.php 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\TestTransaction\StoreTestTransactionRequest;
  5. use App\Models\EntryTransaction;
  6. use App\Models\Member;
  7. use App\Models\OutTransaction;
  8. use App\Models\ParkingFee;
  9. use App\Models\TypeVehicle;
  10. use App\Models\Vehicle;
  11. use Carbon\Carbon;
  12. use Illuminate\Http\Request;
  13. use Illuminate\Support\Str;
  14. class TestTransactionController extends Controller
  15. {
  16. /**
  17. * Display a listing of the resource.
  18. *
  19. * @return \Illuminate\Http\Response
  20. */
  21. public function index()
  22. {
  23. //
  24. }
  25. /**
  26. * Show the form for creating a new resource.
  27. *
  28. * @return \Inertia\Response
  29. */
  30. public function create()
  31. {
  32. $entryTransactions = EntryTransaction::whereNotIn('transaction_number', OutTransaction::pluck('entry_transaction_id'))
  33. ->latest()
  34. ->paginate(5)
  35. ->withQueryString()
  36. ->through(fn($transactionIn) => [
  37. 'id' => $transactionIn->id,
  38. 'createdAt' => $transactionIn->created_at,
  39. 'transactionNumber' => $transactionIn->transaction_number,
  40. ]);
  41. $entryTransactionCount = EntryTransaction::get()->count();
  42. $outTransactions = OutTransaction::latest()
  43. ->paginate(5)
  44. ->withQueryString()
  45. ->through(fn($transactionOut) => [
  46. 'id' => $transactionOut->id,
  47. 'createdAt' => $transactionOut->created_at,
  48. 'entryTransactionId' => $transactionOut->entry_transaction_id,
  49. ]);
  50. $outTransactionCount = OutTransaction::get()->count();
  51. $typeVehicles = TypeVehicle::get()->transform(fn($typeVehicle) => [
  52. 'value' => $typeVehicle->id,
  53. 'label' => $typeVehicle->type,
  54. ]);
  55. return inertia('test-transaction/Create.vue', compact([
  56. 'entryTransactions',
  57. 'entryTransactionCount',
  58. 'outTransactions',
  59. 'outTransactionCount',
  60. 'typeVehicles',
  61. ]));
  62. }
  63. /**
  64. * Store a newly created resource in storage.
  65. *
  66. * @param \Illuminate\Http\Request $request
  67. * @return \Illuminate\Http\Response
  68. */
  69. public function store(StoreTestTransactionRequest $request)
  70. {
  71. if ($request->id === 2) {
  72. // Check member or not
  73. $memberId = Vehicle::where('plat_number', $request->plat_number)->first('member_id');
  74. if ($memberId) {
  75. // Check expired member or not
  76. $expDate = $memberId->member->getRawOriginal('exp_date');
  77. $exp = Carbon::parse($expDate)->greaterThanOrEqualTo(now());
  78. } else {
  79. $entryTransactions = EntryTransaction::where('transaction_number', $request->entry_transaction_id)->first();
  80. $vehicleEntryTime = $entryTransactions->getRawOriginal('created_at');
  81. $longParkingPerHours = Carbon::parse($vehicleEntryTime)->floatDiffInRealHours(now());
  82. $parkingFee = ParkingFee::get();
  83. }
  84. } else {
  85. EntryTransaction::create([
  86. 'transaction_number' => Str::uuid(),
  87. ]);
  88. return back()->with('success', __('messages.success.store.transaction'));
  89. }
  90. }
  91. /**
  92. * Display the specified resource.
  93. *
  94. * @param int $id
  95. * @return \Illuminate\Http\Response
  96. */
  97. public function show($id)
  98. {
  99. //
  100. }
  101. /**
  102. * Show the form for editing the specified resource.
  103. *
  104. * @param int $id
  105. * @return \Illuminate\Http\Response
  106. */
  107. public function edit($id)
  108. {
  109. //
  110. }
  111. /**
  112. * Update the specified resource in storage.
  113. *
  114. * @param \Illuminate\Http\Request $request
  115. * @param int $id
  116. * @return \Illuminate\Http\Response
  117. */
  118. public function update(Request $request, $id)
  119. {
  120. //
  121. }
  122. /**
  123. * Remove the specified resource from storage.
  124. *
  125. * @param int $id
  126. * @return \Illuminate\Http\Response
  127. */
  128. public function destroy($id)
  129. {
  130. //
  131. }
  132. }