/**
 * get-my-address.use-case.ts
 * Devuelve la dirección activa del usuario logueado.
 * Se infiere del mock de servicio (colonia + routeId).
 */

import { CustomError } from "../../errors/custom.error.js";
import { users } from "../../../data/mocks/users.mock.js";
import { colonias } from "../../../data/mocks/colonias.mock.js";

export interface MyAddressResponse {
  colonia: string;
  routeId: string;
  horarioEstimado: string | null;
}

export class GetMyAddressUseCase {
  execute(userId: number): MyAddressResponse {
    const user = users.find((u) => u.id === userId);
    if (!user) {
      throw CustomError.notFound("User not found in service mock");
    }

    const colonia = colonias.find((c) => c.colonia === user.colonia);

    return {
      colonia: user.colonia,
      routeId: user.routeId,
      horarioEstimado: colonia?.horarioEstimado ?? null,
    };
  }
}
