import React, { useState, useEffect } from 'react'; import { Box, TextField, Button, Typography, Paper, FormControl, InputLabel, Select, MenuItem, Grid, Alert, SelectChangeEvent, Divider } from '@mui/material'; import { useNavigate } from 'react-router-dom'; import { juniorsApi } from '../../api/client'; import { CreateJuniorRequest } from '../../types/junior'; import { DocumentUpload } from '../document/DocumentUpload'; import { DocumentType } from '../../types/document'; import { ApiError } from '../../types/api'; import { AxiosError } from 'axios'; export const AddJuniorForm = () => { const navigate = useNavigate(); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const [formData, setFormData] = useState({ countryCode: '+962', phoneNumber: '', firstName: '', lastName: '', dateOfBirth: '', email: '', relationship: 'PARENT', civilIdFrontId: '', civilIdBackId: '' }); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); console.log('Form data:', formData); setError(''); setLoading(true); try { if (!formData.civilIdFrontId || !formData.civilIdBackId) { console.log('Missing documents - Front:', formData.civilIdFrontId, 'Back:', formData.civilIdBackId); throw new Error('Please upload both front and back civil ID documents'); } console.log('Submitting data:', formData); const dataToSubmit = { ...formData, civilIdFrontId: formData.civilIdFrontId.trim(), civilIdBackId: formData.civilIdBackId.trim() }; await juniorsApi.createJunior(dataToSubmit); navigate('/juniors'); } catch (err) { console.error('Create junior error:', err); if (err instanceof AxiosError && err.response?.data) { const apiError = err.response.data as ApiError; const messages = Array.isArray(apiError.message) ? apiError.message.map(m => `${m.field}: ${m.message}`).join('\n') : apiError.message; setError(messages); } else { setError(err instanceof Error ? err.message : 'Failed to create junior'); } } finally { setLoading(false); } }; const handleInputChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name]: value })); }; const handleSelectChange = (e: SelectChangeEvent) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name as string]: value })); }; useEffect(() => { console.log('Form data updated:', formData); }, [formData]); const handleCivilIdFrontUpload = (documentId: string) => { console.log('Front ID uploaded:', documentId); setFormData(prev => ({ ...prev, civilIdFrontId: documentId })); }; const handleCivilIdBackUpload = (documentId: string) => { console.log('Back ID uploaded:', documentId); setFormData(prev => ({ ...prev, civilIdBackId: documentId })); }; return ( Add New Junior {error && ( {error} )} Country Code Relationship Civil ID Documents {formData.civilIdFrontId && ( Civil ID Front uploaded (ID: {formData.civilIdFrontId}) )} {formData.civilIdBackId && ( Civil ID Back uploaded (ID: {formData.civilIdBackId}) )} ); };