<?php

namespace Yajny\Member\FraudDetection\Factors;

use Yajny\Member\FraudDetection\Utils\FraudDetectionPeriodsUtil;
use Yajny\Member\Models\FraudRule;

class TotalOrderAmountFactor implements FraudDetectionFactorInterface
{
    public function __construct(FraudRule $fraudRule)
    {
        $this->fraudRule = $fraudRule;
    }

    public function shouldApply(): bool
    {
        return $this->fraudRule->total_order_amount && $this->fraudRule->total_order_amount_per;
    }

    public function getFraudUserWhoMatchFactor($from, $to): array
    {
        return $this->fraudRule->getFraudUsersThatExceedsTotalOrderAmount($from, $to);
    }

    public function getFromDate($from): string
    {
        return FraudDetectionPeriodsUtil::getFromDateOfPeriod($from, $this->fraudRule->total_order_amount_per);
    }

    public function getToDate($to): string
    {
        return FraudDetectionPeriodsUtil::getToDateOfPeriod($to, $this->fraudRule->total_order_amount_per);
    }
}