@@ -3876,26 +3891,27 @@ function InspectionsTab({ inspections, user, onUpdate }) { user={user} onClose={() => setSelectedInspection(null)} onUpdate={onUpdate} + onContinue={onContinue} /> )} > ) } -function InspectionModal({ checklist, user, onClose, onComplete }) { +function InspectionModal({ checklist, existingInspection, user, onClose, onComplete }) { const [step, setStep] = useState(1) // 1: Vehicle Info, 2: Questions, 3: Signatures const [loading, setLoading] = useState(false) const [questions, setQuestions] = useState([]) - const [inspectionId, setInspectionId] = useState(null) + const [inspectionId, setInspectionId] = useState(existingInspection?.id || null) // Form data for vehicle and client const [vehicleData, setVehicleData] = useState({ - vehicle_plate: '', - vehicle_brand: '', - vehicle_model: '', - vehicle_km: '', - order_number: '', - or_number: '' + vehicle_plate: existingInspection?.vehicle_plate || '', + vehicle_brand: existingInspection?.vehicle_brand || '', + vehicle_model: existingInspection?.vehicle_model || '', + vehicle_km: existingInspection?.vehicle_km || '', + order_number: existingInspection?.order_number || '', + or_number: existingInspection?.or_number || '' }) // Answers data @@ -3927,15 +3943,54 @@ function InspectionModal({ checklist, user, onClose, onComplete }) { console.log('Questions loaded:', questionsData.length, 'questions') setQuestions(questionsData) - // Initialize answers object - empty values to force user interaction + // Initialize answers object const initialAnswers = {} - questionsData.forEach(q => { - initialAnswers[q.id] = { - value: '', // No default value - user must choose - observations: '', - photos: [] + + // Si hay inspección existente, cargar sus respuestas + if (existingInspection?.id) { + console.log('Loading existing inspection:', existingInspection.id) + const inspResponse = await fetch(`${API_URL}/api/inspections/${existingInspection.id}`, { + headers: { 'Authorization': `Bearer ${token}` } + }) + + if (inspResponse.ok) { + const inspData = await inspResponse.json() + console.log('Existing inspection loaded:', inspData) + + // Cargar respuestas existentes + questionsData.forEach(q => { + const existingAnswer = inspData.answers?.find(a => a.question_id === q.id) + if (existingAnswer) { + initialAnswers[q.id] = { + value: existingAnswer.answer_value || '', + observations: existingAnswer.comment || '', + photos: existingAnswer.media_files?.map(m => m.file_path) || [] + } + } else { + initialAnswers[q.id] = { + value: '', + observations: '', + photos: [] + } + } + }) + + // Si ya tiene respuestas, ir al paso 2 + if (inspData.answers?.length > 0) { + setStep(2) + } } - }) + } else { + // Nueva inspección - inicializar vacío + questionsData.forEach(q => { + initialAnswers[q.id] = { + value: '', // No default value - user must choose + observations: '', + photos: [] + } + }) + } + console.log('Initial answers:', initialAnswers) setAnswers(initialAnswers) } else { @@ -3948,7 +4003,7 @@ function InspectionModal({ checklist, user, onClose, onComplete }) { } loadQuestions() - }, [checklist.id]) + }, [checklist.id, existingInspection]) // Step 1: Create inspection with vehicle data const handleVehicleSubmit = async (e) => { @@ -3959,6 +4014,18 @@ function InspectionModal({ checklist, user, onClose, onComplete }) { const token = localStorage.getItem('token') const API_URL = import.meta.env.VITE_API_URL || '' + // Si ya existe una inspección, solo pasar al siguiente paso + if (existingInspection?.id) { + console.log('Continuing existing inspection:', existingInspection.id) + if (questions.length > 0) { + setStep(2) + } else { + alert('Error: El checklist no tiene preguntas configuradas') + } + setLoading(false) + return + } + console.log('Creating inspection with data:', vehicleData) // Prepare data for API