package timeslicequery

import (
	"context"
	"voucher/internal/biz/bo"
)

func (v *Query) queryUsedBak(ctx context.Context, order *bo.OrderBo) error {

	if order.Status.IsUse() {
		_, err := v.cmb.Notify(ctx, order)
		return err
	}

	if err := v.orderBakRepo.Used(ctx, order.ID); err != nil {
		return err
	}

	return v.notify(ctx, order)
}

func (v *Query) queryExpiredBak(ctx context.Context, order *bo.OrderBo) error {

	if order.Status.IsExpired() {
		_, err := v.cmb.Notify(ctx, order)
		return err
	}

	if err := v.orderBakRepo.Expired(ctx, order.ID); err != nil {
		return err
	}

	return v.notify(ctx, order)
}

func (v *Query) querySuccessBak(ctx context.Context, order *bo.OrderBo) error {

	if order.Status.IsSuccess() {
		_, err := v.cmb.Notify(ctx, order)
		return err
	}

	if err := v.orderBakRepo.Available(ctx, order.ID); err != nil {
		return err
	}

	return v.notify(ctx, order)
}

func (v *Query) notifyBak(ctx context.Context, order *bo.OrderBo) error {

	order, err := v.orderBakRepo.GetByID(ctx, order.ID)
	if err != nil {
		return err
	}

	if _, err = v.cmb.Notify(ctx, order); err != nil {
		return err
	}

	return nil
}
