package dtos

import (
	"fmt"
	"strconv"
	"time"

	"github.com/xuri/excelize/v2"
)

const (
	DevicesFilename = "Devices"
)

var (
	FuncPointImmutableHeader = []string{"DP ID", "Name", "DataType", "TransferType"}
	FuncPointIntegerHeader   = []string{"Scale", "ValueType"}
)

type ExportFile struct {
	Excel    *excelize.File
	FileName string
}

func NewExportFile(filename string) (*ExportFile, error) {
	ef := &ExportFile{
		FileName: newFileName(filename),
		Excel:    excelize.NewFile(),
	}
	return ef, nil
}

func newFileName(name string) string {
	date := time.Now().Format("2006-01-02")
	unix := strconv.FormatInt(time.Now().Unix(), 10)
	return fmt.Sprintf("%s_%s_%s.xlsx", name, date, unix)
}

func (f *ExportFile) GetCenterStyle() int {
	style, _ := f.Excel.NewStyle(`{"alignment":{"horizontal": "center","vertical": "center"}}`)
	return style
}

func (f *ExportFile) GetRequiredStyle() int {
	style, _ := f.Excel.NewStyle(`{"alignment":{"horizontal": "center","vertical": "center"},"font":{"color": "#ea4335"}}`)
	return style
}
