瀏覽代碼

fix: out-transaction non member

Muhammad Iqbal Afandi 3 年之前
父節點
當前提交
d74c6ded5d

+ 47
- 9
app/Http/Controllers/TestTransactionController.php 查看文件

9
 use App\Models\ParkingFee;
9
 use App\Models\ParkingFee;
10
 use App\Models\TypeVehicle;
10
 use App\Models\TypeVehicle;
11
 use App\Models\Vehicle;
11
 use App\Models\Vehicle;
12
+use App\Services\Helper;
12
 use Carbon\Carbon;
13
 use Carbon\Carbon;
14
+use Illuminate\Database\QueryException;
13
 use Illuminate\Http\Request;
15
 use Illuminate\Http\Request;
16
+use Illuminate\Support\Facades\DB;
14
 use Illuminate\Support\Str;
17
 use Illuminate\Support\Str;
15
 use Inertia\Inertia;
18
 use Inertia\Inertia;
16
 
19
 
112
                     'user_id' => auth()->user()->id,
115
                     'user_id' => auth()->user()->id,
113
                 ]);
116
                 ]);
114
 
117
 
115
-                return back()->with('success', __('messages.success.store.out_transaction'));
118
+                return back()->with('success', __('messages.success.store.transaction'));
116
             } else {
119
             } else {
117
                 /**
120
                 /**
118
                  * Pseudo code
121
                  * Pseudo code
135
                  *
138
                  *
136
                  */
139
                  */
137
 
140
 
141
+                $parkingFee = ParkingFee::get();
142
+
143
+                $parkingTime = Helper::addPrevValue($parkingFee->pluck('time_period')->toArray());
144
+
145
+                $parkingPrice = Helper::addPrevValue($parkingFee->pluck('price')->toArray());
146
+
138
                 $entryTransaction = EntryTransaction::where('transaction_number', $request->entry_transaction_id)->first();
147
                 $entryTransaction = EntryTransaction::where('transaction_number', $request->entry_transaction_id)->first();
139
 
148
 
140
                 $vehicleEntryTime = $entryTransaction->getRawOriginal('created_at');
149
                 $vehicleEntryTime = $entryTransaction->getRawOriginal('created_at');
141
 
150
 
142
-                $longParkingPerHours = ceil(Carbon::parse($vehicleEntryTime)->floatDiffInRealHours(now()));
151
+                $longParkingPerHour = ceil(Carbon::parse($vehicleEntryTime)->floatDiffInRealHours(now()));
152
+
153
+                $totalParkingPerDay = $longParkingPerHour > 24 ? ceil($longParkingPerHour / 24) : 0;
154
+
155
+                $totalPriceParkingPerDay = $totalParkingPerDay * end($parkingPrice);
156
+
157
+                $totalPriceParkingToday = 0;
158
+
159
+                foreach ($parkingTime as $index => $time) {
160
+                    if ($time >= $longParkingPerHour) {
161
+                        $totalPriceParkingToday = $parkingPrice[$index];
143
 
162
 
144
-                $parkingFee = ParkingFee::get()
145
-                    ->reduce(function ($prev, $parkingFee) use ($longParkingPerHours) {
146
-                        if ($prev + $parkingFee->time_period >= $longParkingPerHours) {
147
-                            return $parkingFee;
148
-                        }
149
-                    }, 0);
163
+                        break;
164
+                    }
165
+                }
166
+
167
+                DB::beginTransaction();
168
+
169
+                try {
170
+                    $outTransaction = OutTransaction::create([
171
+                        'plat_number' => $request->plat_number,
172
+                        'entry_transaction_id' => $request->entry_transaction_id,
173
+                        'type_vehicle_id' => $request->type_vehicle_id,
174
+                        'user_id' => auth()->user()->id,
175
+                    ]);
176
+
177
+                    $outTransaction->mutation()->create([
178
+                        'type' => 1,
179
+                        'amount' => $totalParkingPerDay ? $totalPriceParkingPerDay : $totalPriceParkingToday,
180
+                    ]);
150
 
181
 
151
-                return back()->with('success', __('messages.success.store.out_transaction'));
182
+                    DB::commit();
183
+
184
+                    return back()->with('success', __('messages.success.store.transaction'));
185
+                } catch (QueryException $e) {
186
+                    DB::rollBack();
187
+
188
+                    return back()->with('error', __('messages.error.store.transaction'));
189
+                }
152
             }
190
             }
153
         } else {
191
         } else {
154
             EntryTransaction::create([
192
             EntryTransaction::create([

+ 6
- 0
app/Models/OutTransaction.php 查看文件

2
 
2
 
3
 namespace App\Models;
3
 namespace App\Models;
4
 
4
 
5
+use App\Models\Mutation;
5
 use Carbon\Carbon;
6
 use Carbon\Carbon;
6
 use Illuminate\Database\Eloquent\Casts\Attribute;
7
 use Illuminate\Database\Eloquent\Casts\Attribute;
7
 use Illuminate\Database\Eloquent\Factories\HasFactory;
8
 use Illuminate\Database\Eloquent\Factories\HasFactory;
32
             set:fn($value) => strtoupper($value)
33
             set:fn($value) => strtoupper($value)
33
         );
34
         );
34
     }
35
     }
36
+
37
+    public function mutation()
38
+    {
39
+        return $this->hasOne(Mutation::class);
40
+    }
35
 }
41
 }

+ 21
- 0
app/Services/Helper.php 查看文件

1
+<?php
2
+
3
+namespace App\Services;
4
+
5
+class Helper
6
+{
7
+    public static function addPrevValue(array $h): array
8
+    {
9
+        $i = [];
10
+
11
+        for ($j = 0; $j <= count($h) - 1; $j++) {
12
+            if ($j === 0) {
13
+                array_push($i, $h[$j]);
14
+            } else {
15
+                array_push($i, $i[$j - 1] + $h[$j]);
16
+            }
17
+        }
18
+
19
+        return $i;
20
+    }
21
+}

+ 0
- 1
lang/en/messages.php 查看文件

30
             'discount' => 'Discount successfully added',
30
             'discount' => 'Discount successfully added',
31
             'expense' => 'Expense successfully added',
31
             'expense' => 'Expense successfully added',
32
             'transaction' => 'Transaction successfully added',
32
             'transaction' => 'Transaction successfully added',
33
-            'out_transaction' => 'Out Transaction successfully added',
34
             'user' => 'User Account successfully added',
33
             'user' => 'User Account successfully added',
35
         ],
34
         ],
36
         'update' => [
35
         'update' => [

+ 0
- 1
lang/id/messages.php 查看文件

30
             'discount' => 'Diskon berhasil diubah',
30
             'discount' => 'Diskon berhasil diubah',
31
             'expense' => 'Pengeluaran berhasil ditambahkan',
31
             'expense' => 'Pengeluaran berhasil ditambahkan',
32
             'transaction' => 'Transaksi berhasil ditambahkan',
32
             'transaction' => 'Transaksi berhasil ditambahkan',
33
-            'out_transaction' => 'Transaksi berhasil ditambahkan',
34
             'user' => 'Akun user berhasil ditambahkan',
33
             'user' => 'Akun user berhasil ditambahkan',
35
         ],
34
         ],
36
         'update' => [
35
         'update' => [