/*
  O prazo do link público do orçamento.

  É gravado na hora em que o link é copiado ou enviado: N dias a partir dali
  quando a empresa ligou a validade do link nas configurações de orçamento; sem
  prazo (null) quando não ligou — e aí o link não vence.

  Um lugar só para as três telas que compartilham o link (a do orçamento, a
  lista de orçamentos e a revisão rápida do Dashboard). A conta vivia copiada
  em duas delas e a do Dashboard não tinha nenhuma: o link mandado de lá saía
  sem prazo mesmo com a validade ligada.
*/

/** Os dias de validade que valem, ou null quando a empresa não ligou (ou o número não serve). */
export function diasDeValidade(ligado: boolean | null | undefined, dias: number | string | null | undefined): number | null {
  if (!ligado) return null;
  const quantidade = Number(dias);
  return Number.isFinite(quantidade) && quantidade > 0 ? quantidade : null;
}

export function prazoDoLink(
  ligado: boolean | null | undefined,
  dias: number | string | null | undefined,
  agora: Date = new Date()
): string | null {
  const quantidade = diasDeValidade(ligado, dias);
  if (quantidade === null) return null;
  const vence = new Date(agora.getTime());
  vence.setDate(vence.getDate() + quantidade);
  return vence.toISOString();
}
