package regras

import (
	"fmt"
	"strings"
)

func DisponibilidadeFacebook(transacao string) string {
	switch transacao {
	case "Venda":
		return "for_sale"
	case "Locação", "Temporada", "Arrendamento":
		return "for_rent"
	default:
		return "for_sale"
	}
}

func PrecoFacebookFormatado(transacao, valorVenda, valorLocacao string) string {
	switch transacao {
	case "Venda", "Permuta":
		return limparPreco(valorVenda)
	case "Locação", "Temporada", "Arrendamento":
		return limparPreco(valorLocacao)
	case "Venda - Locação":
		v := limparPreco(valorVenda)
		if v != "" && v != "0" {
			return v
		}
		return limparPreco(valorLocacao)
	default:
		return limparPreco(valorVenda)
	}
}

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

func PropertyTypeFacebook(categoria string) string {
	allowed := map[string]string{
		"apartment": "apartment",
		"condo":     "condo",
		"house":     "house",
		"land":      "land",
		"other":     "other",
		"townhouse": "townhouse",
	}
	val := strings.ToLower(strings.TrimSpace(categoria))
	if t, ok := allowed[val]; ok {
		return t
	}
	return "other"
}

func ExtrairLatitude(coordenadas string) string {
	lat, _ := extrairCoordenadas(coordenadas)
	return lat
}

func ExtrairLongitude(coordenadas string) string {
	_, lng := extrairCoordenadas(coordenadas)
	return lng
}

func extrairCoordenadas(coordenadas string) (lat, lng string) {
	coordenadas = strings.TrimSpace(coordenadas)
	if coordenadas == "" {
		return "", ""
	}
	for _, sep := range []string{",", ";", " "} {
		if strings.Contains(coordenadas, sep) {
			parts := strings.Split(coordenadas, sep)
			if len(parts) >= 2 {
				return strings.TrimSpace(parts[0]), strings.TrimSpace(parts[1])
			}
		}
	}
	return "", ""
}

func FotosFacebookXML(fotos []FotoItem) string {
	if len(fotos) == 0 {
		return ""
	}
	var b strings.Builder
	for _, f := range fotos {
		b.WriteString(fmt.Sprintf("<image><url>%s</url></image>", f.URL))
	}
	return b.String()
}
