import { paginasDoDocumento, type DocumentoDoBanner } from "./documento";
import { usoDoTamanho } from "./modelos";

/* Os tipos dos modelos da comunidade (comuns ao painel e ao servidor; sem o cliente do navegador). */

export type TipoDaComunidade = "post" | "carrossel" | "story" | "banner" | "caneca";
export type SituacaoDoEnvio = "pendente" | "aprovado" | "recusado";

export type ModeloDaComunidade = {
  id: string;
  /* A empresa autora (quem a pessoa segue). */
  user_id: string;
  arte_id: string | null;
  nome: string;
  descricao: string | null;
  tipo: TipoDaComunidade;
  ramo: "sublimacao" | "grafica" | "personalizados" | null;
  largura: number;
  altura: number;
  formato: string | null;
  paginas: number;
  miniatura: string | null;
  autor_nome: string;
  autor_avatar: string | null;
  autor_loja: string | null;
  status: SituacaoDoEnvio;
  motivo: string | null;
  usos: number;
  avaliado_em: string | null;
  created_at: string;
};

export const NOMES_DOS_TIPOS: Record<TipoDaComunidade, string> = {
  post: "Post para Instagram",
  carrossel: "Carrossel",
  story: "Story e Reels",
  banner: "Banner da loja",
  caneca: "Caneca",
};

/** O tipo de modelo de uma arte pelo tamanho (e pelas páginas: post com mais de uma é carrossel). Sem tipo, não dá para publicar. */
export function tipoDaArte(doc: Pick<DocumentoDoBanner, "largura" | "altura" | "impressao" | "maisPaginas">): TipoDaComunidade | null {
  const uso = usoDoTamanho(doc.largura, doc.altura, Boolean(doc.impressao));
  if (uso === "post") return paginasDoDocumento(doc as DocumentoDoBanner).length > 1 ? "carrossel" : "post";
  if (uso === "faixa") return "banner";
  /* A folha A4 deitada (o calendário) não vai para a comunidade. */
  if (uso === "a4-deitada") return null;
  return uso;
}

