Update translations all language in app
This commit is contained in:
parent
a549dc1b56
commit
457f046fab
@ -5,7 +5,7 @@ connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
|
|||||||
connection.project.dir=
|
connection.project.dir=
|
||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
gradle.user.home=
|
gradle.user.home=
|
||||||
java.home=/Users/Kumpor/Library/Java/JavaVirtualMachines/corretto-17.0.14/Contents/Home
|
java.home=/Users/Kumpor/Library/Java/JavaVirtualMachines/openjdk-24/Contents/Home
|
||||||
jvm.arguments=
|
jvm.arguments=
|
||||||
offline.mode=false
|
offline.mode=false
|
||||||
override.workspace.settings=true
|
override.workspace.settings=true
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17/"/>
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-24/"/>
|
||||||
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>
|
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>
|
||||||
<classpathentry kind="output" path="bin/default"/>
|
<classpathentry kind="output" path="bin/default"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=27
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=24
|
||||||
org.eclipse.jdt.core.compiler.compliance=27
|
org.eclipse.jdt.core.compiler.compliance=24
|
||||||
org.eclipse.jdt.core.compiler.source=27
|
org.eclipse.jdt.core.compiler.source=24
|
||||||
|
Binary file not shown.
@ -2,7 +2,7 @@ export default {
|
|||||||
API_BASE_URL_PROD: 'https://app.csasset.co.th/mobile',
|
API_BASE_URL_PROD: 'https://app.csasset.co.th/mobile',
|
||||||
// API_BASE_URL_POWER_CONDO_DEV: 'https://power-condo.testsiteth.xyz',
|
// API_BASE_URL_POWER_CONDO_DEV: 'https://power-condo.testsiteth.xyz',
|
||||||
API_BASE_URL_POWER_CONDO_DEV: 'http://54.255.251.43',
|
API_BASE_URL_POWER_CONDO_DEV: 'http://54.255.251.43',
|
||||||
API_BASE_URL_POWER_CONDO_PROD: 'https://powercondo.csasset.co.th',
|
API_BASE_URL_POWER_CONDO_PROD: 'https://powercondo.charoensinasset.co.th',
|
||||||
WEB_BASE_URL_PROD: 'https://app.csasset.co.th',
|
WEB_BASE_URL_PROD: 'https://app.csasset.co.th',
|
||||||
API_BASE_URL_DEV: 'https://csa-test.bda.co.th/mobile',
|
API_BASE_URL_DEV: 'https://csa-test.bda.co.th/mobile',
|
||||||
WEB_BASE_URL_DEV: 'https://csa-test.bda.co.th'
|
WEB_BASE_URL_DEV: 'https://csa-test.bda.co.th'
|
||||||
|
@ -442,7 +442,7 @@ PODS:
|
|||||||
- React-Core
|
- React-Core
|
||||||
- react-native-camera/RN (3.40.0):
|
- react-native-camera/RN (3.40.0):
|
||||||
- React-Core
|
- React-Core
|
||||||
- react-native-cameraroll (7.10.1):
|
- react-native-cameraroll (7.10.2):
|
||||||
- RCT-Folly (= 2021.07.22.00)
|
- RCT-Folly (= 2021.07.22.00)
|
||||||
- React-Core
|
- React-Core
|
||||||
- react-native-fbsdk-next (13.4.1):
|
- react-native-fbsdk-next (13.4.1):
|
||||||
@ -841,8 +841,8 @@ EXTERNAL SOURCES:
|
|||||||
:path: "../node_modules/react-native/ReactCommon/yoga"
|
:path: "../node_modules/react-native/ReactCommon/yoga"
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
boost: 099eb71dcf2a2717110f77e84c1b0aaa2a701795
|
boost: 5c42585573ad5f1ea485444beac314a8d0944270
|
||||||
BVLinearGradient: cb006ba232a1f3e4f341bb62c42d1098c284da70
|
BVLinearGradient: 880f91a7854faff2df62518f0281afb1c60d49a3
|
||||||
DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
|
DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
|
||||||
FBAEMKit: e34530df538b8eb8aeb53c35867715ba6c63ef0c
|
FBAEMKit: e34530df538b8eb8aeb53c35867715ba6c63ef0c
|
||||||
FBLazyVector: 748c0ef74f2bf4b36cfcccf37916806940a64c32
|
FBLazyVector: 748c0ef74f2bf4b36cfcccf37916806940a64c32
|
||||||
@ -867,33 +867,33 @@ SPEC CHECKSUMS:
|
|||||||
libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
|
libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
|
||||||
nanopb: d4d75c12cd1316f4a64e3c6963f879ecd4b5e0d5
|
nanopb: d4d75c12cd1316f4a64e3c6963f879ecd4b5e0d5
|
||||||
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
||||||
RCT-Folly: 8dc08ca5a393b48b1c523ab6220dfdcc0fe000ad
|
RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1
|
||||||
RCTRequired: 28469809442eb4eb5528462705f7d852948c8a74
|
RCTRequired: 28469809442eb4eb5528462705f7d852948c8a74
|
||||||
RCTTypeSafety: e9c6c409fca2cc584e5b086862d562540cb38d29
|
RCTTypeSafety: e9c6c409fca2cc584e5b086862d562540cb38d29
|
||||||
React: 769f469909b18edfe934f0539fffb319c4c61043
|
React: 769f469909b18edfe934f0539fffb319c4c61043
|
||||||
React-callinvoker: e48ce12c83706401251921896576710d81e54763
|
React-callinvoker: e48ce12c83706401251921896576710d81e54763
|
||||||
React-Codegen: 033c7996c4f52d25d1c93076de1ed4d6612b54f9
|
React-Codegen: 658f30a9ed3a87c53f19cce1c2f0ff09f9831aab
|
||||||
React-Core: 24faa3db013470537a665ad0a0fc7c4529a7b143
|
React-Core: 8f6b8b114bf59d10d084e5b46414760cc9bfac9e
|
||||||
React-CoreModules: 93be55ffed8b41ed664b51072498a23d9261410b
|
React-CoreModules: d226b22d06ea1bc4e49d3c073b2c6cbb42265405
|
||||||
React-cxxreact: f2076ecdb795e9010a0f00c5f70fbaa39c94df90
|
React-cxxreact: 3a3b543136233b9b92f26267d3127fc39a0a720a
|
||||||
React-debug: 238501490155574ae9f3f8dd1c74330eba30133e
|
React-debug: 238501490155574ae9f3f8dd1c74330eba30133e
|
||||||
React-jsc: f7d32213d6f7bb8a9f0c4e0e0a0fe2bb10288173
|
React-jsc: f7d32213d6f7bb8a9f0c4e0e0a0fe2bb10288173
|
||||||
React-jsi: d40109243ed55b3b06ff015a3ec366f09781e0fd
|
React-jsi: 494e5ae5cd0c649dde893f80e248cf36989dd331
|
||||||
React-jsiexecutor: e50b839f530379929217443355d754be4567566d
|
React-jsiexecutor: faca9c368233f59ed24601aca0185870466a96e9
|
||||||
React-jsinspector: 194e32c6aab382d88713ad3dd0025c5f5c4ee072
|
React-jsinspector: 194e32c6aab382d88713ad3dd0025c5f5c4ee072
|
||||||
React-logger: 39440454dfd719978689203a9d18b94e98de09eb
|
React-logger: cebf22b6cf43434e471dc561e5911b40ac01d289
|
||||||
react-native-camera: 22dbf8ce6a4c6a25ae49f4e2fa5859c5277f1631
|
react-native-camera: 35854c4f764a4a6cf61c1c3525888b92f0fe4b31
|
||||||
react-native-cameraroll: 00d73585135a54968912cbeffa2845e83c517b88
|
react-native-cameraroll: e1213d5dd5b11abd38042a371beb50a55a9083b4
|
||||||
react-native-fbsdk-next: 52f81e60eb3e8e0e06cf9728b4572d3509ca9d01
|
react-native-fbsdk-next: 1baeeacf0ecdeb839cca16ca75cb16a9bbbf8e03
|
||||||
react-native-pager-view: 873aef831fb4fe6e1a2e1ba7a79857e240dea380
|
react-native-pager-view: da490aa1f902c9a5aeecf0909cc975ad0e92e53e
|
||||||
react-native-splash-screen: 95994222cc95c236bd3cdc59fe45ed5f27969594
|
react-native-splash-screen: 4312f786b13a81b5169ef346d76d33bc0c6dc457
|
||||||
react-native-view-shot: d1a701eb0719c6dccbd20b4bb43b1069f304cb70
|
react-native-view-shot: 6b7ed61d77d88580fed10954d45fad0eb2d47688
|
||||||
react-native-webview: 5bb1454f1eb43e0bad229bb428a378d6b865a0ad
|
react-native-webview: 994b9f8fbb504d6314dc40d83f94f27c6831b3bf
|
||||||
React-NativeModulesApple: 3369884d84790e4a46be33fe7f141245ea55d585
|
React-NativeModulesApple: 63505fb94b71e2469cab35bdaf36cca813cb5bfd
|
||||||
React-perflogger: e3596db7e753f51766bceadc061936ef1472edc3
|
React-perflogger: e3596db7e753f51766bceadc061936ef1472edc3
|
||||||
React-RCTActionSheet: 17ab132c748b4471012abbcdcf5befe860660485
|
React-RCTActionSheet: 17ab132c748b4471012abbcdcf5befe860660485
|
||||||
React-RCTAnimation: c8bbaab62be5817d2a31c36d5f2571e3f7dcf099
|
React-RCTAnimation: c8bbaab62be5817d2a31c36d5f2571e3f7dcf099
|
||||||
React-RCTAppDelegate: c4a773ccf71b96d2d594a48e41766a31dc1eacf8
|
React-RCTAppDelegate: 600e7dfd1ca0a80e24af2d4d25ed1c705bb12505
|
||||||
React-RCTBlob: 86ab788db3fcc1af0d186a6625e7d0956ffeea5b
|
React-RCTBlob: 86ab788db3fcc1af0d186a6625e7d0956ffeea5b
|
||||||
React-RCTImage: 670a3486b532292649b1aef3ffddd0b495a5cee4
|
React-RCTImage: 670a3486b532292649b1aef3ffddd0b495a5cee4
|
||||||
React-RCTLinking: bd7ab853144aed463903237e615fd91d11b4f659
|
React-RCTLinking: bd7ab853144aed463903237e615fd91d11b4f659
|
||||||
@ -903,27 +903,27 @@ SPEC CHECKSUMS:
|
|||||||
React-RCTVibration: 6bd85328388ac2e82ae0ca11afe48ad5555b483a
|
React-RCTVibration: 6bd85328388ac2e82ae0ca11afe48ad5555b483a
|
||||||
React-rncore: fda7b1ae5918fa7baa259105298a5487875a57c8
|
React-rncore: fda7b1ae5918fa7baa259105298a5487875a57c8
|
||||||
React-runtimeexecutor: 57d85d942862b08f6d15441a0badff2542fd233c
|
React-runtimeexecutor: 57d85d942862b08f6d15441a0badff2542fd233c
|
||||||
React-runtimescheduler: 78ae3872d28313f5038035ca03e0749a0f9aeb79
|
React-runtimescheduler: 13b0c5e9354ccfc3dc9a391231e55debeb688523
|
||||||
React-utils: ee4e6bf16d6882500500d517d36f9035874c5f6a
|
React-utils: fa59c9a3375fb6f4aeb66714fd3f7f76b43a9f16
|
||||||
ReactCommon: 3a7c359a28c6973c304fb1b0152b096b195dd5fc
|
ReactCommon: 5f73972d2abd8a85e44f27317bf77418a74d3340
|
||||||
RNAppleAuthentication: c5d311a3a5b1be91d077c217481d8fecf72cfa81
|
RNAppleAuthentication: 473b2c076f1a48a537610580a168c1fb6d0a90c6
|
||||||
RNCAsyncStorage: b44e8a4e798c3e1f56bffccd0f591f674fb9198f
|
RNCAsyncStorage: 23e56519cc41d3bade3c8d4479f7760cb1c11996
|
||||||
RNDateTimePicker: 21fbf94479a551f0e50d37e662febe03e16b7012
|
RNDateTimePicker: 7658208086d86d09e1627b5c34ba0cf237c60140
|
||||||
RNDeviceInfo: e958a6b5adfb7b16d360fb138affe8fc2cfdc288
|
RNDeviceInfo: c5f8f3a456adcbba405ace475254b08febc4c095
|
||||||
RNFastImage: 462a183c4b0b6b26fdfd639e1ed6ba37536c3b87
|
RNFastImage: 5c9c9fed9c076e521b3f509fe79e790418a544e8
|
||||||
RNFBApp: c5526741c2ee14bd3ab6d57bf8e42be8314bca2f
|
RNFBApp: 0d8bf86673bbad0524d1ceac3944d71ccf48a0e4
|
||||||
RNFBMessaging: c05a432d82a2aa730161e62c56b2a53ca3b412f5
|
RNFBMessaging: 4b8cb1215465bacca36d0fcfc2f51e7e2aa1bc91
|
||||||
RNGestureHandler: 6572a5f44759900730562b418da289c373de8d06
|
RNGestureHandler: a479ebd5ed4221a810967000735517df0d2db211
|
||||||
RNImageCropPicker: 5c7ec5f529a8871ea5aea10c9d721034bdfd6a88
|
RNImageCropPicker: 486e2f7e2b0461ce24321f751410dce1b3b49e6d
|
||||||
RNPermissions: 553c7539c121295b3eb984b8a7dce572a348ccdd
|
RNPermissions: ccf532ed52f74c1594ef3f6a3ef1c962fb246895
|
||||||
RNScreens: 6a2106686e0de9866ab14ca250d7e47a49416b51
|
RNScreens: f7ad633b2e0190b77b6a7aab7f914fad6f198d8d
|
||||||
RNSVG: af004514150de2bd928e11d215bca33a5d1c19ce
|
RNSVG: 8ba35cbeb385a52fd960fd28db9d7d18b4c2974f
|
||||||
RNVectorIcons: 74631b5480062f240cadfea886b232e2890f3382
|
RNVectorIcons: 368d6d8b8301224e5ffb6254191f4f8876c2be0d
|
||||||
SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d
|
SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d
|
||||||
SDWebImageWebPCoder: 908b83b6adda48effe7667cd2b7f78c897e5111d
|
SDWebImageWebPCoder: 908b83b6adda48effe7667cd2b7f78c897e5111d
|
||||||
SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
|
SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
|
||||||
TOCropViewController: 80b8985ad794298fb69d3341de183f33d1853654
|
TOCropViewController: 80b8985ad794298fb69d3341de183f33d1853654
|
||||||
toolbar-android: c426ed5bd3dcccfed20fd79533efc0d1ae0ef018
|
toolbar-android: 2a73856e98b750d7e71ce4644d3f41cc98211719
|
||||||
Yoga: b76f1acfda8212aa16b7e26bcce3983230c82603
|
Yoga: b76f1acfda8212aa16b7e26bcce3983230c82603
|
||||||
|
|
||||||
PODFILE CHECKSUM: 045ce48c2fa50bc2406cfdd414251743ff4319f8
|
PODFILE CHECKSUM: 045ce48c2fa50bc2406cfdd414251743ff4319f8
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
"save_electric_meter": "Electricity Meter",
|
"save_electric_meter": "Electricity Meter",
|
||||||
"electric_unit": "Electricity Bill",
|
"electric_unit": "Electricity Bill",
|
||||||
"unit": "Unit",
|
"unit": "Unit",
|
||||||
|
"units": "Units",
|
||||||
"unit_price": "Unit Price",
|
"unit_price": "Unit Price",
|
||||||
"amount": "Amount",
|
"amount": "Amount",
|
||||||
"baht": "Baht",
|
"baht": "Baht",
|
||||||
@ -198,5 +199,129 @@
|
|||||||
"title": "Title",
|
"title": "Title",
|
||||||
"update_app": "Update Application",
|
"update_app": "Update Application",
|
||||||
"payment_success": "Payment Success",
|
"payment_success": "Payment Success",
|
||||||
"delete_account": "Delete Account"
|
"delete_account": "Delete Account",
|
||||||
|
"move_out": "Move Out",
|
||||||
|
"floor": "Floor",
|
||||||
|
"move_out_date": "Date",
|
||||||
|
"reason_move_out": "Reason for Moving Out",
|
||||||
|
"select_building": "Select Building",
|
||||||
|
"select_floor": "Select Floor",
|
||||||
|
"select_room": "Select Room",
|
||||||
|
"select_reason_moveout": "Select Reason for Moving Out",
|
||||||
|
"select": "Select",
|
||||||
|
"send_confirm_data": "Confirm to Send",
|
||||||
|
"select_title": "Select Title",
|
||||||
|
"repair_type": "Repair Type",
|
||||||
|
"select_repair_type": "Select Repair Type",
|
||||||
|
"repair_detail": "Repair Detail",
|
||||||
|
"repair_date": "Date",
|
||||||
|
"repair_time": "Time",
|
||||||
|
"period": "Time",
|
||||||
|
"list_name": "Name",
|
||||||
|
"material_name": "Material Name",
|
||||||
|
"charge": "Service Charge",
|
||||||
|
"delete_row": "Delete this record",
|
||||||
|
"add_list": "Add list",
|
||||||
|
"repair_list": "Repair List",
|
||||||
|
"list_unit": "",
|
||||||
|
"summary_service": "Total",
|
||||||
|
"send_data_success": "Send Data Successfully",
|
||||||
|
"moveout_success_message": "We have received your request to move out.",
|
||||||
|
"repair_success_message": "We have received your maintenance request.",
|
||||||
|
"send_data_fail": "Send Data Failed",
|
||||||
|
"warning_move_out": "No deposit refund without at least one month's move-out notice.",
|
||||||
|
"payment_no": "Payment No",
|
||||||
|
"reward": "Rewards",
|
||||||
|
"history_point": "History Point",
|
||||||
|
"all_reward": "All Rewards",
|
||||||
|
"my_reward": "My Rewards",
|
||||||
|
"coupon": "Coupon",
|
||||||
|
"forget_password": "Forget Password",
|
||||||
|
"payment_detail": "Payment Detail",
|
||||||
|
"membership_detail": "Member Benefits by Tier",
|
||||||
|
"verify_otp": "Verify OTP",
|
||||||
|
"success": "Success",
|
||||||
|
"check_otp_msg": "Please check the OTP sent to your phone number",
|
||||||
|
"enter_otp": "Please enter the OTP code.",
|
||||||
|
"resend_otp": "Resend OTP available in",
|
||||||
|
"minutes": "minutes",
|
||||||
|
"to_phone_number": "sent to the phone number",
|
||||||
|
"save_photo": "Photo saved successfully",
|
||||||
|
"confirm_pay": "Confirm and Pay",
|
||||||
|
"coupon_not_found": "Coupons not found.",
|
||||||
|
"coupon_selected": "Selected Discount Coupon",
|
||||||
|
"choose_coupon": "Choose Coupon",
|
||||||
|
"confirm_coupon": "Confirm Coupon",
|
||||||
|
"unsuccessful": "Unsuccessful",
|
||||||
|
"enter_phone_no": "Enter phone number",
|
||||||
|
"receive_otp": "To receive the OTP code via SMS.",
|
||||||
|
"back_to": "Back to",
|
||||||
|
"credential_invalid" : "Incorrect username or password.",
|
||||||
|
"phone_format_invalid": "Invalid phone number format.",
|
||||||
|
"required_field": "Please fill in all required fields.",
|
||||||
|
"pw_not_match": "Passwords do not match.",
|
||||||
|
"confirm_pw": "Confirm password.",
|
||||||
|
"from_gallery": "From Gallery",
|
||||||
|
"take_photo": "Take Photo",
|
||||||
|
"payment_overdue": "Payment overdue",
|
||||||
|
"news_canceled": "News publication has been canceled.",
|
||||||
|
"email_format_invalid": "Invalid email format.",
|
||||||
|
"error_occurred": "An error occurred",
|
||||||
|
"try_again": "Please try again",
|
||||||
|
"payment_overdue_contact_admin": "Your payment is overdue. Please contact customer service.",
|
||||||
|
"copy_pw": "Tap to copy password.",
|
||||||
|
"for_login": "For use in logging in.",
|
||||||
|
"resend_code": "Resend code",
|
||||||
|
"confirm_meter": "Confirm meter number",
|
||||||
|
"process_send_data": "Processing may take some time to verify your information",
|
||||||
|
"enter_meter": "Enter meter number ",
|
||||||
|
"attach_meter": "Please attach a photo and enter the water and electric meter numbers",
|
||||||
|
"by_due_date": "By the due date",
|
||||||
|
"sorry_send_data": "Sorry if you have already submitted the data.",
|
||||||
|
"enter_info": "Enter information.",
|
||||||
|
"later": "Later",
|
||||||
|
"loading_news": "Loading",
|
||||||
|
"title_delete_ac": "Are you sure you want to delete your account?",
|
||||||
|
"body_delete_ac": "The request will be reviewed by an administrator and may take up to 30 days to complete.",
|
||||||
|
"contact_admin_for_delete_ac": "Contact admin to delete your account.",
|
||||||
|
"condition": "Condition",
|
||||||
|
"min_rental": "Minimum rental period",
|
||||||
|
"avg_rent": "Average monthly rent",
|
||||||
|
"min_avg_rent": "Minimum average monthly rent",
|
||||||
|
"privilege": "Privileges",
|
||||||
|
"feedback_title": "Thank you for your feedback",
|
||||||
|
"feedback_body": "We will review your suggestions",
|
||||||
|
"suggestion_title": "Title",
|
||||||
|
"failed_coupon": "Failed to apply discount coupon.",
|
||||||
|
"use_coupon" : "Use discount coupon",
|
||||||
|
"paid1": "Paid",
|
||||||
|
"pay_now": "Pay now",
|
||||||
|
"contact_front": "Contact front desk",
|
||||||
|
"outstanding_balance_past_due": "You have an outstanding balance past due.",
|
||||||
|
"point_expire": "Points about to expire.",
|
||||||
|
"not_found_point_expire": "No expiring coupons found.",
|
||||||
|
"rental_discount" : "Rental discount",
|
||||||
|
"product_discount": "Product discount",
|
||||||
|
"redeem_service": "Redeem/Services",
|
||||||
|
"lucky_draw": "Lucky Draw",
|
||||||
|
"no_items": "No items found.",
|
||||||
|
"am": "AM",
|
||||||
|
"pm": "PM",
|
||||||
|
"event_name": "Event Name",
|
||||||
|
"valid_until": "Valid until",
|
||||||
|
"redeem_point": "Redeem points",
|
||||||
|
"confirm_redeem": "Confirm redeem points",
|
||||||
|
"no_chat" : "No chat data.",
|
||||||
|
"enter_pw": "Enter password",
|
||||||
|
"total": "Total",
|
||||||
|
"taken_on": "Taken on",
|
||||||
|
"short_minute": "",
|
||||||
|
"retake_meter_photo": "Retake meter photo",
|
||||||
|
"times": "Time",
|
||||||
|
"admin_project": "Admin Project",
|
||||||
|
"expire_on": "Expire on",
|
||||||
|
"overdue": "Overdue",
|
||||||
|
"incorrect_pw": "Incorrect password",
|
||||||
|
"pw_not_match_and_retry": "New password and confirmation do not match. Please try again.",
|
||||||
|
"no_data": "No Data"
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
"save_electric_meter": "វិក័យប័ត្រអគ្គិសនី",
|
"save_electric_meter": "វិក័យប័ត្រអគ្គិសនី",
|
||||||
"electric_unit": "បរិមាណអគ្គិសនី",
|
"electric_unit": "បរិមាណអគ្គិសនី",
|
||||||
"unit": "បរិមាណ",
|
"unit": "បរិមាណ",
|
||||||
|
"units": "Units",
|
||||||
"unit_price": "ឯកតា",
|
"unit_price": "ឯកតា",
|
||||||
"amount": "ចំនួនទឹកប្រាក់",
|
"amount": "ចំនួនទឹកប្រាក់",
|
||||||
"baht": "បាត",
|
"baht": "បាត",
|
||||||
@ -194,5 +195,131 @@
|
|||||||
"bill_payment": "Bill Payment",
|
"bill_payment": "Bill Payment",
|
||||||
"meter_noti": "Electric Meter",
|
"meter_noti": "Electric Meter",
|
||||||
"title": "Title",
|
"title": "Title",
|
||||||
"delete_account": "Delete Account"
|
"delete_account": "Delete Account",
|
||||||
|
"update_app": "Update Application",
|
||||||
|
"payment_success": "Payment Success",
|
||||||
|
"move_out": "Move Out",
|
||||||
|
"floor": "Floor",
|
||||||
|
"move_out_date": "Date",
|
||||||
|
"reason_move_out": "Reason for Moving Out",
|
||||||
|
"select_building": "Select Building",
|
||||||
|
"select_floor": "Select Floor",
|
||||||
|
"select_room": "Select Room",
|
||||||
|
"select_reason_moveout": "Select Reason for Moving Out",
|
||||||
|
"select": "Select",
|
||||||
|
"send_confirm_data": "Confirm to Send",
|
||||||
|
"select_title": "Select Title",
|
||||||
|
"repair_type": "Repair Type",
|
||||||
|
"select_repair_type": "Select Repair Type",
|
||||||
|
"repair_detail": "Repair Detail",
|
||||||
|
"repair_date": "Date",
|
||||||
|
"repair_time": "Time",
|
||||||
|
"period": "Time",
|
||||||
|
"list_name": "Name",
|
||||||
|
"material_name": "Material Name",
|
||||||
|
"charge": "Service Charge",
|
||||||
|
"delete_row": "Delete this record",
|
||||||
|
"add_list": "Add list",
|
||||||
|
"repair_list": "Repair List",
|
||||||
|
"list_unit": "",
|
||||||
|
"summary_service": "Total",
|
||||||
|
"send_data_success": "Send Data Successfully",
|
||||||
|
"moveout_success_message": "We have received your request to move out.",
|
||||||
|
"repair_success_message": "We have received your maintenance request.",
|
||||||
|
"send_data_fail": "Send Data Failed",
|
||||||
|
"warning_move_out": "No deposit refund without at least one month's move-out notice.",
|
||||||
|
"payment_no": "Payment No",
|
||||||
|
"reward": "Rewards",
|
||||||
|
"history_point": "History Point",
|
||||||
|
"all_reward": "All Rewards",
|
||||||
|
"my_reward": "My Rewards",
|
||||||
|
"coupon": "Coupon",
|
||||||
|
"forget_password": "Forget Password",
|
||||||
|
"payment_detail": "Payment Detail",
|
||||||
|
"membership_detail": "Member Benefits by Tier",
|
||||||
|
"verify_otp": "Verify OTP",
|
||||||
|
"success": "Success",
|
||||||
|
"check_otp_msg": "Please check the OTP sent to your phone number",
|
||||||
|
"enter_otp": "Please enter the OTP code.",
|
||||||
|
"resend_otp": "Resend OTP available in",
|
||||||
|
"minutes": "minutes",
|
||||||
|
"to_phone_number": "sent to the phone number",
|
||||||
|
"save_photo": "Photo saved successfully",
|
||||||
|
"confirm_pay": "Confirm and Pay",
|
||||||
|
"coupon_not_found": "Coupons not found.",
|
||||||
|
"coupon_selected": "Selected Discount Coupon",
|
||||||
|
"choose_coupon": "Choose Coupon",
|
||||||
|
"confirm_coupon": "Confirm Coupon",
|
||||||
|
"unsuccessful": "Unsuccessful",
|
||||||
|
"enter_phone_no": "Enter phone number",
|
||||||
|
"receive_otp": "To receive the OTP code via SMS.",
|
||||||
|
"back_to": "Back to",
|
||||||
|
"credential_invalid" : "Incorrect username or password.",
|
||||||
|
"phone_format_invalid": "Invalid phone number format.",
|
||||||
|
"required_field": "Please fill in all required fields.",
|
||||||
|
"pw_not_match": "Passwords do not match.",
|
||||||
|
"confirm_pw": "Confirm password.",
|
||||||
|
"from_gallery": "From Gallery",
|
||||||
|
"take_photo": "Take Photo",
|
||||||
|
"payment_overdue": "Payment overdue",
|
||||||
|
"news_canceled": "News publication has been canceled.",
|
||||||
|
"email_format_invalid": "Invalid email format.",
|
||||||
|
"error_occurred": "An error occurred",
|
||||||
|
"try_again": "Please try again",
|
||||||
|
"payment_overdue_contact_admin": "Your payment is overdue. Please contact customer service.",
|
||||||
|
"copy_pw": "Tap to copy password.",
|
||||||
|
"for_login": "For use in logging in.",
|
||||||
|
"resend_code": "Resend code",
|
||||||
|
"confirm_meter": "Confirm meter number",
|
||||||
|
"process_send_data": "Processing may take some time to verify your information",
|
||||||
|
"enter_meter": "Enter meter number ",
|
||||||
|
"attach_meter": "Please attach a photo and enter the water and electric meter numbers",
|
||||||
|
"by_due_date": "By the due date",
|
||||||
|
"sorry_send_data": "Sorry if you have already submitted the data.",
|
||||||
|
"enter_info": "Enter information.",
|
||||||
|
"later": "Later",
|
||||||
|
"loading_news": "Loading",
|
||||||
|
"title_delete_ac": "Are you sure you want to delete your account?",
|
||||||
|
"body_delete_ac": "The request will be reviewed by an administrator and may take up to 30 days to complete.",
|
||||||
|
"contact_admin_for_delete_ac": "Contact admin to delete your account.",
|
||||||
|
"condition": "Condition",
|
||||||
|
"min_rental": "Minimum rental period",
|
||||||
|
"avg_rent": "Average monthly rent",
|
||||||
|
"min_avg_rent": "Minimum average monthly rent",
|
||||||
|
"privilege": "Privileges",
|
||||||
|
"feedback_title": "Thank you for your feedback",
|
||||||
|
"feedback_body": "We will review your suggestions",
|
||||||
|
"suggestion_title": "Title",
|
||||||
|
"failed_coupon": "Failed to apply discount coupon.",
|
||||||
|
"use_coupon" : "Use discount coupon",
|
||||||
|
"paid1": "Paid",
|
||||||
|
"pay_now": "Pay now",
|
||||||
|
"contact_front": "Contact front desk",
|
||||||
|
"outstanding_balance_past_due": "You have an outstanding balance past due.",
|
||||||
|
"point_expire": "Points about to expire.",
|
||||||
|
"not_found_point_expire": "No expiring coupons found.",
|
||||||
|
"rental_discount" : "Rental discount",
|
||||||
|
"product_discount": "Product discount",
|
||||||
|
"redeem_service": "Redeem/Services",
|
||||||
|
"lucky_draw": "Lucky Draw",
|
||||||
|
"no_items": "No items found.",
|
||||||
|
"am": "AM",
|
||||||
|
"pm": "PM",
|
||||||
|
"event_name": "Event Name",
|
||||||
|
"valid_until": "Valid until",
|
||||||
|
"redeem_point": "Redeem points",
|
||||||
|
"confirm_redeem": "Confirm redeem points",
|
||||||
|
"no_chat" : "No chat data.",
|
||||||
|
"enter_pw": "Enter password",
|
||||||
|
"total": "Total",
|
||||||
|
"taken_on": "Taken on",
|
||||||
|
"short_minute": "",
|
||||||
|
"retake_meter_photo": "Retake meter photo",
|
||||||
|
"times": "Time",
|
||||||
|
"admin_project": "Admin Project",
|
||||||
|
"expire_on": "Expire on",
|
||||||
|
"overdue": "Overdue",
|
||||||
|
"incorrect_pw": "Incorrect password",
|
||||||
|
"pw_not_match_and_retry": "New password and confirmation do not match. Please try again.",
|
||||||
|
"no_data": "No Data"
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
"save_electric_meter": "မီးခမွတ္တမ္း",
|
"save_electric_meter": "မီးခမွတ္တမ္း",
|
||||||
"electric_unit": "မီးခ",
|
"electric_unit": "မီးခ",
|
||||||
"unit": "စုေပါင္း",
|
"unit": "စုေပါင္း",
|
||||||
|
"units": "Units",
|
||||||
"unit_price": "ယူနစ္",
|
"unit_price": "ယူနစ္",
|
||||||
"amount": "စုေပါင္းေငြ",
|
"amount": "စုေပါင္းေငြ",
|
||||||
"baht": "ဘတ္",
|
"baht": "ဘတ္",
|
||||||
@ -194,5 +195,131 @@
|
|||||||
"bill_payment": "Bill Payment",
|
"bill_payment": "Bill Payment",
|
||||||
"meter_noti": "Electric Meter",
|
"meter_noti": "Electric Meter",
|
||||||
"title": "Title",
|
"title": "Title",
|
||||||
"delete_account": "Delete Account"
|
"delete_account": "Delete Account",
|
||||||
|
"update_app": "Update Application",
|
||||||
|
"payment_success": "Payment Success",
|
||||||
|
"move_out": "Move Out",
|
||||||
|
"floor": "Floor",
|
||||||
|
"move_out_date": "Date",
|
||||||
|
"reason_move_out": "Reason for Moving Out",
|
||||||
|
"select_building": "Select Building",
|
||||||
|
"select_floor": "Select Floor",
|
||||||
|
"select_room": "Select Room",
|
||||||
|
"select_reason_moveout": "Select Reason for Moving Out",
|
||||||
|
"select": "Select",
|
||||||
|
"send_confirm_data": "Confirm to Send",
|
||||||
|
"select_title": "Select Title",
|
||||||
|
"repair_type": "Repair Type",
|
||||||
|
"select_repair_type": "Select Repair Type",
|
||||||
|
"repair_detail": "Repair Detail",
|
||||||
|
"repair_date": "Date",
|
||||||
|
"repair_time": "Time",
|
||||||
|
"period": "Time",
|
||||||
|
"list_name": "Name",
|
||||||
|
"material_name": "Material Name",
|
||||||
|
"charge": "Service Charge",
|
||||||
|
"delete_row": "Delete this record",
|
||||||
|
"add_list": "Add list",
|
||||||
|
"repair_list": "Repair List",
|
||||||
|
"list_unit": "",
|
||||||
|
"summary_service": "Total",
|
||||||
|
"send_data_success": "Send Data Successfully",
|
||||||
|
"moveout_success_message": "We have received your request to move out.",
|
||||||
|
"repair_success_message": "We have received your maintenance request.",
|
||||||
|
"send_data_fail": "Send Data Failed",
|
||||||
|
"warning_move_out": "No deposit refund without at least one month's move-out notice.",
|
||||||
|
"payment_no": "Payment No",
|
||||||
|
"reward": "Rewards",
|
||||||
|
"history_point": "History Point",
|
||||||
|
"all_reward": "All Rewards",
|
||||||
|
"my_reward": "My Rewards",
|
||||||
|
"coupon": "Coupon",
|
||||||
|
"forget_password": "Forget Password",
|
||||||
|
"payment_detail": "Payment Detail",
|
||||||
|
"membership_detail": "Member Benefits by Tier",
|
||||||
|
"verify_otp": "Verify OTP",
|
||||||
|
"success": "Success",
|
||||||
|
"check_otp_msg": "Please check the OTP sent to your phone number",
|
||||||
|
"enter_otp": "Please enter the OTP code.",
|
||||||
|
"resend_otp": "Resend OTP available in",
|
||||||
|
"minutes": "minutes",
|
||||||
|
"to_phone_number": "sent to the phone number",
|
||||||
|
"save_photo": "Photo saved successfully",
|
||||||
|
"confirm_pay": "Confirm and Pay",
|
||||||
|
"coupon_not_found": "Coupons not found.",
|
||||||
|
"coupon_selected": "Selected Discount Coupon",
|
||||||
|
"choose_coupon": "Choose Coupon",
|
||||||
|
"confirm_coupon": "Confirm Coupon",
|
||||||
|
"unsuccessful": "Unsuccessful",
|
||||||
|
"enter_phone_no": "Enter phone number",
|
||||||
|
"receive_otp": "To receive the OTP code via SMS.",
|
||||||
|
"back_to": "Back to",
|
||||||
|
"credential_invalid" : "Incorrect username or password.",
|
||||||
|
"phone_format_invalid": "Invalid phone number format.",
|
||||||
|
"required_field": "Please fill in all required fields.",
|
||||||
|
"pw_not_match": "Passwords do not match.",
|
||||||
|
"confirm_pw": "Confirm password.",
|
||||||
|
"from_gallery": "From Gallery",
|
||||||
|
"take_photo": "Take Photo",
|
||||||
|
"payment_overdue": "Payment overdue",
|
||||||
|
"news_canceled": "News publication has been canceled.",
|
||||||
|
"email_format_invalid": "Invalid email format.",
|
||||||
|
"error_occurred": "An error occurred",
|
||||||
|
"try_again": "Please try again",
|
||||||
|
"payment_overdue_contact_admin": "Your payment is overdue. Please contact customer service.",
|
||||||
|
"copy_pw": "Tap to copy password.",
|
||||||
|
"for_login": "For use in logging in.",
|
||||||
|
"resend_code": "Resend code",
|
||||||
|
"confirm_meter": "Confirm meter number",
|
||||||
|
"process_send_data": "Processing may take some time to verify your information",
|
||||||
|
"enter_meter": "Enter meter number of ",
|
||||||
|
"attach_meter": "Please attach a photo and enter the water and electric meter numbers",
|
||||||
|
"by_due_date": "By the due date",
|
||||||
|
"sorry_send_data": "Sorry if you have already submitted the data.",
|
||||||
|
"enter_info": "Enter information.",
|
||||||
|
"later": "Later",
|
||||||
|
"loading_news": "Loading",
|
||||||
|
"title_delete_ac": "Are you sure you want to delete your account?",
|
||||||
|
"body_delete_ac": "The request will be reviewed by an administrator and may take up to 30 days to complete.",
|
||||||
|
"contact_admin_for_delete_ac": "Contact admin to delete your account.",
|
||||||
|
"condition": "Condition",
|
||||||
|
"min_rental": "Minimum rental period",
|
||||||
|
"avg_rent": "Average monthly rent",
|
||||||
|
"min_avg_rent": "Minimum average monthly rent",
|
||||||
|
"privilege": "Privileges",
|
||||||
|
"feedback_title": "Thank you for your feedback",
|
||||||
|
"feedback_body": "We will review your suggestions",
|
||||||
|
"suggestion_title": "Title",
|
||||||
|
"failed_coupon": "Failed to apply discount coupon.",
|
||||||
|
"use_coupon" : "Use discount coupon",
|
||||||
|
"paid1": "Paid",
|
||||||
|
"pay_now": "Pay now",
|
||||||
|
"contact_front": "Contact front desk",
|
||||||
|
"outstanding_balance_past_due": "You have an outstanding balance past due.",
|
||||||
|
"point_expire": "Points about to expire.",
|
||||||
|
"not_found_point_expire": "No expiring coupons found.",
|
||||||
|
"rental_discount" : "Rental discount",
|
||||||
|
"product_discount": "Product discount",
|
||||||
|
"redeem_service": "Redeem/Services",
|
||||||
|
"lucky_draw": "Lucky Draw",
|
||||||
|
"no_items": "No items found.",
|
||||||
|
"am": "AM",
|
||||||
|
"pm": "PM",
|
||||||
|
"event_name": "Event Name",
|
||||||
|
"valid_until": "Valid until",
|
||||||
|
"redeem_point": "Redeem points",
|
||||||
|
"confirm_redeem": "Confirm redeem points",
|
||||||
|
"no_chat" : "No chat data.",
|
||||||
|
"enter_pw": "Enter password",
|
||||||
|
"total": "Total",
|
||||||
|
"taken_on": "Taken on",
|
||||||
|
"short_minute": "",
|
||||||
|
"retake_meter_photo": "Retake meter photo",
|
||||||
|
"times": "Time",
|
||||||
|
"admin_project": "Admin Project",
|
||||||
|
"expire_on": "Expire on",
|
||||||
|
"overdue": "Overdue",
|
||||||
|
"incorrect_pw": "Incorrect password",
|
||||||
|
"pw_not_match_and_retry": "New password and confirmation do not match. Please try again.",
|
||||||
|
"no_data": "No Data"
|
||||||
}
|
}
|
||||||
|
@ -198,5 +198,129 @@
|
|||||||
"title": "หัวข้อ",
|
"title": "หัวข้อ",
|
||||||
"update_app": "อัปเดตแอปพลิเคชัน",
|
"update_app": "อัปเดตแอปพลิเคชัน",
|
||||||
"payment_success": "ชำระเงินสำเร็จ",
|
"payment_success": "ชำระเงินสำเร็จ",
|
||||||
"delete_account": "ลบบัญชี"
|
"delete_account": "ลบบัญชี",
|
||||||
|
"move_out": "ย้ายออก",
|
||||||
|
"floor": "ชั้น",
|
||||||
|
"move_out_date": "วันที่ต้องการย้ายออก",
|
||||||
|
"reason_move_out": "เหตุผลที่ย้ายออก",
|
||||||
|
"select_building": "เลือกอาคาร",
|
||||||
|
"select_floor": "เลือกชั้น",
|
||||||
|
"select_room": "เลือกห้องพัก",
|
||||||
|
"select_reason_moveout": "เลือกเหตุผลที่ย้ายออก",
|
||||||
|
"select": "เลือก",
|
||||||
|
"send_confirm_data": "ยืนยันการส่งข้อมูล",
|
||||||
|
"select_title": "เลือกหัวข้อ",
|
||||||
|
"repair_type": "หมวดหมู่ในการซ่อม",
|
||||||
|
"select_repair_type": "เลือกหมวดหมู่",
|
||||||
|
"repair_detail": "รายละเอียดการแจ้งซ่อม",
|
||||||
|
"repair_date": "วันที่สะดวก",
|
||||||
|
"repair_time": "เวลาที่สะดวก",
|
||||||
|
"period": "ช่วงเวลา",
|
||||||
|
"list_name": "ชื่อรายการ",
|
||||||
|
"material_name": "ชื่อวัสดุ",
|
||||||
|
"charge": "ค่าบริการ",
|
||||||
|
"delete_row": "ลบรายการนี้",
|
||||||
|
"add_list": "เพิ่มรายการ",
|
||||||
|
"repair_list": "รายการซ่อม",
|
||||||
|
"list_unit": "รายการ",
|
||||||
|
"summary_service": "ค่าบริการรวม",
|
||||||
|
"send_data_success": "ส่งข้อมูลเรียบร้อยแล้ว",
|
||||||
|
"moveout_success_message": "เราได้รับข้อมูลการขอย้ายออกของท่านแล้ว",
|
||||||
|
"repair_success_message": "เราได้รับข้อมูลการแจ้งซ่อมของท่านแล้ว",
|
||||||
|
"send_data_fail": "ส่งข้อมูลไม่สำเร็จ",
|
||||||
|
"warning_move_out": "หากไม่ได้แจ้งย้ายออกก่อนระยะเวลา 1 เดือน จะไม่ได้รับเงินประกันคืน",
|
||||||
|
"payment_no": "ใบแจ้งหนี้เลขที่",
|
||||||
|
"reward": "Rewards",
|
||||||
|
"history_point": "History Point",
|
||||||
|
"all_reward": "All Rewards",
|
||||||
|
"my_reward": "My Rewards",
|
||||||
|
"coupon": "Coupon",
|
||||||
|
"forget_password": "ลืมรหัสผ่าน",
|
||||||
|
"payment_detail": "ใบตั้งหนี้",
|
||||||
|
"membership_detail": "สิทธิพิเศษแต่ละระดับสมาชิก",
|
||||||
|
"verify_otp": "ยืนยันรหัส OTP",
|
||||||
|
"success": "ทำรายการสำเร็จ",
|
||||||
|
"check_otp_msg": "กรุณาตรวจสอบ OTP ที่ส่งไปยังเบอร์โทรศัพท์ของท่าน",
|
||||||
|
"enter_otp": "กรุณากรอกรหัส OTP",
|
||||||
|
"resend_otp": "ส่งรหัส OTP ได้อีกครั้งใน",
|
||||||
|
"minutes": "นาที",
|
||||||
|
"to_phone_number": "ที่ส่งไปที่เบอร์",
|
||||||
|
"save_photo": "บันทึกรูปสำเร็จ",
|
||||||
|
"confirm_pay": "ยืนยันรายการและชำระเงิน",
|
||||||
|
"coupon_not_found": "ไม่พบรายการคูปอง",
|
||||||
|
"coupon_selected": "คูปองส่วนลดที่เลือก",
|
||||||
|
"choose_coupon": "เลือกคูปองส่วนลด",
|
||||||
|
"confirm_coupon": "ยืนยันการใช้คูปอง",
|
||||||
|
"unsuccessful": "ทำรายการไม่สำเร็จ",
|
||||||
|
"enter_phone_no": "กรุณากรอกเบอร์โทรศัพท์",
|
||||||
|
"receive_otp": "เพื่อรับรหัส OTP ทาง SMS",
|
||||||
|
"back_to": "กลับไปยัง",
|
||||||
|
"credential_invalid" :"ท่านกรอก บัญชีผู้ใช้งาน หรือ รหัสผ่านผิด",
|
||||||
|
"phone_format_invalid": "ท่านกรอกรูปแบบโทรศัพท์ไม่ถูกต้อง",
|
||||||
|
"required_field": "กรุณากรอกข้อมูลให้ครบถ้วน",
|
||||||
|
"pw_not_match": "รหัสผ่านไม่ตรงกัน",
|
||||||
|
"confirm_pw": "กรุณากรอกยืนยันรหัสผ่าน",
|
||||||
|
"from_gallery": "รูปจากแกลอรี่",
|
||||||
|
"take_photo": "ถ่ายรูป",
|
||||||
|
"payment_overdue": "หนี้ค้างชำระเกินกำหนด",
|
||||||
|
"news_canceled": "ถูกยกเลิกเผยแพร่ข่าว",
|
||||||
|
"email_format_invalid": "ท่านกรอกรูปแบบอีเมลไม่ถูกต้อง",
|
||||||
|
"error_occurred": "เกิดข้อผิดพลาด",
|
||||||
|
"try_again": "กรุณาลองอีกครั้ง",
|
||||||
|
"payment_overdue_contact_admin": "รายการค้างชำระของคุณ เกินกำหนดชำระ กรุณาติดต่อสำนักงานบริการลูกค้า",
|
||||||
|
"copy_pw": "คลิกที่รหัสผ่านเพื่อคัดลอก",
|
||||||
|
"for_login": "เพื่อนำไปใช้ในการเข้าสู่ระบบ",
|
||||||
|
"resend_code": "ขอรหัสอีกครั้ง",
|
||||||
|
"confirm_meter": "ยีนยันหมายเลขหน่วย",
|
||||||
|
"process_send_data": "ระบบอาจจะใช้เวลาในการประมวลผลข้อมูล เพื่อเช็คความถูกต้องของข้อมูลที่กรอก",
|
||||||
|
"enter_meter": "กรุณากรอกเลขมิเตอร์",
|
||||||
|
"attach_meter": "กรุณาแนบรูปและกรอกเลขมิเตอร์น้ำไฟ",
|
||||||
|
"by_due_date": "ภายในวันที่",
|
||||||
|
"sorry_send_data": "ขออภัยหากลูกค้าได้ส่งข้อมูลเรียบร้อยแล้ว",
|
||||||
|
"enter_info": "กรอกข้อมูล",
|
||||||
|
"later": "ภายหลัง",
|
||||||
|
"loading_news": "กำลังโหลดข้อมูลข่าว",
|
||||||
|
"title_delete_ac": "ต้องการลบบัญชีใช่หรือไม่?",
|
||||||
|
"body_delete_ac": "คำขอของท่านจะถูกส่งไปยังผู้ดุแลเพื่อตรวจสอบและทำการลบบัญชี อาจใช้เวลาประมาณ 30 วัน",
|
||||||
|
"contact_admin_for_delete_ac": "กรุณาติดต่อผู้ดูแลเพื่อขอลบบัญชี",
|
||||||
|
"condition": "เงื่อนไข",
|
||||||
|
"min_rental": "อายุการเช่าพักอย่างน้อย",
|
||||||
|
"avg_rent": "ค่าเช่าเฉลี่ยต่อเดือน",
|
||||||
|
"min_avg_rent": "ค่าเช่าเฉลี่ยต่อเดือนอย่างน้อย",
|
||||||
|
"privilege": "สิทธิพิเศษ",
|
||||||
|
"feedback_title": "รับข้อเสนอแนะเรียบร้อย",
|
||||||
|
"feedback_body": "ทางเราได้รับคำแนะนำและเรื่องไว้พิจารณาแล้ว ขอบคุณสำหรับความร่วมมือค่ะ",
|
||||||
|
"suggestion_title": "เขียนหัวข้อ",
|
||||||
|
"failed_coupon": "ใช้คูปองส่วนลดไม่สำเร็จ",
|
||||||
|
"use_coupon" : "ใช้คูปองส่วนลด",
|
||||||
|
"paid1": "จ่ายแล้ว",
|
||||||
|
"pay_now": "ชำระเงินตอนนี้",
|
||||||
|
"contact_front": "กรุณาติดต่อเจ้าหน้าที่",
|
||||||
|
"outstanding_balance_past_due": "คุณมีหนี้ค้างชำระเกินกำหนดแล้ว",
|
||||||
|
"point_expire": "คะแนนที่กำลังจะหมดอายุ",
|
||||||
|
"not_found_point_expire": "ไม่พบรายการคูปองที่กำลังจะหมดอายุ",
|
||||||
|
"rental_discount" : "ส่วนลดค่าเช่า",
|
||||||
|
"product_discount": "ส่วนลดสินค้า",
|
||||||
|
"redeem_service": "แลกสินค้า/บริการ",
|
||||||
|
"lucky_draw": "ชิงโชค",
|
||||||
|
"no_items": "ไม่มีสินค้า",
|
||||||
|
"am": "ช่วงเช้า",
|
||||||
|
"pm": "ช่วงเย็น",
|
||||||
|
"event_name": "ชื่อกิจกรรม",
|
||||||
|
"valid_until": "ใช้ได้ถึงวันที่",
|
||||||
|
"redeem_point": "แลกแต้ม",
|
||||||
|
"confirm_redeem": "ยืนยันการแลกแต้ม",
|
||||||
|
"no_chat" : "ไม่มีข้อมูลการสนทนา",
|
||||||
|
"enter_pw": "กรุณากรอกรหัสผ่าน",
|
||||||
|
"total": "รวม",
|
||||||
|
"taken_on": "ถ่ายเมื่อวันที่",
|
||||||
|
"short_minute": "น.",
|
||||||
|
"retake_meter_photo": "ถ่ายภาพมิเตอร์อีกครั้ง",
|
||||||
|
"times": "เวลา",
|
||||||
|
"admin_project": "แอดมินโครงการ",
|
||||||
|
"expire_on": "หมดอายุ",
|
||||||
|
"overdue": "เกินกำหนดชำระ",
|
||||||
|
"incorrect_pw": "รหัสผ่านไม่ถูกต้อง",
|
||||||
|
"pw_not_match_and_retry": "รหัสผ่านใหม่ไม่ตรงกับรหัสยืนยัน\nกรุณาลองอีกครั้ง",
|
||||||
|
"no_data": "ไม่มีรายการข้อมูล"
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ let store
|
|||||||
|
|
||||||
const Api = create({
|
const Api = create({
|
||||||
// baseURL: Config.API_BASE_URL_PROD,
|
// baseURL: Config.API_BASE_URL_PROD,
|
||||||
baseURL: Config.API_BASE_URL_POWER_CONDO_DEV,
|
baseURL: Config.API_BASE_URL_POWER_CONDO_PROD,
|
||||||
headers: {
|
headers: {
|
||||||
'X-Frame-Options': 'sameorigin',
|
'X-Frame-Options': 'sameorigin',
|
||||||
'X-App-Version': DeviceInfo.getVersion(),
|
'X-App-Version': DeviceInfo.getVersion(),
|
||||||
@ -27,7 +27,7 @@ export function setBaseUrl (baseUrl) {
|
|||||||
|
|
||||||
export function setBaseUrlByServerMode (mode) {
|
export function setBaseUrlByServerMode (mode) {
|
||||||
// Api.setBaseURL(mode === 'production' ? Config.API_BASE_URL_PROD : Config.API_BASE_URL_DEV)
|
// Api.setBaseURL(mode === 'production' ? Config.API_BASE_URL_PROD : Config.API_BASE_URL_DEV)
|
||||||
Api.setBaseURL(mode === 'production' ? Config.API_BASE_URL_PROD : Config.API_BASE_URL_POWER_CONDO_DEV)
|
Api.setBaseURL(mode === 'production' ? Config.API_BASE_URL_POWER_CONDO_PROD : Config.API_BASE_URL_POWER_CONDO_DEV)
|
||||||
}
|
}
|
||||||
|
|
||||||
DeviceInfo.getDeviceName().then(name => {
|
DeviceInfo.getDeviceName().then(name => {
|
||||||
|
@ -334,8 +334,13 @@ const MainTitle = connect(state => ({
|
|||||||
userText = `${name[0]}`;
|
userText = `${name[0]}`;
|
||||||
projectName = props.user.project_name
|
projectName = props.user.project_name
|
||||||
}
|
}
|
||||||
return <View>
|
return <View style={{display: 'flex', flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', width: '89%'}}>
|
||||||
<Text style={{ fontSize: 16, color: '#FFFFFF', marginLeft: 10, marginTop: 3, marginBottom: 5 }}>{t('charoensin_asset')} {projectName}</Text>
|
<View>
|
||||||
|
<Text style={{ fontSize: 16, color: '#FFFFFF', marginLeft: 10, marginTop: 3, marginBottom: 5 }}>{t('charoensin_asset')} {projectName}</Text>
|
||||||
|
</View>
|
||||||
|
<View>
|
||||||
|
<Text style={{color: 'white'}}>3.0</Text>
|
||||||
|
</View>
|
||||||
</View>
|
</View>
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -417,6 +422,8 @@ const AppStack = createStackNavigator({
|
|||||||
screen: BottomTab,
|
screen: BottomTab,
|
||||||
navigationOptions: ({navigation}) => {
|
navigationOptions: ({navigation}) => {
|
||||||
let langIcon
|
let langIcon
|
||||||
|
console.log('locale >>> ', locale());
|
||||||
|
|
||||||
switch (locale()) {
|
switch (locale()) {
|
||||||
case 'th':
|
case 'th':
|
||||||
langIcon = require('../../assets/images/locale_th.png')
|
langIcon = require('../../assets/images/locale_th.png')
|
||||||
|
@ -251,14 +251,14 @@ class BillScreen extends Component {
|
|||||||
onPress={() => {
|
onPress={() => {
|
||||||
this.state.isCanPay ?
|
this.state.isCanPay ?
|
||||||
data.status === 'pending' && this.props.navigation.navigate('PaymentDetail',{payment_id:data.payment_id})
|
data.status === 'pending' && this.props.navigation.navigate('PaymentDetail',{payment_id:data.payment_id})
|
||||||
: Alert.alert(null, 'รายการค้างชำระของคุณ เกินกำหนดชำระ กรุณาติดต่อสำนักงานบริการลูกค้า',[{text: t('ok')}])
|
: Alert.alert(null, t('payment_overdue_contact_admin'),[{text: t('ok')}])
|
||||||
}}>
|
}}>
|
||||||
<Text style={{ color: data.status === 'pending' ? 'white' : 'rgba(0, 0, 0, 0.25)'}}>{data.status === 'pending' ? 'ดูเพิ่มเติม' : 'จ่ายแล้ว'}</Text>
|
<Text style={{ color: data.status === 'pending' ? 'white' : 'rgba(0, 0, 0, 0.25)'}}>{data.status === 'pending' ? t('view_more') : t('paid1')}</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
}else{
|
}else{
|
||||||
if(isOverdue){
|
if(isOverdue){
|
||||||
return <View>
|
return <View>
|
||||||
<Text style={{ color: 'red',borderWidth:1,borderColor:'#00000040',borderRadius:5,paddingHorizontal:6}}>{'เกินกำหนดชำระ'}</Text>
|
<Text style={{ color: 'red',borderWidth:1,borderColor:'#00000040',borderRadius:5,paddingHorizontal:6}}>{t('overdue')}</Text>
|
||||||
</View>
|
</View>
|
||||||
}else{
|
}else{
|
||||||
return <TouchableOpacity style={{backgroundColor:data.status === 'pending' ? '#145EB3' : 'white',
|
return <TouchableOpacity style={{backgroundColor:data.status === 'pending' ? '#145EB3' : 'white',
|
||||||
@ -269,9 +269,9 @@ class BillScreen extends Component {
|
|||||||
onPress={() => {
|
onPress={() => {
|
||||||
this.state.isCanPay ?
|
this.state.isCanPay ?
|
||||||
data.status === 'pending' && this.props.navigation.navigate('PaymentDetail',{payment_id:data.payment_id})
|
data.status === 'pending' && this.props.navigation.navigate('PaymentDetail',{payment_id:data.payment_id})
|
||||||
: Alert.alert(null, 'รายการค้างชำระของคุณ เกินกำหนดชำระ กรุณาติดต่อสำนักงานบริการลูกค้า',[{text: t('ok')}])
|
: Alert.alert(null, t('payment_overdue_contact_admin'),[{text: t('ok')}])
|
||||||
}}>
|
}}>
|
||||||
<Text style={{ color: data.status === 'pending' ? 'white' : 'rgba(0, 0, 0, 0.25)'}}>{data.status === 'pending' ? 'ดูเพิ่มเติม' : 'จ่ายแล้ว'}</Text>
|
<Text style={{ color: data.status === 'pending' ? 'white' : 'rgba(0, 0, 0, 0.25)'}}>{data.status === 'pending' ? t('view_more') : t('paid1')}</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -308,7 +308,7 @@ class BillScreen extends Component {
|
|||||||
onPress={ data.status === 'complete' ? () => {} : () => { this.props.navigation.navigate('PaymentDetail',{payment_id: data.id, room: data.room_id})}}
|
onPress={ data.status === 'complete' ? () => {} : () => { this.props.navigation.navigate('PaymentDetail',{payment_id: data.id, room: data.room_id})}}
|
||||||
disabled={ data.status === 'complete'}
|
disabled={ data.status === 'complete'}
|
||||||
>
|
>
|
||||||
<Text style={{ color: 'white' }}>{data.status === 'complete' ? 'จ่ายแล้ว' : 'ดูเพิ่มเติม'}</Text>
|
<Text style={{ color: 'white' }}>{data.status === 'complete' ? t('paid1') : t('view_more')}</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
|
|
||||||
|
|
||||||
@ -392,68 +392,12 @@ class BillScreen extends Component {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
<View style={{ height:50,width:'100%', backgroundColor:'#8BC34A',alignItems: 'flex-end',justifyContent:'center' }}>
|
<View style={{ height:50,width:'100%', backgroundColor:'#8BC34A',alignItems: 'flex-end',justifyContent:'center' }}>
|
||||||
<Text style={{ color: 'white',marginRight:15,fontSize:18 }}>รวม {data.total_cost} {t('baht')}</Text>
|
<Text style={{ color: 'white',marginRight:15,fontSize:18 }}>{t('total')} {data.total_cost} {t('baht')}</Text>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
getDueDate (date) {
|
|
||||||
if(date){
|
|
||||||
let d = moment(date).format('D')
|
|
||||||
let m = moment(date).format('MM')
|
|
||||||
let y = parseInt(moment(date).format('Y')) + 543
|
|
||||||
let new_month = 'ม.ค.';
|
|
||||||
let new_date = d + ' ' + new_month + ' ' + y;
|
|
||||||
switch (m) {
|
|
||||||
case '01':
|
|
||||||
new_month = 'ม.ค.';
|
|
||||||
break;
|
|
||||||
case '02':
|
|
||||||
new_month = 'ก.พ.';
|
|
||||||
break;
|
|
||||||
case '03':
|
|
||||||
new_month = 'มี.ค.';
|
|
||||||
break;
|
|
||||||
case '04':
|
|
||||||
new_month = 'เม.ย.';
|
|
||||||
break;
|
|
||||||
case '05':
|
|
||||||
new_month = 'พ.ค.';
|
|
||||||
break;
|
|
||||||
case '06':
|
|
||||||
new_month = 'มิ.ย.';
|
|
||||||
break;
|
|
||||||
case '07':
|
|
||||||
new_month = 'ก.ค.';
|
|
||||||
break;
|
|
||||||
case '08':
|
|
||||||
new_month = 'ส.ค.';
|
|
||||||
break;
|
|
||||||
case '09':
|
|
||||||
new_month = 'ก.ย.';
|
|
||||||
break;
|
|
||||||
case '10':
|
|
||||||
new_month = 'ต.ค.';
|
|
||||||
break;
|
|
||||||
case '11':
|
|
||||||
new_month = 'พ.ย.';
|
|
||||||
break;
|
|
||||||
case '12':
|
|
||||||
new_month = 'ธ.ค.';
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
new_month = 'ม.ค.';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
new_date = d + ' ' + new_month + ' ' + y;
|
|
||||||
return new_date;
|
|
||||||
}else{
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
handlePrevious = () => {
|
handlePrevious = () => {
|
||||||
let currentIndex = this.state.currentIndex - 1;
|
let currentIndex = this.state.currentIndex - 1;
|
||||||
|
|
||||||
@ -504,14 +448,14 @@ class BillScreen extends Component {
|
|||||||
<View style={{ padding: 16,paddingBottom: 5,paddingTop:10 , borderRadius: 5}}>
|
<View style={{ padding: 16,paddingBottom: 5,paddingTop:10 , borderRadius: 5}}>
|
||||||
<Text style={{ color: 'white', fontSize: 18 }}>{t('room')} {item.room}</Text>
|
<Text style={{ color: 'white', fontSize: 18 }}>{t('room')} {item.room}</Text>
|
||||||
<Text style={{ color: 'rgba(255, 255, 255, 0.65)', fontSize: 14 }}>{item.project && item.project.name}</Text>
|
<Text style={{ color: 'rgba(255, 255, 255, 0.65)', fontSize: 14 }}>{item.project && item.project.name}</Text>
|
||||||
<Text style={{ color: 'white' }}>{t('outstanding_balance')} <Text style={{ color: 'white' ,fontSize:18 }}>{item.total_cost} {t('baht')}</Text></Text>
|
<Text style={{ color: 'white' }}>{t('outstanding_balance')} <Text style={{ color: 'white' ,fontSize:16 }}>{item.total_cost} {t('baht')}</Text></Text>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
{
|
{
|
||||||
item.due_at !== null
|
item.due_at !== null
|
||||||
? (
|
? (
|
||||||
<View style={{height:24,backgroundColor: '#FF2D55',justifyContent:'center',alignItems:'center'}}>
|
<View style={{backgroundColor: '#FF2D55',justifyContent:'center',alignItems:'center', paddingHorizontal: 5}}>
|
||||||
<Text style={{ fontSize: 12, color: 'white'}}>{t('please_pay_within')} {this.getDueDate(item.due_at)}</Text>
|
<Text style={{ fontSize: 12, color: 'white'}}>{t('please_pay_within')} {this.props.lang === 'th' ? moment(item.due_at).add(543, 'year').format('DD MMM YYYY') : moment(item.due_at).format('DD MMM YYYY')}</Text>
|
||||||
</View>
|
</View>
|
||||||
)
|
)
|
||||||
: null
|
: null
|
||||||
@ -647,7 +591,8 @@ const styles = StyleSheet.create({
|
|||||||
})
|
})
|
||||||
|
|
||||||
const mapDisPatchToProps = state => ({
|
const mapDisPatchToProps = state => ({
|
||||||
user: state.app.user
|
user: state.app.user,
|
||||||
|
lang: state.app.lang
|
||||||
})
|
})
|
||||||
|
|
||||||
export default connect(mapDisPatchToProps)(BillScreen)
|
export default connect(mapDisPatchToProps)(BillScreen)
|
||||||
|
@ -97,7 +97,7 @@ class PaymentScreen extends Component {
|
|||||||
uri => {
|
uri => {
|
||||||
console.log(' ------------> ',uri)
|
console.log(' ------------> ',uri)
|
||||||
return CameraRoll.save(uri, { type: 'photo' })
|
return CameraRoll.save(uri, { type: 'photo' })
|
||||||
.then(Alert.alert(null, 'บันทึกรูปสำเร็จ',[{text: t('ok')}]))
|
.then(Alert.alert(null, t('save_photo'),[{text: t('ok')}]))
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import { payment_detail, removeRentalDiscount } from "../../api/UserApi";
|
|||||||
import IndicatorLoading from "../../components/IndicatorLoading";
|
import IndicatorLoading from "../../components/IndicatorLoading";
|
||||||
import IconMaterial from 'react-native-vector-icons/MaterialCommunityIcons'
|
import IconMaterial from 'react-native-vector-icons/MaterialCommunityIcons'
|
||||||
import { FlatList, NavigationEvents } from "react-navigation";
|
import { FlatList, NavigationEvents } from "react-navigation";
|
||||||
|
import { t } from "../../utils/i18n";
|
||||||
|
|
||||||
class PaymentConfirm extends Component {
|
class PaymentConfirm extends Component {
|
||||||
constructor(props){
|
constructor(props){
|
||||||
@ -57,7 +58,7 @@ class PaymentConfirm extends Component {
|
|||||||
return (
|
return (
|
||||||
<View style={{display: 'flex', flexDirection: 'row', justifyContent: 'space-between', marginBottom: 8}}>
|
<View style={{display: 'flex', flexDirection: 'row', justifyContent: 'space-between', marginBottom: 8}}>
|
||||||
<Text style={[styles.mainText, {color: 'black'}]}>{item.cost_name}</Text>
|
<Text style={[styles.mainText, {color: 'black'}]}>{item.cost_name}</Text>
|
||||||
<Text style={[styles.mainText, {color: '#7CBB33', fontWeight: '500'}]}>{parseFloat(item.total).toLocaleString()} บาท</Text>
|
<Text style={[styles.mainText, {color: '#7CBB33', fontWeight: '500'}]}>{parseFloat(item.total).toLocaleString()} {t('baht')}</Text>
|
||||||
</View>
|
</View>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -102,19 +103,19 @@ class PaymentConfirm extends Component {
|
|||||||
<View style={{padding: 16, flex: 0.9}}>
|
<View style={{padding: 16, flex: 0.9}}>
|
||||||
<View style={styles.detialContainer}>
|
<View style={styles.detialContainer}>
|
||||||
<View style={styles.borderBottom}>
|
<View style={styles.borderBottom}>
|
||||||
<Text style={[styles.mainText, {fontSize: 18, textAlign: 'center'}]}>ใบตั้งหนี้</Text>
|
<Text style={[styles.mainText, {fontSize: 18, textAlign: 'center'}]}>{t('payment_detail')}</Text>
|
||||||
{
|
{
|
||||||
this.state.payment && this.state.payment.detail.length > 0 &&
|
this.state.payment && this.state.payment.detail.length > 0 &&
|
||||||
<Text style={[styles.mainText, {fontSize: 14, textAlign: 'center'}]}>
|
<Text style={[styles.mainText, {fontSize: 14, textAlign: 'center'}]}>
|
||||||
ห้อง {this.state.room ? this.state.room : ''}
|
{t('room')} {this.state.room ? this.state.room : ''}
|
||||||
</Text>
|
</Text>
|
||||||
}
|
}
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
<View style={styles.borderBottom}>
|
<View style={styles.borderBottom}>
|
||||||
<View style={{flexDirection: 'row', display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: 8}}>
|
<View style={{flexDirection: 'row', display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: 8}}>
|
||||||
<Text style={[styles.mainText, {color: '#269A21'}]}>รายการ</Text>
|
<Text style={[styles.mainText, {color: '#269A21'}]}>{t('list_unit')}</Text>
|
||||||
<Text style={[styles.mainText, {color: '#269A21'}]}>จำนวนเงิน</Text>
|
<Text style={[styles.mainText, {color: '#269A21'}]}>{t('amount')}</Text>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -130,19 +131,19 @@ class PaymentConfirm extends Component {
|
|||||||
</View>
|
</View>
|
||||||
|
|
||||||
<View style={{flexDirection: 'row', justifyContent: 'flex-end', marginTop: 10, paddingHorizontal: 10}}>
|
<View style={{flexDirection: 'row', justifyContent: 'flex-end', marginTop: 10, paddingHorizontal: 10}}>
|
||||||
<Text style={[styles.mainText, {textAlign: 'right',}]}>รวม</Text>
|
<Text style={[styles.mainText, {textAlign: 'right',}]}>{t('total')}</Text>
|
||||||
<Text style={[styles.mainText, {fontWeight: '500', paddingLeft: 10}]}>
|
<Text style={[styles.mainText, {fontWeight: '500', paddingLeft: 10}]}>
|
||||||
{this.state.payment && this.state.payment.total_cost ? parseFloat(this.state.payment.total_cost).toLocaleString() : 0} บาท
|
{this.state.payment && this.state.payment.total_cost ? parseFloat(this.state.payment.total_cost).toLocaleString() : 0} {t('baht')}
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
<View style={[styles.useCoupon]}>
|
<View style={[styles.useCoupon]}>
|
||||||
<Text style={[styles.mainText, {fontSize: 16}]}>ใช้คูปองส่วนลด </Text>
|
<Text style={[styles.mainText, {fontSize: 16}]}>{t('use_coupon')} </Text>
|
||||||
<View style={{flexDirection: 'row', alignItems: 'center'}}>
|
<View style={{flexDirection: 'row', alignItems: 'center'}}>
|
||||||
<Text style={[styles.mainText, {fontSize: 16, marginRight: 5}]}>
|
<Text style={[styles.mainText, {fontSize: 16, marginRight: 5}]}>
|
||||||
{
|
{
|
||||||
this.state.payment && this.state.payment.coupon && this.state.payment.coupon.value ? this.state.payment.coupon.value : 0
|
this.state.payment && this.state.payment.coupon && this.state.payment.coupon.value ? this.state.payment.coupon.value : 0
|
||||||
} บาท
|
} {t('baht')}
|
||||||
</Text>
|
</Text>
|
||||||
<TouchableOpacity onPress={() => this.removeCoupon()}>
|
<TouchableOpacity onPress={() => this.removeCoupon()}>
|
||||||
<IconMaterial name="close-circle-outline" size={18} color="#FF2D55"/>
|
<IconMaterial name="close-circle-outline" size={18} color="#FF2D55"/>
|
||||||
@ -156,7 +157,7 @@ class PaymentConfirm extends Component {
|
|||||||
<TouchableOpacity style={{backgroundColor: '#145EB3', paddingVertical: 12, borderRadius: 5}}
|
<TouchableOpacity style={{backgroundColor: '#145EB3', paddingVertical: 12, borderRadius: 5}}
|
||||||
onPress={() => this.props.navigation.navigate('Payment', {payment_id: this.state.payment_id })}
|
onPress={() => this.props.navigation.navigate('Payment', {payment_id: this.state.payment_id })}
|
||||||
>
|
>
|
||||||
<Text style={{color: 'white', textAlign: 'center', fontFamily: 'Prompt-Regular'}}>ยืนยันรายการและชำระเงิน</Text>
|
<Text style={{color: 'white', textAlign: 'center', fontFamily: 'Prompt-Regular'}}>{t('confirm_pay')}</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
</View>
|
</View>
|
||||||
</ImageBackground>
|
</ImageBackground>
|
||||||
|
@ -6,6 +6,7 @@ import IndicatorLoading from '../../components/IndicatorLoading';
|
|||||||
import IconFontawesome from 'react-native-vector-icons/FontAwesome'
|
import IconFontawesome from 'react-native-vector-icons/FontAwesome'
|
||||||
import IconMaterial from "react-native-vector-icons/MaterialCommunityIcons";
|
import IconMaterial from "react-native-vector-icons/MaterialCommunityIcons";
|
||||||
import { NavigationEvents } from 'react-navigation';
|
import { NavigationEvents } from 'react-navigation';
|
||||||
|
import { t } from '../../utils/i18n';
|
||||||
|
|
||||||
class PaymentDetail extends Component {
|
class PaymentDetail extends Component {
|
||||||
constructor(props){
|
constructor(props){
|
||||||
@ -84,7 +85,7 @@ class PaymentDetail extends Component {
|
|||||||
return (
|
return (
|
||||||
<View style={{display: 'flex', flexDirection: 'row', justifyContent: 'space-between', marginBottom: 8}}>
|
<View style={{display: 'flex', flexDirection: 'row', justifyContent: 'space-between', marginBottom: 8}}>
|
||||||
<Text style={[styles.mainText, {color: 'black'}]}>{item.cost_name}</Text>
|
<Text style={[styles.mainText, {color: 'black'}]}>{item.cost_name}</Text>
|
||||||
<Text style={[styles.mainText, {color: '#7CBB33', fontWeight: '500'}]}>{parseFloat(item.total).toLocaleString()} บาท</Text>
|
<Text style={[styles.mainText, {color: '#7CBB33', fontWeight: '500'}]}>{parseFloat(item.total).toLocaleString()} {t('baht')}</Text>
|
||||||
</View>
|
</View>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -116,7 +117,7 @@ class PaymentDetail extends Component {
|
|||||||
}, 3000)
|
}, 3000)
|
||||||
})
|
})
|
||||||
}else {
|
}else {
|
||||||
let message = res.data && res.data.message ? res.data.message : 'ใช้คูปองส่วนลดไม่สำเร็จ'
|
let message = res.data && res.data.message ? res.data.message : t('failed_coupon')
|
||||||
Alert.alert(message)
|
Alert.alert(message)
|
||||||
this.setState({
|
this.setState({
|
||||||
isLoading: false
|
isLoading: false
|
||||||
@ -168,19 +169,19 @@ class PaymentDetail extends Component {
|
|||||||
<View style={{padding: 16, flex: 0.9}}>
|
<View style={{padding: 16, flex: 0.9}}>
|
||||||
<ScrollView contentContainerStyle={styles.detialContainer}>
|
<ScrollView contentContainerStyle={styles.detialContainer}>
|
||||||
<View style={styles.borderBottom}>
|
<View style={styles.borderBottom}>
|
||||||
<Text style={[styles.mainText, {fontSize: 18, textAlign: 'center'}]}>ใบตั้งหนี้</Text>
|
<Text style={[styles.mainText, {fontSize: 18, textAlign: 'center'}]}>{t('payment_detail')}</Text>
|
||||||
{
|
{
|
||||||
this.state.payment && this.state.payment.detail.length > 0 &&
|
this.state.payment && this.state.payment.detail.length > 0 &&
|
||||||
<Text style={[styles.mainText, {fontSize: 14, textAlign: 'center'}]}>
|
<Text style={[styles.mainText, {fontSize: 14, textAlign: 'center'}]}>
|
||||||
ห้อง {room ? room : ''}
|
{t('room')} {room ? room : ''}
|
||||||
</Text>
|
</Text>
|
||||||
}
|
}
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
<View style={styles.borderBottom}>
|
<View style={styles.borderBottom}>
|
||||||
<View style={{flexDirection: 'row', display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: 8}}>
|
<View style={{flexDirection: 'row', display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: 8}}>
|
||||||
<Text style={[styles.mainText, {color: '#269A21'}]}>รายการ</Text>
|
<Text style={[styles.mainText, {color: '#269A21'}]}>{t('list_unit')}</Text>
|
||||||
<Text style={[styles.mainText, {color: '#269A21'}]}>จำนวนเงิน</Text>
|
<Text style={[styles.mainText, {color: '#269A21'}]}>{t('amount')}</Text>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -196,9 +197,9 @@ class PaymentDetail extends Component {
|
|||||||
</View>
|
</View>
|
||||||
|
|
||||||
<View style={{flexDirection: 'row', justifyContent: 'flex-end', marginTop: 10, paddingHorizontal: 10}}>
|
<View style={{flexDirection: 'row', justifyContent: 'flex-end', marginTop: 10, paddingHorizontal: 10}}>
|
||||||
<Text style={[styles.mainText, {textAlign: 'right',}]}>รวม</Text>
|
<Text style={[styles.mainText, {textAlign: 'right',}]}>{t('total')}</Text>
|
||||||
<Text style={[styles.mainText, {fontWeight: '500', paddingLeft: 10}]}>
|
<Text style={[styles.mainText, {fontWeight: '500', paddingLeft: 10}]}>
|
||||||
{this.state.payment && this.state.payment.total_cost ? parseFloat(this.state.payment.total_cost).toLocaleString() : 0} บาท
|
{this.state.payment && this.state.payment.total_cost ? parseFloat(this.state.payment.total_cost).toLocaleString() : 0} {t('baht')}
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
@ -206,16 +207,16 @@ class PaymentDetail extends Component {
|
|||||||
!this.state.couponSelected &&
|
!this.state.couponSelected &&
|
||||||
<View style={styles.useCouponContainer}>
|
<View style={styles.useCouponContainer}>
|
||||||
<View>
|
<View>
|
||||||
<Text style={[styles.mainText, {fontSize: 16}]}>ใช้คูปองส่วนลด</Text>
|
<Text style={[styles.mainText, {fontSize: 16}]}>{t('use_coupon')}</Text>
|
||||||
{
|
{
|
||||||
this.state.coupon_list?.length === 0 && <Text style={[styles.mainText, {color: 'red', fontSize: 10}]}>ไม่พบรายการคูปอง</Text>
|
this.state.coupon_list?.length === 0 && <Text style={[styles.mainText, {color: 'red', fontSize: 10}]}>{t('coupon_not_found')}</Text>
|
||||||
}
|
}
|
||||||
</View>
|
</View>
|
||||||
<TouchableOpacity style={{backgroundColor: this.state.coupon_list?.length === 0 ? 'lightgrey' : '#269A21', borderRadius: 5}}
|
<TouchableOpacity style={{backgroundColor: this.state.coupon_list?.length === 0 ? 'lightgrey' : '#269A21', borderRadius: 5}}
|
||||||
onPress={() => this.visibleCoupon()}
|
onPress={() => this.visibleCoupon()}
|
||||||
disabled={this.state.coupon_list?.length === 0}
|
disabled={this.state.coupon_list?.length === 0}
|
||||||
>
|
>
|
||||||
<Text style={[styles.mainText, {color: 'white', paddingHorizontal: 25, paddingVertical: 8}]}>เลือก</Text>
|
<Text style={[styles.mainText, {color: 'white', paddingHorizontal: 25, paddingVertical: 8}]}>{t('select')}</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
</View>
|
</View>
|
||||||
}
|
}
|
||||||
@ -223,14 +224,14 @@ class PaymentDetail extends Component {
|
|||||||
{
|
{
|
||||||
this.state.couponSelected &&
|
this.state.couponSelected &&
|
||||||
<View>
|
<View>
|
||||||
<Text style={[styles.mainText, {fontSize: 16, marginVertical: 10}]}>คูปองส่วนลดที่เลือก</Text>
|
<Text style={[styles.mainText, {fontSize: 16, marginVertical: 10}]}>{t('coupon_selected')}</Text>
|
||||||
<View style={styles.couponCard}>
|
<View style={styles.couponCard}>
|
||||||
<View style={{flexDirection: 'row', alignItems: 'center'}}>
|
<View style={{flexDirection: 'row', alignItems: 'center'}}>
|
||||||
<FastImage source={{uri: this.state.couponSelected.image_reward}} style={{width: 50, height: 50 }} resizeMode={'contain'}/>
|
<FastImage source={{uri: this.state.couponSelected.image_reward}} style={{width: 50, height: 50 }} resizeMode={'contain'}/>
|
||||||
<View style={{marginLeft: 10}}>
|
<View style={{marginLeft: 10}}>
|
||||||
<View style={{flexDirection: 'row', justifyContent: 'space-between'}}>
|
<View style={{flexDirection: 'row', justifyContent: 'space-between'}}>
|
||||||
<Text style={[styles.mainText, {fontSize: 16, marginRight: 5}]}>{this.state.couponSelected.reward_name}</Text>
|
<Text style={[styles.mainText, {fontSize: 16, marginRight: 5}]}>{this.state.couponSelected.reward_name}</Text>
|
||||||
<Text style={[styles.mainText, {fontSize: 16}]}>{this.state.couponSelected.value} {this.state.couponSelected.discount_type === 'percent' ? '%' : 'บาท'}</Text>
|
<Text style={[styles.mainText, {fontSize: 16}]}>{this.state.couponSelected.value} {this.state.couponSelected.discount_type === 'percent' ? '%' : t('baht')}</Text>
|
||||||
</View>
|
</View>
|
||||||
<Text style={[styles.mainText, {color: '#FF2D55'}]}>{this.state.couponSelected.detail}</Text>
|
<Text style={[styles.mainText, {color: '#FF2D55'}]}>{this.state.couponSelected.detail}</Text>
|
||||||
</View>
|
</View>
|
||||||
@ -251,7 +252,7 @@ class PaymentDetail extends Component {
|
|||||||
// onPress={() => this.props.navigation.navigate('PaymentConfirm', {payment_id: this.state.new_payment_id ? this.state.new_payment_id : this.state.payment_id, room: this.state.room})}
|
// onPress={() => this.props.navigation.navigate('PaymentConfirm', {payment_id: this.state.new_payment_id ? this.state.new_payment_id : this.state.payment_id, room: this.state.room})}
|
||||||
onPress={() => this.props.navigation.navigate('Payment', {payment_id: this.state.payment_id })}
|
onPress={() => this.props.navigation.navigate('Payment', {payment_id: this.state.payment_id })}
|
||||||
>
|
>
|
||||||
<Text style={{color: 'white', textAlign: 'center', fontFamily: 'Prompt-Regular'}}>ยืนยันรายการและชำระเงิน</Text>
|
<Text style={{color: 'white', textAlign: 'center', fontFamily: 'Prompt-Regular'}}>{t('confirm_pay')}</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
@ -263,7 +264,7 @@ class PaymentDetail extends Component {
|
|||||||
<View style={styles.couponBox}>
|
<View style={styles.couponBox}>
|
||||||
<View style={{flexDirection: 'row', justifyContent: 'space-between'}}>
|
<View style={{flexDirection: 'row', justifyContent: 'space-between'}}>
|
||||||
<Text style={[styles.mainText, {fontSize: 18, marginBottom: 10}]}>
|
<Text style={[styles.mainText, {fontSize: 18, marginBottom: 10}]}>
|
||||||
เลือกคูปองส่วนลด
|
{t('choose_coupon')}
|
||||||
</Text>
|
</Text>
|
||||||
<TouchableOpacity onPress={() => this.setState({modalVisible: false, couponHighlight: null})}>
|
<TouchableOpacity onPress={() => this.setState({modalVisible: false, couponHighlight: null})}>
|
||||||
<IconFontawesome name="close" color="#269A21" size={16}/>
|
<IconFontawesome name="close" color="#269A21" size={16}/>
|
||||||
@ -280,7 +281,7 @@ class PaymentDetail extends Component {
|
|||||||
<View style={{marginLeft: 10, flex: 1}}>
|
<View style={{marginLeft: 10, flex: 1}}>
|
||||||
<View style={{flexDirection: 'row', flex: 1, justifyContent: 'space-between'}}>
|
<View style={{flexDirection: 'row', flex: 1, justifyContent: 'space-between'}}>
|
||||||
<Text style={[styles.mainText, {fontSize: 16, flex: 0.7}]}>{item.reward_name}</Text>
|
<Text style={[styles.mainText, {fontSize: 16, flex: 0.7}]}>{item.reward_name}</Text>
|
||||||
<Text style={[styles.mainText, {fontSize: 16, flex: 0.3}]}>{item.value} {item.discount_type === 'percent' ? '%' : 'บาท'} </Text>
|
<Text style={[styles.mainText, {fontSize: 16, flex: 0.3}]}>{item.value} {item.discount_type === 'percent' ? '%' : t('baht')} </Text>
|
||||||
</View>
|
</View>
|
||||||
<Text style={[styles.mainText, {color: '#FF2D55'}]}>{item.detail}</Text>
|
<Text style={[styles.mainText, {color: '#FF2D55'}]}>{item.detail}</Text>
|
||||||
</View>
|
</View>
|
||||||
@ -291,7 +292,7 @@ class PaymentDetail extends Component {
|
|||||||
keyExtractor={(item, index) => 'coupon_' + index}
|
keyExtractor={(item, index) => 'coupon_' + index}
|
||||||
ListEmptyComponent={() =>
|
ListEmptyComponent={() =>
|
||||||
<View style={{flex: 1, alignItems: 'center', justifyContent: 'center', margin: 16,padding:16,borderRadius:5,backgroundColor:'white'}}>
|
<View style={{flex: 1, alignItems: 'center', justifyContent: 'center', margin: 16,padding:16,borderRadius:5,backgroundColor:'white'}}>
|
||||||
<Text style={{fontSize: 16}}> ไม่พบรายการคูปอง </Text>
|
<Text style={{fontSize: 16}}> {t('coupon_not_found')} </Text>
|
||||||
</View>
|
</View>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
@ -306,7 +307,7 @@ class PaymentDetail extends Component {
|
|||||||
disabled={this.state.coupon_list.length === 0 || this.state.couponHighlight === null}
|
disabled={this.state.coupon_list.length === 0 || this.state.couponHighlight === null}
|
||||||
>
|
>
|
||||||
<Text style={[styles.mainText, {color: 'white', paddingVertical: 12, textAlign: 'center'}]}>
|
<Text style={[styles.mainText, {color: 'white', paddingVertical: 12, textAlign: 'center'}]}>
|
||||||
ยืนยันการใช้คูปอง
|
{t('confirm_coupon')}
|
||||||
</Text>
|
</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ class ForgetPasswordScreen extends Component {
|
|||||||
forgetPassword(this.state.mobile)
|
forgetPassword(this.state.mobile)
|
||||||
.then(res => {
|
.then(res => {
|
||||||
if(res.data && res.data.success){
|
if(res.data && res.data.success){
|
||||||
Alert.alert('ทำรายการสำเร็จ', 'กรุณาตรวจสอบ OTP ที่ส่งไปยังเบอร์โทรศัพท์ของท่าน', [
|
Alert.alert(t('success'), t('check_otp_msg'), [
|
||||||
{
|
{
|
||||||
text: 'OK',
|
text: 'OK',
|
||||||
onPress: () => {
|
onPress: () => {
|
||||||
@ -37,7 +37,7 @@ class ForgetPasswordScreen extends Component {
|
|||||||
])
|
])
|
||||||
}else {
|
}else {
|
||||||
let message = res && res.data && res.data.message ? res.data.message : '';
|
let message = res && res.data && res.data.message ? res.data.message : '';
|
||||||
Alert.alert('ทำรายการไม่สำเร็จ', message)
|
Alert.alert(t('unsuccessful'), message)
|
||||||
this.setState({
|
this.setState({
|
||||||
isLoading: false
|
isLoading: false
|
||||||
})
|
})
|
||||||
@ -65,13 +65,13 @@ class ForgetPasswordScreen extends Component {
|
|||||||
<View style={{flex: 1, flexDirection: 'column', justifyContent: 'center'}}>
|
<View style={{flex: 1, flexDirection: 'column', justifyContent: 'center'}}>
|
||||||
<View>
|
<View>
|
||||||
<Text style={[styles.textStyle, {fontSize: 28, fontFamily: 'Prompt-Bold'}]}>
|
<Text style={[styles.textStyle, {fontSize: 28, fontFamily: 'Prompt-Bold'}]}>
|
||||||
ลืมรหัสผ่าน
|
{t('forget_password')}
|
||||||
</Text>
|
</Text>
|
||||||
<Text style={[styles.textStyle, {fontSize: 18, fontFamily: 'Prompt-Regular'}]}>
|
<Text style={[styles.textStyle, {fontSize: 18, fontFamily: 'Prompt-Regular'}]}>
|
||||||
กรุณากรอกเบอร์โทรศัพท์
|
{t('enter_phone_no')}
|
||||||
</Text>
|
</Text>
|
||||||
<Text style={[styles.textStyle, {fontSize: 18, fontFamily: 'Prompt-Regular'}]}>
|
<Text style={[styles.textStyle, {fontSize: 18, fontFamily: 'Prompt-Regular'}]}>
|
||||||
เพื่อรับรหัส OTP ทาง SMS
|
{t('receive_otp')}
|
||||||
</Text>
|
</Text>
|
||||||
{/* <Text style={[styles.textStyle, {fontSize: 18}]}>
|
{/* <Text style={[styles.textStyle, {fontSize: 18}]}>
|
||||||
กรุณากรอกอีเมล ระบบจะส่งลิงก์
|
กรุณากรอกอีเมล ระบบจะส่งลิงก์
|
||||||
@ -119,9 +119,9 @@ class ForgetPasswordScreen extends Component {
|
|||||||
</View>
|
</View>
|
||||||
|
|
||||||
<View style={{position: 'absolute', bottom: 20, flex: 1, width: '100%', flexDirection: 'row', justifyContent:'center'}}>
|
<View style={{position: 'absolute', bottom: 20, flex: 1, width: '100%', flexDirection: 'row', justifyContent:'center'}}>
|
||||||
<Text style={{color: 'white', textAlign: 'center', marginRight: 10, fontSize: 14, fontFamily: 'Prompt-Regular'}}>กลับไปยัง</Text>
|
<Text style={{color: 'white', textAlign: 'center', marginRight: 10, fontSize: 14, fontFamily: 'Prompt-Regular'}}>{t('back_to')}</Text>
|
||||||
<TouchableOpacity onPress={() => this.props.navigation.navigate('HomeScreen')}>
|
<TouchableOpacity onPress={() => this.props.navigation.navigate('HomeScreen')}>
|
||||||
<Text style={{color: 'white', fontFamily: 'Prompt-Bold', fontSize: 14}}>ลงชื่อเข้าใช้งาน</Text>
|
<Text style={{color: 'white', fontFamily: 'Prompt-Bold', fontSize: 14}}>{t('login')}</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
</View>
|
</View>
|
||||||
</KeyboardAvoidingView>
|
</KeyboardAvoidingView>
|
||||||
|
@ -4,6 +4,7 @@ import LinearGradient from "react-native-linear-gradient";
|
|||||||
import { BackgroundImage } from "../../components/BackgroundImage";
|
import { BackgroundImage } from "../../components/BackgroundImage";
|
||||||
import AntdIcon from 'react-native-vector-icons/AntDesign'
|
import AntdIcon from 'react-native-vector-icons/AntDesign'
|
||||||
import Toast from "react-native-toast-message";
|
import Toast from "react-native-toast-message";
|
||||||
|
import { t } from "../../utils/i18n";
|
||||||
|
|
||||||
class PasswordCode extends Component {
|
class PasswordCode extends Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
@ -32,9 +33,9 @@ class PasswordCode extends Component {
|
|||||||
}}>
|
}}>
|
||||||
<BackgroundImage>
|
<BackgroundImage>
|
||||||
<View style={styles.container}>
|
<View style={styles.container}>
|
||||||
<Text style={[styles.fontPromtBold, {color: 'white', fontSize: 30, marginBottom: 10}]}>รหัสผ่านใหม่</Text>
|
<Text style={[styles.fontPromtBold, {color: 'white', fontSize: 30, marginBottom: 10}]}>{t('new_password')}</Text>
|
||||||
<Text style={{color: 'white', fontSize: 18, fontFamily: 'Prompt-Regular'}}>คลิกที่รหัสผ่านเพื่อคัดลอก</Text>
|
<Text style={{color: 'white', fontSize: 18, fontFamily: 'Prompt-Regular'}}>{t('copy_pw')}</Text>
|
||||||
<Text style={{color: 'white', fontSize: 18, marginBottom: 50, fontFamily: 'Prompt-Regular'}}>เพื่อนำไปใช้ในการเข้าสู่ระบบ</Text>
|
<Text style={{color: 'white', fontSize: 18, marginBottom: 50, fontFamily: 'Prompt-Regular'}}>{t('for_login')}</Text>
|
||||||
|
|
||||||
<TouchableOpacity onPress={this.handleCopy}>
|
<TouchableOpacity onPress={this.handleCopy}>
|
||||||
<View style={styles.code_form}>
|
<View style={styles.code_form}>
|
||||||
@ -47,9 +48,9 @@ class PasswordCode extends Component {
|
|||||||
</View>
|
</View>
|
||||||
|
|
||||||
<View style={{position: 'absolute', bottom: 20, flex: 1, width: '100%', flexDirection: 'row', justifyContent:'center'}}>
|
<View style={{position: 'absolute', bottom: 20, flex: 1, width: '100%', flexDirection: 'row', justifyContent:'center'}}>
|
||||||
<Text style={{color: 'white', textAlign: 'center', marginRight: 10, fontSize: 14, fontFamily: 'Prompt-Regular'}}>กลับไปยัง</Text>
|
<Text style={{color: 'white', textAlign: 'center', marginRight: 10, fontSize: 14, fontFamily: 'Prompt-Regular'}}>{t('back_to')}</Text>
|
||||||
<TouchableOpacity onPress={() => this.props.navigation.navigate('Login')}>
|
<TouchableOpacity onPress={() => this.props.navigation.navigate('Login')}>
|
||||||
<Text style={{color: 'white', fontFamily: 'Prompt-Bold', fontSize: 14}}>ลงชื่อเข้าใช้งาน</Text>
|
<Text style={{color: 'white', fontFamily: 'Prompt-Bold', fontSize: 14}}>{t('login')}</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
</View>
|
</View>
|
||||||
</BackgroundImage>
|
</BackgroundImage>
|
||||||
|
@ -71,7 +71,7 @@ class VerifyOTP extends Component {
|
|||||||
})
|
})
|
||||||
}else {
|
}else {
|
||||||
let message = res && res.data && res.data.message ? res.data.message : ''
|
let message = res && res.data && res.data.message ? res.data.message : ''
|
||||||
Alert.alert('ทำรายการไม่สำเร็จ', message)
|
Alert.alert(t('unsuccessful'), message)
|
||||||
this.setState({
|
this.setState({
|
||||||
is_loading: false
|
is_loading: false
|
||||||
})
|
})
|
||||||
@ -88,7 +88,7 @@ class VerifyOTP extends Component {
|
|||||||
forgetPassword(this.state.mobile)
|
forgetPassword(this.state.mobile)
|
||||||
.then(res => {
|
.then(res => {
|
||||||
if(res.data && res.data.success){
|
if(res.data && res.data.success){
|
||||||
Alert.alert('ทำรายการสำเร็จ', 'กรุณาตรวจสอบ OTP ที่ส่งไปยังเบอร์โทรศัพท์ของท่าน', [
|
Alert.alert(t('success'), t('check_otp_msg'), [
|
||||||
{
|
{
|
||||||
text: 'OK',
|
text: 'OK',
|
||||||
onPress: () => {
|
onPress: () => {
|
||||||
@ -105,7 +105,7 @@ class VerifyOTP extends Component {
|
|||||||
])
|
])
|
||||||
}else {
|
}else {
|
||||||
let message = res && res.data && res.data.message ? res.data.message : '';
|
let message = res && res.data && res.data.message ? res.data.message : '';
|
||||||
Alert.alert('ทำรายการไม่สำเร็จ', message)
|
Alert.alert(t('unsuccessful'), message)
|
||||||
this.setState({
|
this.setState({
|
||||||
is_loading: false
|
is_loading: false
|
||||||
})
|
})
|
||||||
@ -129,9 +129,9 @@ class VerifyOTP extends Component {
|
|||||||
behavior={Platform.OS == 'ios' ? "padding" : ""} enabled>
|
behavior={Platform.OS == 'ios' ? "padding" : ""} enabled>
|
||||||
<View style={styles.container}>
|
<View style={styles.container}>
|
||||||
<View style={{flex: 0.7, flexDirection: 'column', alignItems: 'center', justifyContent: 'center'}}>
|
<View style={{flex: 0.7, flexDirection: 'column', alignItems: 'center', justifyContent: 'center'}}>
|
||||||
<Text style={[styles.fontPromtBold, {color: 'white', fontSize: 30}]}>ยืนยันรหัส OTP</Text>
|
<Text style={[styles.fontPromtBold, {color: 'white', fontSize: 30}]}>{t('verify_otp')}</Text>
|
||||||
<Text style={[styles.fontPromtRegular, {color: 'white', fontSize: 18, textAlign: 'center'}]}>กรุณากรอกรหัส OTP</Text>
|
<Text style={[styles.fontPromtRegular, {color: 'white', fontSize: 18, textAlign: 'center'}]}>{t('enter_otp')}</Text>
|
||||||
<Text style={[styles.fontPromtRegular, {color: 'white', fontSize: 18, marginBottom: 50, textAlign: 'center'}]}>ที่ส่งไปที่เบอร์ {this.state.mobile}</Text>
|
<Text style={[styles.fontPromtRegular, {color: 'white', fontSize: 18, marginBottom: 50, textAlign: 'center'}]}>{t('to_phone_number')} {this.state.mobile}</Text>
|
||||||
|
|
||||||
<CustomInput
|
<CustomInput
|
||||||
onChangeText={(e) => {
|
onChangeText={(e) => {
|
||||||
@ -151,12 +151,12 @@ class VerifyOTP extends Component {
|
|||||||
{
|
{
|
||||||
this.state.minuteLeft > 0 || this.state.secondLeft > 0 ?
|
this.state.minuteLeft > 0 || this.state.secondLeft > 0 ?
|
||||||
<Text style={[styles.fontPromtRegular, {color: 'white', marginTop: 30, fontSize: 17}]}>
|
<Text style={[styles.fontPromtRegular, {color: 'white', marginTop: 30, fontSize: 17}]}>
|
||||||
ส่งรหัส OTP ได้อีกครั้งใน {this.state.minuteLeft >= 10 ? this.state.minuteLeft : '0' + this.state.minuteLeft}:
|
{t('resend_otp')} {this.state.minuteLeft >= 10 ? this.state.minuteLeft : '0' + this.state.minuteLeft}:
|
||||||
{this.state.secondLeft >= 10 ? this.state.secondLeft : '0' + this.state.secondLeft} นาที
|
{this.state.secondLeft >= 10 ? this.state.secondLeft : '0' + this.state.secondLeft} {t('minutes')}
|
||||||
</Text>
|
</Text>
|
||||||
:
|
:
|
||||||
<TouchableOpacity style={{marginTop: 30}} onPress={this.resentRequestOTP}>
|
<TouchableOpacity style={{marginTop: 30}} onPress={this.resentRequestOTP}>
|
||||||
<Text style={[styles.fontPromtRegular, {color: 'white', fontSize: 17}]}>ขอรหัสอีกครั้ง</Text>
|
<Text style={[styles.fontPromtRegular, {color: 'white', fontSize: 17}]}>{t('resend_code')}</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -96,17 +96,20 @@ class LoginScreen extends Component {
|
|||||||
}
|
}
|
||||||
this.setState({ isLoading: false })
|
this.setState({ isLoading: false })
|
||||||
} else {
|
} else {
|
||||||
setTimeout(() => {
|
this.setState({
|
||||||
Alert.alert(null, 'ท่านกรอก บัญชีผู้ใช้งาน หรือ รหัสผ่านผิด')
|
isLoading: false
|
||||||
}, 600);
|
}, () => {
|
||||||
this.setState({isLoading:false})
|
Alert.alert(null, t('credential_invalid'))
|
||||||
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
Alert.alert(null, 'ท่านกรอกรูปแบบโทรศัพท์ไม่ถูกต้อง')
|
Alert.alert(null, t('phone_format_invalid'))
|
||||||
|
this.setState({ isLoading: false })
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Alert.alert(null, 'กรุณากรอกข้อมูลให้ครบถ้วน')
|
Alert.alert(null, t('required_field'))
|
||||||
|
this.setState({ isLoading: false })
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -29,20 +29,20 @@ class RegisterScreen extends Component {
|
|||||||
console.log('mobile ===> ', this.state.user)
|
console.log('mobile ===> ', this.state.user)
|
||||||
if (this.state.user.mobile && this.state.user.password && this.state.user.password && this.state.user.password_confirm) {
|
if (this.state.user.mobile && this.state.user.password && this.state.user.password && this.state.user.password_confirm) {
|
||||||
if (regex.test(this.state.user.mobile) === false) {
|
if (regex.test(this.state.user.mobile) === false) {
|
||||||
Alert.alert(null, 'ท่านกรอกรูปแบบโทรศัพท์ไม่ถูกต้อง')
|
Alert.alert(null, t('phone_format_invalid'))
|
||||||
} else if (this.state.user.password !== this.state.user.password_confirm){
|
} else if (this.state.user.password !== this.state.user.password_confirm){
|
||||||
Alert.alert(null, 'รหัสผ่านไม่ตรงกัน')
|
Alert.alert(null, t('pw_not_match'))
|
||||||
} else {
|
} else {
|
||||||
this.props.appSetUser(this.state.user)
|
this.props.appSetUser(this.state.user)
|
||||||
this.props.navigation.navigate('RegisterFormLogin');
|
this.props.navigation.navigate('RegisterFormLogin');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(!this.state.user.mobile){
|
if(!this.state.user.mobile){
|
||||||
Alert.alert(null, 'กรุณากรอกเบอร์โทรศัพท์')
|
Alert.alert(null, t('enter_phone_no'))
|
||||||
} else if(!this.state.user.password){
|
} else if(!this.state.user.password){
|
||||||
Alert.alert(null, 'กรุณากรอกรหัสผ่าน')
|
Alert.alert(null, t('enter_pw'))
|
||||||
} else if(!this.state.user.password_confirm){
|
} else if(!this.state.user.password_confirm){
|
||||||
Alert.alert(null, 'กรุณากรอกยืนยันรหัสผ่าน')
|
Alert.alert(null, t('confirm_pw'))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,8 @@ import CustomDatePicker from '../room/CustomDatePicker';
|
|||||||
import {t} from '../../utils/i18n'
|
import {t} from '../../utils/i18n'
|
||||||
|
|
||||||
let ACTIONSHEET_BUTTONS = [
|
let ACTIONSHEET_BUTTONS = [
|
||||||
'ถ่ายรูป',
|
t('take_photo'),
|
||||||
'รูปจากแกลอรี่',
|
t('from_gallery'),
|
||||||
t('cancel')
|
t('cancel')
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -182,8 +182,7 @@ class RegisterFormLoginScreen extends Component {
|
|||||||
this.props.navigation.navigate('RegisterProfile', {image_url: this.state.image_url})
|
this.props.navigation.navigate('RegisterProfile', {image_url: this.state.image_url})
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
console.log('กรุณากรอกข้อมูลให้ครบถ้วน')
|
Alert.alert(null, t('required_field'))
|
||||||
Alert.alert(null, 'กรุณากรอกข้อมูลให้ครบถ้วน')
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ export default class Meter extends Component {
|
|||||||
<Text style={styles.textFliatlist}>{item.type == 'ค่าน้ำ' ? t('water_bill') : t('electric_unit')}</Text>
|
<Text style={styles.textFliatlist}>{item.type == 'ค่าน้ำ' ? t('water_bill') : t('electric_unit')}</Text>
|
||||||
</View>
|
</View>
|
||||||
<View style={[styles.viewTextFlatlist,{marginVertical:5}]}>
|
<View style={[styles.viewTextFlatlist,{marginVertical:5}]}>
|
||||||
<Text style={styles.textFliatlist}>{t('unit')} {item.amount} {t('unit_price')}</Text>
|
<Text style={styles.textFliatlist}>{t('unit')} {item.amount} {t('units')}</Text>
|
||||||
<Text style={[styles.textFliatlist,{marginLeft: 20}]}>{t('amount')} <Text style={[styles.textFliatlist,{color:'#269A21'}]}>{item.cost}</Text> {t('baht')} </Text>
|
<Text style={[styles.textFliatlist,{marginLeft: 20}]}>{t('amount')} <Text style={[styles.textFliatlist,{color:'#269A21'}]}>{item.cost}</Text> {t('baht')} </Text>
|
||||||
</View>
|
</View>
|
||||||
<View style={styles.viewTextFlatlist}>
|
<View style={styles.viewTextFlatlist}>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { View, Modal, TouchableOpacity } from 'react-native';
|
import { View, Modal, TouchableOpacity } from 'react-native';
|
||||||
import Text from '../../components/Text';
|
import Text from '../../components/Text';
|
||||||
|
import { t } from '../../utils/i18n';
|
||||||
|
|
||||||
export default class PopupMeter extends Component {
|
export default class PopupMeter extends Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
@ -20,8 +21,8 @@ export default class PopupMeter extends Component {
|
|||||||
}}>
|
}}>
|
||||||
<View style={{flex:1,backgroundColor:'#00000080',justifyContent:'center',alignItems:'center'}}>
|
<View style={{flex:1,backgroundColor:'#00000080',justifyContent:'center',alignItems:'center'}}>
|
||||||
<View style={{width: '90%',backgroundColor:'white',borderRadius:5,padding:17}}>
|
<View style={{width: '90%',backgroundColor:'white',borderRadius:5,padding:17}}>
|
||||||
<Text style={{color:'#2C7C0B',fontSize: 18,}}>ยีนยันหมายเลขหน่วย</Text>
|
<Text style={{color:'#2C7C0B',fontSize: 18,}}>{t('confirm_meter')}</Text>
|
||||||
<Text style={{color:'#00000080',fontSize: 14,marginVertical: 15,}}>ระบบอาจจะใช้เวลาในการประมวลผลข้อมูล เพื่อเช็คความถูกต้องของข้อมูลที่กรอก</Text>
|
<Text style={{color:'#00000080',fontSize: 14,marginVertical: 15,}}>{t('process_send_data')}</Text>
|
||||||
<View style={{flexDirection:'row',justifyContent:'flex-end'}}>
|
<View style={{flexDirection:'row',justifyContent:'flex-end'}}>
|
||||||
<TouchableOpacity style={{paddingHorizontal:15,}} onPress={() => {this.props.onCancel()}}>
|
<TouchableOpacity style={{paddingHorizontal:15,}} onPress={() => {this.props.onCancel()}}>
|
||||||
<Text style={{color:'#00000040',fontSize: 14,}}>Cancel</Text>
|
<Text style={{color:'#00000040',fontSize: 14,}}>Cancel</Text>
|
||||||
|
@ -4,6 +4,7 @@ import Image from 'react-native-fast-image'
|
|||||||
import Text from '../../components/Text';
|
import Text from '../../components/Text';
|
||||||
import Icon from '../../components/Icon'
|
import Icon from '../../components/Icon'
|
||||||
import moment from 'moment'
|
import moment from 'moment'
|
||||||
|
import { t } from '../../utils/i18n';
|
||||||
|
|
||||||
export default class SaveViewMeter extends Component {
|
export default class SaveViewMeter extends Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
@ -20,13 +21,13 @@ export default class SaveViewMeter extends Component {
|
|||||||
<View style={{justifyContent:'center',alignItems:'center'}}>
|
<View style={{justifyContent:'center',alignItems:'center'}}>
|
||||||
<Image source={{uri:this.props.ImageUri}} resizeMode={'contain'} style={{borderRadius:5,height: 184,width:'100%'}}/>
|
<Image source={{uri:this.props.ImageUri}} resizeMode={'contain'} style={{borderRadius:5,height: 184,width:'100%'}}/>
|
||||||
</View>
|
</View>
|
||||||
<Text style={{color:'black',fontSize:14,textAlign:'center',marginVertical: 16,}}>ถ่ายเมื่อวันที่ {moment().format('DD/MM/YYYY HH:mm')} น.</Text>
|
<Text style={{color:'black',fontSize:14,textAlign:'center',marginVertical: 16,}}>{t('taken_on')} {moment().format('DD/MM/YYYY HH:mm')} {t('short_minute')}</Text>
|
||||||
<TouchableOpacity style={{height: 40,width: '100%',backgroundColor:'#007AFF',justifyContent:'center',alignItems:'center',borderRadius:5,flexDirection:'row'}}
|
<TouchableOpacity style={{height: 40,width: '100%',backgroundColor:'#007AFF',justifyContent:'center',alignItems:'center',borderRadius:5,flexDirection:'row'}}
|
||||||
onPress={this.props.onTakeCamera}>
|
onPress={this.props.onTakeCamera}>
|
||||||
<Icon nane={'ic_outline_camera'} size={22} color={'#FFFFFF'}/>
|
<Icon nane={'ic_outline_camera'} size={22} color={'#FFFFFF'}/>
|
||||||
<Text style={{color:'white'}}>ถ่ายภาพมิเตอร์{this.props.TypeName}อีกครั้ง</Text>
|
<Text style={{color:'white'}}>{t('retake_meter_photo')}</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
<Text style={{color:'#00420A',marginVertical: 16,fontSize:14}}>กรุณากรอกเลขมิเตอร์{this.props.TypeName}</Text>
|
<Text style={{color:'#00420A',marginVertical: 16,fontSize:14}}>{t('enter_meter')}</Text>
|
||||||
<TextInput
|
<TextInput
|
||||||
style={{height: 48, backgroundColor: '#FFFFFF', borderRadius:24,paddingHorizontal:16}}
|
style={{height: 48, backgroundColor: '#FFFFFF', borderRadius:24,paddingHorizontal:16}}
|
||||||
onChangeText={(text) => this.props.TextChanged(text)}
|
onChangeText={(text) => this.props.TextChanged(text)}
|
||||||
@ -39,7 +40,7 @@ export default class SaveViewMeter extends Component {
|
|||||||
disabled={this.props.canConfirm ? false : true}
|
disabled={this.props.canConfirm ? false : true}
|
||||||
onPress={() => {this.props.Confirm()}}>
|
onPress={() => {this.props.Confirm()}}>
|
||||||
<Icon nane={'ic_outline_camera'} size={22} color={'#FFFFFF'}/>
|
<Icon nane={'ic_outline_camera'} size={22} color={'#FFFFFF'}/>
|
||||||
<Text style={{color:'white'}}>ยืนยันหมายเลขหน่วย</Text>
|
<Text style={{color:'white'}}>{t('confirm_meter')}</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
@ -59,21 +59,21 @@ function PopupNotiElectric({isVisible, onPress, onCancel, onPressLater, pending_
|
|||||||
<View style={styles.popupNoti}>
|
<View style={styles.popupNoti}>
|
||||||
<View style={{width: '100%', alignItems: 'center'}}>
|
<View style={{width: '100%', alignItems: 'center'}}>
|
||||||
<Icon name='ic_shop_receive' color='#FF9500' size={70} style={{marginBottom: 10, width: '100%', textAlign: 'center'}}/>
|
<Icon name='ic_shop_receive' color='#FF9500' size={70} style={{marginBottom: 10, width: '100%', textAlign: 'center'}}/>
|
||||||
<Text style={[{color: '#FF9500', marginBottom: 10, fontSize: 16}, styles.TextFont]}>คุณมียอดค้างชำระเงิน</Text>
|
<Text style={[{color: '#FF9500', marginBottom: 10, fontSize: 16}, styles.TextFont]}>{t('have_outstanding_balance')}</Text>
|
||||||
<View style={styles.costText}>
|
<View style={styles.costText}>
|
||||||
<Text style={[{fontSize: 25, fontWeight: '500', textAlign: 'center'}, styles.TextFont]}>{pending_payment}</Text>
|
<Text style={[{fontSize: 25, fontWeight: '500', textAlign: 'center'}, styles.TextFont]}>{pending_payment}</Text>
|
||||||
<Text style={[{color: '#8A8A8F', fontSize: 18, fontWeight: '400', position: 'absolute', right: 15, bottom: 8}, styles.TextFont]}>บาท</Text>
|
<Text style={[{color: '#8A8A8F', fontSize: 18, fontWeight: '400', position: 'absolute', right: 15, bottom: 8}, styles.TextFont]}>{t('baht')}</Text>
|
||||||
</View>
|
</View>
|
||||||
<Text style={[{color: '#FF9500', marginBottom: 10, textAlign: 'center' , fontSize: 14}, styles.TextFont]}>{t('please_pay_within')} {moment(due_at_payment).add('543', 'y').format('DD/MM/YYYY')}</Text>
|
<Text style={[{color: '#FF9500', marginBottom: 10, textAlign: 'center' , fontSize: 14}, styles.TextFont]}>{t('please_pay_within')} {moment(due_at_payment).add('543', 'y').format('DD/MM/YYYY')}</Text>
|
||||||
|
|
||||||
<TouchableOpacity onPress={onPress} style={{width: '100%', marginTop: 10}}>
|
<TouchableOpacity onPress={onPress} style={{width: '100%', marginTop: 10}}>
|
||||||
<Badge style={styles.badgeSubmit}>
|
<Badge style={styles.badgeSubmit}>
|
||||||
<Text style={[{color: 'white', paddingVertical: 10, fontSize: 16}, styles.TextFont]}>ชำระเงินตอนนี้</Text>
|
<Text style={[{color: 'white', paddingVertical: 10, fontSize: 16}, styles.TextFont]}>{t('pay_now')}</Text>
|
||||||
</Badge>
|
</Badge>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
<TouchableOpacity onPress={onPressLater} style={{width: '100%'}}>
|
<TouchableOpacity onPress={onPressLater} style={{width: '100%'}}>
|
||||||
<Badge style={[styles.badgeCancel, {paddingTop: 5}]}>
|
<Badge style={[styles.badgeCancel, {paddingTop: 5}]}>
|
||||||
<Text style={[{color: 'rgba(0, 0, 0, 0.5)', fontSize: 16}, styles.TextFont]}>ภายหลัง</Text>
|
<Text style={[{color: 'rgba(0, 0, 0, 0.5)', fontSize: 16}, styles.TextFont]}>{t('later')}</Text>
|
||||||
</Badge>
|
</Badge>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
</View>
|
</View>
|
||||||
@ -91,14 +91,14 @@ function PopupOverDue({isVisible, onPress, onCancel, onPressLater, pending_payme
|
|||||||
<TouchableOpacity onPress={onPressLater} style={{position: 'absolute', right: 0, top: -10}}>
|
<TouchableOpacity onPress={onPressLater} style={{position: 'absolute', right: 0, top: -10}}>
|
||||||
<Text style={[{color: 'rgba(0, 0, 0, 0.5)', fontSize: 20}, styles.TextFont]}>{t('close')}</Text>
|
<Text style={[{color: 'rgba(0, 0, 0, 0.5)', fontSize: 20}, styles.TextFont]}>{t('close')}</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
<Text style={[{color: '#FF2D55', marginBottom: 10, fontSize: 16}, styles.TextFont]}>หนี้ค้างชำระเกินกำหนด</Text>
|
<Text style={[{color: '#FF2D55', marginBottom: 10, fontSize: 16}, styles.TextFont]}>{t('payment_overdue')}</Text>
|
||||||
<View style={styles.costText}>
|
<View style={styles.costText}>
|
||||||
<Text style={[{fontSize: 25, fontWeight: '500', textAlign: 'center'}, styles.TextFont]}>{pending_payment}</Text>
|
<Text style={[{fontSize: 25, fontWeight: '500', textAlign: 'center'}, styles.TextFont]}>{pending_payment}</Text>
|
||||||
<Text style={[{color: '#8A8A8F', fontSize: 18, fontWeight: '400', position: 'absolute', right: 15, bottom: 8}, styles.TextFont]}>บาท</Text>
|
<Text style={[{color: '#8A8A8F', fontSize: 18, fontWeight: '400', position: 'absolute', right: 15, bottom: 8}, styles.TextFont]}>{t('baht')}</Text>
|
||||||
</View>
|
</View>
|
||||||
<Text style={[{color: '#FF2D55', fontSize: 14, textAlign: 'center'}, styles.TextFont]}>คุณมีหนี้ค้างชำระเกินกำหนดแล้ว</Text>
|
<Text style={[{color: '#FF2D55', fontSize: 14, textAlign: 'center'}, styles.TextFont]}>{t('outstanding_balance_past_due')}</Text>
|
||||||
{/*<Text style={[{color: '#FF2D55', fontSize: 14, textAlign: 'center'}, styles.TextFont]}>กรุณาดำเนินการชำระหนี้ตอนนี้</Text>*/}
|
{/*<Text style={[{color: '#FF2D55', fontSize: 14, textAlign: 'center'}, styles.TextFont]}>กรุณาดำเนินการชำระหนี้ตอนนี้</Text>*/}
|
||||||
<Text style={[{color: '#FF2D55', marginBottom: 15, fontSize: 14, textAlign: 'center'}, styles.TextFont]}>กรุณาติดต่อเจ้าหน้าที่</Text>
|
<Text style={[{color: '#FF2D55', marginBottom: 15, fontSize: 14, textAlign: 'center'}, styles.TextFont]}>{t('contact_front')}</Text>
|
||||||
|
|
||||||
<TouchableOpacity onPress={onPress} style={{width: '100%'}}>
|
<TouchableOpacity onPress={onPress} style={{width: '100%'}}>
|
||||||
<Badge style={styles.badgeSubmit}>
|
<Badge style={styles.badgeSubmit}>
|
||||||
@ -123,18 +123,18 @@ function PopupNotiFillInMeter({isVisible, onPress, onCancel, onPressLater, notif
|
|||||||
<View style={{width: '100%', alignItems: 'center'}}>
|
<View style={{width: '100%', alignItems: 'center'}}>
|
||||||
{/*<Icon name='ic_shop_receive' color='#00420A' size={60} style={{marginBottom: 10}}/>*/}
|
{/*<Icon name='ic_shop_receive' color='#00420A' size={60} style={{marginBottom: 10}}/>*/}
|
||||||
<Image source={require('../../../assets/images/meter_noti_image.png')} style={{width: 70, height: 70 }} resizeMode={'contain'}/>
|
<Image source={require('../../../assets/images/meter_noti_image.png')} style={{width: 70, height: 70 }} resizeMode={'contain'}/>
|
||||||
<Text style={[{color: '#00420A', marginVertical: 5, fontSize: 16}, styles.TextFont]}>กรุณาแนบรูปและกรอกเลขมิเตอร์น้ำไฟ</Text>
|
<Text style={[{color: '#00420A', marginVertical: 5, fontSize: 16}, styles.TextFont]}>{t('attach_meter')}</Text>
|
||||||
<Text style={[{color: '#00420A', marginVertical: 5, fontSize: 13, textAlign: 'center'}, styles.TextFont]}>ภายในวันที่ {notified_meter_at}</Text>
|
<Text style={[{color: '#00420A', marginVertical: 5, fontSize: 13, textAlign: 'center'}, styles.TextFont]}>{t('by_due_date')} {notified_meter_at}</Text>
|
||||||
<Text style={[{color: '#00420A', marginVertical: 5, fontSize: 13, textAlign: 'center', marginBottom: 15}, styles.TextFont]}>ขออภัยหากลูกค้าได้ส่งข้อมูลเรียบร้อยแล้ว</Text>
|
<Text style={[{color: '#00420A', marginVertical: 5, fontSize: 13, textAlign: 'center', marginBottom: 15}, styles.TextFont]}>{t('sorry_send_data')}</Text>
|
||||||
|
|
||||||
<TouchableOpacity onPress={onPress} style={{width: '100%'}}>
|
<TouchableOpacity onPress={onPress} style={{width: '100%'}}>
|
||||||
<Badge style={styles.badgeSubmit}>
|
<Badge style={styles.badgeSubmit}>
|
||||||
<Text style={[{color: 'white', paddingVertical: 10, fontSize: 16}, styles.TextFont]}>กรอกข้อมูล</Text>
|
<Text style={[{color: 'white', paddingVertical: 10, fontSize: 16}, styles.TextFont]}>{t('enter_info')}</Text>
|
||||||
</Badge>
|
</Badge>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
<TouchableOpacity onPress={onPressLater}>
|
<TouchableOpacity onPress={onPressLater}>
|
||||||
<Badge style={[styles.badgeCancel, {paddingTop: 5}]}>
|
<Badge style={[styles.badgeCancel, {paddingTop: 5}]}>
|
||||||
<Text style={[{color: 'rgba(0, 0, 0, 0.5)', fontSize: 16}, styles.TextFont]}>ภายหลัง</Text>
|
<Text style={[{color: 'rgba(0, 0, 0, 0.5)', fontSize: 16}, styles.TextFont]}>{t('later')}</Text>
|
||||||
</Badge>
|
</Badge>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
</View>
|
</View>
|
||||||
@ -156,15 +156,15 @@ class NewsScreen extends Component {
|
|||||||
},
|
},
|
||||||
interval: null,
|
interval: null,
|
||||||
news_head: [{
|
news_head: [{
|
||||||
title: 'กำลังโหลดข้อมูลข่าว',
|
title: t('loading_news'),
|
||||||
content: 'กำลังโหลดข้อมูลข่าว',
|
content: t('loading_news'),
|
||||||
date: 'กำลังโหลดข้อมูลข่าว',
|
date: t('loading_news'),
|
||||||
is_new: false
|
is_new: false
|
||||||
}],
|
}],
|
||||||
new_all: [{
|
new_all: [{
|
||||||
title: 'กำลังโหลดข้อมูลข่าว',
|
title: t('loading_news'),
|
||||||
content: 'กำลังโหลดข้อมูลข่าว',
|
content: t('loading_news'),
|
||||||
date: 'กำลังโหลดข้อมูลข่าว',
|
date: t('loading_news'),
|
||||||
is_new: false
|
is_new: false
|
||||||
}],
|
}],
|
||||||
due_at: '',
|
due_at: '',
|
||||||
@ -331,15 +331,15 @@ class NewsScreen extends Component {
|
|||||||
loadPage: 1,
|
loadPage: 1,
|
||||||
last_page: 1,
|
last_page: 1,
|
||||||
news_head: [{
|
news_head: [{
|
||||||
title: 'กำลังโหลดข้อมูลข่าว',
|
title: t('loading_news'),
|
||||||
content: 'กำลังโหลดข้อมูลข่าว',
|
content: t('loading_news'),
|
||||||
date: 'กำลังโหลดข้อมูลข่าว',
|
date: t('loading_news'),
|
||||||
is_new: false
|
is_new: false
|
||||||
}],
|
}],
|
||||||
new_all: [{
|
new_all: [{
|
||||||
title: 'กำลังโหลดข้อมูลข่าว',
|
title: t('loading_news'),
|
||||||
content: 'กำลังโหลดข้อมูลข่าว',
|
content: t('loading_news'),
|
||||||
date: 'กำลังโหลดข้อมูลข่าว',
|
date: t('loading_news'),
|
||||||
is_new: false
|
is_new: false
|
||||||
}],
|
}],
|
||||||
}, () => {
|
}, () => {
|
||||||
|
@ -64,7 +64,7 @@ export default class NewsDetailScreen extends Component {
|
|||||||
})
|
})
|
||||||
}else {
|
}else {
|
||||||
console.log('ถูกยกเลิกเผยแพร่ข่าว')
|
console.log('ถูกยกเลิกเผยแพร่ข่าว')
|
||||||
Alert.alert('','ถูกยกเลิกเผยแพร่ข่าว', [{
|
Alert.alert('',t('news_canceled'), [{
|
||||||
text: t('ok'),
|
text: t('ok'),
|
||||||
onPress: () => {
|
onPress: () => {
|
||||||
console.log('press')
|
console.log('press')
|
||||||
@ -76,7 +76,7 @@ export default class NewsDetailScreen extends Component {
|
|||||||
}])
|
}])
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
Alert.alert('','ถูกยกเลิกเผยแพร่ข่าว', [{
|
Alert.alert('',t('news_canceled'), [{
|
||||||
text: t('ok'),
|
text: t('ok'),
|
||||||
onPress: () => {
|
onPress: () => {
|
||||||
this.setState({
|
this.setState({
|
||||||
|
@ -260,7 +260,7 @@ class NotificationScreen extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getTypeNoti(item) {
|
getTypeNoti(item) {
|
||||||
let type = 'ข่าวใหม่';
|
let type = t('latest_news');
|
||||||
switch (item.source_type) {
|
switch (item.source_type) {
|
||||||
case 'news':
|
case 'news':
|
||||||
case 'general':
|
case 'general':
|
||||||
|
@ -61,15 +61,15 @@ export default class MessageObjectDetail extends Component {
|
|||||||
statusText(status){
|
statusText(status){
|
||||||
switch(status){
|
switch(status){
|
||||||
case 'PENDING':
|
case 'PENDING':
|
||||||
return 'รอรับของ'
|
return t('waiting_for_pickup')
|
||||||
case 'ERROR':
|
case 'ERROR':
|
||||||
return 'ติดต่อเคาน์เตอร์'
|
return t('contact_front_desk')
|
||||||
case 'WAIT_PICKUP':
|
case 'WAIT_PICKUP':
|
||||||
return 'รอจ่ายที่เคาน์เตอร์'
|
return t('awaiting_payment')
|
||||||
case 'RECEIVE':
|
case 'RECEIVE':
|
||||||
return 'จ่ายเรียบร้อย'
|
return t('paid')
|
||||||
default:
|
default:
|
||||||
return 'ติดต่อเคาน์เตอร์'
|
return t('contact_front_desk')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,11 +91,11 @@ export default class MessageObjectDetail extends Component {
|
|||||||
<View style={{flexDirection:'row'}}>
|
<View style={{flexDirection:'row'}}>
|
||||||
<Text style={styles.textGray}>{t('date')}</Text>
|
<Text style={styles.textGray}>{t('date')}</Text>
|
||||||
<Text style={styles.textBaclk}> {moment(this.state.object_data.updated_at).format('DD MMMM YYYY')}</Text>
|
<Text style={styles.textBaclk}> {moment(this.state.object_data.updated_at).format('DD MMMM YYYY')}</Text>
|
||||||
<Text style={styles.textGray}> เวลา</Text>
|
<Text style={styles.textGray}> {t('times')}</Text>
|
||||||
<Text style={styles.textBaclk}> {moment(this.state.object_data.updated_at).format('HH:mm')}</Text>
|
<Text style={styles.textBaclk}> {moment(this.state.object_data.updated_at).format('HH:mm')}</Text>
|
||||||
</View>
|
</View>
|
||||||
<View style={{marginVertical:16,height: 1,backgroundColor:'silver',width: '100%'}}/>
|
<View style={{marginVertical:16,height: 1,backgroundColor:'silver',width: '100%'}}/>
|
||||||
<Text style={styles.textTitle}>ผู้รับ</Text>
|
<Text style={styles.textTitle}>{t('consignee')}</Text>
|
||||||
<Text style={styles.textBaclk}>{this.state.object_data.customer_name != null && this.state.object_data.customer_name}</Text>
|
<Text style={styles.textBaclk}>{this.state.object_data.customer_name != null && this.state.object_data.customer_name}</Text>
|
||||||
{/*<View style={{marginVertical:16,height: 1,backgroundColor:'silver',width: '100%'}}/>
|
{/*<View style={{marginVertical:16,height: 1,backgroundColor:'silver',width: '100%'}}/>
|
||||||
<View style={{flexDirection:'row',justifyContent:'space-between'}}>
|
<View style={{flexDirection:'row',justifyContent:'space-between'}}>
|
||||||
|
@ -28,8 +28,8 @@ import CustomDatePicker from '../room/CustomDatePicker';
|
|||||||
import { t } from '../../utils/i18n'
|
import { t } from '../../utils/i18n'
|
||||||
|
|
||||||
let ACTIONSHEET_BUTTONS = [
|
let ACTIONSHEET_BUTTONS = [
|
||||||
'ถ่ายรูป',
|
t('take_photo'),
|
||||||
'รูปจากแกลอรี่',
|
t('from_gallery'),
|
||||||
t('cancel')
|
t('cancel')
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -133,7 +133,7 @@ class EditProfileScreen extends Component {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}else{
|
}else{
|
||||||
Alert.alert('รหัสผ่านไม่ถูกต้อง',`รหัสผ่านใหม่ไม่ตรงกับรหัสยืนยัน\nกรุณาลองอีกครั้ง`)
|
Alert.alert(t('incorrect_pw'), t('pw_not_match_and_retry'))
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
edit_profile(this.state.user)
|
edit_profile(this.state.user)
|
||||||
|
@ -94,7 +94,7 @@ class ProfileScreen extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
confirmDeleteAccount = () => {
|
confirmDeleteAccount = () => {
|
||||||
Alert.alert('ต้องการลบบัญชีใช่หรือไม่ ?', 'คำขอของท่านจะถูกส่งไปยังผู้ดุแลเพื่อตรวจสอบและทำการลบบัญชี อาจใช้เวลาประมาณ 30 วัน', [
|
Alert.alert(t('title_delete_ac'), t('body_delete_ac'), [
|
||||||
{
|
{
|
||||||
text: t('cancel')
|
text: t('cancel')
|
||||||
},
|
},
|
||||||
@ -113,12 +113,12 @@ class ProfileScreen extends Component {
|
|||||||
}, () => {
|
}, () => {
|
||||||
requestDeleteAccount().then((res) => {
|
requestDeleteAccount().then((res) => {
|
||||||
if(res.data?.success) {
|
if(res.data?.success) {
|
||||||
Alert.alert('ทำรายการสำเร็จ')
|
Alert.alert(t('success'))
|
||||||
this.setState({
|
this.setState({
|
||||||
isLoading: false
|
isLoading: false
|
||||||
})
|
})
|
||||||
}else {
|
}else {
|
||||||
Alert.alert('ทำรายการสำเร็จไม่สำเร็จ', 'กรุณาติดต่อผู้ดูแลเพื่อขอลบบัญชี')
|
Alert.alert(t('unsuccessful'), t('contact_admin_for_delete_ac'))
|
||||||
this.setState({
|
this.setState({
|
||||||
isLoading: false
|
isLoading: false
|
||||||
})
|
})
|
||||||
|
@ -7,6 +7,7 @@ import { NavigationEvents } from 'react-navigation';
|
|||||||
import { getLevelMembership, getPointExpire } from '../../api/UserApi';
|
import { getLevelMembership, getPointExpire } from '../../api/UserApi';
|
||||||
import { BackgroundImage } from '../../components/BackgroundImage';
|
import { BackgroundImage } from '../../components/BackgroundImage';
|
||||||
import IndicatorLoading from '../../components/IndicatorLoading';
|
import IndicatorLoading from '../../components/IndicatorLoading';
|
||||||
|
import { t } from '../../utils/i18n';
|
||||||
|
|
||||||
class MemberPoinExpire extends Component {
|
class MemberPoinExpire extends Component {
|
||||||
constructor(props){
|
constructor(props){
|
||||||
@ -94,7 +95,7 @@ class MemberPoinExpire extends Component {
|
|||||||
}}>
|
}}>
|
||||||
<BackgroundImage>
|
<BackgroundImage>
|
||||||
<View style={{padding: 16, flex: 1}}>
|
<View style={{padding: 16, flex: 1}}>
|
||||||
<Text style={[styles.mainText, {fontSize: 18}]}>คะแนนที่กำลังจะหมดอายุ</Text>
|
<Text style={[styles.mainText, {fontSize: 18}]}>{t('point_expire')}</Text>
|
||||||
<View style={{backgroundColor: 'white', padding: 18, borderRadius: 8, marginTop: 5}}>
|
<View style={{backgroundColor: 'white', padding: 18, borderRadius: 8, marginTop: 5}}>
|
||||||
<FlatList
|
<FlatList
|
||||||
data={this.state.point_expire_list}
|
data={this.state.point_expire_list}
|
||||||
@ -108,14 +109,14 @@ class MemberPoinExpire extends Component {
|
|||||||
borderRadius: 5,
|
borderRadius: 5,
|
||||||
marginRight: 10
|
marginRight: 10
|
||||||
}}></View>
|
}}></View>
|
||||||
<Text style={[styles.mainText, {color: moment(item.expired_date).isSameOrAfter(moment()) ? '#FF2D55' : '#000000', fontSize: 18}]}>{item.balance} คะแนน</Text>
|
<Text style={[styles.mainText, {color: moment(item.expired_date).isSameOrAfter(moment()) ? '#FF2D55' : '#000000', fontSize: 18}]}>{item.balance} {t('point')}</Text>
|
||||||
</View>
|
</View>
|
||||||
<View style={{flexDirection: 'row', marginLeft: 4, height: 30}}>
|
<View style={{flexDirection: 'row', marginLeft: 4, height: 30}}>
|
||||||
{
|
{
|
||||||
index !== this.state.point_expire_list.length - 1 &&
|
index !== this.state.point_expire_list.length - 1 &&
|
||||||
<View style={[styles.borderVerticalDash]}></View>
|
<View style={[styles.borderVerticalDash]}></View>
|
||||||
}
|
}
|
||||||
<Text style={[styles.mainText, {color: moment(item.expired_date).isSameOrAfter(moment()) ? '#FF2D55' : '#5C6873', fontSize: 15, marginLeft: 15}]}>หมดอายุ {moment(item.expired_date).add(543, 'year').format('DD MMM YY')}</Text>
|
<Text style={[styles.mainText, {color: moment(item.expired_date).isSameOrAfter(moment()) ? '#FF2D55' : '#5C6873', fontSize: 15, marginLeft: 15}]}>{t('expire_on')} {moment(item.expired_date).add(543, 'year').format('DD MMM YY')}</Text>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
)}
|
)}
|
||||||
@ -130,7 +131,7 @@ class MemberPoinExpire extends Component {
|
|||||||
}
|
}
|
||||||
ListEmptyComponent={
|
ListEmptyComponent={
|
||||||
<View style={{flex: 1, alignItems: 'center', justifyContent: 'center', margin: 16,padding:16,borderRadius:5,backgroundColor:'white'}}>
|
<View style={{flex: 1, alignItems: 'center', justifyContent: 'center', margin: 16,padding:16,borderRadius:5,backgroundColor:'white'}}>
|
||||||
<Text style={[styles.mainText, {fontSize: 16, color: 'grey'}]}> ไม่พบรายการคูปองที่กำลังจะหมดอายุ </Text>
|
<Text style={[styles.mainText, {fontSize: 16, color: 'grey'}]}> {t('not_found_point_expire')} </Text>
|
||||||
</View>
|
</View>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
@ -7,6 +7,7 @@ import { NavigationEvents } from "react-navigation";
|
|||||||
import { getLevelMemberDetail, getLevelMembership } from "../../api/UserApi";
|
import { getLevelMemberDetail, getLevelMembership } from "../../api/UserApi";
|
||||||
import { BackgroundImage } from "../../components/BackgroundImage";
|
import { BackgroundImage } from "../../components/BackgroundImage";
|
||||||
import IndicatorLoading from "../../components/IndicatorLoading";
|
import IndicatorLoading from "../../components/IndicatorLoading";
|
||||||
|
import { t } from "../../utils/i18n";
|
||||||
|
|
||||||
class MembershipLevelDetail extends Component {
|
class MembershipLevelDetail extends Component {
|
||||||
constructor(props){
|
constructor(props){
|
||||||
@ -124,8 +125,8 @@ class MembershipLevelDetail extends Component {
|
|||||||
<View style={{flexDirection: 'row', flex: 1, alignItems: 'center'}}>
|
<View style={{flexDirection: 'row', flex: 1, alignItems: 'center'}}>
|
||||||
<View style={{flex: 0.45}}>
|
<View style={{flex: 0.45}}>
|
||||||
<View>
|
<View>
|
||||||
<Text style={[styles.mainText, {color: 'black', fontSize: 16, textAlign: 'center'}]}>อายุการเช่าพัก</Text>
|
<Text style={[styles.mainText, {color: 'black', fontSize: 16, textAlign: 'center'}]}>{t('min_rental')}</Text>
|
||||||
<Text style={[styles.mainText, {color: '#269A21', fontSize: 18, fontWeight: '500', textAlign: 'center'}]}>{this.state.member_data && this.state.member_data.age_of_rent ? this.state.member_data.age_of_rent : 0} <Text style={[styles.mainText, {color: 'black', fontSize: 20, fontWeight: 'normal'}]}>เดือน</Text></Text>
|
<Text style={[styles.mainText, {color: '#269A21', fontSize: 18, fontWeight: '500', textAlign: 'center'}]}>{this.state.member_data && this.state.member_data.age_of_rent ? this.state.member_data.age_of_rent : 0} <Text style={[styles.mainText, {color: 'black', fontSize: 20, fontWeight: 'normal'}]}>{t('month')}</Text></Text>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
@ -135,8 +136,8 @@ class MembershipLevelDetail extends Component {
|
|||||||
|
|
||||||
<View style={{flex: 0.45, paddingLeft: 8}}>
|
<View style={{flex: 0.45, paddingLeft: 8}}>
|
||||||
<View>
|
<View>
|
||||||
<Text style={[styles.mainText, {color: 'black', fontSize: 16, textAlign: 'center'}]}>ค่าเช่าเฉลี่ยต่อเดือน</Text>
|
<Text style={[styles.mainText, {color: 'black', fontSize: 16, textAlign: 'center'}]}>{t('avg_rent')}</Text>
|
||||||
<Text style={[styles.mainText, {color: '#269A21', fontSize: 18, fontWeight: '500', textAlign: 'center'}]}>{this.state.member_data && this.state.member_data.avg_paid_of_month ? parseFloat(this.state.member_data.avg_paid_of_month).toLocaleString() : 0} <Text style={[styles.mainText, {color: 'black', fontSize: 20, fontWeight: 'normal'}]}>บาท</Text></Text>
|
<Text style={[styles.mainText, {color: '#269A21', fontSize: 18, fontWeight: '500', textAlign: 'center'}]}>{this.state.member_data && this.state.member_data.avg_paid_of_month ? parseFloat(this.state.member_data.avg_paid_of_month).toLocaleString() : 0} <Text style={[styles.mainText, {color: 'black', fontSize: 20, fontWeight: 'normal'}]}>{t('baht')}</Text></Text>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
@ -144,7 +145,7 @@ class MembershipLevelDetail extends Component {
|
|||||||
<TouchableOpacity style={{backgroundColor: '#269A21', paddingVertical: 8, borderRadius: 6, marginTop: 10}}
|
<TouchableOpacity style={{backgroundColor: '#269A21', paddingVertical: 8, borderRadius: 6, marginTop: 10}}
|
||||||
onPress={() => this.props.navigation.navigate('MemberPoinExpire')}
|
onPress={() => this.props.navigation.navigate('MemberPoinExpire')}
|
||||||
>
|
>
|
||||||
<Text style={[styles.mainText, {textAlign: 'center', fontSize: 16}]}>คะแนนที่กำลังจะหมดอายุ</Text>
|
<Text style={[styles.mainText, {textAlign: 'center', fontSize: 16}]}>{t('point_expire')}</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
</View>
|
</View>
|
||||||
</LinearGradient>
|
</LinearGradient>
|
||||||
@ -170,27 +171,27 @@ class MembershipLevelDetail extends Component {
|
|||||||
<BackgroundImage>
|
<BackgroundImage>
|
||||||
<View style={{padding: 16}}>
|
<View style={{padding: 16}}>
|
||||||
<View style={{backgroundColor: '#00420A', borderRadius: 6, padding: 15}}>
|
<View style={{backgroundColor: '#00420A', borderRadius: 6, padding: 15}}>
|
||||||
<Text style={[styles.mainText, {paddingBottom: 2, fontWeight: '500'}]}>เงื่อนไข</Text>
|
<Text style={[styles.mainText, {paddingBottom: 2, fontWeight: '500'}]}>{t('condition')}</Text>
|
||||||
<View style={{paddingVertical: 2}}>
|
<View style={{paddingVertical: 2}}>
|
||||||
<View style={{flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center'}}>
|
<View style={{flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center'}}>
|
||||||
<Text style={[styles.mainText]}>อายุการเช่าพักอย่างน้อย</Text>
|
<Text style={[styles.mainText]}>{t('min_rental')}</Text>
|
||||||
<Text style={[styles.mainText]}>{this.state.condition_age_of_rent} เดือน</Text>
|
<Text style={[styles.mainText]}>{this.state.condition_age_of_rent} {t('month')}</Text>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
<View style={{flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center'}}>
|
<View style={{flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center'}}>
|
||||||
<Text style={[styles.mainText]}>ค่าเช่าเฉลี่ยต่อเดือนอย่างน้อย</Text>
|
<Text style={[styles.mainText]}>{t('min_avg_rent')}</Text>
|
||||||
<Text style={[styles.mainText]}>
|
<Text style={[styles.mainText]}>
|
||||||
{
|
{
|
||||||
this.state.condition_avg_paid_of_month
|
this.state.condition_avg_paid_of_month
|
||||||
? parseFloat(this.state.condition_avg_paid_of_month).toLocaleString() : 0
|
? parseFloat(this.state.condition_avg_paid_of_month).toLocaleString() : 0
|
||||||
} บาท
|
} {t('baht')}
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
<View style={{paddingVertical: 15, marginBottom: 100}}>
|
<View style={{paddingVertical: 15, marginBottom: 100}}>
|
||||||
<Text style={[styles.mainText, {fontSize: 18}]}>สิทธิพิเศษ</Text>
|
<Text style={[styles.mainText, {fontSize: 18}]}>{t('privilege')}</Text>
|
||||||
<View style={{ marginBottom: 20}}>
|
<View style={{ marginBottom: 20}}>
|
||||||
<FlatList
|
<FlatList
|
||||||
data={this.state.privilege}
|
data={this.state.privilege}
|
||||||
|
@ -8,6 +8,7 @@ import IndicatorLoading from "../../components/IndicatorLoading";
|
|||||||
import {NavigationEvents} from "react-navigation";
|
import {NavigationEvents} from "react-navigation";
|
||||||
import {getListMyReward} from "../../api/UserApi";
|
import {getListMyReward} from "../../api/UserApi";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
|
import { t } from '../../utils/i18n';
|
||||||
|
|
||||||
class MyRewards extends Component {
|
class MyRewards extends Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
@ -63,11 +64,11 @@ class MyRewards extends Component {
|
|||||||
</View>
|
</View>
|
||||||
<View style={{flex: 0.7, flexDirection: 'column', justifyContent: 'space-between'}}>
|
<View style={{flex: 0.7, flexDirection: 'column', justifyContent: 'space-between'}}>
|
||||||
<View>
|
<View>
|
||||||
<Text>ชื่อกิจกรรม : {item.loyalty_activity_name ?? ''}</Text>
|
<Text>{t('event_name')} : {item.loyalty_activity_name ?? ''}</Text>
|
||||||
</View>
|
</View>
|
||||||
<View>
|
<View>
|
||||||
<Text style={{color: '#FF3B30'}}>
|
<Text style={{color: '#FF3B30'}}>
|
||||||
ใช้ได้ถึงวันที่ : {item.expired_date ? moment(item.expired_date, 'YYYY-MM-DD').add(543, 'year').format('DD MMMM YYYY') : '-'}
|
{t('valid_until')} : {item.expired_date ? moment(item.expired_date, 'YYYY-MM-DD').add(543, 'year').format('DD MMMM YYYY') : '-'}
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
@ -20,10 +20,10 @@ class RedeemScreen extends React.Component {
|
|||||||
isLoading: false,
|
isLoading: false,
|
||||||
refreshing: false,
|
refreshing: false,
|
||||||
cateGoryRewards: [
|
cateGoryRewards: [
|
||||||
{source: require('../../../assets/images/discount_rent.png'), text: 'ส่วนลดค่าเช่า', id: 1},
|
{source: require('../../../assets/images/discount_rent.png'), text: t('rental_discount'), id: 1},
|
||||||
{source: require('../../../assets/images/discount_product.png'), text: 'ส่วนลดสินค้า', id: 2},
|
{source: require('../../../assets/images/discount_product.png'), text: t('product_discount'), id: 2},
|
||||||
{source: require('../../../assets/images/discount_redeem.png'), text: 'แลกสินค้า/บริการ', id: 3},
|
{source: require('../../../assets/images/discount_redeem.png'), text: t('redeem_service'), id: 3},
|
||||||
{source: require('../../../assets/images/discount_coupon.png'), text: 'ชิงโชค', id: 4}
|
{source: require('../../../assets/images/discount_coupon.png'), text: t('lucky_draw'), id: 4}
|
||||||
],
|
],
|
||||||
allRewards: [],
|
allRewards: [],
|
||||||
point: 0,
|
point: 0,
|
||||||
|
@ -134,7 +134,7 @@ class RewardDetail extends Component {
|
|||||||
};
|
};
|
||||||
|
|
||||||
confirmUseReward = () => {
|
confirmUseReward = () => {
|
||||||
Alert.alert('ยืนยันการใช้งานคูปอง', '', [
|
Alert.alert(t('confirm_coupon'), '', [
|
||||||
{ text: t('cancel'), style: 'cancel' },
|
{ text: t('cancel'), style: 'cancel' },
|
||||||
{
|
{
|
||||||
text: t('ok'),
|
text: t('ok'),
|
||||||
@ -235,14 +235,14 @@ class RewardDetail extends Component {
|
|||||||
: <TouchableOpacity onPress={() => {this.clickRedeem()}}
|
: <TouchableOpacity onPress={() => {this.clickRedeem()}}
|
||||||
disabled={this.state.disabled}
|
disabled={this.state.disabled}
|
||||||
style={[styles.btnRedeem, this.state.disabled ? {backgroundColor: 'grey'} : {}]}>
|
style={[styles.btnRedeem, this.state.disabled ? {backgroundColor: 'grey'} : {}]}>
|
||||||
<Text style={[styles.textStyle, styles.textBody, {textAlign: 'center'}]}>แลกแต้ม</Text>
|
<Text style={[styles.textStyle, styles.textBody, {textAlign: 'center'}]}>{t('redeem_point')}</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
}
|
}
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
<Popup
|
<Popup
|
||||||
title={'ยืนยันการแลกแต้ม'}
|
title={t('confirm_redeem')}
|
||||||
message={`${this.state.data && this.state.data.points_to_redeem ? this.state.data.points_to_redeem : 0} Points`}
|
message={`${this.state.data && this.state.data.points_to_redeem ? this.state.data.points_to_redeem : 0} Points`}
|
||||||
styleTitle={{textAlign: 'center', color: 'black', fontSize: 20}}
|
styleTitle={{textAlign: 'center', color: 'black', fontSize: 20}}
|
||||||
styleMessage={{textAlign: 'center', color: '#FF9500', fontWeight: 'bold', fontSize: 20}}
|
styleMessage={{textAlign: 'center', color: '#FF9500', fontWeight: 'bold', fontSize: 20}}
|
||||||
|
@ -28,7 +28,7 @@ const SelectionData = (props) => {
|
|||||||
borderColor: '1px solid rgba(0, 0, 0, 0.25)'
|
borderColor: '1px solid rgba(0, 0, 0, 0.25)'
|
||||||
}}
|
}}
|
||||||
translation={{
|
translation={{
|
||||||
NOTHING_TO_SHOW: "ไม่มีรายการข้อมูล"
|
NOTHING_TO_SHOW: t('no_data')
|
||||||
}}
|
}}
|
||||||
textStyle={{
|
textStyle={{
|
||||||
fontFamily: 'Prompt-Regular',
|
fontFamily: 'Prompt-Regular',
|
||||||
@ -56,8 +56,8 @@ class RepairIndex extends Component {
|
|||||||
rooms: [],
|
rooms: [],
|
||||||
repair_types: [],
|
repair_types: [],
|
||||||
period: [
|
period: [
|
||||||
{value: 1, label: 'ช่วงเช้า'},
|
{value: 1, label: t('am')},
|
||||||
{value: 2, label: 'ช่วงเย็น'}
|
{value: 2, label: t('pm')}
|
||||||
],
|
],
|
||||||
list: [
|
list: [
|
||||||
{id: 1, value: 1, label: '1', materials: '1', service_value: '100'},
|
{id: 1, value: 1, label: '1', materials: '1', service_value: '100'},
|
||||||
|
@ -84,7 +84,7 @@ class RewardScreen extends Component {
|
|||||||
numColumns={2}
|
numColumns={2}
|
||||||
ListEmptyComponent={() =>
|
ListEmptyComponent={() =>
|
||||||
<View style={{flex: 1, alignItems: 'center', justifyContent: 'center', margin: 16,padding:16,borderRadius:5,backgroundColor:'white'}}>
|
<View style={{flex: 1, alignItems: 'center', justifyContent: 'center', margin: 16,padding:16,borderRadius:5,backgroundColor:'white'}}>
|
||||||
<Text style={{fontSize: 16}}>ไม่มีสินค้า</Text>
|
<Text style={{fontSize: 16}}>{t('no_items')}</Text>
|
||||||
</View>
|
</View>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
@ -39,7 +39,7 @@ class CompanyRoomReservationScreen extends Component {
|
|||||||
|
|
||||||
var email_validate = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
|
var email_validate = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
|
||||||
if (email_validate.test(this.state.user.email) !== true){
|
if (email_validate.test(this.state.user.email) !== true){
|
||||||
Alert.alert(null, 'ท่านกรอกรูปแบบอีเมลไม่ถูกต้อง')
|
Alert.alert(null, t('email_format_invalid'))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -143,7 +143,7 @@ class CompanyRoomReservationScreen extends Component {
|
|||||||
{ cancelable: false }
|
{ cancelable: false }
|
||||||
)
|
)
|
||||||
}else{
|
}else{
|
||||||
Alert.alert('เกิดข้อผิดพลาด','กรุณากรอกข้อมูลให้ครบถ้วน')
|
Alert.alert(t('error_occurred'), t('required_field'))
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
@ -41,7 +41,7 @@ class PersonRoomReservationScreen extends Component {
|
|||||||
|
|
||||||
var email_validate = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
|
var email_validate = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
|
||||||
if (email_validate.test(this.state.user.email) !== true){
|
if (email_validate.test(this.state.user.email) !== true){
|
||||||
Alert.alert(null, 'ท่านกรอกรูปแบบอีเมลไม่ถูกต้อง')
|
Alert.alert(null, t('email_format_invalid'))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,7 +208,7 @@ class PersonRoomReservationScreen extends Component {
|
|||||||
{ cancelable: false }
|
{ cancelable: false }
|
||||||
)
|
)
|
||||||
}else{
|
}else{
|
||||||
Alert.alert('เกิดข้อผิดพลาด','กรุณากรอกข้อมูลให้ครบถ้วน')
|
Alert.alert(t('error_occurred'), t('required_field'))
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
title={t('book_room')} />
|
title={t('book_room')} />
|
||||||
|
@ -14,7 +14,7 @@ class RoomReservationWebView extends Component {
|
|||||||
let source_webview = {
|
let source_webview = {
|
||||||
baseUrl: '',
|
baseUrl: '',
|
||||||
// uri: `${Config.API_BASE_URL_POWER_CONDO_PROD}/online-booking?token=${this.props.token}`
|
// uri: `${Config.API_BASE_URL_POWER_CONDO_PROD}/online-booking?token=${this.props.token}`
|
||||||
uri: `${Config.API_BASE_URL_POWER_CONDO_DEV}/online-booking?token=${this.props.token}`
|
uri: `${this.props.server_mode === 'production' ? Config.API_BASE_URL_POWER_CONDO_PROD : Config.API_BASE_URL_POWER_CONDO_DEV}/online-booking?token=${this.props.token}`
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -33,7 +33,8 @@ class RoomReservationWebView extends Component {
|
|||||||
|
|
||||||
const mapStateToProps = state => {
|
const mapStateToProps = state => {
|
||||||
return {
|
return {
|
||||||
token: state.app.token
|
token: state.app.token,
|
||||||
|
server_mode: state.app.server_mode
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ const SelectionData = (props) => {
|
|||||||
borderColor: '1px solid rgba(0, 0, 0, 0.25)',
|
borderColor: '1px solid rgba(0, 0, 0, 0.25)',
|
||||||
}}
|
}}
|
||||||
translation={{
|
translation={{
|
||||||
NOTHING_TO_SHOW: "ไม่มีรายการข้อมูล"
|
NOTHING_TO_SHOW: t('no_data')
|
||||||
}}
|
}}
|
||||||
textStyle={{
|
textStyle={{
|
||||||
fontFamily: 'Prompt-Regular',
|
fontFamily: 'Prompt-Regular',
|
||||||
|
@ -96,7 +96,7 @@ export default class QuestionScreen extends Component {
|
|||||||
}, 1000)
|
}, 1000)
|
||||||
})
|
})
|
||||||
}else{
|
}else{
|
||||||
Alert.alert('เกิดข้อผิดพลาด', 'กรุณาลองอีกครั้ง')
|
Alert.alert(t('error_occurred'), t('try_again'))
|
||||||
this.setState({
|
this.setState({
|
||||||
isSending: false
|
isSending: false
|
||||||
})
|
})
|
||||||
@ -115,7 +115,7 @@ export default class QuestionScreen extends Component {
|
|||||||
_renderItem = ({item}) => (
|
_renderItem = ({item}) => (
|
||||||
<View style={{padding:16,backgroundColor: item.sender_type == 'admin' ? '#EAEAF4' : '#E1EDD2' }}>
|
<View style={{padding:16,backgroundColor: item.sender_type == 'admin' ? '#EAEAF4' : '#E1EDD2' }}>
|
||||||
<Text style={{fontSize: 12, color:'#00000080', textAlign: item.sender_type == 'admin' ? 'left' : 'right', marginBottom: 5}}>{moment(item.created_at).format('DD MMMM YYYY, HH:mmน.')}</Text>
|
<Text style={{fontSize: 12, color:'#00000080', textAlign: item.sender_type == 'admin' ? 'left' : 'right', marginBottom: 5}}>{moment(item.created_at).format('DD MMMM YYYY, HH:mmน.')}</Text>
|
||||||
<Text style={{fontSize: 14, color:'#00420A', fontWeight: '500' , textAlign: item.sender_type == 'admin' ? 'left' : 'right'}}>{item.sender_type == 'admin' ? t('project') : t('me')}</Text>
|
<Text style={{fontSize: 14, color:'#00420A', fontWeight: '500' , textAlign: item.sender_type == 'admin' ? 'left' : 'right'}}>{item.sender_type == 'admin' ? t('admin_project') : t('me')}</Text>
|
||||||
<Text style={{marginTop:10,fontSize: 14, textAlign: item.sender_type == 'admin' ? 'left' : 'right'}}>{item.content}</Text>
|
<Text style={{marginTop:10,fontSize: 14, textAlign: item.sender_type == 'admin' ? 'left' : 'right'}}>{item.content}</Text>
|
||||||
{
|
{
|
||||||
item.media && item.media.length > 0 ?
|
item.media && item.media.length > 0 ?
|
||||||
@ -154,7 +154,7 @@ export default class QuestionScreen extends Component {
|
|||||||
onContentSizeChange={()=> this._flatlistRef.scrollToEnd()}
|
onContentSizeChange={()=> this._flatlistRef.scrollToEnd()}
|
||||||
ListEmptyComponent={() => {
|
ListEmptyComponent={() => {
|
||||||
return <View style={{alignItems:'center'}}>
|
return <View style={{alignItems:'center'}}>
|
||||||
<Text>ไม่มีข้อมูลการสนทนา</Text>
|
<Text>{t('no_chat')}</Text>
|
||||||
</View>
|
</View>
|
||||||
}}
|
}}
|
||||||
style={{}}/>
|
style={{}}/>
|
||||||
|
@ -14,8 +14,8 @@ import { connect } from "react-redux";
|
|||||||
import { t } from 'src/utils/i18n'
|
import { t } from 'src/utils/i18n'
|
||||||
import IndicatorLoading from '../../components/IndicatorLoading';
|
import IndicatorLoading from '../../components/IndicatorLoading';
|
||||||
let ACTIONSHEET_BUTTONS = [
|
let ACTIONSHEET_BUTTONS = [
|
||||||
'ถ่ายรูป',
|
t('take_photo'),
|
||||||
'รูปจากแกลอรี่',
|
t('from_gallery'),
|
||||||
t('cancel')
|
t('cancel')
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ class SuggestionScreen extends Component {
|
|||||||
.then(res => {
|
.then(res => {
|
||||||
console.log('check response suggestion -----------> ',res)
|
console.log('check response suggestion -----------> ',res)
|
||||||
|
|
||||||
Alert.alert('รับข้อเสนอแนะเรียบร้อย', 'ทางเราได้รับคำแนะนำและเรื่องไว้พิจารณาแล้ว ขอบคุณสำหรับความร่วมมือค่ะ',[{text: t('ok'), onPress:() => {
|
Alert.alert(t('feedback_title'), t('feedback_body'),[{text: t('ok'), onPress:() => {
|
||||||
this.setState({
|
this.setState({
|
||||||
isLoading: false
|
isLoading: false
|
||||||
}, () => {
|
}, () => {
|
||||||
@ -65,7 +65,7 @@ class SuggestionScreen extends Component {
|
|||||||
postSuggestionLogin(param)
|
postSuggestionLogin(param)
|
||||||
.then(res => {
|
.then(res => {
|
||||||
console.log('check response suggestion -----------> ',res)
|
console.log('check response suggestion -----------> ',res)
|
||||||
Alert.alert('รับข้อเสนอแนะเรียบร้อย', 'ทางเราได้รับคำแนะนำและเรื่องไว้พิจารณาแล้ว ขอบคุณสำหรับความร่วมมือค่ะ',[{text: t('ok'), onPress:() => {
|
Alert.alert(t('feedback_title'), t('feedback_body'),[{text: t('ok'), onPress:() => {
|
||||||
this.setState({
|
this.setState({
|
||||||
isLoading: false
|
isLoading: false
|
||||||
}, () => {
|
}, () => {
|
||||||
@ -78,7 +78,7 @@ class SuggestionScreen extends Component {
|
|||||||
this.setState({
|
this.setState({
|
||||||
isLoading: false
|
isLoading: false
|
||||||
}, () => {
|
}, () => {
|
||||||
Alert.alert('ส่งข้อเสนอแนะไม่สำเร็จ', 'กรุณากรอกข้อมูลให้ครบถ้วน',[{text: t('ok')}])
|
Alert.alert('ส่งข้อเสนอแนะไม่สำเร็จ', t('required_field'),[{text: t('ok')}])
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -156,7 +156,7 @@ class SuggestionScreen extends Component {
|
|||||||
<View>
|
<View>
|
||||||
<Text style={{color: '#00420A', padding: 16, paddingBottom: 5}}>{t('title')}</Text>
|
<Text style={{color: '#00420A', padding: 16, paddingBottom: 5}}>{t('title')}</Text>
|
||||||
<TextInput
|
<TextInput
|
||||||
placeholder={'เขียนหัวข้อ'}
|
placeholder={t('suggestion_title')}
|
||||||
style={styles.textInput}
|
style={styles.textInput}
|
||||||
onChangeText={(text) => this.setState({suggestionTitle: text})}
|
onChangeText={(text) => this.setState({suggestionTitle: text})}
|
||||||
value={this.state.suggestionTitle}/>
|
value={this.state.suggestionTitle}/>
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
"save_electric_meter": "Electricity Meter",
|
"save_electric_meter": "Electricity Meter",
|
||||||
"electric_unit": "Electricity Bill",
|
"electric_unit": "Electricity Bill",
|
||||||
"unit": "Unit",
|
"unit": "Unit",
|
||||||
|
"units": "Units",
|
||||||
"unit_price": "Unit Price",
|
"unit_price": "Unit Price",
|
||||||
"amount": "Amount",
|
"amount": "Amount",
|
||||||
"baht": "Baht",
|
"baht": "Baht",
|
||||||
@ -225,10 +226,10 @@
|
|||||||
"list_unit": "",
|
"list_unit": "",
|
||||||
"summary_service": "Total",
|
"summary_service": "Total",
|
||||||
"send_data_success": "Send Data Successfully",
|
"send_data_success": "Send Data Successfully",
|
||||||
"moveout_success_message": "เราได้รับข้อมูลการขอย้ายออกของท่านแล้ว",
|
"moveout_success_message": "We have received your request to move out.",
|
||||||
"repair_success_message": "เราได้รับข้อมูลการแจ้งซ่อมของท่านแล้ว",
|
"repair_success_message": "We have received your maintenance request.",
|
||||||
"send_data_fail": "Send Data Failed",
|
"send_data_fail": "Send Data Failed",
|
||||||
"warning_move_out": "หากไม่ได้แจ้งย้ายออกก่อนระยะเวลา 1 เดือน จะไม่ได้รับเงินประกันคืน",
|
"warning_move_out": "No deposit refund without at least one month's move-out notice.",
|
||||||
"payment_no": "Payment No",
|
"payment_no": "Payment No",
|
||||||
"reward": "Rewards",
|
"reward": "Rewards",
|
||||||
"history_point": "History Point",
|
"history_point": "History Point",
|
||||||
@ -237,6 +238,90 @@
|
|||||||
"coupon": "Coupon",
|
"coupon": "Coupon",
|
||||||
"forget_password": "Forget Password",
|
"forget_password": "Forget Password",
|
||||||
"payment_detail": "Payment Detail",
|
"payment_detail": "Payment Detail",
|
||||||
"membership_detail": "สิทธิพิเศษแต่ละระดับสมาชิก",
|
"membership_detail": "Member Benefits by Tier",
|
||||||
"verify_otp": "Verify OTP"
|
"verify_otp": "Verify OTP",
|
||||||
|
"success": "Success",
|
||||||
|
"check_otp_msg": "Please check the OTP sent to your phone number",
|
||||||
|
"enter_otp": "Please enter the OTP code.",
|
||||||
|
"resend_otp": "Resend OTP available in",
|
||||||
|
"minutes": "minutes",
|
||||||
|
"to_phone_number": "sent to the phone number",
|
||||||
|
"save_photo": "Photo saved successfully",
|
||||||
|
"confirm_pay": "Confirm and Pay",
|
||||||
|
"coupon_not_found": "Coupons not found.",
|
||||||
|
"coupon_selected": "Selected Discount Coupon",
|
||||||
|
"choose_coupon": "Choose Coupon",
|
||||||
|
"confirm_coupon": "Confirm Coupon",
|
||||||
|
"unsuccessful": "Unsuccessful",
|
||||||
|
"enter_phone_no": "Enter phone number",
|
||||||
|
"receive_otp": "To receive the OTP code via SMS.",
|
||||||
|
"back_to": "Back to",
|
||||||
|
"credential_invalid" : "Incorrect username or password.",
|
||||||
|
"phone_format_invalid": "Invalid phone number format.",
|
||||||
|
"required_field": "Please fill in all required fields.",
|
||||||
|
"pw_not_match": "Passwords do not match.",
|
||||||
|
"confirm_pw": "Confirm password.",
|
||||||
|
"from_gallery": "From Gallery",
|
||||||
|
"take_photo": "Take Photo",
|
||||||
|
"payment_overdue": "Payment overdue",
|
||||||
|
"news_canceled": "News publication has been canceled.",
|
||||||
|
"email_format_invalid": "Invalid email format.",
|
||||||
|
"error_occurred": "An error occurred",
|
||||||
|
"try_again": "Please try again",
|
||||||
|
"payment_overdue_contact_admin": "Your payment is overdue. Please contact customer service.",
|
||||||
|
"copy_pw": "Tap to copy password.",
|
||||||
|
"for_login": "For use in logging in.",
|
||||||
|
"resend_code": "Resend code",
|
||||||
|
"confirm_meter": "Confirm meter number",
|
||||||
|
"process_send_data": "Processing may take some time to verify your information",
|
||||||
|
"enter_meter": "Enter meter number ",
|
||||||
|
"attach_meter": "Please attach a photo and enter the water and electric meter numbers",
|
||||||
|
"by_due_date": "By the due date",
|
||||||
|
"sorry_send_data": "Sorry if you have already submitted the data.",
|
||||||
|
"enter_info": "Enter information.",
|
||||||
|
"later": "Later",
|
||||||
|
"loading_news": "Loading",
|
||||||
|
"title_delete_ac": "Are you sure you want to delete your account?",
|
||||||
|
"body_delete_ac": "The request will be reviewed by an administrator and may take up to 30 days to complete.",
|
||||||
|
"contact_admin_for_delete_ac": "Contact admin to delete your account.",
|
||||||
|
"condition": "Condition",
|
||||||
|
"min_rental": "Minimum rental period",
|
||||||
|
"avg_rent": "Average monthly rent",
|
||||||
|
"min_avg_rent": "Minimum average monthly rent",
|
||||||
|
"privilege": "Privileges",
|
||||||
|
"feedback_title": "Thank you for your feedback",
|
||||||
|
"feedback_body": "We will review your suggestions",
|
||||||
|
"suggestion_title": "Title",
|
||||||
|
"failed_coupon": "Failed to apply discount coupon.",
|
||||||
|
"use_coupon" : "Use discount coupon",
|
||||||
|
"paid1": "Paid",
|
||||||
|
"pay_now": "Pay now",
|
||||||
|
"contact_front": "Contact front desk",
|
||||||
|
"outstanding_balance_past_due": "You have an outstanding balance past due.",
|
||||||
|
"point_expire": "Points about to expire.",
|
||||||
|
"not_found_point_expire": "No expiring coupons found.",
|
||||||
|
"rental_discount" : "Rental discount",
|
||||||
|
"product_discount": "Product discount",
|
||||||
|
"redeem_service": "Redeem/Services",
|
||||||
|
"lucky_draw": "Lucky Draw",
|
||||||
|
"no_items": "No items found.",
|
||||||
|
"am": "AM",
|
||||||
|
"pm": "PM",
|
||||||
|
"event_name": "Event Name",
|
||||||
|
"valid_until": "Valid until",
|
||||||
|
"redeem_point": "Redeem points",
|
||||||
|
"confirm_redeem": "Confirm redeem points",
|
||||||
|
"no_chat" : "No chat data.",
|
||||||
|
"enter_pw": "Enter password",
|
||||||
|
"total": "Total",
|
||||||
|
"taken_on": "Taken on",
|
||||||
|
"short_minute": "",
|
||||||
|
"retake_meter_photo": "Retake meter photo",
|
||||||
|
"times": "Time",
|
||||||
|
"admin_project": "Admin Project",
|
||||||
|
"expire_on": "Expire on",
|
||||||
|
"overdue": "Overdue",
|
||||||
|
"incorrect_pw": "Incorrect password",
|
||||||
|
"pw_not_match_and_retry": "New password and confirmation do not match. Please try again.",
|
||||||
|
"no_data": "No Data"
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
"save_electric_meter": "វិក័យប័ត្រអគ្គិសនី",
|
"save_electric_meter": "វិក័យប័ត្រអគ្គិសនី",
|
||||||
"electric_unit": "បរិមាណអគ្គិសនី",
|
"electric_unit": "បរិមាណអគ្គិសនី",
|
||||||
"unit": "បរិមាណ",
|
"unit": "បរិមាណ",
|
||||||
|
"units": "Units",
|
||||||
"unit_price": "ឯកតា",
|
"unit_price": "ឯកតា",
|
||||||
"amount": "ចំនួនទឹកប្រាក់",
|
"amount": "ចំនួនទឹកប្រាក់",
|
||||||
"baht": "បាត",
|
"baht": "បាត",
|
||||||
@ -223,10 +224,10 @@
|
|||||||
"list_unit": "",
|
"list_unit": "",
|
||||||
"summary_service": "Total",
|
"summary_service": "Total",
|
||||||
"send_data_success": "Send Data Successfully",
|
"send_data_success": "Send Data Successfully",
|
||||||
"moveout_success_message": "เราได้รับข้อมูลการขอย้ายออกของท่านแล้ว",
|
"moveout_success_message": "We have received your request to move out.",
|
||||||
"repair_success_message": "เราได้รับข้อมูลการแจ้งซ่อมของท่านแล้ว",
|
"repair_success_message": "We have received your maintenance request.",
|
||||||
"send_data_fail": "Send Data Failed",
|
"send_data_fail": "Send Data Failed",
|
||||||
"warning_move_out": "หากไม่ได้แจ้งย้ายออกก่อนระยะเวลา 1 เดือน จะไม่ได้รับเงินประกันคืน",
|
"warning_move_out": "No deposit refund without at least one month's move-out notice.",
|
||||||
"payment_no": "Payment No",
|
"payment_no": "Payment No",
|
||||||
"reward": "Rewards",
|
"reward": "Rewards",
|
||||||
"history_point": "History Point",
|
"history_point": "History Point",
|
||||||
@ -235,6 +236,90 @@
|
|||||||
"coupon": "Coupon",
|
"coupon": "Coupon",
|
||||||
"forget_password": "Forget Password",
|
"forget_password": "Forget Password",
|
||||||
"payment_detail": "Payment Detail",
|
"payment_detail": "Payment Detail",
|
||||||
"membership_detail": "สิทธิพิเศษแต่ละระดับสมาชิก",
|
"membership_detail": "Member Benefits by Tier",
|
||||||
"verify_otp": "Verify OTP"
|
"verify_otp": "Verify OTP",
|
||||||
|
"success": "Success",
|
||||||
|
"check_otp_msg": "Please check the OTP sent to your phone number",
|
||||||
|
"enter_otp": "Please enter the OTP code.",
|
||||||
|
"resend_otp": "Resend OTP available in",
|
||||||
|
"minutes": "minutes",
|
||||||
|
"to_phone_number": "sent to the phone number",
|
||||||
|
"save_photo": "Photo saved successfully",
|
||||||
|
"confirm_pay": "Confirm and Pay",
|
||||||
|
"coupon_not_found": "Coupons not found.",
|
||||||
|
"coupon_selected": "Selected Discount Coupon",
|
||||||
|
"choose_coupon": "Choose Coupon",
|
||||||
|
"confirm_coupon": "Confirm Coupon",
|
||||||
|
"unsuccessful": "Unsuccessful",
|
||||||
|
"enter_phone_no": "Enter phone number",
|
||||||
|
"receive_otp": "To receive the OTP code via SMS.",
|
||||||
|
"back_to": "Back to",
|
||||||
|
"credential_invalid" : "Incorrect username or password.",
|
||||||
|
"phone_format_invalid": "Invalid phone number format.",
|
||||||
|
"required_field": "Please fill in all required fields.",
|
||||||
|
"pw_not_match": "Passwords do not match.",
|
||||||
|
"confirm_pw": "Confirm password.",
|
||||||
|
"from_gallery": "From Gallery",
|
||||||
|
"take_photo": "Take Photo",
|
||||||
|
"payment_overdue": "Payment overdue",
|
||||||
|
"news_canceled": "News publication has been canceled.",
|
||||||
|
"email_format_invalid": "Invalid email format.",
|
||||||
|
"error_occurred": "An error occurred",
|
||||||
|
"try_again": "Please try again",
|
||||||
|
"payment_overdue_contact_admin": "Your payment is overdue. Please contact customer service.",
|
||||||
|
"copy_pw": "Tap to copy password.",
|
||||||
|
"for_login": "For use in logging in.",
|
||||||
|
"resend_code": "Resend code",
|
||||||
|
"confirm_meter": "Confirm meter number",
|
||||||
|
"process_send_data": "Processing may take some time to verify your information",
|
||||||
|
"enter_meter": "Enter meter number ",
|
||||||
|
"attach_meter": "Please attach a photo and enter the water and electric meter numbers",
|
||||||
|
"by_due_date": "By the due date",
|
||||||
|
"sorry_send_data": "Sorry if you have already submitted the data.",
|
||||||
|
"enter_info": "Enter information.",
|
||||||
|
"later": "Later",
|
||||||
|
"loading_news": "Loading",
|
||||||
|
"title_delete_ac": "Are you sure you want to delete your account?",
|
||||||
|
"body_delete_ac": "The request will be reviewed by an administrator and may take up to 30 days to complete.",
|
||||||
|
"contact_admin_for_delete_ac": "Contact admin to delete your account.",
|
||||||
|
"condition": "Condition",
|
||||||
|
"min_rental": "Minimum rental period",
|
||||||
|
"avg_rent": "Average monthly rent",
|
||||||
|
"min_avg_rent": "Minimum average monthly rent",
|
||||||
|
"privilege": "Privileges",
|
||||||
|
"feedback_title": "Thank you for your feedback",
|
||||||
|
"feedback_body": "We will review your suggestions",
|
||||||
|
"suggestion_title": "Title",
|
||||||
|
"failed_coupon": "Failed to apply discount coupon.",
|
||||||
|
"use_coupon" : "Use discount coupon",
|
||||||
|
"paid1": "Paid",
|
||||||
|
"pay_now": "Pay now",
|
||||||
|
"contact_front": "Contact front desk",
|
||||||
|
"outstanding_balance_past_due": "You have an outstanding balance past due.",
|
||||||
|
"point_expire": "Points about to expire.",
|
||||||
|
"not_found_point_expire": "No expiring coupons found.",
|
||||||
|
"rental_discount" : "Rental discount",
|
||||||
|
"product_discount": "Product discount",
|
||||||
|
"redeem_service": "Redeem/Services",
|
||||||
|
"lucky_draw": "Lucky Draw",
|
||||||
|
"no_items": "No items found.",
|
||||||
|
"am": "AM",
|
||||||
|
"pm": "PM",
|
||||||
|
"event_name": "Event Name",
|
||||||
|
"valid_until": "Valid until",
|
||||||
|
"redeem_point": "Redeem points",
|
||||||
|
"confirm_redeem": "Confirm redeem points",
|
||||||
|
"no_chat" : "No chat data.",
|
||||||
|
"enter_pw": "Enter password",
|
||||||
|
"total": "Total",
|
||||||
|
"taken_on": "Taken on",
|
||||||
|
"short_minute": "",
|
||||||
|
"retake_meter_photo": "Retake meter photo",
|
||||||
|
"times": "Time",
|
||||||
|
"admin_project": "Admin Project",
|
||||||
|
"expire_on": "Expire on",
|
||||||
|
"overdue": "Overdue",
|
||||||
|
"incorrect_pw": "Incorrect password",
|
||||||
|
"pw_not_match_and_retry": "New password and confirmation do not match. Please try again.",
|
||||||
|
"no_data": "No Data"
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
"save_electric_meter": "မီးခမွတ္တမ္း",
|
"save_electric_meter": "မီးခမွတ္တမ္း",
|
||||||
"electric_unit": "မီးခ",
|
"electric_unit": "မီးခ",
|
||||||
"unit": "စုေပါင္း",
|
"unit": "စုေပါင္း",
|
||||||
|
"units": "Units",
|
||||||
"unit_price": "ယူနစ္",
|
"unit_price": "ယူနစ္",
|
||||||
"amount": "စုေပါင္းေငြ",
|
"amount": "စုေပါင္းေငြ",
|
||||||
"baht": "ဘတ္",
|
"baht": "ဘတ္",
|
||||||
@ -223,10 +224,10 @@
|
|||||||
"list_unit": "",
|
"list_unit": "",
|
||||||
"summary_service": "Total",
|
"summary_service": "Total",
|
||||||
"send_data_success": "Send Data Successfully",
|
"send_data_success": "Send Data Successfully",
|
||||||
"moveout_success_message": "เราได้รับข้อมูลการขอย้ายออกของท่านแล้ว",
|
"moveout_success_message": "We have received your request to move out.",
|
||||||
"repair_success_message": "เราได้รับข้อมูลการแจ้งซ่อมของท่านแล้ว",
|
"repair_success_message": "We have received your maintenance request.",
|
||||||
"send_data_fail": "Send Data Failed",
|
"send_data_fail": "Send Data Failed",
|
||||||
"warning_move_out": "หากไม่ได้แจ้งย้ายออกก่อนระยะเวลา 1 เดือน จะไม่ได้รับเงินประกันคืน",
|
"warning_move_out": "No deposit refund without at least one month's move-out notice.",
|
||||||
"payment_no": "Payment No",
|
"payment_no": "Payment No",
|
||||||
"reward": "Rewards",
|
"reward": "Rewards",
|
||||||
"history_point": "History Point",
|
"history_point": "History Point",
|
||||||
@ -235,6 +236,90 @@
|
|||||||
"coupon": "Coupon",
|
"coupon": "Coupon",
|
||||||
"forget_password": "Forget Password",
|
"forget_password": "Forget Password",
|
||||||
"payment_detail": "Payment Detail",
|
"payment_detail": "Payment Detail",
|
||||||
"membership_detail": "สิทธิพิเศษแต่ละระดับสมาชิก",
|
"membership_detail": "Member Benefits by Tier",
|
||||||
"verify_otp": "Verify OTP"
|
"verify_otp": "Verify OTP",
|
||||||
|
"success": "Success",
|
||||||
|
"check_otp_msg": "Please check the OTP sent to your phone number",
|
||||||
|
"enter_otp": "Please enter the OTP code.",
|
||||||
|
"resend_otp": "Resend OTP available in",
|
||||||
|
"minutes": "minutes",
|
||||||
|
"to_phone_number": "sent to the phone number",
|
||||||
|
"save_photo": "Photo saved successfully",
|
||||||
|
"confirm_pay": "Confirm and Pay",
|
||||||
|
"coupon_not_found": "Coupons not found.",
|
||||||
|
"coupon_selected": "Selected Discount Coupon",
|
||||||
|
"choose_coupon": "Choose Coupon",
|
||||||
|
"confirm_coupon": "Confirm Coupon",
|
||||||
|
"unsuccessful": "Unsuccessful",
|
||||||
|
"enter_phone_no": "Enter phone number",
|
||||||
|
"receive_otp": "To receive the OTP code via SMS.",
|
||||||
|
"back_to": "Back to",
|
||||||
|
"credential_invalid" : "Incorrect username or password.",
|
||||||
|
"phone_format_invalid": "Invalid phone number format.",
|
||||||
|
"required_field": "Please fill in all required fields.",
|
||||||
|
"pw_not_match": "Passwords do not match.",
|
||||||
|
"confirm_pw": "Confirm password.",
|
||||||
|
"from_gallery": "From Gallery",
|
||||||
|
"take_photo": "Take Photo",
|
||||||
|
"payment_overdue": "Payment overdue",
|
||||||
|
"news_canceled": "News publication has been canceled.",
|
||||||
|
"email_format_invalid": "Invalid email format.",
|
||||||
|
"error_occurred": "An error occurred",
|
||||||
|
"try_again": "Please try again",
|
||||||
|
"payment_overdue_contact_admin": "Your payment is overdue. Please contact customer service.",
|
||||||
|
"copy_pw": "Tap to copy password.",
|
||||||
|
"for_login": "For use in logging in.",
|
||||||
|
"resend_code": "Resend code",
|
||||||
|
"confirm_meter": "Confirm meter number",
|
||||||
|
"process_send_data": "Processing may take some time to verify your information",
|
||||||
|
"enter_meter": "Enter meter number of ",
|
||||||
|
"attach_meter": "Please attach a photo and enter the water and electric meter numbers",
|
||||||
|
"by_due_date": "By the due date",
|
||||||
|
"sorry_send_data": "Sorry if you have already submitted the data.",
|
||||||
|
"enter_info": "Enter information.",
|
||||||
|
"later": "Later",
|
||||||
|
"loading_news": "Loading",
|
||||||
|
"title_delete_ac": "Are you sure you want to delete your account?",
|
||||||
|
"body_delete_ac": "The request will be reviewed by an administrator and may take up to 30 days to complete.",
|
||||||
|
"contact_admin_for_delete_ac": "Contact admin to delete your account.",
|
||||||
|
"condition": "Condition",
|
||||||
|
"min_rental": "Minimum rental period",
|
||||||
|
"avg_rent": "Average monthly rent",
|
||||||
|
"min_avg_rent": "Minimum average monthly rent",
|
||||||
|
"privilege": "Privileges",
|
||||||
|
"feedback_title": "Thank you for your feedback",
|
||||||
|
"feedback_body": "We will review your suggestions",
|
||||||
|
"suggestion_title": "Title",
|
||||||
|
"failed_coupon": "Failed to apply discount coupon.",
|
||||||
|
"use_coupon" : "Use discount coupon",
|
||||||
|
"paid1": "Paid",
|
||||||
|
"pay_now": "Pay now",
|
||||||
|
"contact_front": "Contact front desk",
|
||||||
|
"outstanding_balance_past_due": "You have an outstanding balance past due.",
|
||||||
|
"point_expire": "Points about to expire.",
|
||||||
|
"not_found_point_expire": "No expiring coupons found.",
|
||||||
|
"rental_discount" : "Rental discount",
|
||||||
|
"product_discount": "Product discount",
|
||||||
|
"redeem_service": "Redeem/Services",
|
||||||
|
"lucky_draw": "Lucky Draw",
|
||||||
|
"no_items": "No items found.",
|
||||||
|
"am": "AM",
|
||||||
|
"pm": "PM",
|
||||||
|
"event_name": "Event Name",
|
||||||
|
"valid_until": "Valid until",
|
||||||
|
"redeem_point": "Redeem points",
|
||||||
|
"confirm_redeem": "Confirm redeem points",
|
||||||
|
"no_chat" : "No chat data.",
|
||||||
|
"enter_pw": "Enter password",
|
||||||
|
"total": "Total",
|
||||||
|
"taken_on": "Taken on",
|
||||||
|
"short_minute": "",
|
||||||
|
"retake_meter_photo": "Retake meter photo",
|
||||||
|
"times": "Time",
|
||||||
|
"admin_project": "Admin Project",
|
||||||
|
"expire_on": "Expire on",
|
||||||
|
"overdue": "Overdue",
|
||||||
|
"incorrect_pw": "Incorrect password",
|
||||||
|
"pw_not_match_and_retry": "New password and confirmation do not match. Please try again.",
|
||||||
|
"no_data": "No Data"
|
||||||
}
|
}
|
||||||
|
@ -238,5 +238,89 @@
|
|||||||
"forget_password": "ลืมรหัสผ่าน",
|
"forget_password": "ลืมรหัสผ่าน",
|
||||||
"payment_detail": "ใบตั้งหนี้",
|
"payment_detail": "ใบตั้งหนี้",
|
||||||
"membership_detail": "สิทธิพิเศษแต่ละระดับสมาชิก",
|
"membership_detail": "สิทธิพิเศษแต่ละระดับสมาชิก",
|
||||||
"verify_otp": "ยืนยันรหัส OTP"
|
"verify_otp": "ยืนยันรหัส OTP",
|
||||||
|
"success": "ทำรายการสำเร็จ",
|
||||||
|
"check_otp_msg": "กรุณาตรวจสอบ OTP ที่ส่งไปยังเบอร์โทรศัพท์ของท่าน",
|
||||||
|
"enter_otp": "กรุณากรอกรหัส OTP",
|
||||||
|
"resend_otp": "ส่งรหัส OTP ได้อีกครั้งใน",
|
||||||
|
"minutes": "นาที",
|
||||||
|
"to_phone_number": "ที่ส่งไปที่เบอร์",
|
||||||
|
"save_photo": "บันทึกรูปสำเร็จ",
|
||||||
|
"confirm_pay": "ยืนยันรายการและชำระเงิน",
|
||||||
|
"coupon_not_found": "ไม่พบรายการคูปอง",
|
||||||
|
"coupon_selected": "คูปองส่วนลดที่เลือก",
|
||||||
|
"choose_coupon": "เลือกคูปองส่วนลด",
|
||||||
|
"confirm_coupon": "ยืนยันการใช้คูปอง",
|
||||||
|
"unsuccessful": "ทำรายการไม่สำเร็จ",
|
||||||
|
"enter_phone_no": "กรุณากรอกเบอร์โทรศัพท์",
|
||||||
|
"receive_otp": "เพื่อรับรหัส OTP ทาง SMS",
|
||||||
|
"back_to": "กลับไปยัง",
|
||||||
|
"credential_invalid" :"ท่านกรอก บัญชีผู้ใช้งาน หรือ รหัสผ่านผิด",
|
||||||
|
"phone_format_invalid": "ท่านกรอกรูปแบบโทรศัพท์ไม่ถูกต้อง",
|
||||||
|
"required_field": "กรุณากรอกข้อมูลให้ครบถ้วน",
|
||||||
|
"pw_not_match": "รหัสผ่านไม่ตรงกัน",
|
||||||
|
"confirm_pw": "กรุณากรอกยืนยันรหัสผ่าน",
|
||||||
|
"from_gallery": "รูปจากแกลอรี่",
|
||||||
|
"take_photo": "ถ่ายรูป",
|
||||||
|
"payment_overdue": "หนี้ค้างชำระเกินกำหนด",
|
||||||
|
"news_canceled": "ถูกยกเลิกเผยแพร่ข่าว",
|
||||||
|
"email_format_invalid": "ท่านกรอกรูปแบบอีเมลไม่ถูกต้อง",
|
||||||
|
"error_occurred": "เกิดข้อผิดพลาด",
|
||||||
|
"try_again": "กรุณาลองอีกครั้ง",
|
||||||
|
"payment_overdue_contact_admin": "รายการค้างชำระของคุณ เกินกำหนดชำระ กรุณาติดต่อสำนักงานบริการลูกค้า",
|
||||||
|
"copy_pw": "คลิกที่รหัสผ่านเพื่อคัดลอก",
|
||||||
|
"for_login": "เพื่อนำไปใช้ในการเข้าสู่ระบบ",
|
||||||
|
"resend_code": "ขอรหัสอีกครั้ง",
|
||||||
|
"confirm_meter": "ยีนยันหมายเลขหน่วย",
|
||||||
|
"process_send_data": "ระบบอาจจะใช้เวลาในการประมวลผลข้อมูล เพื่อเช็คความถูกต้องของข้อมูลที่กรอก",
|
||||||
|
"enter_meter": "กรุณากรอกเลขมิเตอร์",
|
||||||
|
"attach_meter": "กรุณาแนบรูปและกรอกเลขมิเตอร์น้ำไฟ",
|
||||||
|
"by_due_date": "ภายในวันที่",
|
||||||
|
"sorry_send_data": "ขออภัยหากลูกค้าได้ส่งข้อมูลเรียบร้อยแล้ว",
|
||||||
|
"enter_info": "กรอกข้อมูล",
|
||||||
|
"later": "ภายหลัง",
|
||||||
|
"loading_news": "กำลังโหลดข้อมูลข่าว",
|
||||||
|
"title_delete_ac": "ต้องการลบบัญชีใช่หรือไม่?",
|
||||||
|
"body_delete_ac": "คำขอของท่านจะถูกส่งไปยังผู้ดุแลเพื่อตรวจสอบและทำการลบบัญชี อาจใช้เวลาประมาณ 30 วัน",
|
||||||
|
"contact_admin_for_delete_ac": "กรุณาติดต่อผู้ดูแลเพื่อขอลบบัญชี",
|
||||||
|
"condition": "เงื่อนไข",
|
||||||
|
"min_rental": "อายุการเช่าพักอย่างน้อย",
|
||||||
|
"avg_rent": "ค่าเช่าเฉลี่ยต่อเดือน",
|
||||||
|
"min_avg_rent": "ค่าเช่าเฉลี่ยต่อเดือนอย่างน้อย",
|
||||||
|
"privilege": "สิทธิพิเศษ",
|
||||||
|
"feedback_title": "รับข้อเสนอแนะเรียบร้อย",
|
||||||
|
"feedback_body": "ทางเราได้รับคำแนะนำและเรื่องไว้พิจารณาแล้ว ขอบคุณสำหรับความร่วมมือค่ะ",
|
||||||
|
"suggestion_title": "เขียนหัวข้อ",
|
||||||
|
"failed_coupon": "ใช้คูปองส่วนลดไม่สำเร็จ",
|
||||||
|
"use_coupon" : "ใช้คูปองส่วนลด",
|
||||||
|
"paid1": "จ่ายแล้ว",
|
||||||
|
"pay_now": "ชำระเงินตอนนี้",
|
||||||
|
"contact_front": "กรุณาติดต่อเจ้าหน้าที่",
|
||||||
|
"outstanding_balance_past_due": "คุณมีหนี้ค้างชำระเกินกำหนดแล้ว",
|
||||||
|
"point_expire": "คะแนนที่กำลังจะหมดอายุ",
|
||||||
|
"not_found_point_expire": "ไม่พบรายการคูปองที่กำลังจะหมดอายุ",
|
||||||
|
"rental_discount" : "ส่วนลดค่าเช่า",
|
||||||
|
"product_discount": "ส่วนลดสินค้า",
|
||||||
|
"redeem_service": "แลกสินค้า/บริการ",
|
||||||
|
"lucky_draw": "ชิงโชค",
|
||||||
|
"no_items": "ไม่มีสินค้า",
|
||||||
|
"am": "ช่วงเช้า",
|
||||||
|
"pm": "ช่วงเย็น",
|
||||||
|
"event_name": "ชื่อกิจกรรม",
|
||||||
|
"valid_until": "ใช้ได้ถึงวันที่",
|
||||||
|
"redeem_point": "แลกแต้ม",
|
||||||
|
"confirm_redeem": "ยืนยันการแลกแต้ม",
|
||||||
|
"no_chat" : "ไม่มีข้อมูลการสนทนา",
|
||||||
|
"enter_pw": "กรุณากรอกรหัสผ่าน",
|
||||||
|
"total": "รวม",
|
||||||
|
"taken_on": "ถ่ายเมื่อวันที่",
|
||||||
|
"short_minute": "น.",
|
||||||
|
"retake_meter_photo": "ถ่ายภาพมิเตอร์อีกครั้ง",
|
||||||
|
"times": "เวลา",
|
||||||
|
"admin_project": "แอดมินโครงการ",
|
||||||
|
"expire_on": "หมดอายุ",
|
||||||
|
"overdue": "เกินกำหนดชำระ",
|
||||||
|
"incorrect_pw": "รหัสผ่านไม่ถูกต้อง",
|
||||||
|
"pw_not_match_and_retry": "รหัสผ่านใหม่ไม่ตรงกับรหัสยืนยัน\nกรุณาลองอีกครั้ง",
|
||||||
|
"no_data": "ไม่มีรายการข้อมูล"
|
||||||
}
|
}
|
||||||
|
39
yarn.lock
39
yarn.lock
@ -1088,20 +1088,7 @@
|
|||||||
"@babel/parser" "^7.27.2"
|
"@babel/parser" "^7.27.2"
|
||||||
"@babel/types" "^7.27.1"
|
"@babel/types" "^7.27.1"
|
||||||
|
|
||||||
"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3":
|
"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3", "@babel/traverse@^7.20.0", "@babel/traverse@^7.25.3", "@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.28.0":
|
||||||
version "7.28.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.0.tgz#518aa113359b062042379e333db18380b537e34b"
|
|
||||||
integrity sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==
|
|
||||||
dependencies:
|
|
||||||
"@babel/code-frame" "^7.27.1"
|
|
||||||
"@babel/generator" "^7.28.0"
|
|
||||||
"@babel/helper-globals" "^7.28.0"
|
|
||||||
"@babel/parser" "^7.28.0"
|
|
||||||
"@babel/template" "^7.27.2"
|
|
||||||
"@babel/types" "^7.28.0"
|
|
||||||
debug "^4.3.1"
|
|
||||||
|
|
||||||
"@babel/traverse@^7.20.0", "@babel/traverse@^7.25.3", "@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.28.0":
|
|
||||||
version "7.28.0"
|
version "7.28.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.0.tgz#518aa113359b062042379e333db18380b537e34b"
|
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.0.tgz#518aa113359b062042379e333db18380b537e34b"
|
||||||
integrity sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==
|
integrity sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==
|
||||||
@ -1528,9 +1515,9 @@
|
|||||||
merge-options "^3.0.4"
|
merge-options "^3.0.4"
|
||||||
|
|
||||||
"@react-native-camera-roll/camera-roll@^7.10.0":
|
"@react-native-camera-roll/camera-roll@^7.10.0":
|
||||||
version "7.10.1"
|
version "7.10.2"
|
||||||
resolved "https://registry.yarnpkg.com/@react-native-camera-roll/camera-roll/-/camera-roll-7.10.1.tgz#55c511d30caac6dbf9c9bc57db3417a88bbde88c"
|
resolved "https://registry.yarnpkg.com/@react-native-camera-roll/camera-roll/-/camera-roll-7.10.2.tgz#af2234f60f0b55aff9afb60888ce7f0669d52593"
|
||||||
integrity sha512-6zuK+E+z3a4Nij5OrkMh9BL7J1/Eg0PB8iX7/chNwhghpTZ93cr3Zrj/02ueglN0BV/tIKmb+BDERfzVIGRT7w==
|
integrity sha512-XgJQJDFUycmqSX+MH7vTcRigQwEIQNLIu1GvOngCZRwlSV2mF61UzeruSmmHwkBcGnHZFXkKg9fil0FQVfyglw==
|
||||||
|
|
||||||
"@react-native-community/cli-clean@11.3.7":
|
"@react-native-community/cli-clean@11.3.7":
|
||||||
version "11.3.7"
|
version "11.3.7"
|
||||||
@ -3413,9 +3400,9 @@ ee-first@1.1.1:
|
|||||||
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
|
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
|
||||||
|
|
||||||
electron-to-chromium@^1.5.173:
|
electron-to-chromium@^1.5.173:
|
||||||
version "1.5.195"
|
version "1.5.199"
|
||||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.195.tgz#2fe0d9b644726292189f227be73740868617b6d5"
|
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.199.tgz#4d8be9c78362c05f095eb7392e9a54f1fb14fd3a"
|
||||||
integrity sha512-URclP0iIaDUzqcAyV1v2PgduJ9N0IdXmWsnPzPfelvBmjmZzEy6xJcjb1cXj+TbYqXgtLrjHEoaSIdTYhw4ezg==
|
integrity sha512-3gl0S7zQd88kCAZRO/DnxtBKuhMO4h0EaQIN3YgZfV6+pW+5+bf2AdQeHNESCoaQqo/gjGVYEf2YM4O5HJQqpQ==
|
||||||
|
|
||||||
emittery@^0.13.1:
|
emittery@^0.13.1:
|
||||||
version "0.13.1"
|
version "0.13.1"
|
||||||
@ -8427,9 +8414,9 @@ spdx-expression-parse@^3.0.0:
|
|||||||
spdx-license-ids "^3.0.0"
|
spdx-license-ids "^3.0.0"
|
||||||
|
|
||||||
spdx-license-ids@^3.0.0:
|
spdx-license-ids@^3.0.0:
|
||||||
version "3.0.21"
|
version "3.0.22"
|
||||||
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz#6d6e980c9df2b6fc905343a3b2d702a6239536c3"
|
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz#abf5a08a6f5d7279559b669f47f0a43e8f3464ef"
|
||||||
integrity sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==
|
integrity sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==
|
||||||
|
|
||||||
split-on-first@^1.0.0:
|
split-on-first@^1.0.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
@ -9224,9 +9211,9 @@ yallist@^3.0.2:
|
|||||||
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
|
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
|
||||||
|
|
||||||
yaml@^2.2.1, yaml@^2.2.2:
|
yaml@^2.2.1, yaml@^2.2.2:
|
||||||
version "2.8.0"
|
version "2.8.1"
|
||||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.0.tgz#15f8c9866211bdc2d3781a0890e44d4fa1a5fff6"
|
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.1.tgz#1870aa02b631f7e8328b93f8bc574fac5d6c4d79"
|
||||||
integrity sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==
|
integrity sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==
|
||||||
|
|
||||||
yargs-parser@^18.1.2:
|
yargs-parser@^18.1.2:
|
||||||
version "18.1.3"
|
version "18.1.3"
|
||||||
|
Loading…
Reference in New Issue
Block a user