const express = require('express');
const { sequelize } = require('../models');
const { QueryTypes } = require('sequelize');
const md5 = require('md5');
const jwt = require('jsonwebtoken');

const JWT_SECRET = 'super_secret_key_123'; 
const router = express.Router();

router.post('/register', async (req, res) => {
  try {
    const { login, password, firstName, lastName, phone, email } = req.body;

    const existingUser = await sequelize.query(
      'SELECT * FROM clients WHERE login = :login',
      { replacements: { login: login }, type: QueryTypes.SELECT, plain: true }
    );

    if (existingUser) return res.status(400).send('Логин уже занят');

    const passwordMD5 = md5(password);

    await sequelize.query(`
      INSERT INTO clients (login, password, first_name, last_name, phone_number, email)
      VALUES (:login, :password, :firstName, :lastName, :phone, :email)
    `, {
      replacements: {
        login: login,
        password: passwordMD5,
        firstName: firstName || 'Гость',
        lastName: lastName || null,
        phone: phone || null,
        email: email || null
      },
      type: QueryTypes.INSERT
    });

    res.status(201).send('Регистрация успешна');
  } catch (error) {
    console.error('ОШИБКА БАЗЫ ДАННЫХ:', error.message);
    if (error.message.includes('Unique constraint')) {
        return res.status(400).send('Email или Телефон уже используются другим аккаунтом');
    }
    res.status(500).send('Ошибка при сохранении: ' + error.message);
  }
});

// Роут для ЛОГИНА (оставляем без изменений)
router.post('/', async (req, res) => {
    try {
      const user = await sequelize.query(`
        SELECT * FROM clients WHERE login=:login
      `, {
        plain: true,
        type: QueryTypes.SELECT,
        replacements: { login: req.body.login }
      });
  
      if (user) {
        const passwordMD5 = md5(req.body.password);
        if (user.password == passwordMD5) {
          const jwtToken = jwt.sign({ id: user.client_id, firstName: user.first_name }, JWT_SECRET);
          res.json(jwtToken);
        } else {
          res.status(401).send('Неверный пароль');
        }
      } else {
        res.status(404).send('Пользователь не найден');
      }
    } catch (error) {
      res.status(500).send(error.message);
    }
});

module.exports = router;