const User = require('../models/User');
const bcrypt = require('bcryptjs');

/**
 * Инициализирует административный аккаунт в системе
 * Аккаунт создается с логином admin и паролем admin124
 * Этот аккаунт будет всегда активен
 */
const initAdminAccount = async () => {
  try {    console.log('[ADMIN INIT] Проверка наличия административного аккаунта...');
    
    // Проверяем, существует ли уже админ - используем правильный формат email
    const adminExists = await User.findOne({ email: 'admin@example.com', isAdmin: true });
    
    if (!adminExists) {
      console.log('[ADMIN INIT] Административный аккаунт не найден. Создаю новый...');
      
      // Создаем админа, если не существует - с валидным форматом email
      const admin = new User({
        name: 'Администратор',
        email: 'admin@example.com', // Используем валидный email
        password: 'admin124',
        dateOfBirth: new Date('1990-01-01'), // Устанавливаем формальную дату рождения
        gender: 'other',
        isActive: true,
        isAdmin: true,
        location: {
          city: 'Admin',
          country: 'System'
        }      });
      
      // Сохраняем админа
      const savedAdmin = await admin.save();
      if (savedAdmin) {
        console.log('[ADMIN INIT] Административный аккаунт успешно создан с email: admin@example.com');
        console.log('[ADMIN INIT] ID администратора:', savedAdmin._id);
        console.log('[ADMIN INIT] Для входа используйте: email "admin@example.com", пароль "admin124"');
      } else {
        console.error('[ADMIN INIT] Ошибка при сохранении администратора - не возвращен объект');
      }
    } else {
      console.log('[ADMIN INIT] Административный аккаунт с email "admin@example.com" уже существует');
      console.log('[ADMIN INIT] ID администратора:', adminExists._id);
    }
  } catch (error) {
    console.error('[ADMIN INIT] Ошибка при инициализации админ-аккаунта:', error.message);
    console.error('[ADMIN INIT] Полная ошибка:', error);
  }
};

module.exports = initAdminAccount;