TIF_NGANJUK_E41212433/screens/AksesWarga/EcoMapCoinExchangeScreen.js

237 lines
5.3 KiB
JavaScript

import React from "react";
import {
View,
Text,
TouchableOpacity,
Image,
ScrollView,
StyleSheet,
Alert,
} from "react-native";
import { useNavigation } from "@react-navigation/native";
import BottomNav from "../../Navigation/BottomNav";
const EcoMapCoinExchangeScreen = () => {
const navigation = useNavigation();
const userCoin = 1350;
const expiredDate = "30 Mei 2025";
const items = [
{
id: 1,
name: "Botol Minum",
coin: 300,
image: require("../../assets/images/botol1.png"),
},
{
id: 2,
name: "Botol Minum Anak",
coin: 350,
image: require("../../assets/images/botol2.png"),
},
{
id: 3,
name: "Tas Belanja",
coin: 250,
image: require("../../assets/images/tas2.png"),
},
{
id: 4,
name: "Peralatan Makan",
coin: 400,
image: require("../../assets/images/alatmakan.png"),
},
];
const handleExchange = (item) => {
if (userCoin >= item.coin) {
Alert.alert(
"Konfirmasi Penukaran",
`Anda yakin ingin menukar ${item.coin} koin untuk mendapatkan ${item.name}?`,
[
{ text: "Batal", style: "cancel" },
{
text: "Ya",
onPress: () => {
Alert.alert(
"Berhasil",
`Kamu telah menukar ${item.name} dengan ${item.coin} Koin.`
);
},
},
]
);
} else {
Alert.alert(
"Koin Tidak Cukup",
"Silakan kumpulkan koin terlebih dahulu."
);
}
};
return (
<View style={{ flex: 1, backgroundColor: "#fff" }}>
<ScrollView contentContainerStyle={styles.container}>
<Text style={styles.title}>TUKAR KOIN</Text>
<View style={styles.coinBox}>
<View style={styles.coinInfoColumn}>
<Text style={styles.coinAmount}>
<Text style={styles.coinIcon}></Text> {userCoin}{" "}
<Text style={styles.coinText}>Koin EcoMap</Text>
</Text>
<Text style={styles.expiryText}>
{userCoin} Koin EcoMap kadaluwarsa pada {expiredDate}
</Text>
</View>
<View style={styles.coinInfoRow}>
<TouchableOpacity
style={styles.getCoinBtn}
onPress={() => navigation.navigate("misimingguan")}
>
<Text style={styles.getCoinText}>Dapatkan Koin</Text>
</TouchableOpacity>
</View>
</View>
<View style={styles.itemGrid}>
{items.map((item) => (
<View key={item.id} style={styles.itemCard}>
<Image source={item.image} style={styles.itemImage} />
<Text style={styles.itemName}>{item.name}</Text>
<View style={styles.coinBoxItem}>
<Text style={styles.itemCoin}>{item.coin} Koin</Text>
</View>
<TouchableOpacity
style={styles.exchangeBtn}
onPress={() => handleExchange(item)}
>
<Text style={styles.exchangeText}>Tukar Koin</Text>
</TouchableOpacity>
</View>
))}
</View>
</ScrollView>
{/* BottomNav harus di luar ScrollView supaya fixed */}
<BottomNav />
</View>
);
};
const styles = StyleSheet.create({
container: {
padding: 20,
backgroundColor: "#fff",
width: "100%",
},
title: {
fontSize: 22,
fontWeight: "bold",
color: "#000",
marginBottom: 20,
textAlign: "left",
marginLeft: 10,
marginTop: 40,
},
coinBox: {
borderWidth: 1,
borderColor: "#ccc",
padding: 15,
borderRadius: 10,
marginBottom: 20,
alignItems: "center",
flexDirection: "row",
justifyContent: "space-between",
},
coinInfoColumn: {
flexDirection: "column",
justifyContent: "center",
alignItems: "flex-start",
},
coinAmount: {
fontSize: 24,
fontWeight: "bold",
color: "#d4af37",
},
coinIcon: {
fontSize: 22,
},
coinText: {
color: "#2f4f2f",
fontSize: 16,
},
expiryText: {
fontSize: 12,
color: "#888",
marginTop: 5,
},
coinInfoRow: {
justifyContent: "center",
alignItems: "center",
},
getCoinBtn: {
backgroundColor: "#d4af37",
paddingVertical: 6,
paddingHorizontal: 20,
borderRadius: 8,
borderWidth: 1,
borderColor: "#000",
},
getCoinText: {
color: "#fff",
fontWeight: "bold",
},
itemGrid: {
flexDirection: "row",
flexWrap: "wrap",
justifyContent: "space-between",
},
itemCard: {
width: "48%",
borderWidth: 1,
borderColor: "#ccc",
borderRadius: 12,
padding: 8,
marginBottom: 15,
alignItems: "center",
},
itemImage: {
width: 70,
height: 100,
resizeMode: "contain",
},
itemName: {
marginTop: 10,
fontSize: 20,
fontWeight: "bold",
textAlign: "center",
},
coinBoxItem: {
backgroundColor: "#2D572C",
paddingVertical: 6,
paddingHorizontal: 20,
borderRadius: 8,
marginVertical: 6,
},
itemCoin: {
color: "#fff",
fontWeight: "bold",
fontSize: 18,
textAlign: "center",
},
exchangeBtn: {
backgroundColor: "#e2e2e2",
paddingHorizontal: 10,
paddingVertical: 6,
borderRadius: 6,
borderWidth: 1,
},
exchangeText: {
fontWeight: "bold",
},
});
export default EcoMapCoinExchangeScreen;