const express = require('express'); const http = require('http'); const socketIo = require('socket.io'); const cors = require('cors'); require('dotenv').config(); const app = express(); const server = http.createServer(app); const io = socketIo(server, { cors: { origin: true, methods: ["GET", "POST"], credentials: true } }); // Middleware app.use(cors({ origin: function (origin, callback) { if (!origin) return callback(null, true); return callback(null, origin); }, credentials: true })); app.use(express.json()); // Routes const authRoutes = require('./routes/auth'); const userRoutes = require('./routes/users'); const teamRoutes = require('./routes/teams'); const customerRoutes = require('./routes/customers'); const orderRoutes = require('./routes/orders'); const productRoutes = require('./routes/products'); app.use('/api/auth', authRoutes); app.use('/api/users', userRoutes); app.use('/api/teams', teamRoutes); app.use('/api/customers', customerRoutes); app.use('/api/orders', orderRoutes); app.use('/api/products', productRoutes); // Socket.io connection handler const socketConfig = require('./config/socket'); io.on('connection', (socket) => { socketConfig.handleSocketConnection(socket, io); }); // Database sync and Start server const { sequelize } = require('./config/database'); const { Product } = require('./models'); const PORT = process.env.PORT || 5000; sequelize.sync({ force: false }).then(async () => { console.log('Database synced successfully.'); try { // Seed default Naira products if database has no products const count = await Product.count(); if (count === 0) { await Product.bulkCreate([ { name: 'Premium Velvet Purple Fabric Roll', priceNaira: 45000.00, stockCount: 150, zohoProductId: 'ZOHO-PROD-001' }, { name: 'Susu Premium Woven Cotton (Gold)', priceNaira: 32000.00, stockCount: 200, zohoProductId: 'ZOHO-PROD-002' }, { name: 'Osusu Luxury Silk Ribbon (Royal Blue)', priceNaira: 18500.00, stockCount: 100, zohoProductId: 'ZOHO-PROD-003' }, { name: 'Standard Susu Polyester Mesh (Black)', priceNaira: 12000.00, stockCount: 500, zohoProductId: 'ZOHO-PROD-004' } ]); console.log('Seeded default Susu products in Naira successfully.'); } } catch (seederErr) { console.error('Product seeder error:', seederErr); } server.listen(PORT, () => { console.log(`Server is running on port ${PORT}`); }); }).catch(err => { console.error('Failed to sync database:', err); });