package functions

import (
	"html/template"
	"strconv"
	"strings"
	"time"

	"git.dmitriygnatenko.ru/dima/dmitriygnatenko-v2/internal/service/config"
	"git.dmitriygnatenko.ru/dima/dmitriygnatenko-v2/internal/service/i18n"
)

type ServiceProvider interface {
	ConfigService() *config.Service
}

func Now() time.Time {
	return time.Now()
}

func NoEscape(str string) template.HTML {
	return template.HTML(str)
}

func Concat(parts ...string) string {
	return strings.Join(parts, "")
}

func GridSep(i, l int) bool {
	i++
	return i%3 == 0 && i != l
}

func Version(sp ServiceProvider) func() string {
	return func() string {
		return strconv.FormatUint(uint64(sp.ConfigService().StaticVersion()), 10)
	}
}

func Trans(lang i18n.Language, key string) string {
	return i18n.T(lang, key)
}

func Link(lang i18n.Language, link string) string {
	if lang == i18n.DefaultLanguage() {
		return link
	}

	if link == "/" {
		return "/" + string(lang)
	}

	return "/" + string(lang) + link
}
