esoftplay-event 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/event/additional.tsx +1 -1
- package/event/additional_input.tsx +15 -0
- package/event/additional_new.tsx +565 -0
- package/event/artist.tsx +14 -34
- package/event/artist_detail.tsx +336 -239
- package/event/artist_detail_multi.tsx +266 -157
- package/event/artist_detailv2.tsx +129 -69
- package/event/artistv2.tsx +5 -13
- package/event/button.tsx +2 -2
- package/event/button_order_detail.tsx +20 -8
- package/event/capture.tsx +2 -0
- package/event/checkout.ts +135 -0
- package/event/countdown.tsx +13 -9
- package/event/countdown_base.tsx +88 -48
- package/event/countdown_event.tsx +3 -0
- package/event/countdown_timestamp.tsx +106 -0
- package/event/coupon.tsx +1 -1
- package/event/coupon_generate.tsx +35 -22
- package/event/detail.tsx +9 -15
- package/event/detail2.tsx +63 -61
- package/event/dialog_custom.tsx +67 -0
- package/event/exchange_ticket_list.tsx +23 -14
- package/event/exchange_ticket_result.tsx +1 -1
- package/event/firebase_socket.ts +14 -12
- package/event/htmltext.tsx +40 -28
- package/event/index.tsx +8 -2
- package/event/label_input.tsx +2 -2
- package/event/layout.tsx +312 -0
- package/event/loading_page.tsx +62 -82
- package/event/message.tsx +2 -2
- package/event/order_detail.tsx +408 -477
- package/event/order_detail_addons.tsx +60 -0
- package/event/order_detail_addons_booked.tsx +61 -0
- package/event/order_detail_coupon.tsx +66 -0
- package/event/order_detail_instruction.tsx +96 -0
- package/event/order_detail_payment.tsx +1 -1
- package/event/order_detail_reschedule.tsx +109 -0
- package/event/order_detail_return.tsx +231 -0
- package/event/order_detail_review.tsx +174 -0
- package/event/order_detail_share.tsx +304 -0
- package/event/order_detail_tnc.tsx +76 -0
- package/event/order_detail_upgrade.tsx +140 -90
- package/event/order_detail_upgrade_payment.tsx +120 -38
- package/event/order_detail_visitor.tsx +21 -10
- package/event/order_detail_waiting.tsx +3 -3
- package/event/order_history.tsx +1 -1
- package/event/order_item.tsx +1 -1
- package/event/order_lottery.tsx +1 -1
- package/event/order_reschedule.tsx +29 -16
- package/event/order_share_to.tsx +14 -0
- package/event/order_waiting.tsx +1 -1
- package/event/payment_subscribe.tsx +18 -0
- package/event/point_events.tsx +35 -0
- package/event/point_redemption.tsx +101 -0
- package/event/point_redemption_exchange.tsx +60 -0
- package/event/point_redemption_input.tsx +56 -0
- package/event/point_redemption_success.tsx +50 -0
- package/event/point_summary.tsx +48 -0
- package/event/popup.tsx +4 -4
- package/event/queue.tsx +111 -0
- package/event/queue_pricing.tsx +17 -6
- package/event/review_add.tsx +2 -2
- package/event/scan_item.tsx +1 -1
- package/event/schedule.tsx +33 -30
- package/event/schedule2.tsx +86 -0
- package/event/seat.tsx +135 -374
- package/event/seat_map.tsx +8 -8
- package/event/seat_map_new.tsx +211 -38
- package/event/step.tsx +1 -1
- package/event/test.tsx +8 -8
- package/event/ticket.tsx +326 -0
- package/event/ticket_list.tsx +316 -258
- package/event/ticket_list2.tsx +349 -224
- package/event/ticket_list_item.tsx +61 -0
- package/event/ticket_list_new.tsx +710 -0
- package/event/tms_add_result.tsx +10 -5
- package/event/tms_check_ticket_result.tsx +16 -7
- package/event/tms_dashboard.tsx +87 -12
- package/event/tms_gate.tsx +32 -15
- package/event/tms_home.tsx +178 -92
- package/event/tms_idcard.tsx +43 -26
- package/event/tms_in.tsx +2 -3
- package/event/tms_in_failed.tsx +1 -1
- package/event/tms_in_hall.tsx +4 -1
- package/event/tms_in_hall_failed.tsx +36 -16
- package/event/tms_in_log.tsx +9 -11
- package/event/tms_in_success.tsx +13 -8
- package/event/tms_log.tsx +16 -17
- package/event/tms_out_hall_failed.tsx +1 -1
- package/event/tms_out_temporary.tsx +3 -4
- package/event/token_order.tsx +103 -0
- package/event/token_payment.tsx +79 -0
- package/event/visitor_index.tsx +60 -49
- package/event/visitor_input.tsx +336 -54
- package/event/visitor_inputv2.tsx +173 -88
- package/event/voucher.tsx +1 -1
- package/id.json +76 -4
- package/package.json +1 -1
- package/event/secure_page.debug.tsx +0 -34
- package/event/secure_page.live.tsx +0 -35
package/event/ticket_list2.tsx
CHANGED
|
@@ -20,18 +20,16 @@ import { useEffect, useRef } from 'react';
|
|
|
20
20
|
|
|
21
21
|
import { EventAlert } from 'esoftplay/cache/event/alert/import';
|
|
22
22
|
import { EventConfigProperty } from 'esoftplay/cache/event/config/import';
|
|
23
|
-
import {
|
|
24
|
-
import { EventCountdown_base } from 'esoftplay/cache/event/countdown_base/import';
|
|
25
|
-
import { EventFirebase_socket, EventFirebase_socketProperty } from 'esoftplay/cache/event/firebase_socket/import';
|
|
23
|
+
import { EventCountdown_event } from 'esoftplay/cache/event/countdown_event/import';
|
|
26
24
|
import { EventHtmltext } from 'esoftplay/cache/event/htmltext/import';
|
|
27
25
|
import { EventLoading_pageProperty } from 'esoftplay/cache/event/loading_page/import';
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
26
|
+
import { EventOrder_itemProperty } from 'esoftplay/cache/event/order_item/import';
|
|
27
|
+
import { EventQueue, EventQueueProperty } from 'esoftplay/cache/event/queue/import';
|
|
30
28
|
import { UseCondition } from 'esoftplay/cache/use/condition/import';
|
|
31
29
|
import { UseTasks } from 'esoftplay/cache/use/tasks/import';
|
|
32
30
|
import moment from 'esoftplay/moment';
|
|
33
31
|
import React from 'react';
|
|
34
|
-
import { Pressable, RefreshControl, ScrollView, Text, TouchableOpacity, View } from 'react-native';
|
|
32
|
+
import { ActivityIndicator, Pressable, RefreshControl, ScrollView, Text, TouchableOpacity, View } from 'react-native';
|
|
35
33
|
|
|
36
34
|
|
|
37
35
|
export interface EventTicket_list2Args {
|
|
@@ -55,6 +53,7 @@ type Result = {
|
|
|
55
53
|
"status": string,
|
|
56
54
|
"quota_checkout": string,
|
|
57
55
|
"show_price": string,
|
|
56
|
+
"countdown_booking": string,
|
|
58
57
|
"config_queue": {
|
|
59
58
|
"limit": number,
|
|
60
59
|
"time": number,
|
|
@@ -125,30 +124,28 @@ type Result = {
|
|
|
125
124
|
"more_url": string,
|
|
126
125
|
},
|
|
127
126
|
"url_share": string,
|
|
127
|
+
"url_price_config": string
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
const taskSeat = UseTasks()
|
|
131
131
|
const taskAdditional = UseTasks()
|
|
132
132
|
|
|
133
133
|
export default function m(props: EventTicket_list2Props): any {
|
|
134
|
-
const checkCounter = useRef<number>(0)
|
|
135
|
-
let refTimeout = useRef<any>()
|
|
136
|
-
const { doneQueue, isInPricingQueueConfig, updateQueueExp } = EventFirebase_socket();
|
|
137
|
-
|
|
138
134
|
const [pendingData] = EventLoading_pageProperty.state().useState()
|
|
139
135
|
|
|
140
136
|
const { url, is_multiprice, fee_platform, subscribed, show_fee_percentage }: any = useRef(LibNavigation.getArgsAll(props)).current
|
|
141
137
|
|
|
142
138
|
const [deeplinkParams] = UseDeeplinkProperty.params.useState()
|
|
143
|
-
|
|
139
|
+
|
|
144
140
|
const [unAvailableResult, setUnavailableResult] = useLazyState<any>()
|
|
145
141
|
const [, setHasAdditionGlobal, getHasAdditionGlobal] = useLazyState<any>()
|
|
146
|
-
const [availableResult, setAvailableResult, getAvailableResult] = useSafeState<
|
|
142
|
+
const [availableResult, setAvailableResult, getAvailableResult] = useSafeState<any>()
|
|
147
143
|
const [, setDataPostBooking, getDataPostBooking] = useLazyState<any>([])
|
|
148
144
|
const [dataAddition, setDataAddition] = useSafeState<any>([])
|
|
149
145
|
const [isPass, setIsPass] = useSafeState(true)
|
|
150
146
|
const [showAll, setShowAll] = useSafeState<any>({});
|
|
151
147
|
const [urlPayment, setUrlPayment] = useLazyState<any>()
|
|
148
|
+
const [loading, setLoading] = useSafeState<boolean>(false)
|
|
152
149
|
|
|
153
150
|
let dataEvent: any = {
|
|
154
151
|
event_id: availableResult?.id,
|
|
@@ -254,45 +251,70 @@ export default function m(props: EventTicket_list2Props): any {
|
|
|
254
251
|
dataEvent.addition = dataAddition
|
|
255
252
|
}
|
|
256
253
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
254
|
+
const selectedPriceIds = getDataPostBooking().filter((x: any) => x.selected == 1).map((x: any) => x.price_id)
|
|
255
|
+
|
|
256
|
+
curlPriceConfig(selectedPriceIds, (filteredFee) => {
|
|
257
|
+
const editedDataTicket = getDataPostBooking().map((item: any) => {
|
|
258
|
+
const priceId = item.price_id;
|
|
259
|
+
if (filteredFee?.[priceId]) {
|
|
260
|
+
return {
|
|
261
|
+
...item,
|
|
262
|
+
...filteredFee?.[priceId]
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
return item;
|
|
266
|
+
})
|
|
267
|
+
|
|
268
|
+
// esp.log({
|
|
269
|
+
// order_type: EventConfigProperty?.state()?.get()?.order_type?.ticket,
|
|
270
|
+
// dataEvent: dataEvent,
|
|
271
|
+
// dataTicket: editedDataTicket.filter((x: any) => x.selected == 1),
|
|
272
|
+
// subscribed: subscribed,
|
|
273
|
+
// url_payment: urlPayment,
|
|
274
|
+
// show_fee_percentage
|
|
275
|
+
// });
|
|
276
|
+
|
|
277
|
+
LibNavigation.navigate('payment/ticket_multi', {
|
|
278
|
+
order_type: EventConfigProperty?.state()?.get()?.order_type?.ticket,
|
|
279
|
+
dataEvent: dataEvent,
|
|
280
|
+
dataTicket: editedDataTicket?.filter((item: any) => item.selected == 1),
|
|
281
|
+
subscribed: subscribed,
|
|
282
|
+
url_payment: urlPayment,
|
|
283
|
+
show_fee_percentage
|
|
284
|
+
})
|
|
265
285
|
})
|
|
286
|
+
|
|
266
287
|
})
|
|
267
288
|
|
|
289
|
+
function curlPriceConfig(price_ids: string[], onDone: (data: any) => void) {
|
|
290
|
+
setLoading(true)
|
|
291
|
+
if (getAvailableResult()?.url_price_config) {
|
|
292
|
+
new LibCurl(getAvailableResult()?.url_price_config, null, (res, msg) => {
|
|
293
|
+
setLoading(false)
|
|
294
|
+
let filteredFee: any = {}
|
|
295
|
+
if (res) {
|
|
296
|
+
filteredFee = Object.fromEntries(
|
|
297
|
+
price_ids.flatMap(k => res[k] ? [[k, res[k]]] : [])
|
|
298
|
+
)
|
|
299
|
+
}
|
|
300
|
+
onDone(filteredFee)
|
|
301
|
+
}, (err) => {
|
|
302
|
+
setLoading(false)
|
|
303
|
+
LibToastProperty.show(err?.message)
|
|
304
|
+
})
|
|
305
|
+
} else {
|
|
306
|
+
setLoading(false)
|
|
307
|
+
onDone({})
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
|
|
268
311
|
useEffect(() => {
|
|
269
312
|
EventConfigProperty.curlConfig('v2/config_order_type')
|
|
270
|
-
const { event_id } = EventQueue_pricingProperty.state().get()
|
|
271
313
|
loadData()
|
|
272
|
-
if (isInPricingQueueConfig(event_id))
|
|
273
|
-
EventCountdownProperty.countdownTime.set(moment().add(EventFirebase_socketProperty.eventQueueConfig.get(event_id).time, 'seconds').localeFormat('YYYY-MM-DD HH:mm:ss'))
|
|
274
|
-
getCheckCounter()
|
|
275
|
-
return () => {
|
|
276
|
-
clearTimeout(refTimeout.current)
|
|
277
|
-
EventCountdownProperty.releaseQueue.trigger()
|
|
278
|
-
}
|
|
279
314
|
}, [])
|
|
280
315
|
|
|
281
|
-
function getCheckCounter() {
|
|
282
|
-
clearTimeout(refTimeout.current)
|
|
283
|
-
const { pathQueue, event_id, key } = EventQueue_pricingProperty.state().get()
|
|
284
|
-
if (event_id && isInPricingQueueConfig(event_id)) {
|
|
285
|
-
updateQueueExp(pathQueue, event_id)
|
|
286
|
-
checkCounter.current++
|
|
287
|
-
refTimeout.current = setTimeout(() => {
|
|
288
|
-
getCheckCounter()
|
|
289
|
-
}, 6000);
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
|
|
293
316
|
function loadData() {
|
|
294
317
|
new LibCurl(url, null, (res, msg) => {
|
|
295
|
-
esp.log(res, url);
|
|
296
318
|
const availablePriceType = LibObject.update(res, (arr: any[]) => arr.filter((x) => x.status != 0))('price_type')
|
|
297
319
|
const unAvailablePriceType = LibObject.update(res, (arr: any[]) => arr.filter((x) => x.status == 0))('price_type')
|
|
298
320
|
|
|
@@ -301,10 +323,10 @@ export default function m(props: EventTicket_list2Props): any {
|
|
|
301
323
|
setUrlPayment(res?.url_payment)
|
|
302
324
|
setHasAdditionGlobal(res?.has_addition_global)
|
|
303
325
|
|
|
304
|
-
if (res.form_allotment == 1) {
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
}
|
|
326
|
+
// if (res.form_allotment == 1) {
|
|
327
|
+
// releaseQueue()
|
|
328
|
+
// LibNavigation.push('event/queue_out', { event_id: res.id, notes: res.form_allotment_text })
|
|
329
|
+
// }
|
|
308
330
|
|
|
309
331
|
}, (error) => {
|
|
310
332
|
LibDialog.warningConfirm(esp.lang("event/ticket_list", "warn"), error?.message, "Ok", () => {
|
|
@@ -313,15 +335,15 @@ export default function m(props: EventTicket_list2Props): any {
|
|
|
313
335
|
}, 1)
|
|
314
336
|
}
|
|
315
337
|
|
|
316
|
-
function releaseQueue() {
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
}
|
|
338
|
+
// function releaseQueue() {
|
|
339
|
+
// const { pathQueue, event_id, key } = EventQueue_pricingProperty.state().get()
|
|
340
|
+
// if (event_id && isInPricingQueueConfig(event_id)) {
|
|
341
|
+
// doneQueue(pathQueue, event_id, key, () => { })
|
|
342
|
+
// EventQueue_pricingProperty.state().reset()
|
|
343
|
+
// setIsPass(false)
|
|
344
|
+
// EventCountdownProperty.releaseQueue.trigger()
|
|
345
|
+
// }
|
|
346
|
+
// }
|
|
325
347
|
|
|
326
348
|
function onRefresh() {
|
|
327
349
|
loadData()
|
|
@@ -343,6 +365,8 @@ export default function m(props: EventTicket_list2Props): any {
|
|
|
343
365
|
image_map: priceType?.image_map,
|
|
344
366
|
use_seat: priceType?.use_seat,
|
|
345
367
|
adjacent_seats: priceType?.config?.seat_autopick,
|
|
368
|
+
fee_amount: priceType?.fee_amount,
|
|
369
|
+
fee_type: priceType?.fee_type,
|
|
346
370
|
}))
|
|
347
371
|
|
|
348
372
|
newResult = newResult.concat(filteredList);
|
|
@@ -399,6 +423,12 @@ export default function m(props: EventTicket_list2Props): any {
|
|
|
399
423
|
let colorBackground = item.status != 1 ? LibStyle.colorLightGrey : itemC.status != 1 ? LibStyle.colorLightGrey : colorDefault
|
|
400
424
|
let textOpacity = /* item.status == 1 ? 1 : */itemC?.status == 1 ? 1 : 0.3
|
|
401
425
|
|
|
426
|
+
let showCountDown = getAvailableResult()?.countdown_booking == "1" && itemC?.status == 1 && item?.status == 1 && item?.date_start != "0000-00-00 00:00:00" && item?.date_end != "0000-00-00 00:00:00" && moment(item?.date_end).format("YYYY-MM-DD HH:mm:ss") >= moment().format("YYYY-MM-DD HH:mm:ss")
|
|
427
|
+
let dateShowed = item?.price_date == 1 ?
|
|
428
|
+
moment(item?.date_end).format("YYYY-MM-DD HH:mm:ss") > moment(itemC?.ondate).format("YYYY-MM-DD HH:mm:ss") ? moment(itemC?.ondate).add(1, "days").format("YYYY-MM-DD HH:mm:ss") : item?.date_end
|
|
429
|
+
: item?.date_end
|
|
430
|
+
|
|
431
|
+
|
|
402
432
|
return (
|
|
403
433
|
<TouchableOpacity key={iC} onPress={() => {
|
|
404
434
|
let msg = ""
|
|
@@ -463,11 +493,22 @@ export default function m(props: EventTicket_list2Props): any {
|
|
|
463
493
|
</View>
|
|
464
494
|
</View>
|
|
465
495
|
}
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
496
|
+
{
|
|
497
|
+
showCountDown ?
|
|
498
|
+
<Text allowFontScaling={false} style={applyStyle({ opacity: textOpacity, fontFamily: "Arial", fontSize: 12, fontWeight: "bold", fontStyle: "normal", letterSpacing: 0, color: _selectedTicket ? "#3ea4dc" : '#999' })}>{LibUtils.moment(itemC?.ondate).localeFormat('dddd, MMMM YYYY')}</Text>
|
|
499
|
+
:
|
|
500
|
+
<>
|
|
501
|
+
<Text allowFontScaling={false} style={applyStyle({ opacity: textOpacity, fontFamily: "Arial", fontSize: 14, fontWeight: "bold", fontStyle: "normal", letterSpacing: 0, color: _selectedTicket ? "#3ea4dc" : '#999' })}>{LibUtils.moment(itemC.ondate).localeFormat('dddd')}</Text>
|
|
502
|
+
<View style={applyStyle({ flexDirection: 'row' })}>
|
|
503
|
+
<Text allowFontScaling={false} style={applyStyle({ opacity: textOpacity, fontFamily: "Arial", fontSize: 12, fontWeight: "bold", fontStyle: "normal", letterSpacing: 0, color: _selectedTicket ? "#3ea4dc" : '#999' })}>{LibUtils.moment(itemC.ondate).localeFormat('MMMM')}</Text>
|
|
504
|
+
<Text allowFontScaling={false} style={applyStyle({ opacity: textOpacity, marginLeft: 7, fontFamily: "Arial", fontSize: 12, fontWeight: "bold", fontStyle: "normal", letterSpacing: 0, color: _selectedTicket ? "#3ea4dc" : '#999' })}>{LibUtils.moment(itemC.ondate).localeFormat('YYYY')}</Text>
|
|
505
|
+
</View>
|
|
506
|
+
</>
|
|
507
|
+
}
|
|
508
|
+
{
|
|
509
|
+
showCountDown &&
|
|
510
|
+
<EventCountdown_event date={dateShowed} containerStyle={{ marginVertical: -5 }} />
|
|
511
|
+
}
|
|
471
512
|
</View>
|
|
472
513
|
</View>
|
|
473
514
|
:
|
|
@@ -501,18 +542,45 @@ export default function m(props: EventTicket_list2Props): any {
|
|
|
501
542
|
(ticketWithDate || ticketSpecial) && itemC.selected == 1 &&
|
|
502
543
|
<View style={applyStyle({ marginTop: 4, flexDirection: 'row', marginLeft: 8, alignContent: 'center', alignItems: 'center' })}>
|
|
503
544
|
<Pressable hitSlop={{ top: 15, left: 15, right: 15, bottom: 15 }} testID='minus_btn' onPress={() => {
|
|
504
|
-
|
|
545
|
+
|
|
505
546
|
let qty = 1
|
|
506
|
-
|
|
507
|
-
|
|
547
|
+
|
|
548
|
+
if (Number(itemC.qty) - 1 <= 0) {
|
|
549
|
+
// set 0 & unselect tiket
|
|
550
|
+
qty = 0
|
|
551
|
+
|
|
552
|
+
const data = new LibObject(getAvailableResult())
|
|
553
|
+
.update((itemList) => {
|
|
554
|
+
itemList.selected = 0 // langsung unselect
|
|
555
|
+
itemList.qty = 0
|
|
556
|
+
itemList.adjacent_seats = item.config?.seat_autopick
|
|
557
|
+
itemList.use_seat = item.use_seat
|
|
558
|
+
return itemList
|
|
559
|
+
})('price_type', i, 'list', iC)
|
|
560
|
+
.update((priceTypeItem) => {
|
|
561
|
+
return ({
|
|
562
|
+
...priceTypeItem,
|
|
563
|
+
selected: priceTypeItem.list.some((item: any) => item.selected == 1) ? 1 : 0
|
|
564
|
+
})
|
|
565
|
+
})('price_type', i)
|
|
566
|
+
.value()
|
|
567
|
+
|
|
568
|
+
setAvailableResult(data)
|
|
569
|
+
|
|
508
570
|
} else {
|
|
509
|
-
|
|
510
|
-
|
|
571
|
+
// patuhi qty_min
|
|
572
|
+
if (itemC.qty <= item.qty_min) {
|
|
573
|
+
qty = Number(item.qty_min)
|
|
574
|
+
} else {
|
|
575
|
+
qty = Number(itemC.qty) - 1
|
|
576
|
+
}
|
|
511
577
|
|
|
512
|
-
|
|
578
|
+
// set qty baru
|
|
579
|
+
setAvailableResult(LibObject.set(getAvailableResult(), qty)('price_type', i, 'list', iC, 'qty'))
|
|
580
|
+
}
|
|
513
581
|
|
|
514
582
|
}}>
|
|
515
|
-
<View style={applyStyle({ padding: 1, borderRadius: 6, backgroundColor: "#ecf0f1", alignContent: 'center', alignItems: 'center' })}>
|
|
583
|
+
<View style={applyStyle({ padding: 1, borderRadius: 6, backgroundColor: "#ecf0f1", alignContent: 'center', alignItems: 'center', justifyContent: 'center' })}>
|
|
516
584
|
<LibIcon name="minus" color="#e74c3c" />
|
|
517
585
|
</View>
|
|
518
586
|
</Pressable>
|
|
@@ -529,7 +597,7 @@ export default function m(props: EventTicket_list2Props): any {
|
|
|
529
597
|
}
|
|
530
598
|
setAvailableResult(LibObject.set(getAvailableResult(), qty)('price_type', i, 'list', iC, 'qty'))
|
|
531
599
|
}}>
|
|
532
|
-
<View style={applyStyle({ padding: 1, borderRadius: 6, backgroundColor: "#ecf0f1", alignContent: 'center', alignItems: 'center' })}>
|
|
600
|
+
<View style={applyStyle({ padding: 1, borderRadius: 6, backgroundColor: "#ecf0f1", alignContent: 'center', alignItems: 'center', justifyContent: 'center' })}>
|
|
533
601
|
<LibIcon name="plus" color="#16a085" />
|
|
534
602
|
</View>
|
|
535
603
|
</Pressable>
|
|
@@ -537,6 +605,45 @@ export default function m(props: EventTicket_list2Props): any {
|
|
|
537
605
|
}
|
|
538
606
|
</View>
|
|
539
607
|
|
|
608
|
+
{
|
|
609
|
+
ticketWithDate && itemC.schedule?.artist?.length > 0 &&
|
|
610
|
+
<TouchableOpacity onPress={() => {
|
|
611
|
+
if (item.status == 1 && itemC.status == 1) {
|
|
612
|
+
let itemTicket = {
|
|
613
|
+
...item
|
|
614
|
+
}
|
|
615
|
+
let replaceList = LibObject.set(itemTicket, itemC)('list')
|
|
616
|
+
// ini jika dia gajadi beli dari halaman schedule.
|
|
617
|
+
// setSelectedTicket(replaceList)
|
|
618
|
+
// setQtyGlobal(itemT)
|
|
619
|
+
// releaseQueue()
|
|
620
|
+
// ini untuk dikirim ke halaman schedule
|
|
621
|
+
let dataPost: any = {
|
|
622
|
+
event_id: availableResult?.id,
|
|
623
|
+
event_title: availableResult?.title,
|
|
624
|
+
charge_payment: availableResult?.charge_payment,
|
|
625
|
+
charge_payment_type: availableResult?.charge_payment_type,
|
|
626
|
+
images: availableResult?.images,
|
|
627
|
+
selected_ticket: replaceList,
|
|
628
|
+
qty: itemC.hasOwnProperty("qty") ? itemC?.qty : 1,
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
LibNavigation.navigate('event/schedule', {
|
|
632
|
+
schedule: itemC.schedule,
|
|
633
|
+
order_type: EventConfigProperty?.state()?.get()?.order_type?.ticket,
|
|
634
|
+
tax: item?.tax,
|
|
635
|
+
dataBookingEvent: dataPost,
|
|
636
|
+
is_multiprice: 1
|
|
637
|
+
})
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
}} activeOpacity={itemC.status == 1 ? 0 : 1} style={applyStyle({ padding: 5, opacity: 1 })} hitSlop={{ top: 15, left: 15, right: 15, bottom: 15 }} >
|
|
642
|
+
<LibIcon name="information-outline" size={18} color={"#434343"} style={{ opacity: textOpacity }} />
|
|
643
|
+
</TouchableOpacity>
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
|
|
540
647
|
</View>
|
|
541
648
|
</TouchableOpacity>
|
|
542
649
|
)
|
|
@@ -553,36 +660,41 @@ export default function m(props: EventTicket_list2Props): any {
|
|
|
553
660
|
}));
|
|
554
661
|
};
|
|
555
662
|
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
<View
|
|
567
|
-
<View style={{
|
|
568
|
-
|
|
569
|
-
<View style={{
|
|
570
|
-
<View style={{ backgroundColor: '#fff', height:
|
|
571
|
-
<View style={{ width: '
|
|
572
|
-
<View style={{ backgroundColor: '#fff', height: 20, width: '40%' }} />
|
|
573
|
-
<View style={{ backgroundColor: '#fff', marginTop: 7, height: 14, width: '70%' }} />
|
|
574
|
-
</View>
|
|
663
|
+
if (!availableResult) {
|
|
664
|
+
return (
|
|
665
|
+
<View style={{ flex: 1, backgroundColor: '#fff' }}>
|
|
666
|
+
<EventHeader title={esp.lang("event/ticket_list", "buy_ticket")} subtitle={esp.lang("event/ticket_list", "choose_date")} />
|
|
667
|
+
<LibSkeleton>
|
|
668
|
+
{
|
|
669
|
+
listLength.map((item: any, i: number) => {
|
|
670
|
+
return (
|
|
671
|
+
<View key={i}>
|
|
672
|
+
<View style={{ height: 30, width: '100%', backgroundColor: '#fff' }} />
|
|
673
|
+
<View style={{ padding: 10, width: '100%', flexDirection: 'row', justifyContent: 'space-between', alignContent: 'center', alignItems: 'center' }}>
|
|
674
|
+
<View style={{ flexDirection: 'row' }}>
|
|
675
|
+
<View style={{ backgroundColor: '#fff', height: 42, width: 42, borderRadius: 3, marginRight: 10 }} />
|
|
676
|
+
<View style={{ width: '60%' }}>
|
|
677
|
+
<View style={{ backgroundColor: '#fff', height: 20, width: '40%' }} />
|
|
678
|
+
<View style={{ backgroundColor: '#fff', marginTop: 7, height: 14, width: '70%' }} />
|
|
575
679
|
</View>
|
|
576
|
-
<View style={{ backgroundColor: '#fff', height: 20, width: '10%' }} />
|
|
577
680
|
</View>
|
|
681
|
+
<View style={{ backgroundColor: '#fff', height: 20, width: '10%' }} />
|
|
578
682
|
</View>
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
683
|
+
</View>
|
|
684
|
+
)
|
|
685
|
+
})
|
|
686
|
+
}
|
|
687
|
+
</LibSkeleton>
|
|
688
|
+
</View>
|
|
689
|
+
)
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
return (
|
|
693
|
+
<EventQueue event_id={Number(availableResult?.id)} >
|
|
694
|
+
<View style={{ flex: 1, backgroundColor: '#fff' }}>
|
|
695
|
+
{/* <LibFocus onFocus={onRefresh} /> */}
|
|
696
|
+
<EventHeader title={esp.lang("event/ticket_list", "buy_ticket")} subtitle={esp.lang("event/ticket_list", "choose_date")} />
|
|
697
|
+
{/* {
|
|
586
698
|
Object.values(pendingData).filter((item: any) => item?.order_type == "ticket").length > 0 &&
|
|
587
699
|
<EventPending_trx
|
|
588
700
|
onPress={() => {
|
|
@@ -594,149 +706,163 @@ export default function m(props: EventTicket_list2Props): any {
|
|
|
594
706
|
title={esp.lang("event/ticket_list", "pending", String(Object.values(pendingData).filter((item: any) => item?.order_type == "ticket").length))}
|
|
595
707
|
/>
|
|
596
708
|
} */}
|
|
709
|
+
|
|
710
|
+
<EventQueueProperty.QueueCountdown
|
|
711
|
+
onExpired={() => {
|
|
712
|
+
LibNavigation.back()
|
|
713
|
+
}}
|
|
714
|
+
/>
|
|
715
|
+
|
|
716
|
+
<ScrollView refreshControl={<RefreshControl refreshing={false} onRefresh={onRefresh} />}>
|
|
717
|
+
<UseCondition if={is_multiprice == 1} >
|
|
718
|
+
<EventAlert
|
|
719
|
+
color={LibStyle.colorPrimary}
|
|
720
|
+
msg={esp.lang("event/ticket_list2", "u_can_choose_multiple")}
|
|
721
|
+
style={{ marginHorizontal: 15 }}
|
|
722
|
+
useIcon
|
|
723
|
+
/>
|
|
724
|
+
</UseCondition>
|
|
725
|
+
{
|
|
726
|
+
availableResult?.image_map != "" &&
|
|
727
|
+
<TouchableOpacity onPress={() => {
|
|
728
|
+
LibNavigation.navigate('lib/gallery', { image: availableResult?.image_map })
|
|
729
|
+
}} style={{ marginBottom: 10, marginTop: 20 }}>
|
|
730
|
+
<LibPicture source={{ uri: availableResult?.image_map }} style={applyStyle({ alignSelf: 'center', height: LibStyle.width * 0.5, width: LibStyle.width })} resizeMode="contain" />
|
|
731
|
+
</TouchableOpacity>
|
|
732
|
+
}
|
|
733
|
+
<View style={{ flex: 1 }}>
|
|
597
734
|
{
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
onExpired={() => {
|
|
603
|
-
LibNavigation.back(1)
|
|
604
|
-
}}
|
|
605
|
-
expired={timer}
|
|
606
|
-
style={{ color: "#fff", fontWeight: 'bold' }} />
|
|
607
|
-
</View>
|
|
608
|
-
: null
|
|
609
|
-
}
|
|
735
|
+
availableResult?.price_type?.map?.((item: any, i: number) => {
|
|
736
|
+
let textOpacity = item?.status == 1 ? 1 : 0.3
|
|
737
|
+
let filterFullData = availableResult?.price_type?.filter((it: any) => it.status != 0)
|
|
738
|
+
const displayedData = showAll[item.price_id] ? item?.list : item?.list.slice(0, maxDisplay);
|
|
610
739
|
|
|
611
|
-
|
|
612
|
-
<UseCondition if={is_multiprice == 1} >
|
|
613
|
-
<EventAlert
|
|
614
|
-
color={LibStyle.colorPrimary}
|
|
615
|
-
msg={esp.lang("event/ticket_list2", "u_can_choose_multiple")}
|
|
616
|
-
style={{ marginHorizontal: 15 }}
|
|
617
|
-
useIcon
|
|
618
|
-
/>
|
|
619
|
-
</UseCondition>
|
|
620
|
-
{
|
|
621
|
-
availableResult?.image_map != "" &&
|
|
622
|
-
<TouchableOpacity onPress={() => {
|
|
623
|
-
LibNavigation.navigate('lib/gallery', { image: availableResult?.image_map })
|
|
624
|
-
}} style={{ marginBottom: 10, marginTop: 20 }}>
|
|
625
|
-
<LibPicture source={{ uri: availableResult?.image_map }} style={applyStyle({ alignSelf: 'center', height: LibStyle.width * 0.5, width: LibStyle.width })} resizeMode="contain" />
|
|
626
|
-
</TouchableOpacity>
|
|
627
|
-
}
|
|
628
|
-
<View style={{ flex: 1 }}>
|
|
629
|
-
{
|
|
630
|
-
availableResult?.price_type?.map?.((item: any, i: number) => {
|
|
631
|
-
let textOpacity = item?.status == 1 ? 1 : 0.3
|
|
632
|
-
let filterFullData = availableResult?.price_type?.filter((it: any) => it.status != 0)
|
|
633
|
-
const displayedData = showAll[item.price_id] ? item?.list : item?.list.slice(0, maxDisplay);
|
|
634
|
-
|
|
635
|
-
let ticketWithDate = item.price_date == 1 && item.use_code == 0
|
|
636
|
-
|
|
637
|
-
return (
|
|
638
|
-
<Pressable onPress={() => {
|
|
639
|
-
|
|
640
|
-
}} key={i} style={{ overflow: 'hidden', margin: 15, marginBottom: 5, marginTop: 10, backgroundColor: '#fff', borderRadius: 10, ...LibStyle.elevation(2), borderWidth: 1, borderColor: item.selected == 1 ? LibStyle.colorBlue : LibStyle.colorBgGrey }}>
|
|
641
|
-
<View style={{ padding: 10, backgroundColor: '#f1f2f3', borderTopLeftRadius: 10, borderTopRightRadius: 10 }}>
|
|
642
|
-
<View style={{ alignContent: 'center', alignItems: 'center', flexDirection: 'row', justifyContent: 'space-between', }}>
|
|
643
|
-
<View>
|
|
644
|
-
<EventHtmltext allowFontScaling={false} style={{ opacity: textOpacity, fontWeight: 'bold' }}>{item.type}
|
|
645
|
-
{
|
|
646
|
-
item.qty_min > 1 &&
|
|
647
|
-
<Text style={{ color: LibStyle.colorRed, fontSize: 10, fontWeight: 'normal' }}> {"(" + esp.lang("event/ticket_list", "min_order") + LibUtils.number(item.qty_min) + ")"}</Text>
|
|
648
|
-
}
|
|
649
|
-
</EventHtmltext>
|
|
650
|
-
{
|
|
651
|
-
deeplinkParams?.type == 'event-voucher' && deeplinkParams?.price_id == item.price_id ?
|
|
652
|
-
<Text allowFontScaling={false} style={{ color: "coral", fontSize: 12, fontWeight: 'bold' }}>{esp.lang("event/ticket_list", "applied_code", deeplinkParams?.code)}</Text>
|
|
653
|
-
: null
|
|
654
|
-
}
|
|
655
|
-
</View>
|
|
740
|
+
let ticketWithDate = item.price_date == 1 && item.use_code == 0
|
|
656
741
|
|
|
742
|
+
return (
|
|
743
|
+
<Pressable onPress={() => {
|
|
744
|
+
|
|
745
|
+
}} key={i} style={{ overflow: 'hidden', margin: 15, marginBottom: 5, marginTop: 10, backgroundColor: '#fff', borderRadius: 10, ...LibStyle.elevation(2), borderWidth: 1, borderColor: item.selected == 1 ? LibStyle.colorBlue : LibStyle.colorBgGrey }}>
|
|
746
|
+
<View style={{ padding: 10, backgroundColor: '#f1f2f3', borderTopLeftRadius: 10, borderTopRightRadius: 10 }}>
|
|
747
|
+
{
|
|
748
|
+
item?.hasOwnProperty('label') && (item?.label != "" && item?.label != null) &&
|
|
749
|
+
<View style={applyStyle({ flexDirection: 'row' })}>
|
|
750
|
+
<View style={applyStyle({ alignContent: 'center', alignItems: 'center', justifyContent: 'center', borderWidth: 1, backgroundColor: item?.label_color, borderColor: item?.label_color, borderRadius: 3, padding: 2, paddingHorizontal: 5, opacity: 1 })}>
|
|
751
|
+
<Text allowFontScaling={false} style={{ fontSize: 10, fontStyle: "normal", letterSpacing: 0.5, color: EventOrder_itemProperty.textColor(item?.label_color), fontWeight: 'bold' }}>{item?.label}</Text>
|
|
752
|
+
</View>
|
|
753
|
+
</View>
|
|
754
|
+
}
|
|
755
|
+
<View style={{ alignContent: 'center', alignItems: 'center', flexDirection: 'row', justifyContent: 'space-between', }}>
|
|
756
|
+
<View style={{ flex: 2 }}>
|
|
757
|
+
<EventHtmltext allowFontScaling={false} style={{ opacity: textOpacity, fontWeight: 'bold' }}>{item.type}
|
|
657
758
|
{
|
|
658
|
-
item
|
|
659
|
-
<
|
|
660
|
-
<View style={applyStyle({ alignContent: 'center', alignItems: 'center', justifyContent: 'center', borderWidth: 1, backgroundColor: item.status == 0 ? LibStyle.colorRed : "#4cd964", borderColor: item.status == 0 ? LibStyle.colorRed : "#4cd964", borderRadius: 5, padding: 3, opacity: 0.8 })}>
|
|
661
|
-
<Text allowFontScaling={false} style={applyStyle({ fontSize: 10, fontStyle: "normal", letterSpacing: 0, color: item.status == 2 ? "#000" : "#fff", fontWeight: 'bold' })}>{item.status == 0 ? esp.lang("event/ticket_list", "sold_out") : esp.lang("event/ticket_list", "coming_soon")}</Text>
|
|
662
|
-
</View>
|
|
663
|
-
</View>
|
|
759
|
+
item.qty_min > 1 &&
|
|
760
|
+
<Text style={{ color: LibStyle.colorRed, fontSize: 10, fontWeight: 'normal' }}> {"(" + esp.lang("event/ticket_list", "min_order") + LibUtils.number(item.qty_min) + ")"}</Text>
|
|
664
761
|
}
|
|
665
|
-
</
|
|
762
|
+
</EventHtmltext>
|
|
666
763
|
{
|
|
667
|
-
item
|
|
668
|
-
<
|
|
669
|
-
|
|
670
|
-
|
|
764
|
+
availableResult?.countdown_booking == "1" && displayedData?.length == 1 && item?.status == 1 && item?.date_start != "0000-00-00 00:00:00" && item?.date_end != "0000-00-00 00:00:00" && moment(item?.date_end).format("YYYY-MM-DD HH:mm:ss") >= moment().format("YYYY-MM-DD HH:mm:ss") &&
|
|
765
|
+
<EventCountdown_event date={item?.date_end} containerStyle={{ marginVertical: -5 }} />
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
{
|
|
769
|
+
deeplinkParams?.type == 'event-voucher' && deeplinkParams?.price_id == item.price_id ?
|
|
770
|
+
<Text allowFontScaling={false} style={{ color: "coral", fontSize: 12, fontWeight: 'bold' }}>{esp.lang("event/ticket_list", "applied_code", deeplinkParams?.code)}</Text>
|
|
771
|
+
: null
|
|
671
772
|
}
|
|
672
773
|
</View>
|
|
673
|
-
{
|
|
674
|
-
displayedData?.map((itemC: any, iC: number) => renderItem(itemC, iC, item, i))
|
|
675
|
-
}
|
|
676
774
|
|
|
677
775
|
{
|
|
678
|
-
|
|
679
|
-
<
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
</TouchableOpacity>
|
|
776
|
+
item?.status != 1 &&
|
|
777
|
+
<View style={applyStyle({ flex: 1, justifyContent: 'flex-end', flexDirection: 'row' })}>
|
|
778
|
+
<View style={applyStyle({ alignContent: 'center', alignItems: 'center', justifyContent: 'center', borderWidth: 1, backgroundColor: item.status == 0 ? LibStyle.colorRed : "#4cd964", borderColor: item.status == 0 ? LibStyle.colorRed : "#4cd964", borderRadius: 5, padding: 3, opacity: 0.8 })}>
|
|
779
|
+
<Text allowFontScaling={false} style={applyStyle({ fontSize: 10, fontStyle: "normal", letterSpacing: 0, color: item.status == 2 ? "#000" : "#fff", fontWeight: 'bold' })}>{item.status == 0 ? esp.lang("event/ticket_list", "sold_out") : esp.lang("event/ticket_list", "coming_soon")}</Text>
|
|
780
|
+
</View>
|
|
781
|
+
</View>
|
|
685
782
|
}
|
|
783
|
+
</View>
|
|
784
|
+
{
|
|
785
|
+
item.info != "" && ticketWithDate &&
|
|
786
|
+
<View style={{ marginTop: 3, alignContent: 'center', alignItems: 'center', flexDirection: 'row', marginRight: 5 }}>
|
|
787
|
+
<Text allowFontScaling={false} style={{ fontSize: 12, color: LibStyle.colorBlue }}>{item.info}</Text>
|
|
788
|
+
</View>
|
|
789
|
+
}
|
|
790
|
+
</View>
|
|
791
|
+
{
|
|
792
|
+
displayedData?.map((itemC: any, iC: number) => renderItem(itemC, iC, item, i))
|
|
793
|
+
}
|
|
686
794
|
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
795
|
+
{
|
|
796
|
+
filterFullData[i].list?.length > 3 &&
|
|
797
|
+
<TouchableOpacity onPress={() => {
|
|
798
|
+
handleShowAll(item.price_id)
|
|
799
|
+
}} style={{ borderTopColor: LibStyle.colorGrey, borderTopWidth: 0.8, flex: 1, padding: 8, flexDirection: 'row', alignContent: 'center', alignItems: 'center', justifyContent: 'center' }}>
|
|
800
|
+
<Text allowFontScaling={false} style={{ marginRight: 5, fontFamily: "Arial", fontSize: 12, fontWeight: "bold", fontStyle: "normal", letterSpacing: 0, color: LibStyle.colorBlue }}>{showAll[item.price_id] ? esp.lang("event/ticket_list", "see_less") : esp.lang("event/ticket_list", "see_more")}</Text>
|
|
801
|
+
<LibIcon name={showAll[item.price_id] ? 'chevron-double-up' : 'chevron-double-down'} color={LibStyle.colorBlue} size={18} />
|
|
802
|
+
</TouchableOpacity>
|
|
803
|
+
}
|
|
691
804
|
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
</View>
|
|
715
|
-
</View>
|
|
716
|
-
}
|
|
717
|
-
</View>
|
|
718
|
-
{
|
|
719
|
-
item.info != "" && ticketWithDate &&
|
|
720
|
-
<View style={{ marginTop: 3, alignContent: 'center', alignItems: 'center', flexDirection: 'row', marginRight: 5 }}>
|
|
721
|
-
<Text allowFontScaling={false} style={{ fontSize: 12, color: LibStyle.colorBlue }}>{item.info}</Text>
|
|
722
|
-
</View>
|
|
723
|
-
}
|
|
724
|
-
</View>
|
|
805
|
+
</Pressable>
|
|
806
|
+
)
|
|
807
|
+
})
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
{/* ini view yang dibawah */}
|
|
811
|
+
<View style={{ marginTop: 30 }}>
|
|
812
|
+
{
|
|
813
|
+
unAvailableResult?.price_type?.length > 0 &&
|
|
814
|
+
<View style={{ margin: 15, marginTop: 0, marginBottom: 0, paddingBottom: 10, borderBottomWidth: 1, borderBottomColor: LibStyle.colorGrey }}>
|
|
815
|
+
<Text allowFontScaling={false} style={{ fontWeight: 'bold', fontSize: 16 }}>{esp.lang("event/ticket_list", "ticket_not_available")}</Text>
|
|
816
|
+
</View>
|
|
817
|
+
}
|
|
818
|
+
{
|
|
819
|
+
unAvailableResult?.price_type?.map?.((item: any, i: number) => {
|
|
820
|
+
let textOpacity = item?.status == 1 ? 1 : 0.3
|
|
821
|
+
let ticketWithDate = item.price_date == 1 && item.use_code == 0
|
|
822
|
+
return (
|
|
823
|
+
<View key={i} style={{ overflow: 'hidden', margin: 15, marginBottom: 5, backgroundColor: '#fff', borderRadius: 10, ...LibStyle.elevation(2), borderWidth: 1, borderColor: item.selected == 1 ? LibStyle.colorBlue : LibStyle.colorBgGrey }}>
|
|
824
|
+
<View style={{ padding: 10, backgroundColor: '#f1f2f3', borderTopLeftRadius: 10, borderTopRightRadius: 10 }}>
|
|
825
|
+
<View style={{ alignContent: 'center', alignItems: 'center', flexDirection: 'row', justifyContent: 'space-between', }}>
|
|
826
|
+
<Text allowFontScaling={false} style={{ opacity: textOpacity, fontWeight: 'bold' }}>{item.type}</Text>
|
|
725
827
|
{
|
|
726
|
-
item
|
|
828
|
+
item?.status != 1 &&
|
|
829
|
+
<View style={applyStyle({ flexDirection: 'row' })}>
|
|
830
|
+
<View style={applyStyle({ alignContent: 'center', alignItems: 'center', justifyContent: 'center', borderWidth: 1, backgroundColor: item.status == 0 ? LibStyle.colorRed : "#4cd964", borderColor: item.status == 0 ? LibStyle.colorRed : "#4cd964", borderRadius: 5, padding: 3, opacity: 0.8 })}>
|
|
831
|
+
<Text allowFontScaling={false} style={applyStyle({ fontSize: 10, fontStyle: "normal", letterSpacing: 0, color: item.status == 2 ? "#000" : "#fff", fontWeight: 'bold' })}>{item.status == 0 ? esp.lang("event/ticket_list", "sold_out") : esp.lang("event/ticket_list", "coming_soon")}</Text>
|
|
832
|
+
</View>
|
|
833
|
+
</View>
|
|
727
834
|
}
|
|
728
835
|
</View>
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
836
|
+
{
|
|
837
|
+
item.info != "" && ticketWithDate &&
|
|
838
|
+
<View style={{ marginTop: 3, alignContent: 'center', alignItems: 'center', flexDirection: 'row', marginRight: 5 }}>
|
|
839
|
+
<Text allowFontScaling={false} style={{ fontSize: 12, color: LibStyle.colorBlue }}>{item.info}</Text>
|
|
840
|
+
</View>
|
|
841
|
+
}
|
|
842
|
+
</View>
|
|
843
|
+
{
|
|
844
|
+
item.list.slice(0, 3).map((itemC: any, iC: number) => renderItem(itemC, iC, item, i))
|
|
845
|
+
}
|
|
846
|
+
</View>
|
|
847
|
+
)
|
|
848
|
+
})
|
|
849
|
+
}
|
|
850
|
+
</View>
|
|
851
|
+
</View>
|
|
852
|
+
</ScrollView>
|
|
853
|
+
<View style={applyStyle({ margin: 10, marginVertical: 5 })}>
|
|
854
|
+
{
|
|
855
|
+
availableResult?.price_type_info != "" &&
|
|
856
|
+
<Text allowFontScaling={false} style={applyStyle({ marginBottom: 10, fontFamily: "Arial", fontSize: 13, fontWeight: "bold", fontStyle: "normal", letterSpacing: 0, color: LibStyle.colorBlue })} >{availableResult && availableResult?.hasOwnProperty("price_type_info") && availableResult?.price_type_info}</Text>
|
|
857
|
+
}
|
|
858
|
+
{
|
|
859
|
+
loading ?
|
|
860
|
+
<View style={{ minWidth: '100%', alignSelf: 'center' }} >
|
|
861
|
+
<View style={{ borderWidth: 1, borderColor: 'rgba(0, 0, 0, 0)', height: 40, borderRadius: 16, backgroundColor: "#e6e6e6", alignItems: 'center', justifyContent: 'center', paddingHorizontal: 9 }} >
|
|
862
|
+
<ActivityIndicator size={"small"} color={LibStyle.colorPrimary} />
|
|
732
863
|
</View>
|
|
733
864
|
</View>
|
|
734
|
-
|
|
735
|
-
<View style={applyStyle({ margin: 10, marginVertical: 5 })}>
|
|
736
|
-
{
|
|
737
|
-
availableResult?.price_type_info != "" &&
|
|
738
|
-
<Text allowFontScaling={false} style={applyStyle({ marginBottom: 10, fontFamily: "Arial", fontSize: 13, fontWeight: "bold", fontStyle: "normal", letterSpacing: 0, color: LibStyle.colorBlue })} >{availableResult && availableResult?.hasOwnProperty("price_type_info") && availableResult?.price_type_info}</Text>
|
|
739
|
-
}
|
|
865
|
+
:
|
|
740
866
|
<EventButton testID={"next_btn"} label={esp.lang("event/ticket_list", "next")} onPress={() => {
|
|
741
867
|
if (availableResult?.price_type.some((item: any) => item.selected == 1)) {
|
|
742
868
|
checkSeatMap();
|
|
@@ -746,10 +872,9 @@ export default function m(props: EventTicket_list2Props): any {
|
|
|
746
872
|
}
|
|
747
873
|
|
|
748
874
|
}} style={applyStyle({ backgroundColor: LibStyle.colorPrimary })} />
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
</View>
|
|
875
|
+
}
|
|
876
|
+
</View>
|
|
877
|
+
</View>
|
|
878
|
+
</EventQueue>
|
|
754
879
|
)
|
|
755
880
|
}
|