package main

import (
	"fmt"
	"log"

	"github.com/pingcap/crm-bot/pkg/lark"
)

type CardElementField struct {
	IsShort bool `json:"is_short"`
	Text    struct {
		Tag     string `json:"tag"`
		Content string `json:"content"`
	} `json:"text"`
}

type CardElementElement struct {
	Tag     string `json:"tag"`
	Content string `json:"content"`
}

type CardElementText struct {
	Tag     string `json:"tag,omitempty"`
	Content string `json:"content,omitempty"`
}

type CardElement struct {
	Tag   string           `json:"tag"`
	Text  *CardElementText `json:"text,omitempty"`
	Extra *struct {
		Tag         string `json:"tag"`
		Placeholder struct {
			Tag     string `json:"tag"`
			Content string `json:"content"`
		} `json:"placeholder"`
		Value struct {
			WorkCategory string `json:"work-category"`
		} `json:"value"`
		Options []struct {
			Text struct {
				Tag     string `json:"tag"`
				Content string `json:"content"`
			} `json:"text"`
			Value string `json:"value"`
		} `json:"options"`
	} `json:"extra,omitempty"`
	Fields   []CardElementField   `json:"fields,omitempty"`
	Elements []CardElementElement `json:"elements,omitempty"`
}

type CardTemplate struct {
	Config struct {
		WideScreenMode bool `json:"wide_screen_mode"`
	} `json:"config"`
	Header struct {
		Template string `json:"template"`
		Title    struct {
			Content string `json:"content"`
			Tag     string `json:"tag"`
		} `json:"title"`
	} `json:"header"`
	CardLink struct {
		Url string `json:"url"`
	} `json:"card_link"`
	Elements []CardElement `json:"elements"`
}

func loadLarkSheet(l *lark.Lark, sheetToken, area string) []interface{} {
	sheetId, err := l.GetSheetId(sheetToken, 1)
	if err != nil {
		log.Println("[error] GetSheetId err ", err)
		return nil
	}

	sheetData, err := l.GetSheetData(sheetToken, fmt.Sprintf("%s!%s", sheetId, area))
	if err != nil {
		log.Println("[error] GetSheetData err ", err)
		return nil
	}

	return sheetData
}
