#------------------------------------------------------------
# Copyright (C) 2010 RoyaltyShare, Inc.   All Rights Reserved
# $Id$
#------------------------------------------------------------
package Raptor::SaleReport::PeriodNavYear;
use strict;
use warnings;

use Data::Dumper;

use lib '/app/tools/common/lib';
use base 'Common::FormObject';

use lib '/app/tools/raptor/lib';
use Raptor::DB::Item::PeriodMonth;
use Raptor::DB::Item::PeriodQuarter;
use Raptor::DB::Item::Sale;

sub _init {
    my ( $self, %args ) = @_;

    $self->{Year} = $args{year};
    $self->{ID}   = "y" . $args{year};

    $self->{_begin} = $args{begin};
    $self->{_end}   = $args{end};

    $self->_initProperties();

    return $self->SUPER::_init(%args);
}

sub _initProperties {
    my $self = shift;

    $self->_initQuarterPeriods();
    $self->_initMonthPeriods();
}

sub _initQuarterPeriods {
    my $self = shift;

    my $collection =
      Raptor::DB::Item::PeriodQuarter->GetAllByRange( begin => $self->{_begin}, end => $self->{_end}, year => $self->Year() );

    while ( my $row = $collection->next() ) {
        $self->_addItem( id => 'q' . $row->quarter_id, name => 'Q' . $row->quarter );
    }
}

sub _initMonthPeriods {
    my $self = shift;

    my $collection = Raptor::DB::Item::PeriodMonth->GetAllByRange( begin => $self->{_begin}, end => $self->{_end}, year => $self->Year() );

    while ( my $row = $collection->next() ) {
        $self->_addItem( id => 'm' . $row->month_id, name => _monthToString( $row->month ) );
    }
}

sub _addItem {
    my $self = shift;
    my %args = @_;

    #assert( $args{id} && $args{name} );

    $self->{Item} = () unless ( $self->{Item} );

    push( @{ $self->{Item} }, { Name => $args{name}, ID => $args{id} } );
}

sub _monthToString {
    my $month = shift || return;
    my $map = {
        1  => 'Jan',
        2  => 'Feb',
        3  => 'Mar',
        4  => 'Apr',
        5  => 'May',
        6  => 'Jun',
        7  => 'Jul',
        8  => 'Aug',
        9  => 'Sep',
        10 => 'Oct',
        11 => 'Nov',
        12 => 'Dec',
    };

    return $map->{$month};
}

1;
