import { collection, onSnapshot, query, orderBy, doc, getDoc, updateDoc, serverTimestamp, getDocs, where } from "https://www.gstatic.com/firebasejs/10.7.1/firebase-firestore.js";
export function initSolicitudes(db, container) {
// RESTAURACIÓN DE LA ESTRUCTURA VISUAL (CSS CLASSES)
container.innerHTML = `
| Cliente / Ciudad |
Especialidad Requerida |
Estado / Contacto |
Técnico Asignado |
Acciones |
Asignar Especialista
`;
// --- ESCUCHA EN TIEMPO REAL CON DISEÑO DE FILAS RECUPERADO ---
onSnapshot(query(collection(db, "solicitudes"), orderBy("creado", "desc")), (snap) => {
const tbody = document.getElementById('tabla-solicitudes-body');
if(!tbody) return;
tbody.innerHTML = "";
snap.forEach(docSnap => {
const s = docSnap.data();
const id = docSnap.id;
const nombreCli = (s.nombreCliente || 'S/N').toUpperCase();
const ciudad = (s.ciudad || 'SIN CIUDAD').toUpperCase();
const especialidad = (s.especialidad || 'GENERAL').toUpperCase();
const estado = (s.estado || 'PENDIENTE').toUpperCase();
// Restauramos las clases de Tailwind para las celdas (p-6, font-black, etc.)
tbody.innerHTML += `
|
${nombreCli}
${ciudad}
|
${especialidad}
|
● ${estado}
${s.telefono || ''}
|
${s.tecnicoNombre || 'ESPERANDO ASIGNACIÓN'}
|
|
`;
});
});
// --- LÓGICA DE ASIGNACIÓN (MANTIENE LAS NOTIFICACIONES) ---
window.abrirAsignar = async (solicitudId, especialidad) => {
const select = document.getElementById('select-tecnico');
const modal = document.getElementById('modal-asignar');
const areaTxt = document.getElementById('area-txt');
const docRef = doc(db, "solicitudes", solicitudId);
const docSnap = await getDoc(docRef);
const solicitudActual = docSnap.data();
areaTxt.innerText = especialidad;
select.innerHTML = '';
modal.classList.remove('hidden');
try {
const q = query(collection(db, "tecnicos"), where("especialidad", "==", especialidad.toUpperCase()));
const querySnapshot = await getDocs(q);
select.innerHTML = '';
if (querySnapshot.empty) {
select.innerHTML = ``;
} else {
select.innerHTML = '';
querySnapshot.forEach((tDoc) => {
const t = tDoc.data();
select.innerHTML += ``;
});
}
document.getElementById('btn-confirmar-asignacion').onclick = async () => {
const valor = select.value;
if (!valor) return;
const [nuevoTecId, nuevoTecNombre, nuevoTecTel] = valor.split('|');
await updateDoc(docRef, {
tecnicoId: nuevoTecId,
tecnicoNombre: nuevoTecNombre,
tecnicoTelefono: nuevoTecTel,
estado: "ASIGNADO",
fechaAsignacion: serverTimestamp()
});
// Notificación WhatsApp
const msg = `DASCORP: Nuevo servicio asignado.%0A- CLIENTE: ${solicitudActual.nombreCliente}%0A- CIUDAD: ${solicitudActual.ciudad}%0A- AREA: ${especialidad}`;
window.open(`https://wa.me/${nuevoTecTel.replace(/\D/g, '')}?text=${msg}`, '_blank');
modal.classList.add('hidden');
Swal.fire({ title: '¡LISTO!', text: 'Técnico asignado correctamente', icon: 'success', confirmButtonColor: '#b30000' });
};
} catch (e) { console.error(e); }
};
window.cerrarAsignacion = () => document.getElementById('modal-asignar').classList.add('hidden');
}