const db = require('../config/db');

var ID_EMPRESA = 1;

var familias = [
    { cod: 'F001', nombre: 'ALIMENTOS Y BEBIDAS', desc: 'PRODUCTOS ALIMENTICIOS Y BEBIDAS EN GENERAL' },
    { cod: 'F002', nombre: 'LIMPIEZA Y ASEO', desc: 'PRODUCTOS DE LIMPIEZA E HIGIENE' },
    { cod: 'F003', nombre: 'ÚTILES DE ESCRITORIO', desc: 'MATERIALES DE OFICINA Y ESCRITORIO' },
    { cod: 'F004', nombre: 'FERRETERÍA', desc: 'HERRAMIENTAS Y MATERIALES DE CONSTRUCCIÓN' },
    { cod: 'F005', nombre: 'ELECTRÓNICA', desc: 'EQUIPOS Y ACCESORIOS ELECTRÓNICOS' },
    { cod: 'F006', nombre: 'INDUMENTARIA', desc: 'ROPA Y UNIFORMES' },
    { cod: 'F007', nombre: 'SALUD Y BELLEZA', desc: 'PRODUCTOS FARMACÉUTICOS Y DE CUIDADO PERSONAL' }
];

var subfamilias = [
    // Alimentos y Bebidas
    { cod: 'SF001', nombre: 'BEBIDAS GASEOSAS', familia: 'F001', desc: 'REFRESCOS Y GASEOSAS' },
    { cod: 'SF002', nombre: 'LÁCTEOS', familia: 'F001', desc: 'LECHE, YOGURT Y DERIVADOS' },
    { cod: 'SF003', nombre: 'ABARROTES', familia: 'F001', desc: 'ARROZ, AZÚCAR, LENTEJAS, ETC.' },
    { cod: 'SF004', nombre: 'SNACKS', familia: 'F001', desc: 'BOCADITOS Y PASABOCAS' },
    { cod: 'SF005', nombre: 'AGUAS', familia: 'F001', desc: 'AGUA MINERAL Y SABORIZADA' },
    // Limpieza
    { cod: 'SF006', nombre: 'DETERGENTE Y JABÓN', familia: 'F002', desc: 'JABONES Y DETERGENTES PARA ROPA' },
    { cod: 'SF007', nombre: 'DESINFECTANTES', familia: 'F002', desc: 'AMBIENTADORES Y LIMPIADORES MULTIUSOS' },
    { cod: 'SF008', nombre: 'PAPEL HIGIÉNICO', familia: 'F002', desc: 'PAPEL Y TOALLAS ABSORBENTES' },
    // Útiles de Escritorio
    { cod: 'SF009', nombre: 'PAPELERÍA', familia: 'F003', desc: 'HOJAS, SOBRES Y CUADERNOS' },
    { cod: 'SF010', nombre: 'ESCRITURA', familia: 'F003', desc: 'LÁPICES, LAPICEROS Y MARCADORES' },
    { cod: 'SF011', nombre: 'ARCHIVO', familia: 'F003', desc: 'CARPETAS, CLIPS Y ORGANIZADORES' },
    // Ferretería
    { cod: 'SF012', nombre: 'HERRAMIENTAS', familia: 'F004', desc: 'MARTILLOS, DESTORNILLADORES, ETC.' },
    { cod: 'SF013', nombre: 'PINTURAS', familia: 'F004', desc: 'PINTURAS Y THINNER' },
    { cod: 'SF014', nombre: 'TUBERÍAS', familia: 'F004', desc: 'TUBOS Y CONEXIONES PVC' },
    // Electrónica
    { cod: 'SF015', nombre: 'CABLES', familia: 'F005', desc: 'CABLES USB, HDMI Y ELÉCTRICOS' },
    { cod: 'SF016', nombre: 'CARGADORES', familia: 'F005', desc: 'CARGADORES DE CELULAR Y LAPTOP' },
    { cod: 'SF017', nombre: 'AUDÍFONOS', familia: 'F005', desc: 'AURICULARES Y MICRÓFONOS' },
    // Indumentaria
    { cod: 'SF018', nombre: 'UNIFORMES', familia: 'F006', desc: 'UNIFORMES DE TRABAJO' },
    { cod: 'SF019', nombre: 'CALZADO', familia: 'F006', desc: 'ZAPATOS Y BOTAS' },
    { cod: 'SF020', nombre: 'ACCESORIOS', familia: 'F006', desc: 'GORROS, GUANTES, CHALECOS' },
    // Salud y Belleza
    { cod: 'SF021', nombre: 'JABONES DE MANOS', familia: 'F007', desc: 'JABONES LÍQUIDOS Y EN BARRA' },
    { cod: 'SF022', nombre: 'SHAMPOO', familia: 'F007', desc: 'SHAMPOOS Y ACONDICIONADORES' },
    { cod: 'SF023', nombre: 'PROTECCIÓN SOLAR', familia: 'F007', desc: 'BLOQUEADORES Y PROTECTORES SOLARES' }
];

(async function() {
    try {
        for (var i = 0; i < familias.length; i++) {
            var f = familias[i];
            var dup = await db.query('SELECT COUNT(*) as cnt FROM familias WHERE cod_familia = @cod', { cod: { type: db.sql.NVarChar(50), value: f.cod } });
            if (dup[0].cnt > 0) {
                console.log('[FAMILIAS] Ya existe: ' + f.cod + ' - ' + f.nombre);
                continue;
            }
            await db.query('INSERT INTO familias (id_empresa, cod_familia, nombre, descripcion, estado) VALUES (@emp, @cod, @nom, @desc, 1)',
                { emp: { type: db.sql.Int, value: ID_EMPRESA }, cod: { type: db.sql.NVarChar(50), value: f.cod }, nom: { type: db.sql.NVarChar(100), value: f.nombre }, desc: { type: db.sql.NVarChar(200), value: f.desc } }
            );
            console.log('[FAMILIAS] Creada: ' + f.cod + ' - ' + f.nombre);
        }

        for (var j = 0; j < subfamilias.length; j++) {
            var s = subfamilias[j];
            var dup2 = await db.query('SELECT COUNT(*) as cnt FROM subfamilias WHERE cod_subfamilia = @cod', { cod: { type: db.sql.NVarChar(50), value: s.cod } });
            if (dup2[0].cnt > 0) {
                console.log('[SUBFAMILIAS] Ya existe: ' + s.cod);
                continue;
            }
            var fam = await db.query('SELECT id_familia FROM familias WHERE cod_familia = @cod', { cod: { type: db.sql.NVarChar(20), value: s.familia } });
            if (fam.length === 0) {
                console.log('[SUBFAMILIAS] Familia no encontrada: ' + s.familia);
                continue;
            }
            await db.query('INSERT INTO subfamilias (id_empresa, id_familia, cod_subfamilia, nombre, descripcion, estado) VALUES (@emp, @fam, @cod, @nom, @desc, 1)',
                { emp: { type: db.sql.Int, value: ID_EMPRESA }, fam: { type: db.sql.Int, value: fam[0].id_familia }, cod: { type: db.sql.NVarChar(50), value: s.cod }, nom: { type: db.sql.NVarChar(100), value: s.nombre }, desc: { type: db.sql.NVarChar(200), value: s.desc } }
            );
            console.log('[SUBFAMILIAS] Creada: ' + s.cod + ' - ' + s.nombre + ' (Familia ' + s.familia + ')');
        }

        console.log('\nSeed completado!');
        process.exit(0);
    } catch (e) {
        console.error('Error:', e.message);
        process.exit(1);
    }
})();
