package entity

import (
	"time"

	"xiaoniaokuaiyan.com/xiaoniao/constants"

	"gopkg.in/guregu/null.v3"
)

type DiscountTicket struct {
	Id           int    `db:"id" json:"id"`
	TypeId       int    `db:"type_id" json:"type_id"`
	Mobile       string `db:"mobile",validate:"regexp=^1\d{10,10}$" json:"mobile"`
	Value        int    `db:"value" json:"value"`
	UseMaxValue  int    `db:"use_max_value" json:"use_max_value"`
	Deadline     string `db:"deadline" json:"deadline"`
	Status       int    `db:"status" json:"status"`
	OrderId      string `db:"order_id" json:"order_id"`
	CreatedAt    string `db:"created_at" json:"created_at"`
	BindProducts string `db:"bind_products" json:"bind_products"`
}
type DiscountTicketDB struct {
	Id           int         `db:"id"`
	TypeId       int         `db:"type_id"`
	Mobile       string      `db:"mobile"`
	Value        int         `db:"value"`
	UseMaxValue  null.Int    `db:"use_max_value"`
	Deadline     string      `db:"deadline"`
	Status       int         `db:"status"`
	OrderId      null.String `db:"order_id"`
	CreatedAt    string      `db:"created_at"`
	BindProducts null.String `db:"bind_products"`
	LianrenId    null.Int    `db:"lianren_id"`
}

func (ticket *DiscountTicketDB) IsValid(useMaxVal int) bool {
	if ticket.TypeId == int(constants.COUPONTYPE_LIMIT) && ticket.UseMaxValue.Int64 > int64(useMaxVal) {
		return false
	}
	return ticket.Status == 0 && !ticket.IsExpired() //&& !ticket.OrderId.Valid
}

func (ticket *DiscountTicketDB) IsExpired() bool {
	deadline, _ := time.Parse("2006-01-02", ticket.Deadline)
	return deadline.Before(time.Now().AddDate(0, 0, -1))
}