package handlers

import (
	"strings"

	"gorm.io/gorm/clause"
	"wa-assistant/backend/database"
	"wa-assistant/backend/models"
)

func ensureIncomingCRMContact(agentID uint, number, profileName string) error {
	name := strings.TrimSpace(profileName)
	if name == "." || name == "~" || strings.TrimPrefix(name, "+") == number {
		name = ""
	}
	contact := models.Contact{AgentID: agentID, Number: number, Name: name,
		LeadStage: leadStageNew, LeadStageSource: "system", LeadStageReason: "Kontak masuk dari percakapan WhatsApp"}
	// The unique agent/number key also protects simultaneous first messages.
	if err := database.DB.Clauses(clause.OnConflict{DoNothing: true}).Create(&contact).Error; err != nil {
		return err
	}
	if name == "" {
		return nil
	}
	return database.DB.Model(&models.Contact{}).
		Where("agent_id = ? AND number = ?", agentID, number).
		Where("name IS NULL OR TRIM(name) IN ?", []string{"", ".", "~", number, "+" + number}).
		Update("name", name).Error
}
