瀏覽代碼

fix: master member

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

+ 44
- 29
app/Http/Controllers/MemberController.php 查看文件

@@ -184,42 +184,57 @@ class MemberController extends Controller
184 184
      */
185 185
     public function update(UpdateMemberRequest $request, Member $member)
186 186
     {
187
-        if ($member->type_member_id !== $request->type_member_id) {
188
-            dd('type member changes');
189
-        } else {
190
-            dd('old member');
191
-        }
192
-        // DB::beginTransaction();
187
+        DB::beginTransaction();
193 188
 
194
-        // try {
195
-        //     $member->update($request->validated());
189
+        try {
190
+            if ($member->type_member_id !== $request->type_member_id) {
191
+                $member->update([
192
+                    'name' => $request->name,
193
+                    'phone' => $request->phone,
194
+                    'exp_date' => now()->addDays(30),
195
+                    'type_member_id' => $request->type_member_id,
196
+                ]);
196 197
 
197
-        //     foreach ($request->vehicles as $vehicle) {
198
-        //         $member->vehicles()->create([
199
-        //             'plat_number' => $vehicle['platNumber'],
200
-        //             'type_vehicle_id' => $vehicle['typeVehicleId'],
201
-        //         ]);
202
-        //     }
198
+                $member->vehicles()->delete();
203 199
 
204
-        //     $topUp = $member->topUps()->create([
205
-        //         'amount' => TypeMember::find($request->type_member_id)->getRawOriginal('price'),
206
-        //         'exp_date' => now()->addDays(30),
207
-        //         'user_id' => auth()->user()->id,
208
-        //     ]);
200
+                foreach ($request->vehicles as $vehicle) {
201
+                    $member->vehicles()->create([
202
+                        'plat_number' => $vehicle['platNumber'],
203
+                        'type_vehicle_id' => $vehicle['typeVehicleId'],
204
+                    ]);
205
+                }
209 206
 
210
-        //     $topUp->mutation()->create([
211
-        //         'type' => 1,
212
-        //         'amount' => TypeMember::find($request->type_member_id)->getRawOriginal('price'),
213
-        //     ]);
207
+                $topUp = $member->topUps()->create([
208
+                    'amount' => TypeMember::find($request->type_member_id)->getRawOriginal('price'),
209
+                    'exp_date' => now()->addDays(30),
210
+                    'user_id' => auth()->user()->id,
211
+                ]);
214 212
 
215
-        //     DB::commit();
213
+                $topUp->mutation()->create([
214
+                    'type' => 1,
215
+                    'amount' => TypeMember::find($request->type_member_id)->getRawOriginal('price'),
216
+                ]);
217
+            } else {
218
+                $member->update($request->validated());
216 219
 
217
-        //     return back()->with('success', __('messages.success.update.member'));
218
-        // } catch (QueryException $qe) {
219
-        //     DB::rollBack();
220
+                $member->vehicles()->delete();
220 221
 
221
-        //     return back()->with('error', __('messages.error.update'));
222
-        // }
222
+                foreach ($request->vehicles as $vehicle) {
223
+                    $member->vehicles()->create([
224
+                        'plat_number' => $vehicle['platNumber'],
225
+                        'type_vehicle_id' => $vehicle['typeVehicleId'],
226
+                    ]);
227
+                }
228
+            }
229
+
230
+            DB::commit();
231
+
232
+            return back()->with('success', __('messages.success.update.member'));
233
+        } catch (QueryException $qe) {
234
+            DB::rollBack();
235
+
236
+            return back()->with('error', __('messages.error.update'));
237
+        }
223 238
     }
224 239
 
225 240
     /**

+ 1
- 1
app/Models/TransactionOut.php 查看文件

@@ -13,7 +13,7 @@ class TransactionOut extends Model
13 13
         'plat_number',
14 14
         'price',
15 15
         'transaction_in_id',
16
-        'type_vehicle_id',
16
+        'parking_fee_id',
17 17
         'user_id',
18 18
     ];
19 19
 }

+ 1
- 0
app/Models/Vehicle.php 查看文件

@@ -13,6 +13,7 @@ class Vehicle extends Model
13 13
     protected $fillable = [
14 14
         'plat_number',
15 15
         'member_id',
16
+        'transaction_out_id',
16 17
         'type_vehicle_id',
17 18
     ];
18 19
 

+ 1
- 0
database/migrations/2022_04_23_130215_create_vehicles_table.php 查看文件

@@ -17,6 +17,7 @@ return new class extends Migration
17 17
             $table->id();
18 18
             $table->string('plat_number');
19 19
             $table->foreignId('member_id')->constrained();
20
+            $table->foreignId('transaction_out_id')->constrained();
20 21
             $table->foreignId('type_vehicle_id')->constrained();
21 22
             $table->timestamps();
22 23
         });

+ 2
- 1
designs/diagrams/database.puml 查看文件

@@ -13,7 +13,6 @@ entity TransactionOut {
13 13
   * plat_number
14 14
   price
15 15
   * transaction_in_id
16
-  type_vehicle_id
17 16
   * user_id
18 17
 }
19 18
 
@@ -62,6 +61,8 @@ entity Vehicle {
62 61
   __
63 62
   * plat_number
64 63
   * member_id
64
+  * transaction_out_id
65
+  * parking_fee_id
65 66
   * type_vehicle_id
66 67
 }
67 68
 

二進制
designs/diagrams/database/Database.png 查看文件


+ 26
- 21
public/js/resources_js_pages_member_Create_vue.js 查看文件

@@ -628,6 +628,30 @@ __webpack_require__.r(__webpack_exports__);
628 628
     });
629 629
     var confirm = (0,primevue_useconfirm__WEBPACK_IMPORTED_MODULE_3__.useConfirm)();
630 630
 
631
+    var formSent = function formSent() {
632
+      form.transform(function (data) {
633
+        return {
634
+          name: data.name,
635
+          phone: data.phone,
636
+          vehicles: listPlatNumber,
637
+          type_member_id: data.type_member_id
638
+        };
639
+      }).post(route('members.store'), {
640
+        onError: function onError() {
641
+          _inertiajs_inertia__WEBPACK_IMPORTED_MODULE_1__.Inertia.reload({
642
+            only: ['typeMember'],
643
+            data: {
644
+              id: form.type_member_id
645
+            }
646
+          });
647
+        },
648
+        onSuccess: function onSuccess() {
649
+          listPlatNumberClear();
650
+          form.reset();
651
+        }
652
+      });
653
+    };
654
+
631 655
     var submit = function submit() {
632 656
       confirm.require({
633 657
         message: "Tagihan dikenakan untuk member baru sebesar ".concat(props.typeMember.price),
@@ -635,27 +659,7 @@ __webpack_require__.r(__webpack_exports__);
635 659
         acceptLabel: 'Bayar dan simpan',
636 660
         rejectLabel: 'Batalkan',
637 661
         accept: function accept() {
638
-          form.transform(function (data) {
639
-            return {
640
-              name: data.name,
641
-              phone: data.phone,
642
-              vehicles: listPlatNumber,
643
-              type_member_id: data.type_member_id
644
-            };
645
-          }).post(route('members.store'), {
646
-            onError: function onError() {
647
-              _inertiajs_inertia__WEBPACK_IMPORTED_MODULE_1__.Inertia.reload({
648
-                only: ['typeMember'],
649
-                data: {
650
-                  id: form.type_member_id
651
-                }
652
-              });
653
-            },
654
-            onSuccess: function onSuccess() {
655
-              listPlatNumberClear();
656
-              form.reset();
657
-            }
658
-          });
662
+          formSent();
659 663
         },
660 664
         reject: function reject() {
661 665
           console.info('transaksi digagalkan');
@@ -673,6 +677,7 @@ __webpack_require__.r(__webpack_exports__);
673 677
       addPlatNumber: addPlatNumber,
674 678
       form: form,
675 679
       confirm: confirm,
680
+      formSent: formSent,
676 681
       submit: submit,
677 682
       computed: vue__WEBPACK_IMPORTED_MODULE_0__.computed,
678 683
       watch: vue__WEBPACK_IMPORTED_MODULE_0__.watch,

+ 1
- 1
public/js/vue.js 查看文件

@@ -58380,7 +58380,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
58380 58380
 /******/ 		// This function allow to reference async chunks
58381 58381
 /******/ 		__webpack_require__.u = (chunkId) => {
58382 58382
 /******/ 			// return url for filenames based on template
58383
-/******/ 			return "js/" + chunkId + ".js?id=" + {"node_modules_chart_js_auto_auto_esm_js":"10c6b388645ceb22","resources_js_pages_auth_ForgotPassword_vue":"5b9f0529bda25a9b","resources_js_pages_auth_Login_vue":"61b9c9ae1ae9da32","resources_js_pages_auth_ResetPassword_vue":"b091193a1e114ce8","resources_js_pages_auth_VerifyEmail_vue":"a7b9a99e5a331088","resources_js_pages_expense_Create_vue":"1772093ec9ad8e1f","resources_js_pages_expense_Index_vue":"bb79e50a3f9cc936","resources_js_pages_expense_Show_vue":"6200e318fe2f7fed","resources_js_pages_expense_TableHeader_js":"eed3f0613f167cfd","resources_js_pages_home_Index_vue":"6cd0224828ac8129","resources_js_pages_member_Create_vue":"65532cf5d3ca8ed2","resources_js_pages_member_Edit_vue":"8953f866891a3551","resources_js_pages_member_Index_vue":"4c8d34b88ca81ceb","resources_js_pages_member_TableHeader_js":"51dbf053f7ddd45c","resources_js_pages_topup_Create_vue":"24940afcdac09553","resources_js_pages_topup_Edit_vue":"258c3b0746574dc0","resources_js_pages_topup_Index_vue":"0733ef204a4ec33e","resources_js_pages_topup_Show_vue":"cb35ad21e9ce163f","resources_js_pages_topup_TableHeader_js":"c0dc89df0e3b8b7d","resources_js_pages_typemember_Create_vue":"e9028dd632c51636","resources_js_pages_typemember_Edit_vue":"c51c01c7afe7241d","resources_js_pages_typemember_Index_vue":"f9b93dac2e59fcc5","resources_js_pages_typemember_TableHeader_js":"ac1d31a59f8d464e","resources_js_pages_typevehicle_Create_vue":"0f937d93865a1ea2","resources_js_pages_typevehicle_Edit_vue":"edba97a3715ba957","resources_js_pages_typevehicle_Index_vue":"a150bdc8e5ca38d8","resources_js_pages_typevehicle_TableHeader_js":"a40378918fbe74e1","resources_js_pages_user_Create_vue":"361bf2589467f820","resources_js_pages_user_Edit_vue":"fdb844cf830ec11c","resources_js_pages_user_Index_vue":"28306eabc84a84d1","resources_js_pages_user_Show_vue":"138fd92d6ae36518","resources_js_pages_user_TableHeader_js":"0d87fd422fe40491"}[chunkId] + "";
58383
+/******/ 			return "js/" + chunkId + ".js?id=" + {"node_modules_chart_js_auto_auto_esm_js":"10c6b388645ceb22","resources_js_pages_auth_ForgotPassword_vue":"5b9f0529bda25a9b","resources_js_pages_auth_Login_vue":"61b9c9ae1ae9da32","resources_js_pages_auth_ResetPassword_vue":"b091193a1e114ce8","resources_js_pages_auth_VerifyEmail_vue":"a7b9a99e5a331088","resources_js_pages_expense_Create_vue":"1772093ec9ad8e1f","resources_js_pages_expense_Index_vue":"bb79e50a3f9cc936","resources_js_pages_expense_Show_vue":"6200e318fe2f7fed","resources_js_pages_expense_TableHeader_js":"eed3f0613f167cfd","resources_js_pages_home_Index_vue":"6cd0224828ac8129","resources_js_pages_member_Create_vue":"440e3a52f7012f02","resources_js_pages_member_Edit_vue":"8953f866891a3551","resources_js_pages_member_Index_vue":"4c8d34b88ca81ceb","resources_js_pages_member_TableHeader_js":"51dbf053f7ddd45c","resources_js_pages_topup_Create_vue":"24940afcdac09553","resources_js_pages_topup_Edit_vue":"258c3b0746574dc0","resources_js_pages_topup_Index_vue":"0733ef204a4ec33e","resources_js_pages_topup_Show_vue":"cb35ad21e9ce163f","resources_js_pages_topup_TableHeader_js":"c0dc89df0e3b8b7d","resources_js_pages_typemember_Create_vue":"e9028dd632c51636","resources_js_pages_typemember_Edit_vue":"c51c01c7afe7241d","resources_js_pages_typemember_Index_vue":"f9b93dac2e59fcc5","resources_js_pages_typemember_TableHeader_js":"ac1d31a59f8d464e","resources_js_pages_typevehicle_Create_vue":"0f937d93865a1ea2","resources_js_pages_typevehicle_Edit_vue":"edba97a3715ba957","resources_js_pages_typevehicle_Index_vue":"a150bdc8e5ca38d8","resources_js_pages_typevehicle_TableHeader_js":"a40378918fbe74e1","resources_js_pages_user_Create_vue":"361bf2589467f820","resources_js_pages_user_Edit_vue":"fdb844cf830ec11c","resources_js_pages_user_Index_vue":"28306eabc84a84d1","resources_js_pages_user_Show_vue":"138fd92d6ae36518","resources_js_pages_user_TableHeader_js":"0d87fd422fe40491"}[chunkId] + "";
58384 58384
 /******/ 		};
58385 58385
 /******/ 	})();
58386 58386
 /******/ 	

+ 21
- 17
resources/js/pages/member/Create.vue 查看文件

@@ -108,6 +108,26 @@ watch(
108 108
 
109 109
 const confirm = useConfirm()
110 110
 
111
+const formSent = () => {
112
+  form
113
+    .transform((data) => ({
114
+      name: data.name,
115
+      phone: data.phone,
116
+      vehicles: listPlatNumber,
117
+      type_member_id: data.type_member_id,
118
+    }))
119
+    .post(route('members.store'), {
120
+      onError: () => {
121
+        Inertia.reload({ only: ['typeMember'], data: { id: form.type_member_id } })
122
+      },
123
+      onSuccess: () => {
124
+        listPlatNumberClear()
125
+
126
+        form.reset()
127
+      },
128
+    })
129
+}
130
+
111 131
 const submit = () => {
112 132
   confirm.require({
113 133
     message: `Tagihan dikenakan untuk member baru sebesar ${props.typeMember.price}`,
@@ -115,23 +135,7 @@ const submit = () => {
115 135
     acceptLabel: 'Bayar dan simpan',
116 136
     rejectLabel: 'Batalkan',
117 137
     accept: () => {
118
-      form
119
-        .transform((data) => ({
120
-          name: data.name,
121
-          phone: data.phone,
122
-          vehicles: listPlatNumber,
123
-          type_member_id: data.type_member_id,
124
-        }))
125
-        .post(route('members.store'), {
126
-          onError: () => {
127
-            Inertia.reload({ only: ['typeMember'], data: { id: form.type_member_id } })
128
-          },
129
-          onSuccess: () => {
130
-            listPlatNumberClear()
131
-
132
-            form.reset()
133
-          },
134
-        })
138
+      formSent()
135 139
     },
136 140
     reject: () => {
137 141
       console.info('transaksi digagalkan')