export type TextileProfile = {
  code: string;
  name: string;
  depth: number;
  sides: number;
  illuminated: boolean;
  rate: number;
  image: string;
  use: string;
  faceMm: number;
  textileReductionMm: number;
  bleedMm: number;
};

export const textileProfiles: TextileProfile[] = [
  { code: "TF15S", name: "Cadre mural ultra-fin", depth: 15, sides: 1, illuminated: false, rate: 82, image: "/textile/tf15s.jpg", use: "Décoration murale et changement fréquent du visuel", faceMm: 14, textileReductionMm: 6, bleedMm: 20 },
  { code: "TF30S", name: "Cadre mural fin", depth: 30, sides: 1, illuminated: false, rate: 105, image: "/textile/tf30s.jpg", use: "Retail, bureaux et signalétique intérieure", faceMm: 14, textileReductionMm: 6, bleedMm: 20 },
  { code: "TF45S", name: "Cadre mural renforcé", depth: 45, sides: 1, illuminated: false, rate: 128, image: "/textile/tf45s.jpg", use: "Grands formats muraux non lumineux", faceMm: 16, textileReductionMm: 8, bleedMm: 20 },
  { code: "TF60D", name: "Cadre double face", depth: 60, sides: 2, illuminated: false, rate: 185, image: "/textile/tf60d.jpg", use: "Suspension et communication recto-verso", faceMm: 16, textileReductionMm: 8, bleedMm: 20 },
  { code: "TF75S", name: "Caisson LED simple face", depth: 75, sides: 1, illuminated: true, rate: 265, image: "/textile/tf75s.jpg", use: "Affichage lumineux mural haute visibilité", faceMm: 18, textileReductionMm: 10, bleedMm: 25 },
  { code: "TF80D", name: "Caisson LED double face", depth: 80, sides: 2, illuminated: true, rate: 355, image: "/textile/tf80d.jpg", use: "Suspension lumineuse recto-verso", faceMm: 18, textileReductionMm: 10, bleedMm: 25 },
  { code: "TF100S", name: "Caisson LED grand format", depth: 100, sides: 1, illuminated: true, rate: 310, image: "/textile/tf100s.jpg", use: "Grand format et éclairage homogène", faceMm: 20, textileReductionMm: 12, bleedMm: 25 },
  { code: "TF120D", name: "Caisson LED double grand format", depth: 120, sides: 2, illuminated: true, rate: 420, image: "/textile/tf120d.jpg", use: "Grands espaces et visibilité à 360°", faceMm: 20, textileReductionMm: 12, bleedMm: 25 },
  { code: "TFBOX", name: "Cadre textile volume", depth: 100, sides: 4, illuminated: true, rate: 465, image: "/textile/tfbox.jpg", use: "Totem, cube et volume textile sur mesure", faceMm: 20, textileReductionMm: 12, bleedMm: 25 },
];

export function getTextileProfile(code: unknown) {
  return textileProfiles.find((profile) => profile.code === String(code)) ?? textileProfiles[0];
}

export function textileManufacturingSizes(code: unknown, widthCm: unknown, heightCm: unknown) {
  const profile = getTextileProfile(code);
  const frameWidthMm = Math.max(300, Math.round(Number(widthCm) * 10));
  const frameHeightMm = Math.max(300, Math.round(Number(heightCm) * 10));
  const textileWidthMm = Math.max(1, frameWidthMm - profile.textileReductionMm);
  const textileHeightMm = Math.max(1, frameHeightMm - profile.textileReductionMm);
  return {
    profile,
    frameWidthMm,
    frameHeightMm,
    openingWidthMm: Math.max(1, frameWidthMm - profile.faceMm * 2),
    openingHeightMm: Math.max(1, frameHeightMm - profile.faceMm * 2),
    textileWidthMm,
    textileHeightMm,
    printFileWidthMm: textileWidthMm + profile.bleedMm * 2,
    printFileHeightMm: textileHeightMm + profile.bleedMm * 2,
    horizontalCuts: 2,
    verticalCuts: 2,
    graphicCount: profile.sides,
    siliconePerimeterMm: (textileWidthMm + textileHeightMm) * 2,
  };
}
