loan paid off detail better

This commit is contained in:
2025-07-04 20:24:34 +05:00
parent 6c15093ebc
commit cfa0b840ed

View File

@@ -6,6 +6,35 @@ import apiService from '../../services/apiService';
import { COLORS } from '../../constants/colors'; import { COLORS } from '../../constants/colors';
import { StatusBar } from 'expo-status-bar'; import { StatusBar } from 'expo-status-bar';
// Add helper format functions
const formatDate = (dateStr) => {
if (!dateStr) return '';
const d = new Date(dateStr);
if (isNaN(d)) return dateStr;
return d.toLocaleDateString('tk-TM');
};
const formatDateTime = (dateStr) => {
if (!dateStr) return '';
const d = new Date(dateStr);
if (isNaN(d)) return dateStr;
return d.toLocaleString('tk-TM', {
hour: '2-digit',
minute: '2-digit',
day: '2-digit',
month: '2-digit',
year: 'numeric',
});
};
// Inline component for a key/value row
const DetailRow = ({ label, value, showBorder = true }) => (
<View style={[styles.detailRow, showBorder && styles.detailRowBorder]}>
<Text style={styles.detailKey}>{label}</Text>
<Text style={styles.detailValue}>{String(value)}</Text>
</View>
);
const LoanPaidOffLetterOrderDetailsScreen = () => { const LoanPaidOffLetterOrderDetailsScreen = () => {
const navigation = useNavigation(); const navigation = useNavigation();
const route = useRoute(); const route = useRoute();
@@ -71,55 +100,50 @@ const LoanPaidOffLetterOrderDetailsScreen = () => {
</TouchableOpacity> </TouchableOpacity>
<ScrollView contentContainerStyle={{ paddingBottom: 40, paddingHorizontal: 24 }}> <ScrollView contentContainerStyle={{ paddingBottom: 40, paddingHorizontal: 24 }}>
<Text style={styles.title}>Güwanama {order.id}</Text> <Text style={styles.title}>Karzyň ýapylandygy barada güwanama maglumatlary</Text>
{/* Basic order info */}
<View style={styles.detailCard}> <View style={styles.detailCard}>
{[ <DetailRow label="ID" value={order.id} />
'id', {order.created_at && (
'region', <DetailRow label="Döredilen wagty" value={formatDateTime(order.created_at)} />
'branch_id', )}
'customer_name', {order.status && <DetailRow label="Status" value={order.status} />}
'customer_surname', {<DetailRow label="Bellik" value={order.notes ?? '-'} showBorder={false} />}
'customer_patronic_name',
'born_at',
'phone',
'passport_serie',
'passport_id',
'status',
'notes',
'loan_contract_number',
'loan_contract_date',
'loan_amount',
'loan_reason',
].filter((k) => order[k] !== undefined && order[k] !== null).map((key, idx, arr) => {
const titles = {
id: 'ID',
region: 'Welaýat',
branch_id: 'Şahamça',
customer_name: 'Ady',
customer_surname: 'Familiýasy',
customer_patronic_name: 'Atasynyň ady',
born_at: 'Doglan senesi',
phone: 'Telefon',
passport_serie: 'Passport seriýa',
passport_id: 'Passport nomer',
status: 'Status',
notes: 'Bellikler',
loan_contract_number: 'Karz şertnamanyň belgisi',
loan_contract_date: 'Karz şertnamanyň senesi',
loan_amount: 'Karzyň möçberi',
loan_reason: 'Karzyň maksady',
};
return (
<View
key={key}
style={[styles.detailRow, idx !== arr.length - 1 && styles.detailRowBorder]}
>
<Text style={styles.detailKey}>{titles[key]}</Text>
<Text style={styles.detailValue}>{String(order[key])}</Text>
</View> </View>
);
})} {/* Lokasiýa */}
{(order.region || order.branch_id) && (
<>
<Text style={styles.sectionTitle}>Lokasiýa</Text>
<View style={styles.detailCard}>
{order.region && <DetailRow label="Welaýat" value={order.region} />}
{order.branch_id && <DetailRow label="Şahamça" value={order.branch_id} showBorder={false} />}
</View>
</>
)}
{/* Şahsy maglumatlar */}
<Text style={styles.sectionTitle}>Şahsy maglumatlar</Text>
<View style={styles.detailCard}>
<DetailRow label="Doly ady" value={`${order.customer_name} ${order.customer_surname} ${order.customer_patronic_name ?? ''}`.trim()} />
{order.born_at && (
<DetailRow label="Doglan güni" value={formatDate(order.born_at)} />
)}
{order.phone && <DetailRow label="Telefon" value={order.phone} />}
{order.passport_serie && <DetailRow label="Pasport seriýasy" value={order.passport_serie} />}
{order.passport_id && <DetailRow label="Pasport belgisi" value={order.passport_id} showBorder={false} />}
</View>
{/* Karz barada maglumatlar */}
<Text style={styles.sectionTitle}>Karz barada maglumatlar</Text>
<View style={styles.detailCard}>
{order.loan_contract_number && <DetailRow label="Karz şertnamanyň belgisi" value={order.loan_contract_number} />}
{order.loan_contract_date && (
<DetailRow label="Karz şertnamanyň senesi" value={formatDate(order.loan_contract_date)} />
)}
{order.loan_amount && <DetailRow label="Karzyň möçberi" value={order.loan_amount} />}
{order.loan_reason && <DetailRow label="Karzyň maksady" value={order.loan_reason} showBorder={false} />}
</View> </View>
<TouchableOpacity style={styles.deleteBtn} onPress={handleDelete}> <TouchableOpacity style={styles.deleteBtn} onPress={handleDelete}>
@@ -188,6 +212,12 @@ const styles = StyleSheet.create({
fontSize: 16, fontSize: 16,
fontWeight: '600', fontWeight: '600',
}, },
sectionTitle: {
fontSize: 18,
fontWeight: '700',
color: COLORS.textPrimary,
marginBottom: 12,
},
}); });
export default LoanPaidOffLetterOrderDetailsScreen; export default LoanPaidOffLetterOrderDetailsScreen;