package service

import (
	"enterprise/common/dao"
	"enterprise/server/api"
	"enterprise/server/session"
	"time"
)

type Payment struct {
}

func NewPayment() *Payment {
	return &Payment{}
}

func (p *Payment) List(sess *session.AdminSession, req *api.ListPaymentReq) (int64, int64, interface{}) {
	payments, total, err := dao.NewApprovalPaymentDao().Query(req.Page, req.Size, sess.GetCorpId(), req.Username, req.StartDay, req.EndDay, req.Payee, req.Payee)
	session.CheckDBError(err)
	items := make([]*api.Payment, 0)
	for _, payment := range payments {
		i := new(api.Payment)
		i.From(payment)
		items = append(items, i)
	}

	totalAmount, err := dao.NewApprovalPaymentDao().QueryAmount(sess.GetCorpId(), req.Username, req.StartDay, req.EndDay, req.Payee, req.Payee)
	session.CheckDBError(err)
	return total, totalAmount, items
}

func (p *Payment) Suggest(sess *session.AdminSession, field string) interface{} {

	counts, err := dao.NewApprovalPaymentDao().Count(sess.GetCorpId(),
		time.Now().AddDate(-1, 0, 0).Format("2006-01-02"), "", field)
	session.CheckDBError(err)
	return counts
}