const UserRepository = require('../../../infrastructure/repositories/UserRepository');

class CreateUserHandler {
  constructor() {
    this.userRepository = new UserRepository();
  }

  async handle(command) {
    // 1. Validáció
    if (!command.email || !command.name || !command.password) {
      throw new Error('Email, name és password kötelező');
    }

    // 2. Email formátum ellenőrzés
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    if (!emailRegex.test(command.email)) {
      throw new Error('Hibás email formátum');
    }

    // 3. Jelszó hossz ellenőrzés
    if (command.password.length < 6) {
      throw new Error('Jelszó minimum 6 karakter kell legyen');
    }

    // 4. Duplikáció ellenőrzés
    const existing = await this.userRepository.findByEmail(command.email);
    if (existing) {
      throw new Error('Email már használatban van');
    }

    // 5. User létrehozása
    return await this.userRepository.create({
      email: command.email,
      name: command.name,
      password: command.password, // Production környezetben hash-elni kell!
      role: command.role || 'user'
    });
  }
}

module.exports = CreateUserHandler;
