package salary_calculator

import (
	"enterprise/common/dao"
	"enterprise/common/model"
	"enterprise/common/registry"
	log "github.com/sirupsen/logrus"
	"time"
)

type SalaryCalculator1002 struct {
	corp *model.Corp
	user *model.StaffUser
}

func NewSalaryCalculator1002(corp *model.Corp, user *model.StaffUser) registry.SalaryCalculator {
	return &SalaryCalculator1002{
		corp: corp,
		user: user,
	}
}

func (s *SalaryCalculator1002) Calculate(salary *model.StaffSalary) map[string]interface{} {
	data := make(map[string]interface{})

	// 1.订单
	monthTime, _ := time.ParseInLocation("200601", salary.Month, time.Local)
	startTime := monthTime.Unix()
	endTime := monthTime.AddDate(0, 1, 0).Unix() - 1
	orders, err := dao.NewExternalCorpOrder().QueryOwnerOrder(s.user.Username, startTime, endTime)
	if err != nil {
		log.Errorf("db error:%s", err.Error())
	}

	data["orderNum"] = len(orders)

	//2.处理的订单
	processOrders, err := dao.NewExternalCorpOrder().QueryProcessOrder(s.user.Username, startTime, endTime)
	if err != nil {
		log.Errorf("db error:%s", err.Error())
	}
	data["processNum"] = len(processOrders)

	//3.下属订单
	corpUser, err := dao.NewExternalCorpUser().Get(s.user.Username)
	if err != nil {
		log.Errorf("db error:%s", err.Error())
	}

	if corpUser != nil {
		childOrders, err := dao.NewExternalCorpOrder().QueryChildOrder(corpUser.Id, startTime, endTime)
		if err != nil {
			log.Errorf("db error:%s", err.Error())
		}
		data["childOrderNum"] = len(childOrders)
	}

	return data
}