package dto

import (
	"encoding/json"
	"time"
)

// 自定义时间格式
const customTimeFormat = "2006-01-02 15:04:05"

func (t *Task) UnmarshalJSON(data []byte) error {
	type Alias Task
	aux := &struct {
		StartTime string `json:"startTime"`
		EndTime   string `json:"endTime"`
		*Alias
	}{
		Alias: (*Alias)(t),
	}
	if err := json.Unmarshal(data, &aux); err != nil {
		return err
	}
	var err error
	t.StartTime, err = time.ParseInLocation(customTimeFormat, aux.StartTime, time.Local)
	if err != nil {
		return err
	}
	t.EndTime, err = time.ParseInLocation(customTimeFormat, aux.EndTime, time.Local)
	if err != nil {
		return err
	}
	return nil
}

type Task struct {
	TaskID    string    `json:"taskId"`
	ScenicID  string    `json:"scenicId"`
	DeviceID  string    `json:"deviceId"`
	DeviceNo  string    `json:"deviceNo"`
	StartTime time.Time `json:"startTime"`
	EndTime   time.Time `json:"endTime"`
}

type FileObject struct {
	URL          string    `json:"url"`
	NeedDownload bool      `json:"needDownload"`
	CreateTime   time.Time `json:"createTime"`
	EndTime      time.Time `json:"endTime"`
}

func (f *FileObject) MarshalJSON() ([]byte, error) {
	type Alias FileObject
	return json.Marshal(&struct {
		CreateTime string `json:"createTime"`
		EndTime    string `json:"endTime"`
		*Alias
	}{
		CreateTime: f.CreateTime.Format(customTimeFormat),
		EndTime:    f.EndTime.Format(customTimeFormat),
		Alias:      (*Alias)(f),
	})
}