import express from 'express';
import cors from 'cors';
import 'dotenv/config';
import cron from 'node-cron';
import customersRouter    from './routes/customers';
import transactionsRouter from './routes/transactions';
import reportsRouter      from './routes/reports';
import authRouter         from './routes/auth';
import adminRouter        from './routes/admin';
import { sendMonthlyReports } from './jobs/monthlyReport';

const app  = express();
const PORT = Number(process.env.PORT ?? 3001);

const allowedOrigins = (process.env.CORS_ORIGIN ?? 'http://localhost:5173').split(',').map(s => s.trim());
app.use(cors({
  origin: (origin, cb) => {
    if (!origin || allowedOrigins.includes(origin)) return cb(null, true);
    cb(new Error('Not allowed by CORS'));
  },
}));
app.use(express.json());

app.use('/api/customers',    customersRouter);
app.use('/api/transactions', transactionsRouter);
app.use('/api/reports',      reportsRouter);
app.use('/api/auth',         authRouter);
app.use('/api/admin',        adminRouter);

app.get('/api/health', (_req, res) => res.json({ status: 'ok', time: new Date().toISOString() }));

app.listen(PORT, () => {
  console.log(`🚀 SIMO 1 API  →  http://localhost:${PORT}`);

  // ส่ง email สรุปยอดทุกวันที่ 1 ของเดือน เวลา 08:00 น. (UTC+7 → 01:00 UTC)
  cron.schedule('0 1 1 * *', () => {
    const now  = new Date();
    const prev = new Date(now.getFullYear(), now.getMonth() - 1, 1);
    console.log(`⏰ Cron: ส่ง monthly report ${prev.getFullYear()}/${prev.getMonth() + 1}`);
    sendMonthlyReports(prev.getFullYear(), prev.getMonth() + 1).then(r => {
      console.log(`📧 Monthly report: ส่งสำเร็จ ${r.sent}/${r.total} | ข้าม ${r.skipped} | error ${r.errors.length}`);
    });
  }, { timezone: 'Asia/Bangkok' });

  console.log('⏰ Cron: จะส่ง email สรุปยอดทุกวันที่ 1 ของเดือน เวลา 08:00 น.');
});
