package RPS::Sale::StatRates;

use strict;
use warnings;

use constant BASE_TIME => 300; # 5 min
my %RATES = (
              20060101 => '0.0910:0.0175',
              20040101 => '0.0850:0.0165',
              20020101 => '0.0800:0.0155',
              20000101 => '0.0755:0.0145',
              19980101 => '0.0710:0.0135',
              19960101 => '0.0695:0.0130',
              19940101 => '0.0660:0.0125',
              19920101 => '0.0625:0.0125',
              19900101 => '0.0570:0.0110',
              19880101 => '0.0525:0.0100',
              19860101 => '0.0500:0.0095',
              19840701 => '0.0450:0.0085',
              19830101 => '0.0425:0.0080',
              19810701 => '0.0400:0.0075',
              19780101 => '0.0275:0.0050',
              19090101 => '0.0200:0',
             );
my @RateOrder = reverse sort keys %RATES;

sub getStatRate
{
    my %args = @_;
    my $min = $args{min} || 0;
    my $sec = $args{sec} || 0;

    my $duration = $min * 60 + $sec;
    $args{date} =~ s/\D//g;

    return undef unless $args{date};

    my $minutes = 0;
    if ($duration / BASE_TIME > 1)
    {
        $minutes = int($duration / 60);
        $minutes++ if (($duration / BASE_TIME) % 60);
    }

    foreach my $date(@RateOrder)
    {
        next unless ($args{date} >= $date);
        my ($base, $perMin) = split /:/, $RATES{$date};
        return $minutes ? $minutes * $perMin : $base;
    }

}

1;
