package formValidate

import (
	"fmt"
	"github.com/syndtr/goleveldb/leveldb/errors"
	"time"
	"zhenyihuibao/business/cache"
	"zhenyihuibao/business/utils"
	"zhenyihuibao/models/yuyue"
	"zhenyihuibao/pkg/logging"
)

//获取预约列表
type YueList struct {
	P 			int	 	`json:"p" form:"p"`
	StartTime 	string  `json:"startTime" form:"startTime" validate:"required" time_format:"2006-01-02" time_utc:"1"`
	EndTime		string  `json:"endTime" form:"endTime" validate:"required" time_format:"2006-01-02" time_utc:"1"`
}

//预约操作
type DoYue struct {
	YueId 		int	 	`json:"yue_id" validate:"required" form:"yue_id"`
}

//取消操作
type CancelYue struct {
	YueId 		int	 	`json:"yue_id" validate:"required" form:"yue_id"`
}

//上课打卡
type GoClass struct {
	YueId 		int	 	`json:"yue_id" validate:"required" form:"yue_id"`
}

//检查是否可以取消预约
func CheckIfCanCancel(yueLog *yuyue.YuyueLog) (err error){
	yueRow, err := cache.GetYue(yueLog.YuyueId)
	if err != nil {
		return
	}
	yueDayRule, err := cache.GetDayRule(yueRow.DayRuleId)
	logging.MyLogger.Infof("yueyueyueyeuyeuee", yueDayRule)
	if err != nil {
		return
	}
	startTimeStr := fmt.Sprintf("%v %v", yueRow.Day, yueDayRule.StartTime)
	endTimeStr   := fmt.Sprintf("%v %v", yueRow.Day, yueDayRule.EndTime)

	startTimeStamp := utils.ParseTimestrToTimestamp(startTimeStr)
	endTimeStamp   := utils.ParseTimestrToTimestamp(endTimeStr)
	curTimeStamp := time.Now().Unix()

	if curTimeStamp > endTimeStamp {
		err = errors.New("课程已经结束了")
		return
	}
	//提前6小时才可以预约
	if (startTimeStamp-curTimeStamp) < 3600*6 {
		err = errors.New("开课前6小时内禁止取消预约")
	}
	return

}