package models

import "encoding/json"

// TaskTemplate represents a predefined task template that users can select when creating tasks
type TaskTemplate struct {
	BaseModel
	Title           string          `gorm:"column:title;size:200;not null" json:"title"`
	Description     string          `gorm:"column:description;type:text" json:"description"`
	CategoryID      *uint           `gorm:"column:category_id;index" json:"category_id"`
	Category        *TaskCategory   `gorm:"foreignKey:CategoryID" json:"category,omitempty"`
	FrequencyID     *uint           `gorm:"column:frequency_id;index" json:"frequency_id"`
	Frequency       *TaskFrequency  `gorm:"foreignKey:FrequencyID" json:"frequency,omitempty"`
	IconIOS         string          `gorm:"column:icon_ios;size:100" json:"icon_ios"`
	IconAndroid     string          `gorm:"column:icon_android;size:100" json:"icon_android"`
	Tags            string          `gorm:"column:tags;type:text" json:"tags"` // Comma-separated tags for search
	DisplayOrder    int             `gorm:"column:display_order;default:0" json:"display_order"`
	IsActive        bool            `gorm:"column:is_active;default:true;index" json:"is_active"`
	// Conditions is the JSON-encoded scoring condition set evaluated by
	// SuggestionService. Supported keys: heating_type, cooling_type,
	// water_heater_type, roof_type, exterior_type, flooring_primary,
	// landscaping_type, has_pool, has_sprinkler_system, has_septic,
	// has_fireplace, has_garage, has_basement, has_attic, property_type,
	// climate_region_id.
	//
	// Climate regions used to be stored via a many-to-many with
	// ClimateRegion; they are now driven entirely by the JSON condition
	// above. See migration 000017 for the join-table drop.
	Conditions json.RawMessage `gorm:"column:conditions;type:jsonb;default:'{}'" json:"conditions"`
}

// TableName returns the table name for GORM
func (TaskTemplate) TableName() string {
	return "task_tasktemplate"
}
