diff --git a/src/screens/Loan/LoanOrdersScreen.js b/src/screens/Loan/LoanOrdersScreen.js index cd09a91..2dbb84d 100644 --- a/src/screens/Loan/LoanOrdersScreen.js +++ b/src/screens/Loan/LoanOrdersScreen.js @@ -1,5 +1,5 @@ import React, { useState, useCallback } from 'react'; -import { View, Text, StyleSheet, FlatList, ActivityIndicator, TouchableOpacity, RefreshControl, SafeAreaView } from 'react-native'; +import { View, Text, StyleSheet, FlatList, ActivityIndicator, TouchableOpacity, RefreshControl, SafeAreaView, Alert } from 'react-native'; import { Ionicons } from '@expo/vector-icons'; import { useNavigation, useFocusEffect } from '@react-navigation/native'; import apiService from '../../services/apiService'; @@ -47,6 +47,32 @@ const LoanOrdersScreen = () => { const amount = (item.loan_amount + ' TMT') || '-'; const created = item.created_at ? new Date(item.created_at).toLocaleDateString() : ''; + const handleDelete = async (orderId) => { + Alert.alert( + "Sargyty pozmak", + "Siz hakykatdanam bu sargyty pozmak isleýärsiňizmi?", + [ + { text: "Ýok", style: "cancel" }, + { + text: "Hawa", + onPress: async () => { + try { + const res = await apiService.deleteLoanOrder(orderId); + if (res.success) { + setOrders(prevOrders => prevOrders.filter(order => order.id !== orderId)); + } else { + console.warn('Failed to delete order:', res.error); + } + } catch (e) { + console.error('Error deleting order:', e.message); + } + }, + }, + ], + { cancelable: true } + ); + }; + return ( navigation.navigate('LoanOrderDetails', { orderId: item.id })}> @@ -58,8 +84,11 @@ const LoanOrdersScreen = () => { {amount} - {created} + Döredilen senesi: {created} + handleDelete(item.id)} style={styles.deleteButton}> + + ); }; @@ -112,6 +141,7 @@ const styles = StyleSheet.create({ borderRadius: 12, padding: 16, alignItems: 'center', + justifyContent: 'space-between', }, circle: { width: 40, @@ -127,7 +157,7 @@ const styles = StyleSheet.create({ passportText: { fontWeight: '700', color: COLORS.textPrimary, marginBottom: 4 }, accountLabel: { color: COLORS.textSecondary, fontSize: 14 }, accountValue: { color: COLORS.textPrimary, marginBottom: 4 }, - dateText: { color: COLORS.textSecondary, fontSize: 12, textAlign: 'right' }, + dateText: { color: COLORS.textSecondary, fontSize: 12, textAlign: 'left' }, emptyContainer: { flex: 1, justifyContent: 'center', alignItems: 'center' }, emptyText: { fontSize: 16, color: COLORS.textSecondary }, fab: { @@ -142,6 +172,9 @@ const styles = StyleSheet.create({ justifyContent: 'center', elevation: 4, }, + deleteButton: { + padding: 8, + }, }); export default LoanOrdersScreen; \ No newline at end of file diff --git a/src/screens/Loan/LoanPaidOffLetterOrdersScreen.js b/src/screens/Loan/LoanPaidOffLetterOrdersScreen.js index fd95022..cda876b 100644 --- a/src/screens/Loan/LoanPaidOffLetterOrdersScreen.js +++ b/src/screens/Loan/LoanPaidOffLetterOrdersScreen.js @@ -1,5 +1,5 @@ import React, { useState, useCallback } from 'react'; -import { View, Text, StyleSheet, FlatList, ActivityIndicator, TouchableOpacity, RefreshControl, SafeAreaView } from 'react-native'; +import { View, Text, StyleSheet, FlatList, ActivityIndicator, TouchableOpacity, RefreshControl, SafeAreaView, Alert } from 'react-native'; import { Ionicons } from '@expo/vector-icons'; import { useNavigation, useFocusEffect } from '@react-navigation/native'; import apiService from '../../services/apiService'; @@ -47,6 +47,32 @@ const LoanPaidOffLetterOrdersScreen = () => { const accountLine = `Karz hasaby:`; const created = item.created_at ? new Date(item.created_at).toLocaleDateString() : ''; + const handleDelete = async (orderId) => { + Alert.alert( + "Sargyty pozmak", + "Siz hakykatdanam bu sargyty pozmak isleýärsiňizmi?", + [ + { text: "Ýok", style: "cancel" }, + { + text: "Hawa", + onPress: async () => { + try { + const res = await apiService.deleteLoanPaidOffLetterOrder(orderId); + if (res.success) { + setOrders(prevOrders => prevOrders.filter(order => order.id !== orderId)); + } else { + console.warn('Failed to delete order:', res.error); + } + } catch (e) { + console.error('Error deleting order:', e.message); + } + }, + }, + ], + { cancelable: true } + ); + }; + return ( navigation.navigate('LoanPaidOffLetterOrderDetails', { orderId: item.id })}> @@ -58,6 +84,9 @@ const LoanPaidOffLetterOrdersScreen = () => { {item.loan_contract_number || '-'} {created} + handleDelete(item.id)} style={styles.deleteButton}> + + ); }; @@ -110,6 +139,7 @@ const styles = StyleSheet.create({ borderRadius: 12, padding: 16, alignItems: 'center', + justifyContent: 'space-between', }, circle: { width: 40, @@ -140,6 +170,9 @@ const styles = StyleSheet.create({ justifyContent: 'center', elevation: 4, }, + deleteButton: { + padding: 8, + }, }); export default LoanPaidOffLetterOrdersScreen; \ No newline at end of file diff --git a/src/screens/Loan/LoanRemainingOrdersScreen.js b/src/screens/Loan/LoanRemainingOrdersScreen.js index 30a906a..c34f437 100644 --- a/src/screens/Loan/LoanRemainingOrdersScreen.js +++ b/src/screens/Loan/LoanRemainingOrdersScreen.js @@ -65,6 +65,32 @@ const LoanRemainingOrdersScreen = () => { const accountLabel = 'Karz hasaby:'; const created = item.created_at ? new Date(item.created_at).toLocaleDateString() : ''; + const handleDelete = async (orderId) => { + Alert.alert( + "Sargyty pozmak", + "Siz hakykatdanam bu sargyty pozmak isleýärsiňizmi?", + [ + { text: "Ýok", style: "cancel" }, + { + text: "Hawa", + onPress: async () => { + try { + const res = await apiService.deleteLoanRemainingOrder(orderId); + if (res.success) { + setOrders(prevOrders => prevOrders.filter(order => order.id !== orderId)); + } else { + console.warn('Failed to delete order:', res.error); + } + } catch (e) { + console.error('Error deleting order:', e.message); + } + }, + }, + ], + { cancelable: true } + ); + }; + return ( handleItemPress(item)}> @@ -74,8 +100,11 @@ const LoanRemainingOrdersScreen = () => { {passportLine} {accountLabel} {item.account_number} - {created} + Döredilen senesi: {created} + handleDelete(item.id)} style={styles.deleteButton}> + + ); }; @@ -204,6 +233,7 @@ const styles = StyleSheet.create({ borderRadius: 12, padding: 16, alignItems: 'center', + justifyContent: 'space-between', // Added to push delete button to the right }, circle: { width: 40, @@ -318,6 +348,9 @@ const styles = StyleSheet.create({ fontWeight: '600', color: COLORS.textPrimary, }, + deleteButton: { + padding: 8, + }, }); export default LoanRemainingOrdersScreen; \ No newline at end of file