package Raptor::Tracker::Command::CurrencyConversionEntry;

use strict;
use warnings;
use Data::Dumper;

use lib '/app/tools/common/lib';
use RSApache::Response::XSLT;
use RSApache::Response::JSON;
use Common::Assert;

use lib '/app/tools/raptor/lib';

use lib '/app/tools/rps/lib';
use RPS::RoyaltyRun::RoyaltyRunStatusList;


use Raptor::Command;
use base 'Raptor::Tracker::Command::Base';

sub cmd  { return "currency_conversion_entry"; }
sub area { return "tracker"; }

use constant kTemplate => '/app/tools/raptor/templates/tracker.xsl';

sub execute {
    my $self = shift;

    my $response = $self->SUPER::execute();
    return $response if $response;

    # Params
    my $cmd                = $self->getParam('c')                  || '';
    my $conversionRate     = $self->getParam('conversionRate')     || 0;
    my $salesPeriodEndDate = $self->getParam('salesPeriodEndDate') || 0;
    my $serviceID          = $self->getParam('serviceID')          || 0;
    my $currencyCode       = $self->getParam('currencyCode')       || '';
    my $page               = $self->getParam('page')               || 1;
    my $pageSize           = $self->getParam('pageSize')           || 25;
    my $getJson            = $self->getParam('getJson')            || '';

    $self->_storePassedParams(
        $cmd, $conversionRate, $salesPeriodEndDate, $serviceID, $currencyCode, $page, $pageSize
    );

    # Do run control for the current period
    my $form = { RoyaltyRunStatus => new RPS::RoyaltyRun::RoyaltyRunStatusList() };
    $self->{xml}{Form} = $form;

    my $oPeriod = new Period::RoyaltyPeriod();
    $oPeriod->LoadCurrent();

    # Load a list of files for the current period (period_id = 0)
    my $jsonData = $self->doFileListing($oPeriod);

    # return json response (not the page data)
    if ($getJson) {
        return RSApache::Response::JSON->new( $jsonData );
    }

    $response = RSApache::Response::XSLT->new( $self->{xml}, kTemplate );
    return $response;
}

sub _storePassedParams {
    my ($self, $cmd, $conversionRate, $salesPeriodEndDate, $serviceID, $currencyCode, $page, $pageSize) = @_;

    $self->{xml}{CurrencyConversionSettings}->{Command}            = $cmd;
    $self->{xml}{CurrencyConversionSettings}->{conversionRate}     = $conversionRate;
    $self->{xml}{CurrencyConversionSettings}->{SalesPeriodEndDate} = $salesPeriodEndDate;
    $self->{xml}{CurrencyConversionSettings}->{ServiceID}          = $serviceID;
    $self->{xml}{CurrencyConversionSettings}->{currencyCode}       = $currencyCode;
    $self->{xml}{CurrencyConversionSettings}->{page}               = $page;
    $self->{xml}{CurrencyConversionSettings}->{PageSize}           = $pageSize;

    return 1
}


1;
