#!/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; }