import { Injectable } from '@nestjs/common';
import { PrismaService } from 'src/prisma.service';
import { JwtService } from '@nestjs/jwt';

@Injectable()
export class AuthService {
  constructor(
    private prisma: PrismaService,
    private jwtService: JwtService,
  ) { }

  async validateUser(username: string, pass: string): Promise<any> {
    const user = await this.prisma.user.findFirst({
      where: {
        name: username,
        password: pass
      }
    });

    if (user) {
      const { password, ...result } = user;
      return result;
    }
    return null;
  }

  async   login(user: any) {
    const rolePathMap = {
      'ADMIN': '/',
      'MANAGER': '/dashboard',
      'EXPLOITANT': '/'
    }

    const payload = { username: user.name, userId: user.id, userRole: user.role };
    return {
      access_token: this.jwtService.sign(payload),
      route: rolePathMap[user.role] || '/',
      userRole: user.role
    };
  }

}
