package regras

import (
	"fmt"
	"strconv"
	"strings"
)

func TratarAreaImovelWeb(valorArea, name string) string {
	repl := []string{"M²", "M", "m²", "hectares", "Hectares"}
	v := valorArea
	for _, r := range repl {
		v = strings.ReplaceAll(v, r, ",")
	}
	parts := strings.Split(v, ",")
	if len(parts) > 0 {
		v = parts[0]
	}
	v = strings.TrimSpace(v)
	if v == "" {
		return ""
	}
	switch name {
	case "area_total":
		return fmt.Sprintf(`<caracteristica>
                <id>CFT101</id>
                <nome><![CDATA[MEDIDAS|AREA_UTIL]]></nome>
                <valor>%s</valor>
                </caracteristica>`, v)
	case "area_util":
		return fmt.Sprintf(`<caracteristica>
                <id>CFT100</id>
                <nome><![CDATA[MEDIDAS|AREA_TOTAL]]></nome>
                <valor>%s</valor>
                </caracteristica>`, v)
	}
	return ""
}

func RetornaValorPreco(transacao, valorVenda, valorLocacao string) string {
	if transacao == "Venda" {
		novo := truncarPreco(valorVenda)
		if novo == "" {
			return ""
		}
		return fmt.Sprintf(`<preco>
            <operacao><![CDATA[VENTA]]></operacao>
            <quantidade><![CDATA[%s]]></quantidade>
            <moeda><![CDATA[BRL]]></moeda>
        </preco>`, novo)
	}
	novo := truncarPreco(valorLocacao)
	if novo == "" {
		return ""
	}
	return fmt.Sprintf(`<preco>
          <operacao><![CDATA[ALQUILER]]></operacao>
          <quantidade><![CDATA[%s]]></quantidade>
          <moeda><![CDATA[BRL]]></moeda>
        </preco>`, novo)
}

func truncarPreco(valor string) string {
	if valor == "" || valor == "0" || valor == "0.00" || valor == "0.0" {
		return ""
	}
	parts := strings.Split(valor, ".")
	return parts[0]
}

func DestaqueImovelWebNovoBinario(destaqueImovel string) string {
	// Paridade com PHP: $imoveis["destaque"] == 1 (comparação frouxa).
	if destaqueImovel == "1" {
		return "PREMIUM"
	}
	if n, err := strconv.Atoi(strings.TrimSpace(destaqueImovel)); err == nil && n == 1 {
		return "PREMIUM"
	}
	return "STANDARD"
}

func DestaqueImovelWebNovoXML(seo string) string {
	if seo != "" {
		return "<tipoDePublicacion>" + seo + "</tipoDePublicacion>"
	}
	return "<tipoDePublicacion>SIMPLES</tipoDePublicacion>"
}

func IDCidadeImovelWebNovo(cidade, estado string) string {
	return cidade + "-" + estado
}
