瀏覽代碼

fix: master member

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

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

6
 use App\Http\Requests\Member\UpdateMemberRequest;
6
 use App\Http\Requests\Member\UpdateMemberRequest;
7
 use App\Models\Member;
7
 use App\Models\Member;
8
 use App\Models\TypeMember;
8
 use App\Models\TypeMember;
9
-use App\Models\TypeVehicle;
10
 use Illuminate\Database\QueryException;
9
 use Illuminate\Database\QueryException;
11
 use Illuminate\Support\Facades\DB;
10
 use Illuminate\Support\Facades\DB;
12
 use Inertia\Inertia;
11
 use Inertia\Inertia;
51
                 'label' => $typeMember->type,
50
                 'label' => $typeMember->type,
52
                 'value' => $typeMember->id,
51
                 'value' => $typeMember->id,
53
             ]),
52
             ]),
54
-            'typeVehicles' => TypeVehicle::get()->transform(fn($typeVehicle) => [
55
-                'label' => $typeVehicle->type,
56
-                'value' => $typeVehicle->id,
57
-            ]),
58
             'typeMember' => Inertia::lazy(
53
             'typeMember' => Inertia::lazy(
59
                 fn() => TypeMember::filter(request('id'))->get()->transform(fn($typeMember) => [
54
                 fn() => TypeMember::filter(request('id'))->get()->transform(fn($typeMember) => [
60
                     'type' => $typeMember->type,
55
                     'type' => $typeMember->type,
61
                     'description' => $typeMember->description,
56
                     'description' => $typeMember->description,
62
                     'price' => $typeMember->price,
57
                     'price' => $typeMember->price,
63
-                    'max' => $typeMember->max,
58
+                    'max' => $typeMember->maxVehicleDetail(),
59
+                    'maxVehicles' => $typeMember->fresh()->maxVehicles->transform(fn($maxVehicle) => [
60
+                        'value' => $maxVehicle->id,
61
+                        'label' => $maxVehicle->typeVehicle->type,
62
+                        'max' => $maxVehicle->max,
63
+                    ]),
64
                 ])->first()
64
                 ])->first()
65
             ),
65
             ),
66
         ]);
66
         ]);

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

60
 
60
 
61
     public function maxVehicleDetail()
61
     public function maxVehicleDetail()
62
     {
62
     {
63
-        $maxVehicle = $this->maxVehicles->transform(fn($maxVehicle) => $maxVehicle->typeVehicle->type . ', ' . 'Maksimal Kendaraan ' . $maxVehicle->max)->toArray();
63
+        $maxVehicle = $this->maxVehicles->transform(fn($maxVehicle) => "{$maxVehicle->typeVehicle->type}, maksimal ({$maxVehicle->max})")->toArray();
64
 
64
 
65
         return implode(". ", $maxVehicle);
65
         return implode(". ", $maxVehicle);
66
     }
66
     }

+ 35
- 52
public/js/resources_js_pages_member_Create_vue.js 查看文件

542
     };
542
     };
543
 
543
 
544
     var addPlatNumber = function addPlatNumber() {
544
     var addPlatNumber = function addPlatNumber() {
545
-      form.clearErrors('plat_number', 'type_vehicle_id');
546
-
547
-      if (!form.plat_number) {
548
-        form.setError('plat_number', 'Plat kendaraan tidak boleh kosong');
549
-        return;
550
-      }
551
-
552
-      if (!form.type_vehicle_id) {
553
-        form.setError('type_vehicle_id', 'Tidak boleh kosong');
554
-        return;
555
-      }
556
-
557
-      var listPlatNumberExist = listPlatNumber.filter(function (val) {
558
-        return val.platNumber === form.plat_number.toUpperCase();
559
-      });
560
-
561
-      if (listPlatNumberExist.length) {
562
-        form.setError('plat_number', 'Nomor plat kendaraan tidak boleh sama');
563
-        return;
564
-      }
565
-
566
-      if (listPlatNumber.length + 1 > props.typeMember.max) {
567
-        form.setError('plat_number', 'Melibihi batas maksimal kendaraan');
568
-        return;
569
-      }
570
-
571
-      var typeVehicleFilter = props.typeVehicles.filter(function (val) {
572
-        return val.value === form.type_vehicle_id;
573
-      })[0];
574
-      listPlatNumber.push({
575
-        platNumber: form.plat_number.toUpperCase(),
576
-        typeVehicle: typeVehicleFilter.label,
577
-        typeVehicleId: typeVehicleFilter.value
578
-      });
579
-      form.reset('plat_number', 'type_vehicle_id');
545
+      console.log(props.typeMember.maxVehicles); //   form.clearErrors('plat_number', 'type_vehicle_id')
546
+      //   if (!form.plat_number) {
547
+      //     form.setError('plat_number', 'Plat kendaraan tidak boleh kosong')
548
+      //     return
549
+      //   }
550
+      //   if (!form.type_vehicle_id) {
551
+      //     form.setError('type_vehicle_id', 'Tidak boleh kosong')
552
+      //     return
553
+      //   }
554
+      //   const listPlatNumberExist = listPlatNumber.filter((val) => val.platNumber === form.plat_number.toUpperCase())
555
+      //   if (listPlatNumberExist.length) {
556
+      //     form.setError('plat_number', 'Nomor plat kendaraan tidak boleh sama')
557
+      //     return
558
+      //   }
559
+      //   if (listPlatNumber.length + 1 > props.typeMember.max) {
560
+      //     form.setError('plat_number', 'Melibihi batas maksimal kendaraan')
561
+      //     return
562
+      //   }
563
+      //   const typeVehicleFilter = props.typeVehicles.filter((val) => val.value === form.type_vehicle_id)[0]
564
+      //   listPlatNumber.push({
565
+      //     platNumber: form.plat_number.toUpperCase(),
566
+      //     typeVehicle: typeVehicleFilter.label,
567
+      //     typeVehicleId: typeVehicleFilter.value,
568
+      //   })
569
+      //   form.reset('plat_number', 'type_vehicle_id')
580
     };
570
     };
581
 
571
 
582
     var form = (0,_inertiajs_inertia_vue3__WEBPACK_IMPORTED_MODULE_2__.useForm)({
572
     var form = (0,_inertiajs_inertia_vue3__WEBPACK_IMPORTED_MODULE_2__.useForm)({
1342
 );
1332
 );
1343
 
1333
 
1344
 var _hoisted_14 = {
1334
 var _hoisted_14 = {
1335
+  key: 0,
1345
   "class": "grid"
1336
   "class": "grid"
1346
 };
1337
 };
1347
 var _hoisted_15 = {
1338
 var _hoisted_15 = {
1357
   "class": "col-12 md:col-6"
1348
   "class": "col-12 md:col-6"
1358
 };
1349
 };
1359
 var _hoisted_19 = {
1350
 var _hoisted_19 = {
1360
-  "class": "col-12 flex flex-column md:flex-row md:align-items-center justify-content-end mb-3 md:mb-0"
1351
+  "class": "col-12 mb-3 md:mb-0"
1361
 };
1352
 };
1362
 var _hoisted_20 = {
1353
 var _hoisted_20 = {
1354
+  "class": "flex flex-column md:flex-row md:align-items-center justify-content-end"
1355
+};
1356
+var _hoisted_21 = {
1363
   "class": "col-12"
1357
   "class": "col-12"
1364
 };
1358
 };
1365
-
1366
-var _hoisted_21 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("h1", {
1367
-  "class": "text-base"
1368
-}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("i", {
1369
-  "class": "pi pi-car"
1370
-}), /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(), /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", {
1371
-  "class": "ml-2"
1372
-}, "Daftar Plat Kendaraan")], -1
1373
-/* HOISTED */
1374
-);
1375
-
1376
 var _hoisted_22 = {
1359
 var _hoisted_22 = {
1377
   style: {
1360
   style: {
1378
     "color": "#b71c1c"
1361
     "color": "#b71c1c"
1462
         })
1445
         })
1463
       } : undefined]), 1024
1446
       } : undefined]), 1024
1464
       /* DYNAMIC_SLOTS */
1447
       /* DYNAMIC_SLOTS */
1465
-      )])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_14, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_15, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Card, null, {
1448
+      )])]), $props.typeMember ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("div", _hoisted_14, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_15, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Card, null, {
1466
         content: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
1449
         content: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
1467
           return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_16, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_17, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup["AppInputText"], {
1450
           return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_16, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_17, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup["AppInputText"], {
1468
             modelValue: $setup.form.plat_number,
1451
             modelValue: $setup.form.plat_number,
1483
             label: "Jenis Kendaraan",
1466
             label: "Jenis Kendaraan",
1484
             placeholder: "jenis kendaraan",
1467
             placeholder: "jenis kendaraan",
1485
             disabled: !$setup.form.type_member_id,
1468
             disabled: !$setup.form.type_member_id,
1486
-            options: $props.typeVehicles,
1469
+            options: $props.typeMember.maxVehicles,
1487
             error: $setup.form.errors.type_vehicle_id
1470
             error: $setup.form.errors.type_vehicle_id
1488
           }, null, 8
1471
           }, null, 8
1489
           /* PROPS */
1472
           /* PROPS */
1490
-          , ["modelValue", "disabled", "options", "error"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_19, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Button, {
1473
+          , ["modelValue", "disabled", "options", "error"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_19, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_20, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Button, {
1491
             label: "Tambah",
1474
             label: "Tambah",
1492
             "class": "p-button-outlined",
1475
             "class": "p-button-outlined",
1493
             icon: "pi pi-car",
1476
             icon: "pi pi-car",
1495
             onClick: $setup.addPlatNumber
1478
             onClick: $setup.addPlatNumber
1496
           }, null, 8
1479
           }, null, 8
1497
           /* PROPS */
1480
           /* PROPS */
1498
-          , ["disabled"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_20, [_hoisted_21, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_DataTable, {
1481
+          , ["disabled"])])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_21, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_DataTable, {
1499
             "striped-rows": "",
1482
             "striped-rows": "",
1500
             "row-hover": "",
1483
             "row-hover": "",
1501
             "responsive-layout": "scroll",
1484
             "responsive-layout": "scroll",
1566
         _: 1
1549
         _: 1
1567
         /* STABLE */
1550
         /* STABLE */
1568
 
1551
 
1569
-      })])])];
1552
+      })])])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true)];
1570
     }),
1553
     }),
1571
     _: 1
1554
     _: 1
1572
     /* STABLE */
1555
     /* STABLE */

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

58101
 /******/ 		// This function allow to reference async chunks
58101
 /******/ 		// This function allow to reference async chunks
58102
 /******/ 		__webpack_require__.u = (chunkId) => {
58102
 /******/ 		__webpack_require__.u = (chunkId) => {
58103
 /******/ 			// return url for filenames based on template
58103
 /******/ 			// return url for filenames based on template
58104
-/******/ 			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":"51f7facd5c3c3ea6","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":"3ca394fe875a5c72","resources_js_pages_member_Edit_vue":"7b222567b848883e","resources_js_pages_member_Index_vue":"71a31a774bb1b571","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":"70bcf9869c3024d0","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":"3c3878e1d6568226","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":"53c702d33feb6196","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":"16d93eb7e5210300","resources_js_pages_user_Show_vue":"138fd92d6ae36518","resources_js_pages_user_TableHeader_js":"0d87fd422fe40491"}[chunkId] + "";
58104
+/******/ 			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":"51f7facd5c3c3ea6","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":"14b9578191b85d48","resources_js_pages_member_Edit_vue":"7b222567b848883e","resources_js_pages_member_Index_vue":"71a31a774bb1b571","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":"70bcf9869c3024d0","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":"3c3878e1d6568226","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":"53c702d33feb6196","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":"16d93eb7e5210300","resources_js_pages_user_Show_vue":"138fd92d6ae36518","resources_js_pages_user_TableHeader_js":"0d87fd422fe40491"}[chunkId] + "";
58105
 /******/ 		};
58105
 /******/ 		};
58106
 /******/ 	})();
58106
 /******/ 	})();
58107
 /******/ 	
58107
 /******/ 	

+ 39
- 47
resources/js/pages/member/Create.vue 查看文件

33
 }
33
 }
34
 
34
 
35
 const addPlatNumber = () => {
35
 const addPlatNumber = () => {
36
-  form.clearErrors('plat_number', 'type_vehicle_id')
37
-
38
-  if (!form.plat_number) {
39
-    form.setError('plat_number', 'Plat kendaraan tidak boleh kosong')
40
-
41
-    return
42
-  }
43
-
44
-  if (!form.type_vehicle_id) {
45
-    form.setError('type_vehicle_id', 'Tidak boleh kosong')
46
-
47
-    return
48
-  }
49
-
50
-  const listPlatNumberExist = listPlatNumber.filter((val) => val.platNumber === form.plat_number.toUpperCase())
51
-  if (listPlatNumberExist.length) {
52
-    form.setError('plat_number', 'Nomor plat kendaraan tidak boleh sama')
53
-
54
-    return
55
-  }
56
-
57
-  if (listPlatNumber.length + 1 > props.typeMember.max) {
58
-    form.setError('plat_number', 'Melibihi batas maksimal kendaraan')
59
-
60
-    return
61
-  }
62
-
63
-  const typeVehicleFilter = props.typeVehicles.filter((val) => val.value === form.type_vehicle_id)[0]
64
-  listPlatNumber.push({
65
-    platNumber: form.plat_number.toUpperCase(),
66
-    typeVehicle: typeVehicleFilter.label,
67
-    typeVehicleId: typeVehicleFilter.value,
68
-  })
69
-
70
-  form.reset('plat_number', 'type_vehicle_id')
36
+  console.log(props.typeMember.maxVehicles)
37
+
38
+  //   form.clearErrors('plat_number', 'type_vehicle_id')
39
+  //   if (!form.plat_number) {
40
+  //     form.setError('plat_number', 'Plat kendaraan tidak boleh kosong')
41
+  //     return
42
+  //   }
43
+  //   if (!form.type_vehicle_id) {
44
+  //     form.setError('type_vehicle_id', 'Tidak boleh kosong')
45
+  //     return
46
+  //   }
47
+  //   const listPlatNumberExist = listPlatNumber.filter((val) => val.platNumber === form.plat_number.toUpperCase())
48
+  //   if (listPlatNumberExist.length) {
49
+  //     form.setError('plat_number', 'Nomor plat kendaraan tidak boleh sama')
50
+  //     return
51
+  //   }
52
+  //   if (listPlatNumber.length + 1 > props.typeMember.max) {
53
+  //     form.setError('plat_number', 'Melibihi batas maksimal kendaraan')
54
+  //     return
55
+  //   }
56
+  //   const typeVehicleFilter = props.typeVehicles.filter((val) => val.value === form.type_vehicle_id)[0]
57
+  //   listPlatNumber.push({
58
+  //     platNumber: form.plat_number.toUpperCase(),
59
+  //     typeVehicle: typeVehicleFilter.label,
60
+  //     typeVehicleId: typeVehicleFilter.value,
61
+  //   })
62
+  //   form.reset('plat_number', 'type_vehicle_id')
71
 }
63
 }
72
 
64
 
73
 const form = useForm({
65
 const form = useForm({
163
       </div>
155
       </div>
164
     </div>
156
     </div>
165
 
157
 
166
-    <div class="grid">
158
+    <div v-if="typeMember" class="grid">
167
       <div class="col-12 md:col-8">
159
       <div class="col-12 md:col-8">
168
         <Card>
160
         <Card>
169
           <template #content>
161
           <template #content>
183
                   label="Jenis Kendaraan"
175
                   label="Jenis Kendaraan"
184
                   placeholder="jenis kendaraan"
176
                   placeholder="jenis kendaraan"
185
                   :disabled="!form.type_member_id"
177
                   :disabled="!form.type_member_id"
186
-                  :options="typeVehicles"
178
+                  :options="typeMember.maxVehicles"
187
                   :error="form.errors.type_vehicle_id"
179
                   :error="form.errors.type_vehicle_id"
188
                 />
180
                 />
189
               </div>
181
               </div>
190
-              <div class="col-12 flex flex-column md:flex-row md:align-items-center justify-content-end mb-3 md:mb-0">
191
-                <Button
192
-                  label="Tambah"
193
-                  class="p-button-outlined"
194
-                  icon="pi pi-car"
195
-                  :disabled="!form.type_member_id"
196
-                  @click="addPlatNumber"
197
-                />
182
+              <div class="col-12 mb-3 md:mb-0">
183
+                <div class="flex flex-column md:flex-row md:align-items-center justify-content-end">
184
+                  <Button
185
+                    label="Tambah"
186
+                    class="p-button-outlined"
187
+                    icon="pi pi-car"
188
+                    :disabled="!form.type_member_id"
189
+                    @click="addPlatNumber"
190
+                  />
191
+                </div>
198
               </div>
192
               </div>
199
               <div class="col-12">
193
               <div class="col-12">
200
-                <h1 class="text-base"><i class="pi pi-car"></i> <span class="ml-2">Daftar Plat Kendaraan</span></h1>
201
-
202
                 <DataTable
194
                 <DataTable
203
                   striped-rows
195
                   striped-rows
204
                   row-hover
196
                   row-hover