예제 #1
0
func (p *OrderQuery) SetupRender() {
	// fix the pagers
	if p.PageItems <= 0 {
		p.PageItems = config.LIST_PAGE_SIZE // TODO default pager number. Config this.
	}

	// fetch data
	var err error
	var parser = service.Order.EntityManager().NewQueryParser()
	parser.Where()
	switch strings.ToLower(p.Tab) {
	// case "today":
	// 	now := time.Now().UTC()
	// 	start := now.Truncate(time.Hour * 24)
	// 	end := now.AddDate(0, 0, 1).Truncate(time.Hour * 24)
	// 	parser.Where().Range("create_time", start, end)
	// case "returned":
	// 	parser.Where("status", "returned")
	case "all", "":
		// all status
	default:
		parser.And("status", p.Tab)
	}

	// filter by time range
	if utils.ValidTime(p.TimeTo) && utils.ValidTime(p.TimeFrom) {
		parser.Range("create_time", p.TimeFrom, p.TimeTo)
		// fmt.Println(">>> query by ", p.TimeFrom, p.TimeTo)
	} else if !utils.ValidTime(p.TimeTo) {
	} else if !utils.ValidTime(p.TimeFrom) {
	}

	parser.Or("type", model.Wholesale, model.ShippingInstead) // restrict type

	// get total
	p.Total, err = parser.Count()
	if err != nil {
		panic(err.Error())
	}

	// 2. get order list.
	parser.Limit(p.Current, p.PageItems) // pager
	p.Orders, err = service.Order.ListOrders(parser, service.WITH_PERSON)
	if err != nil {
		panic(err.Error())
	}
}
예제 #2
0
func (p *OrderQuery) Activate() {
	// service.User.RequireRole(p.W, p.R, syd.RoleSet_Orders...)

	// not injected with parameters.
	if p.Tab == "" {
		p.Tab = "all" // default go in toprint
	}

	// time
	if !utils.ValidTime(p.TimeTo) && !utils.ValidTime(p.TimeFrom) {
		p.TimeFrom, p.TimeTo = gxl.NatureTimeRange(0, 0, -3) // TODO NOT-UTC
	} else if !utils.ValidTime(p.TimeTo) {
		p.TimeTo = gxl.NatureTimeTodayEnd()
	} else if !utils.ValidTime(p.TimeFrom) {
		// TODO what to do?
	}
}