#!/usr/bin/perl
use strict;
use warnings;
use FindBin qw( $Bin );
use lib "$Bin/../../lib";
use Data::Dumper;
use DBI;
use App::POS::DB::Postgres;
use Time::Local;

my $lock_file = "/tmp/update_clerks_priority.last";
my $min_interval = 12 * 60 * 60; # 12 horas

if (-e $lock_file) {
  my $last_run = (stat($lock_file))[9]; # mtime
  my $elapsed  = time - $last_run;

  if ($elapsed < $min_interval) {
    #print STDERR "Ainda não passaram 12 horas. A sair...\n";
    exit 0;
  }
}

my $DATABASE = 'pos';

my$dsn='DBI:Pg:dbname='.$DATABASE.';host=127.0.0.1';
my$user='root';
my$passwd='';

my$db=App::POS::DB::Postgres->new(dbh=>DBI->connect($dsn,$user,$passwd,{}));

$db->do("UPDATE clerks SET priority = 0");

# 2 meses para tras
my @recs = $db->select(qq{
  SELECT sh.clerk_close, c.login, COUNT(sh.*)
  FROM sales_headers sh
  LEFT JOIN clerks c ON (sh.clerk_close = c.id)
  WHERE sh.date >= NOW() - INTERVAL '2 months'
  GROUP BY sh.clerk_close, c.login
  ORDER BY COUNT(sh.*) DESC
});

#print STDERR Dumper(\@recs);

my $prio = 10000;

for (@recs) {
  $db->do("UPDATE clerks SET priority = ? WHERE id = ?", $prio, $_->{clerk_close});
  $prio--;
}

open my $fh, '>', $lock_file or die "Cannot write $lock_file: $!";
print $fh time;
close $fh;
