Muhammad Iqbal Afandi пре 3 година
родитељ
комит
6e39085d01

+ 48
- 18
app/Http/Controllers/TopUpController.php Прегледај датотеку

6
 use App\Http\Requests\TopUp\UpdateTopUpRequest;
6
 use App\Http\Requests\TopUp\UpdateTopUpRequest;
7
 use App\Models\Member;
7
 use App\Models\Member;
8
 use App\Models\TopUp;
8
 use App\Models\TopUp;
9
+use App\Models\TypeMember;
10
+use Carbon\Carbon;
11
+use Illuminate\Database\QueryException;
12
+use Illuminate\Support\Facades\DB;
9
 use Inertia\Inertia;
13
 use Inertia\Inertia;
10
 
14
 
11
 class TopUpController extends Controller
15
 class TopUpController extends Controller
51
                     'phone' => $member->phone,
55
                     'phone' => $member->phone,
52
                     'platNumber' => $member->vehicleDetail(),
56
                     'platNumber' => $member->vehicleDetail(),
53
                     'type' => $member->typeMember->type,
57
                     'type' => $member->typeMember->type,
58
+                    'price' => $member->typeMember->price,
54
                     'expDate' => $member->exp_date,
59
                     'expDate' => $member->exp_date,
55
                 ])
60
                 ])
56
             ),
61
             ),
65
      */
70
      */
66
     public function store(StoreTopUpRequest $request)
71
     public function store(StoreTopUpRequest $request)
67
     {
72
     {
68
-        TopUp::create([
69
-            'balance' => $request->balance,
70
-            'exp_date' => $request->exp_date,
71
-            'member_id' => $request->member_id,
72
-            'user_id' => auth()->user()->id,
73
-        ]);
73
+        $member = Member::find($request->member_id);
74
+
75
+        $latest = $member->topUps->last()->getRawOriginal('exp_date');
76
+
77
+        DB::beginTransaction();
78
+
79
+        try {
80
+            $topUp = $member->topUps()->create([
81
+                'amount' => TypeMember::find($member->typeMember->id)->getRawOriginal('price'),
82
+                'exp_date' => Carbon::create($latest)->addDays(30),
83
+                'user_id' => auth()->user()->id,
84
+            ]);
85
+
86
+            $topUp->mutation()->create([
87
+                'type' => 1,
88
+                'amount' => TypeMember::find($member->typeMember->id)->getRawOriginal('price'),
89
+            ]);
90
+
91
+            DB::commit();
74
 
92
 
75
-        return back()->with('success', __('messages.success.store.top_up'));
93
+            return back()->with('success', __('messages.success.store.top_up'));
94
+        } catch (QueryException $qe) {
95
+            DB::rollBack();
96
+
97
+            return back()->with('error', __('messages.error.store.top_up'));
98
+        }
76
     }
99
     }
77
 
100
 
78
     /**
101
     /**
83
      */
106
      */
84
     public function show(TopUp $topUp)
107
     public function show(TopUp $topUp)
85
     {
108
     {
109
+        $member = $topUp->member;
110
+
86
         return inertia('topup/Show', [
111
         return inertia('topup/Show', [
87
-            'topUp' => [
88
-                'updatedAt' => $topUp->updated_at,
89
-                'name' => $topUp->member->name,
90
-                'phone' => $topUp->member->phone,
91
-                'platNumber' => $topUp->member->plat_number,
92
-                'balance' => $topUp->balance,
93
-                'expDate' => $topUp->exp_date,
94
-                'user' => [
112
+            'member' => [
113
+                'name' => $member->name,
114
+                'phone' => $member->phone,
115
+            ],
116
+            'topUp' => $member->topUps
117
+                ->last()
118
+                ->paginate(15)
119
+                ->withQueryString()
120
+                ->through(fn($topUp) => [
121
+                    'id' => $topUp->id,
122
+                    'updatedAt' => $topUp->updated_at,
95
                     'name' => $topUp->user->name,
123
                     'name' => $topUp->user->name,
96
                     'phone' => $topUp->user->phone,
124
                     'phone' => $topUp->user->phone,
97
-                    'email' => $topUp->user->email,
98
-                ],
99
-            ],
125
+                    'platNumber' => $topUp->member->vehicleDetail(),
126
+                    'amount' => $topUp->amount,
127
+                    'type' => $topUp->member->typeMember->type,
128
+                    'expDate' => $topUp->exp_date,
129
+                ]),
100
         ]);
130
         ]);
101
     }
131
     }
102
 
132
 

+ 0
- 1
app/Http/Requests/TopUp/StoreTopUpRequest.php Прегледај датотеку

24
     public function rules()
24
     public function rules()
25
     {
25
     {
26
         return [
26
         return [
27
-            'balance' => 'required|numeric',
28
             'member_id' => 'required|numeric',
27
             'member_id' => 'required|numeric',
29
         ];
28
         ];
30
     }
29
     }

+ 1
- 1
app/Models/TopUp.php Прегледај датотеку

60
         $query->when($filters['search'] ?? null, function ($query, $search) {
60
         $query->when($filters['search'] ?? null, function ($query, $search) {
61
             $query->where(function ($query) use ($search) {
61
             $query->where(function ($query) use ($search) {
62
                 $query->orWhereHas('member', function ($query) use ($search) {
62
                 $query->orWhereHas('member', function ($query) use ($search) {
63
-                    $query->where('plat_number', 'like', '%' . $search . '%')
63
+                    $query->where('name', 'like', '%' . $search . '%')
64
                         ->orWhere('phone', 'like', '%' . $search . '%');
64
                         ->orWhere('phone', 'like', '%' . $search . '%');
65
                 });
65
                 });
66
             });
66
             });

+ 1
- 0
lang/en/messages.php Прегледај датотеку

51
 
51
 
52
     'error' => [
52
     'error' => [
53
         'store' => [
53
         'store' => [
54
+            'top_up' => 'Top up failed to be added',
54
             'type_member' => 'Type member failed to be added',
55
             'type_member' => 'Type member failed to be added',
55
             'member' => 'member failed to be added',
56
             'member' => 'member failed to be added',
56
             'change_password' => 'Password invalid',
57
             'change_password' => 'Password invalid',

+ 1
- 0
lang/id/messages.php Прегледај датотеку

51
 
51
 
52
     'error' => [
52
     'error' => [
53
         'store' => [
53
         'store' => [
54
+            'top_up' => 'Top up gagal ditambahkan',
54
             'type_member' => 'Jenis member gagal ditambahkan',
55
             'type_member' => 'Jenis member gagal ditambahkan',
55
             'member' => 'Member gagal ditambahkan',
56
             'member' => 'Member gagal ditambahkan',
56
             'change_password' => 'Password lama salah',
57
             'change_password' => 'Password lama salah',

+ 2
- 2
public/js/resources_js_pages_member_Create_vue.js Прегледај датотеку

654
 
654
 
655
     var submit = function submit() {
655
     var submit = function submit() {
656
       confirm.require({
656
       confirm.require({
657
-        message: "Tagihan dikenakan untuk member baru sebesar ".concat(props.typeMember.price),
657
+        message: "Dikenakan tagihan untuk member baru sebesar ".concat(props.typeMember.price),
658
         header: 'Tagihan',
658
         header: 'Tagihan',
659
         acceptLabel: 'Bayar dan simpan',
659
         acceptLabel: 'Bayar dan simpan',
660
         rejectLabel: 'Batalkan',
660
         rejectLabel: 'Batalkan',
662
           formSent();
662
           formSent();
663
         },
663
         },
664
         reject: function reject() {
664
         reject: function reject() {
665
-          console.info('transaksi digagalkan');
665
+          console.info('transaksi dibatalkan');
666
         }
666
         }
667
       });
667
       });
668
     };
668
     };

+ 126
- 47
public/js/resources_js_pages_topup_Create_vue.js Прегледај датотеку

420
 /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm-bundler.js");
420
 /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm-bundler.js");
421
 /* harmony import */ var _inertiajs_inertia__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @inertiajs/inertia */ "./node_modules/@inertiajs/inertia/dist/index.js");
421
 /* harmony import */ var _inertiajs_inertia__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @inertiajs/inertia */ "./node_modules/@inertiajs/inertia/dist/index.js");
422
 /* harmony import */ var _inertiajs_inertia_vue3__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @inertiajs/inertia-vue3 */ "./node_modules/@inertiajs/inertia-vue3/dist/index.js");
422
 /* harmony import */ var _inertiajs_inertia_vue3__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @inertiajs/inertia-vue3 */ "./node_modules/@inertiajs/inertia-vue3/dist/index.js");
423
-/* harmony import */ var _components_AppAutocompleteBasic_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/AppAutocompleteBasic.vue */ "./resources/js/components/AppAutocompleteBasic.vue");
424
-/* harmony import */ var _layouts_AppLayout_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/layouts/AppLayout.vue */ "./resources/js/layouts/AppLayout.vue");
423
+/* harmony import */ var primevue_useconfirm__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! primevue/useconfirm */ "./node_modules/primevue/useconfirm/useconfirm.esm.js");
424
+/* harmony import */ var _components_AppAutocompleteBasic_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/AppAutocompleteBasic.vue */ "./resources/js/components/AppAutocompleteBasic.vue");
425
+/* harmony import */ var _layouts_AppLayout_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/layouts/AppLayout.vue */ "./resources/js/layouts/AppLayout.vue");
426
+
425
 
427
 
426
 
428
 
427
 
429
 
464
     var form = (0,_inertiajs_inertia_vue3__WEBPACK_IMPORTED_MODULE_2__.useForm)({
466
     var form = (0,_inertiajs_inertia_vue3__WEBPACK_IMPORTED_MODULE_2__.useForm)({
465
       member: null
467
       member: null
466
     });
468
     });
467
-
468
-    var submit = function submit() {
469
-      form.post(route('top-ups.store'), {
469
+    var confirm = (0,primevue_useconfirm__WEBPACK_IMPORTED_MODULE_3__.useConfirm)();
470
+
471
+    var formSent = function formSent() {
472
+      form.transform(function (data) {
473
+        return {
474
+          member_id: data.member.id
475
+        };
476
+      }).post(route('top-ups.store'), {
470
         onSuccess: function onSuccess() {
477
         onSuccess: function onSuccess() {
471
           return form.reset();
478
           return form.reset();
472
         }
479
         }
473
       });
480
       });
474
     };
481
     };
475
 
482
 
483
+    var submit = function submit() {
484
+      confirm.require({
485
+        message: "Dikenakan tagihan sebesar ".concat(form.member.price),
486
+        header: 'Top Up',
487
+        acceptLabel: 'Bayar dan simpan',
488
+        rejectLabel: 'Batalkan',
489
+        accept: function accept() {
490
+          formSent();
491
+        },
492
+        reject: function reject() {
493
+          console.info('transaksi dibatalkan');
494
+        }
495
+      });
496
+    };
497
+
476
     var __returned__ = {
498
     var __returned__ = {
477
       errors: errors,
499
       errors: errors,
478
       memberOnComplete: memberOnComplete,
500
       memberOnComplete: memberOnComplete,
479
       memberOnSelected: memberOnSelected,
501
       memberOnSelected: memberOnSelected,
480
       gotoMember: gotoMember,
502
       gotoMember: gotoMember,
481
       form: form,
503
       form: form,
504
+      confirm: confirm,
505
+      formSent: formSent,
482
       submit: submit,
506
       submit: submit,
483
       computed: vue__WEBPACK_IMPORTED_MODULE_0__.computed,
507
       computed: vue__WEBPACK_IMPORTED_MODULE_0__.computed,
484
       watch: vue__WEBPACK_IMPORTED_MODULE_0__.watch,
508
       watch: vue__WEBPACK_IMPORTED_MODULE_0__.watch,
486
       Head: _inertiajs_inertia_vue3__WEBPACK_IMPORTED_MODULE_2__.Head,
510
       Head: _inertiajs_inertia_vue3__WEBPACK_IMPORTED_MODULE_2__.Head,
487
       useForm: _inertiajs_inertia_vue3__WEBPACK_IMPORTED_MODULE_2__.useForm,
511
       useForm: _inertiajs_inertia_vue3__WEBPACK_IMPORTED_MODULE_2__.useForm,
488
       usePage: _inertiajs_inertia_vue3__WEBPACK_IMPORTED_MODULE_2__.usePage,
512
       usePage: _inertiajs_inertia_vue3__WEBPACK_IMPORTED_MODULE_2__.usePage,
489
-      AppAutocompleteBasic: _components_AppAutocompleteBasic_vue__WEBPACK_IMPORTED_MODULE_3__["default"],
490
-      AppLayout: _layouts_AppLayout_vue__WEBPACK_IMPORTED_MODULE_4__["default"]
513
+      useConfirm: primevue_useconfirm__WEBPACK_IMPORTED_MODULE_3__.useConfirm,
514
+      AppAutocompleteBasic: _components_AppAutocompleteBasic_vue__WEBPACK_IMPORTED_MODULE_4__["default"],
515
+      AppLayout: _layouts_AppLayout_vue__WEBPACK_IMPORTED_MODULE_5__["default"]
491
     };
516
     };
492
     Object.defineProperty(__returned__, '__isScriptSetup', {
517
     Object.defineProperty(__returned__, '__isScriptSetup', {
493
       enumerable: false,
518
       enumerable: false,
1090
 
1115
 
1091
 var _hoisted_3 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)("Detail Member");
1116
 var _hoisted_3 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)("Detail Member");
1092
 
1117
 
1093
-var _hoisted_4 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("h3", {
1094
-  "class": "text-base font-bold mb-0"
1095
-}, "Nama", -1
1118
+var _hoisted_4 = {
1119
+  key: 0
1120
+};
1121
+
1122
+var _hoisted_5 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", {
1123
+  "class": "text-base font-bold"
1124
+}, " Nama ", -1
1125
+/* HOISTED */
1126
+);
1127
+
1128
+var _hoisted_6 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("br", null, null, -1
1096
 /* HOISTED */
1129
 /* HOISTED */
1097
 );
1130
 );
1098
 
1131
 
1099
-var _hoisted_5 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("h3", {
1100
-  "class": "text-base font-bold mb-0"
1101
-}, "Nomor HP", -1
1132
+var _hoisted_7 = {
1133
+  key: 1
1134
+};
1135
+
1136
+var _hoisted_8 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", {
1137
+  "class": "text-base font-bold"
1138
+}, " Nomor HP ", -1
1102
 /* HOISTED */
1139
 /* HOISTED */
1103
 );
1140
 );
1104
 
1141
 
1105
-var _hoisted_6 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("h3", {
1106
-  "class": "text-base font-bold mb-0"
1107
-}, "Plat Kendaraan", -1
1142
+var _hoisted_9 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("br", null, null, -1
1108
 /* HOISTED */
1143
 /* HOISTED */
1109
 );
1144
 );
1110
 
1145
 
1111
-var _hoisted_7 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("h3", {
1112
-  "class": "text-base font-bold mb-0"
1113
-}, "Jenis Member", -1
1146
+var _hoisted_10 = {
1147
+  key: 2
1148
+};
1149
+
1150
+var _hoisted_11 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", {
1151
+  "class": "text-base font-bold"
1152
+}, " Jenis Member ", -1
1114
 /* HOISTED */
1153
 /* HOISTED */
1115
 );
1154
 );
1116
 
1155
 
1117
-var _hoisted_8 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("h3", {
1118
-  "class": "text-base font-bold mb-0"
1119
-}, "Berakhir", -1
1156
+var _hoisted_12 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("br", null, null, -1
1120
 /* HOISTED */
1157
 /* HOISTED */
1121
 );
1158
 );
1122
 
1159
 
1123
-var _hoisted_9 = {
1160
+var _hoisted_13 = {
1161
+  key: 3
1162
+};
1163
+
1164
+var _hoisted_14 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", {
1165
+  "class": "text-base font-bold"
1166
+}, " Tarif Member ", -1
1167
+/* HOISTED */
1168
+);
1169
+
1170
+var _hoisted_15 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("br", null, null, -1
1171
+/* HOISTED */
1172
+);
1173
+
1174
+var _hoisted_16 = {
1175
+  key: 4
1176
+};
1177
+
1178
+var _hoisted_17 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", {
1179
+  "class": "text-base font-bold"
1180
+}, " Berakhir ", -1
1181
+/* HOISTED */
1182
+);
1183
+
1184
+var _hoisted_18 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("br", null, null, -1
1185
+/* HOISTED */
1186
+);
1187
+
1188
+var _hoisted_19 = {
1124
   "class": "grid"
1189
   "class": "grid"
1125
 };
1190
 };
1126
-var _hoisted_10 = {
1191
+var _hoisted_20 = {
1127
   "class": "col-12 md:col-8"
1192
   "class": "col-12 md:col-8"
1128
 };
1193
 };
1129
 
1194
 
1130
-var _hoisted_11 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(" Top Up ");
1195
+var _hoisted_21 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(" Top Up ");
1131
 
1196
 
1132
-var _hoisted_12 = {
1197
+var _hoisted_22 = {
1133
   "class": "grid"
1198
   "class": "grid"
1134
 };
1199
 };
1135
-var _hoisted_13 = {
1200
+var _hoisted_23 = {
1136
   "class": "col-12 md:col-6"
1201
   "class": "col-12 md:col-6"
1137
 };
1202
 };
1138
-var _hoisted_14 = {
1203
+var _hoisted_24 = {
1139
   key: 0,
1204
   key: 0,
1140
   "class": "flex flex-column"
1205
   "class": "flex flex-column"
1141
 };
1206
 };
1142
-var _hoisted_15 = {
1207
+var _hoisted_25 = {
1143
   "class": "font-bold"
1208
   "class": "font-bold"
1144
 };
1209
 };
1145
-var _hoisted_16 = {
1210
+var _hoisted_26 = {
1146
   "class": "font-bold"
1211
   "class": "font-bold"
1147
 };
1212
 };
1213
+var _hoisted_27 = {
1214
+  "class": "flex flex-column md:flex-row justify-content-end"
1215
+};
1148
 function render(_ctx, _cache, $props, $setup, $data, $options) {
1216
 function render(_ctx, _cache, $props, $setup, $data, $options) {
1217
+  var _component_ConfirmDialog = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)("ConfirmDialog");
1218
+
1149
   var _component_Card = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)("Card");
1219
   var _component_Card = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)("Card");
1150
 
1220
 
1151
-  var _component_Divider = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)("Divider");
1221
+  var _component_Button = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)("Button");
1152
 
1222
 
1153
   return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup["Head"], {
1223
   return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup["Head"], {
1154
     title: "Top Up"
1224
     title: "Top Up"
1155
   }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup["AppLayout"], null, {
1225
   }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup["AppLayout"], null, {
1156
     "default": (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
1226
     "default": (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
1157
-      return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Card, {
1227
+      return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_ConfirmDialog), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Card, {
1158
         "class": "surface-200"
1228
         "class": "surface-200"
1159
       }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createSlots)({
1229
       }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createSlots)({
1160
         title: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
1230
         title: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
1166
       }, [$setup.form.member ? {
1236
       }, [$setup.form.member ? {
1167
         name: "content",
1237
         name: "content",
1168
         fn: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
1238
         fn: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
1169
-          return [_hoisted_4, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("p", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.form.member.name), 1
1239
+          return [$setup.form.member.name ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("p", _hoisted_4, [_hoisted_5, _hoisted_6, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(" " + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.form.member.name), 1
1170
           /* TEXT */
1240
           /* TEXT */
1171
-          ), _hoisted_5, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("p", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.form.member.phone), 1
1241
+          )])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), $setup.form.member.phone ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("p", _hoisted_7, [_hoisted_8, _hoisted_9, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(" " + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.form.member.phone), 1
1172
           /* TEXT */
1242
           /* TEXT */
1173
-          ), _hoisted_6, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("p", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.form.member.platNumber), 1
1243
+          )])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), $setup.form.member.type ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("p", _hoisted_10, [_hoisted_11, _hoisted_12, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(" " + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.form.member.type), 1
1174
           /* TEXT */
1244
           /* TEXT */
1175
-          ), _hoisted_7, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("p", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.form.member.type), 1
1245
+          )])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), $setup.form.member.price ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("p", _hoisted_13, [_hoisted_14, _hoisted_15, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(" " + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.form.member.price), 1
1176
           /* TEXT */
1246
           /* TEXT */
1177
-          ), _hoisted_8, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("p", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.form.member.expDate), 1
1247
+          )])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), $setup.form.member.expDate ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("p", _hoisted_16, [_hoisted_17, _hoisted_18, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(" " + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.form.member.expDate), 1
1178
           /* TEXT */
1248
           /* TEXT */
1179
-          )];
1249
+          )])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true)];
1180
         })
1250
         })
1181
       } : undefined]), 1024
1251
       } : undefined]), 1024
1182
       /* DYNAMIC_SLOTS */
1252
       /* DYNAMIC_SLOTS */
1183
-      )])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_9, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_10, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Card, null, {
1253
+      )])]), (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_Card, null, {
1184
         title: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
1254
         title: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
1185
-          return [_hoisted_11];
1255
+          return [_hoisted_21];
1186
         }),
1256
         }),
1187
         content: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
1257
         content: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
1188
-          return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_12, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_13, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup["AppAutocompleteBasic"], {
1258
+          return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_22, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_23, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup["AppAutocompleteBasic"], {
1189
             empty: "",
1259
             empty: "",
1190
             label: "Member",
1260
             label: "Member",
1191
             field: "name",
1261
             field: "name",
1200
             onItemSelect: $setup.memberOnSelected
1270
             onItemSelect: $setup.memberOnSelected
1201
           }, {
1271
           }, {
1202
             item: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function (slotProps) {
1272
             item: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function (slotProps) {
1203
-              return [slotProps.item ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("div", _hoisted_14, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(slotProps.item.name), 1
1273
+              return [slotProps.item ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("div", _hoisted_24, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(slotProps.item.name), 1
1204
               /* TEXT */
1274
               /* TEXT */
1205
-              ), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", _hoisted_15, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(slotProps.item.phone), 1
1275
+              ), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", _hoisted_25, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(slotProps.item.phone), 1
1206
               /* TEXT */
1276
               /* TEXT */
1207
-              ), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", _hoisted_16, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(slotProps.item.type), 1
1277
+              ), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", _hoisted_26, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(slotProps.item.type), 1
1208
               /* TEXT */
1278
               /* TEXT */
1209
               )])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true)];
1279
               )])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true)];
1210
             }),
1280
             }),
1222
 
1292
 
1223
           }, 8
1293
           }, 8
1224
           /* PROPS */
1294
           /* PROPS */
1225
-          , ["modelValue", "error", "suggestions"])])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Divider, {
1226
-            type: "dashed"
1227
-          })];
1295
+          , ["modelValue", "error", "suggestions"])])])];
1296
+        }),
1297
+        footer: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
1298
+          return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_27, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Button, {
1299
+            label: "Topup",
1300
+            icon: "pi pi-check",
1301
+            "class": "p-button-outlined",
1302
+            disabled: $setup.form.processing,
1303
+            onClick: $setup.submit
1304
+          }, null, 8
1305
+          /* PROPS */
1306
+          , ["disabled"])])];
1228
         }),
1307
         }),
1229
         _: 1
1308
         _: 1
1230
         /* STABLE */
1309
         /* STABLE */

+ 31
- 8
public/js/resources_js_pages_topup_Index_vue.js Прегледај датотеку

504
       AppLayout: _layouts_AppLayout_vue__WEBPACK_IMPORTED_MODULE_5__["default"],
504
       AppLayout: _layouts_AppLayout_vue__WEBPACK_IMPORTED_MODULE_5__["default"],
505
       AppPagination: _components_AppPagination_vue__WEBPACK_IMPORTED_MODULE_6__["default"],
505
       AppPagination: _components_AppPagination_vue__WEBPACK_IMPORTED_MODULE_6__["default"],
506
       AppButton: _components_AppButton_vue__WEBPACK_IMPORTED_MODULE_7__["default"],
506
       AppButton: _components_AppButton_vue__WEBPACK_IMPORTED_MODULE_7__["default"],
507
-      TableHeader: _TableHeader__WEBPACK_IMPORTED_MODULE_8__["default"]
507
+      IndexTable: _TableHeader__WEBPACK_IMPORTED_MODULE_8__.IndexTable
508
     };
508
     };
509
     Object.defineProperty(__returned__, '__isScriptSetup', {
509
     Object.defineProperty(__returned__, '__isScriptSetup', {
510
       enumerable: false,
510
       enumerable: false,
1246
           , ["href"])])])];
1246
           , ["href"])])])];
1247
         }),
1247
         }),
1248
         "default": (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
1248
         "default": (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
1249
-          return [((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($setup.TableHeader, function (tableHeader) {
1249
+          return [((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($setup.IndexTable, function (indexTable) {
1250
             return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_Column, {
1250
             return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_Column, {
1251
-              field: tableHeader.field,
1252
-              header: tableHeader.header,
1253
-              key: tableHeader.field
1251
+              field: indexTable.field,
1252
+              header: indexTable.header,
1253
+              key: indexTable.field
1254
             }, null, 8
1254
             }, null, 8
1255
             /* PROPS */
1255
             /* PROPS */
1256
             , ["field", "header"]);
1256
             , ["field", "header"]);
1302
 "use strict";
1302
 "use strict";
1303
 __webpack_require__.r(__webpack_exports__);
1303
 __webpack_require__.r(__webpack_exports__);
1304
 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1304
 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1305
-/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1305
+/* harmony export */   "IndexTable": () => (/* binding */ IndexTable),
1306
+/* harmony export */   "TopUpsTable": () => (/* binding */ TopUpsTable)
1306
 /* harmony export */ });
1307
 /* harmony export */ });
1307
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
1308
+var IndexTable = [{
1308
   field: 'updatedAt',
1309
   field: 'updatedAt',
1309
   header: 'Diperbaharui'
1310
   header: 'Diperbaharui'
1310
 }, {
1311
 }, {
1325
 }, {
1326
 }, {
1326
   field: 'expDate',
1327
   field: 'expDate',
1327
   header: 'Berakhir'
1328
   header: 'Berakhir'
1328
-}]);
1329
+}];
1330
+var TopUpsTable = [{
1331
+  field: 'updatedAt',
1332
+  header: 'Diperbaharui'
1333
+}, {
1334
+  field: 'name',
1335
+  header: 'Nama User'
1336
+}, {
1337
+  field: 'phone',
1338
+  header: 'Nomor HP User'
1339
+}, {
1340
+  field: 'platNumber',
1341
+  header: 'Plat Kendaraan'
1342
+}, {
1343
+  field: 'type',
1344
+  header: 'Jenis Member'
1345
+}, {
1346
+  field: 'amount',
1347
+  header: 'Tarif Member'
1348
+}, {
1349
+  field: 'expDate',
1350
+  header: 'Berakhir'
1351
+}];
1329
 
1352
 
1330
 /***/ }),
1353
 /***/ }),
1331
 
1354
 

+ 1642
- 3
public/js/resources_js_pages_topup_Show_vue.js
Разлика између датотеке није приказан због своје велике величине
Прегледај датотеку


+ 26
- 3
public/js/resources_js_pages_topup_TableHeader_js.js Прегледај датотеку

9
 
9
 
10
 __webpack_require__.r(__webpack_exports__);
10
 __webpack_require__.r(__webpack_exports__);
11
 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
11
 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12
-/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
12
+/* harmony export */   "IndexTable": () => (/* binding */ IndexTable),
13
+/* harmony export */   "TopUpsTable": () => (/* binding */ TopUpsTable)
13
 /* harmony export */ });
14
 /* harmony export */ });
14
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{
15
+var IndexTable = [{
15
   field: 'updatedAt',
16
   field: 'updatedAt',
16
   header: 'Diperbaharui'
17
   header: 'Diperbaharui'
17
 }, {
18
 }, {
32
 }, {
33
 }, {
33
   field: 'expDate',
34
   field: 'expDate',
34
   header: 'Berakhir'
35
   header: 'Berakhir'
35
-}]);
36
+}];
37
+var TopUpsTable = [{
38
+  field: 'updatedAt',
39
+  header: 'Diperbaharui'
40
+}, {
41
+  field: 'name',
42
+  header: 'Nama User'
43
+}, {
44
+  field: 'phone',
45
+  header: 'Nomor HP User'
46
+}, {
47
+  field: 'platNumber',
48
+  header: 'Plat Kendaraan'
49
+}, {
50
+  field: 'type',
51
+  header: 'Jenis Member'
52
+}, {
53
+  field: 'amount',
54
+  header: 'Tarif Member'
55
+}, {
56
+  field: 'expDate',
57
+  header: 'Berakhir'
58
+}];
36
 
59
 
37
 /***/ })
60
 /***/ })
38
 
61
 

+ 1
- 9
public/js/vue.js Прегледај датотеку

58127
 		"./resources/js/pages/topup/Create.vue",
58127
 		"./resources/js/pages/topup/Create.vue",
58128
 		"resources_js_pages_topup_Create_vue"
58128
 		"resources_js_pages_topup_Create_vue"
58129
 	],
58129
 	],
58130
-	"./topup/Edit": [
58131
-		"./resources/js/pages/topup/Edit.vue",
58132
-		"resources_js_pages_topup_Edit_vue"
58133
-	],
58134
-	"./topup/Edit.vue": [
58135
-		"./resources/js/pages/topup/Edit.vue",
58136
-		"resources_js_pages_topup_Edit_vue"
58137
-	],
58138
 	"./topup/Index": [
58130
 	"./topup/Index": [
58139
 		"./resources/js/pages/topup/Index.vue",
58131
 		"./resources/js/pages/topup/Index.vue",
58140
 		"resources_js_pages_topup_Index_vue"
58132
 		"resources_js_pages_topup_Index_vue"
58380
 /******/ 		// This function allow to reference async chunks
58372
 /******/ 		// This function allow to reference async chunks
58381
 /******/ 		__webpack_require__.u = (chunkId) => {
58373
 /******/ 		__webpack_require__.u = (chunkId) => {
58382
 /******/ 			// return url for filenames based on template
58374
 /******/ 			// 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":"66e7c99b236f0deb","resources_js_pages_expense_Index_vue":"f85b8a458475c32f","resources_js_pages_expense_Show_vue":"8aec315380095efc","resources_js_pages_expense_TableHeader_js":"eed3f0613f167cfd","resources_js_pages_home_Index_vue":"77d2cc7e0ffbf90e","resources_js_pages_member_Create_vue":"095d1e304d77aaa8","resources_js_pages_member_Edit_vue":"48baae4f4480f54d","resources_js_pages_member_Index_vue":"220ea5d5cd363228","resources_js_pages_member_TableHeader_js":"51dbf053f7ddd45c","resources_js_pages_topup_Create_vue":"5699ce5235a0af54","resources_js_pages_topup_Edit_vue":"258c3b0746574dc0","resources_js_pages_topup_Index_vue":"f3a415d3c1ec52df","resources_js_pages_topup_Show_vue":"cb35ad21e9ce163f","resources_js_pages_topup_TableHeader_js":"c0dc89df0e3b8b7d","resources_js_pages_typemember_Create_vue":"a79f5122dd4d955c","resources_js_pages_typemember_Edit_vue":"339a293819be91a7","resources_js_pages_typemember_Index_vue":"b6d16dc9b5f2b3b6","resources_js_pages_typemember_TableHeader_js":"ac1d31a59f8d464e","resources_js_pages_typevehicle_Create_vue":"913e399451308fbb","resources_js_pages_typevehicle_Edit_vue":"659302538c3304bb","resources_js_pages_typevehicle_Index_vue":"a5da2be987ea0ce5","resources_js_pages_typevehicle_TableHeader_js":"a40378918fbe74e1","resources_js_pages_user_Create_vue":"9407a7ca1e9268c7","resources_js_pages_user_Edit_vue":"68b60f3e274f7cd8","resources_js_pages_user_Index_vue":"f3269e9d78d4fe78","resources_js_pages_user_Show_vue":"e1c2622b8345f329","resources_js_pages_user_TableHeader_js":"0d87fd422fe40491"}[chunkId] + "";
58375
+/******/ 			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":"66e7c99b236f0deb","resources_js_pages_expense_Index_vue":"f85b8a458475c32f","resources_js_pages_expense_Show_vue":"8aec315380095efc","resources_js_pages_expense_TableHeader_js":"eed3f0613f167cfd","resources_js_pages_home_Index_vue":"77d2cc7e0ffbf90e","resources_js_pages_member_Create_vue":"9b0395de1134f447","resources_js_pages_member_Edit_vue":"48baae4f4480f54d","resources_js_pages_member_Index_vue":"220ea5d5cd363228","resources_js_pages_member_TableHeader_js":"51dbf053f7ddd45c","resources_js_pages_topup_Create_vue":"73efcea746438335","resources_js_pages_topup_Index_vue":"4213bf188c295a33","resources_js_pages_topup_Show_vue":"a8c55ac0b35fc72b","resources_js_pages_topup_TableHeader_js":"601b7c0a855ce64e","resources_js_pages_typemember_Create_vue":"a79f5122dd4d955c","resources_js_pages_typemember_Edit_vue":"339a293819be91a7","resources_js_pages_typemember_Index_vue":"b6d16dc9b5f2b3b6","resources_js_pages_typemember_TableHeader_js":"ac1d31a59f8d464e","resources_js_pages_typevehicle_Create_vue":"913e399451308fbb","resources_js_pages_typevehicle_Edit_vue":"659302538c3304bb","resources_js_pages_typevehicle_Index_vue":"a5da2be987ea0ce5","resources_js_pages_typevehicle_TableHeader_js":"a40378918fbe74e1","resources_js_pages_user_Create_vue":"9407a7ca1e9268c7","resources_js_pages_user_Edit_vue":"68b60f3e274f7cd8","resources_js_pages_user_Index_vue":"f3269e9d78d4fe78","resources_js_pages_user_Show_vue":"e1c2622b8345f329","resources_js_pages_user_TableHeader_js":"0d87fd422fe40491"}[chunkId] + "";
58384
 /******/ 		};
58376
 /******/ 		};
58385
 /******/ 	})();
58377
 /******/ 	})();
58386
 /******/ 	
58378
 /******/ 	

+ 2
- 2
resources/js/pages/member/Create.vue Прегледај датотеку

130
 
130
 
131
 const submit = () => {
131
 const submit = () => {
132
   confirm.require({
132
   confirm.require({
133
-    message: `Tagihan dikenakan untuk member baru sebesar ${props.typeMember.price}`,
133
+    message: `Dikenakan tagihan untuk member baru sebesar ${props.typeMember.price}`,
134
     header: 'Tagihan',
134
     header: 'Tagihan',
135
     acceptLabel: 'Bayar dan simpan',
135
     acceptLabel: 'Bayar dan simpan',
136
     rejectLabel: 'Batalkan',
136
     rejectLabel: 'Batalkan',
138
       formSent()
138
       formSent()
139
     },
139
     },
140
     reject: () => {
140
     reject: () => {
141
-      console.info('transaksi digagalkan')
141
+      console.info('transaksi dibatalkan')
142
     },
142
     },
143
   })
143
   })
144
 }
144
 }

+ 70
- 14
resources/js/pages/topup/Create.vue Прегледај датотеку

2
 import { computed, watch } from 'vue'
2
 import { computed, watch } from 'vue'
3
 import { Inertia } from '@inertiajs/inertia'
3
 import { Inertia } from '@inertiajs/inertia'
4
 import { Head, useForm, usePage } from '@inertiajs/inertia-vue3'
4
 import { Head, useForm, usePage } from '@inertiajs/inertia-vue3'
5
+import { useConfirm } from 'primevue/useconfirm'
5
 import AppAutocompleteBasic from '@/components/AppAutocompleteBasic.vue'
6
 import AppAutocompleteBasic from '@/components/AppAutocompleteBasic.vue'
6
 import AppLayout from '@/layouts/AppLayout.vue'
7
 import AppLayout from '@/layouts/AppLayout.vue'
7
 
8
 
37
   member: null,
38
   member: null,
38
 })
39
 })
39
 
40
 
41
+const confirm = useConfirm()
42
+
43
+const formSent = () => {
44
+  form
45
+    .transform((data) => ({
46
+      member_id: data.member.id,
47
+    }))
48
+    .post(route('top-ups.store'), { onSuccess: () => form.reset() })
49
+}
50
+
40
 const submit = () => {
51
 const submit = () => {
41
-  form.post(route('top-ups.store'), { onSuccess: () => form.reset() })
52
+  confirm.require({
53
+    message: `Dikenakan tagihan sebesar ${form.member.price}`,
54
+    header: 'Top Up',
55
+    acceptLabel: 'Bayar dan simpan',
56
+    rejectLabel: 'Batalkan',
57
+    accept: () => {
58
+      formSent()
59
+    },
60
+    reject: () => {
61
+      console.info('transaksi dibatalkan')
62
+    },
63
+  })
42
 }
64
 }
43
 </script>
65
 </script>
44
 
66
 
46
   <Head title="Top Up" />
68
   <Head title="Top Up" />
47
 
69
 
48
   <AppLayout>
70
   <AppLayout>
71
+    <ConfirmDialog></ConfirmDialog>
72
+
49
     <div class="grid">
73
     <div class="grid">
50
       <div class="col-12 md:col-8">
74
       <div class="col-12 md:col-8">
51
         <Card class="surface-200">
75
         <Card class="surface-200">
52
           <template #title>Detail Member</template>
76
           <template #title>Detail Member</template>
53
           <template v-if="form.member" #content>
77
           <template v-if="form.member" #content>
54
-            <h3 class="text-base font-bold mb-0">Nama</h3>
55
-            <p>{{ form.member.name }}</p>
78
+            <p v-if="form.member.name">
79
+              <span class="text-base font-bold"> Nama </span>
80
+
81
+              <br />
82
+
83
+              {{ form.member.name }}
84
+            </p>
85
+
86
+            <p v-if="form.member.phone">
87
+              <span class="text-base font-bold"> Nomor HP </span>
88
+
89
+              <br />
90
+
91
+              {{ form.member.phone }}
92
+            </p>
93
+
94
+            <p v-if="form.member.type">
95
+              <span class="text-base font-bold"> Jenis Member </span>
96
+
97
+              <br />
98
+
99
+              {{ form.member.type }}
100
+            </p>
101
+
102
+            <p v-if="form.member.price">
103
+              <span class="text-base font-bold"> Tarif Member </span>
56
 
104
 
57
-            <h3 class="text-base font-bold mb-0">Nomor HP</h3>
58
-            <p>{{ form.member.phone }}</p>
105
+              <br />
59
 
106
 
60
-            <h3 class="text-base font-bold mb-0">Plat Kendaraan</h3>
61
-            <p>
62
-              {{ form.member.platNumber }}
107
+              {{ form.member.price }}
63
             </p>
108
             </p>
64
 
109
 
65
-            <h3 class="text-base font-bold mb-0">Jenis Member</h3>
66
-            <p>{{ form.member.type }}</p>
110
+            <p v-if="form.member.expDate">
111
+              <span class="text-base font-bold"> Berakhir </span>
67
 
112
 
68
-            <h3 class="text-base font-bold mb-0">Berakhir</h3>
69
-            <p>{{ form.member.expDate }}</p>
113
+              <br />
114
+
115
+              {{ form.member.expDate }}
116
+            </p>
70
           </template>
117
           </template>
71
         </Card>
118
         </Card>
72
       </div>
119
       </div>
108
                 </AppAutocompleteBasic>
155
                 </AppAutocompleteBasic>
109
               </div>
156
               </div>
110
             </div>
157
             </div>
111
-
112
-            <Divider type="dashed" />
158
+          </template>
159
+          <template #footer>
160
+            <div class="flex flex-column md:flex-row justify-content-end">
161
+              <Button
162
+                label="Topup"
163
+                icon="pi pi-check"
164
+                class="p-button-outlined"
165
+                :disabled="form.processing"
166
+                @click="submit"
167
+              />
168
+            </div>
113
           </template>
169
           </template>
114
         </Card>
170
         </Card>
115
       </div>
171
       </div>

+ 0
- 0
resources/js/pages/topup/Edit.vue Прегледај датотеку


+ 5
- 5
resources/js/pages/topup/Index.vue Прегледај датотеку

8
 import AppPagination from '@/components/AppPagination.vue'
8
 import AppPagination from '@/components/AppPagination.vue'
9
 import AppButton from '@/components/AppButton.vue'
9
 import AppButton from '@/components/AppButton.vue'
10
 
10
 
11
-import TableHeader from './TableHeader'
11
+import { IndexTable } from './TableHeader'
12
 
12
 
13
 const props = defineProps({
13
 const props = defineProps({
14
   topUp: Object,
14
   topUp: Object,
117
       </template>
117
       </template>
118
 
118
 
119
       <Column
119
       <Column
120
-        v-for="tableHeader in TableHeader"
121
-        :field="tableHeader.field"
122
-        :header="tableHeader.header"
123
-        :key="tableHeader.field"
120
+        v-for="indexTable in IndexTable"
121
+        :field="indexTable.field"
122
+        :header="indexTable.header"
123
+        :key="indexTable.field"
124
       />
124
       />
125
 
125
 
126
       <Column>
126
       <Column>

+ 67
- 0
resources/js/pages/topup/Show.vue Прегледај датотеку

1
+<script setup>
2
+import { onMounted } from 'vue'
3
+import { Head } from '@inertiajs/inertia-vue3'
4
+import AppPagination from '@/components/AppPagination.vue'
5
+import AppLayout from '@/layouts/AppLayout.vue'
6
+
7
+import { TopUpsTable } from './TableHeader'
8
+
9
+const props = defineProps({
10
+  member: Object,
11
+  topUp: Object,
12
+})
13
+
14
+onMounted(() => {
15
+  console.info(props.member)
16
+  console.table(props.topUp)
17
+})
18
+</script>
19
+
20
+<template>
21
+  <Head title="Detail Top Up" />
22
+
23
+  <AppLayout>
24
+    <DataTable
25
+      responsive-layout="scroll"
26
+      column-resize-mode="expand"
27
+      :value="topUp.data"
28
+      :row-hover="true"
29
+      :striped-rows="true"
30
+    >
31
+      <template #header>
32
+        <h1 class="text-2xl font-bold">Detail Top Up</h1>
33
+
34
+        <div class="grid px-2">
35
+          <div class="col-auto mr-7">
36
+            <h2>
37
+              <span class="text-base"> <i class="pi pi-user" /> Nama</span>
38
+
39
+              <br />
40
+
41
+              <span class="text-lg">{{ member.name }}</span>
42
+            </h2>
43
+          </div>
44
+
45
+          <div class="col-auto">
46
+            <h2>
47
+              <span class="text-base"> <i class="pi pi-phone" /> Nomor HP </span>
48
+
49
+              <br />
50
+
51
+              <span class="text-lg">{{ member.phone }}</span>
52
+            </h2>
53
+          </div>
54
+        </div>
55
+      </template>
56
+
57
+      <Column
58
+        v-for="topUpsTable in TopUpsTable"
59
+        :field="topUpsTable.field"
60
+        :header="topUpsTable.header"
61
+        :key="topUpsTable.field"
62
+      />
63
+    </DataTable>
64
+
65
+    <AppPagination :links="topUp.links" />
66
+  </AppLayout>
67
+</template>

+ 11
- 1
resources/js/pages/topup/TableHeader.js Прегледај датотеку

1
-export default [
1
+export const IndexTable = [
2
   { field: 'updatedAt', header: 'Diperbaharui' },
2
   { field: 'updatedAt', header: 'Diperbaharui' },
3
   { field: 'name', header: 'Nama' },
3
   { field: 'name', header: 'Nama' },
4
   { field: 'phone', header: 'Nomor HP' },
4
   { field: 'phone', header: 'Nomor HP' },
7
   { field: 'amount', header: 'Tarif Member' },
7
   { field: 'amount', header: 'Tarif Member' },
8
   { field: 'expDate', header: 'Berakhir' },
8
   { field: 'expDate', header: 'Berakhir' },
9
 ]
9
 ]
10
+
11
+export const TopUpsTable = [
12
+  { field: 'updatedAt', header: 'Diperbaharui' },
13
+  { field: 'name', header: 'Nama User' },
14
+  { field: 'phone', header: 'Nomor HP User' },
15
+  { field: 'platNumber', header: 'Plat Kendaraan' },
16
+  { field: 'type', header: 'Jenis Member' },
17
+  { field: 'amount', header: 'Tarif Member' },
18
+  { field: 'expDate', header: 'Berakhir' },
19
+]