package model

import (
	"errors"
	"net"
	"strings"
	"time"
)

type WakeOnLanHost struct {
	MacAddress string     `json:"MacAddress"`
	Name       string     `json:"Name"`
	LatestUsed *time.Time `json:"LatestUsed"`
}

func (host WakeOnLanHost) ResolveResourceName() (string, error) {
	resourceName := strings.Trim(host.MacAddress, " \t\r\n\000")
	if len(resourceName) == 0 {
		return "", errors.New("mac Address is Empty")
	}
	resourceName = strings.ToUpper(resourceName)
	resourceName = strings.ReplaceAll(resourceName, ":", "-")

	if _, err := net.ParseMAC(resourceName); err != nil {
		return "", errors.New("invalid mac address")
	}

	return resourceName, nil
}

const WakeOnLanHostCollectionName = "wake_on_lan_hosts"