<?php

namespace Yajny\Member\FraudDetection\Utils;

use Carbon\Carbon;

class FraudDetectionPeriodsUtil
{
    const PER_DAY = 'per_day';
    const PER_WEEK = 'per_week';
    const PER_MONTH = 'per_month';

    public static function getFraudDetectionPeriods(): array
    {
        return [
            self::PER_DAY,
            self::PER_WEEK,
            self::PER_MONTH,
        ];
    }

    public static function getFromDateOfPeriod($from, $period): string
    {
        $fromCarbon = Carbon::parse($from);
        switch ($period) {
            case FraudDetectionPeriodsUtil::PER_DAY:
                return $from;
            case FraudDetectionPeriodsUtil::PER_WEEK:
                return $fromCarbon->startOfWeek(Carbon::SUNDAY)->toDateString();
            case FraudDetectionPeriodsUtil::PER_MONTH:
                return $fromCarbon->startOfMonth()->toDateString();
        }
        return $from;
    }

    public static function getToDateOfPeriod($to, $period): string
    {
        $toCarbon = Carbon::parse($to);
        switch ($period) {
            case FraudDetectionPeriodsUtil::PER_DAY:
                return $to;
            case FraudDetectionPeriodsUtil::PER_WEEK:
                return $toCarbon->endOfWeek(Carbon::SATURDAY)->toDateString();
            case FraudDetectionPeriodsUtil::PER_MONTH:
                return $toCarbon->endOfMonth()->toDateString();
        }
        return $to;
    }
}