RSS Git Download  Clone
Raw Blame History
#!/usr/bin/perl

=begin -------------------------------------------------------------------------
missing request forms from data-files dir > 2 working days after registration
=cut ---------------------------------------------------------------------------

use strict;
use warnings;

my $JUST_TESTING = 1; # email to ra.jones only

################################################################################
my @recipients = qw( douglas bagguley raj );
my $duration = 2; # how many working days since registration date
################################################################################

BEGIN {
    use FindBin qw($Bin); # warn $Bin;
    use lib (
        "$Bin/../../../lib",
        '/home/raj/perl5/lib/perl5',
    );
}

use Data::Dumper;
use LIMS::Local::ScriptHelpers;

# get tools from LIMS::Local::ScriptHelpers:
my $tools = LIMS::Local::ScriptHelpers->new();
$tools->test_only($JUST_TESTING);

my $config  = $tools->config(); 
my $dbix    = $tools->dbix();

my $date = _get_date();  warn $date->dmy; exit;

my @missing = ();

my $sql = 'SELECT request_number, year FROM requests WHERE DATE(created_at) = ?';
my $result = $dbix->query($sql, $date->ymd);

while ( my $vars = $result->hash ) { # warn Dumper $vars;
    my $request_form = _get_filename($vars); # warn Dumper $filename;
    next if -e $request_form;
    push @missing, $vars;
}

exit unless @missing; # warn Dumper @missing;

my $msg = join "\n", map {
        join '/', ( $_->{request_number}, $_->{year} - 2000 );
    } @missing;

my %mail = (		
    message => $msg,
	config  => $config,
    subject => 'Missing request forms registered ' . $date->dmy,
); # warn Dumper \%mail; exit;

$tools->send_mail(\%mail, \@recipients);

sub _get_date { # doesn't consider public holidays
    my $dt = $tools->date_subtract( days => $duration );

    # day 6 is Saturday, day 7 is Sunday
    if ( $dt->day_of_week > 5 ) { # if it falls on weekend:
        $dt->subtract( days => 2 ); # subtract 2 days 
    } # warn Dumper $dt;
    
    return $dt;
}

sub _get_filename {
	my $vars = shift;
	
    my $req_num = $vars->{request_number};
    my $year    = $vars->{year};
    my $yr      = $year - 2000;
    
    # 1-99 = 0, 100-199 = 1, 200-299 = 2, etc
    my $i = int $req_num / 100; # warn $i;
    
    my $mini_dir = sprintf '%s-%s',
        100 * $i || 1, # default to 1 if 0; 1, 100, 200, 300, etc
        100 * $i + 99; # 99, 199, 299, etc

    my $filename
        = sprintf '%s/static/image_server/%s/%s/%s/%s_%s_request_form.pdf',
        $tools->path_to_app_root, $year, $mini_dir, $req_num, $yr, $req_num;

    return $filename;
}