#!/usr/bin/perl

use strict;
use warnings;

use Date::Calc;
use Data::Dumper;
use Getopt::Std;

use constant 'MAXBULKLOAD' => 10000;

use lib '/app/tools/common/lib';
use Common::RSDB;
use Common::Logger;
use Common::Stats::RPSBuilder;

logMessage( 'info', "running with args: " . join( ',', @ARGV ) );

my %opt;
getopts( 'c:f', \%opt );

my $client_id     = $opt{c};
my $force_rebuild = $opt{f};

unless ( $client_id =~ /^\d+$/ && $client_id > 0 ) {
    die usage("client_id '$client_id' must be a number greater than zero");
}

logMessage( 'info', "client_id = $client_id" );

my $builder = Common::Stats::RPSBuilder->new( Common::RSDB->new( client_id => $client_id, dbi_attr => { RaiseError => 1 } ) );

logMessage( 'info', "fetching sales data from " . $builder->schema );

my $sale_data      = $builder->get_sale_data;
my $tables_rebuilt = 0;
if ( $force_rebuild || $builder->sale_data_has_changed($sale_data) ) {
    $builder->total_records( $sale_data->{'total_records'} );
    $builder->rebuild_aggregates;
    $tables_rebuilt = 1;
}
$builder->log_sale_data( $sale_data, $tables_rebuilt );
$builder->finish;

exit(0);
