import { Injectable, ConflictException } from '@nestjs/common';
import { CreateReservaDto, Reserva } from './reserva.dto';

@Injectable()
export class SpacesService {
  private reservas: Reserva[] = [];
  private idCounter = 1;

  findAll(date?: string): Reserva[] {
    if (date) {
      return this.reservas.filter((r) => r.date === date);
    }
    return this.reservas;
  }

  create(dto: CreateReservaDto): Reserva {
    // Verificar conflicto: mismo recurso, mismo día, mismo horario de inicio
    const conflict = this.reservas.find(
      (r) =>
        r.resourceName === dto.resourceName &&
        r.date === dto.date &&
        r.startTime === dto.startTime,
    );

    if (conflict) {
      throw new ConflictException(
        `El recurso "${dto.resourceName}" ya está reservado el ${dto.date} a las ${dto.startTime}.`,
      );
    }

    const newReserva: Reserva = {
      ...dto,
      id: String(this.idCounter++),
      createdAt: new Date().toISOString(),
    };

    this.reservas.unshift(newReserva);
    return newReserva;
  }

  delete(id: string): void {
    this.reservas = this.reservas.filter((r) => r.id !== id);
  }
}
