import { BadRequestException, ConflictException, Injectable, NotFoundException } from '@nestjs/common';
import { CreateBanqueDto } from './dto/create-banque.dto';
import { UpdateBanqueDto } from './dto/update-banque.dto';
import { Repository } from 'typeorm';
import { Banque } from './entities/banque.entity';
import { InjectRepository } from '@nestjs/typeorm';

@Injectable()
export class BanqueService {

  constructor( 
    @InjectRepository(Banque) 
    private banqueRepository: Repository<Banque> 
  ){}

  async create(createBanqueDto: CreateBanqueDto) {
    // 1. Vérifier si la banque existe déjà (exemple: vérifier par code)
    const existing = await this.banqueRepository.findOne({
      where: { code: createBanqueDto.code },
    });

    // 2. Si existe → retourner une erreur
    if (existing) {
      throw new ConflictException('Cette banque existe déjà');
    }
    const saveData = await this.banqueRepository.save(createBanqueDto);
    return saveData;
  }

  async findAll() {
    const banques = await this.banqueRepository.find();
    //return banques.map(({ id, ...data }) => data); // retire l'id
    return banques;
  }

  async findOne(id: number) {
    const checkBanque = await this.banqueRepository.findBy({id})
  }

  async update(id: number, updateBanqueDto: UpdateBanqueDto) {
    const checkBanque = await this.banqueRepository.preload({id, ...updateBanqueDto});
    if (!checkBanque) {
      throw new NotFoundException('Aucune valeur trouvée');
    }
    return this.banqueRepository.save(checkBanque);
  }

  remove(id: number) {
    return `This action removes a #${id} banque`;
  }
}
