#!/usr/bin/env perl
use FindBin qw($Bin); # warn $Bin;
use lib (
"$Bin/../lib",
'/home/raj/perl5/lib/perl5',
);
use Spreadsheet::ParseExcel::Simple;
use Data::Dumper;
use LIMS::Local::Utils;
use LIMS::Local::ScriptHelpers;
my $tools = LIMS::Local::ScriptHelpers->new();
my $dbix = $tools->dbix();
my $src = 'Trustwide Leavers.xls';
my $data = parse_xl($src); # warn Dumper $data;
my $sql = q!select designation from users where first_name = ? and last_name = ?
and active = 'yes'!;
my $trim = sub { LIMS::Local::Utils::trim(@_) };
for my $user(@$data) {
map { $_ = &$trim($_) } @$user; # warn Dumper $user; # trim all sloppy fields
my ( $fname, $lname, $role, $location ) = @{$user}[5,6,8,9];
# if first_name & surname match an existing user, extract users.designation:
if ( my $designation = $dbix->query( $sql, $fname, $lname )->list ) {
printf "%s %s :: %s, %s [%s]\n", # print xl data + hilis4.users.designation:
$fname, uc $lname, $role, $location, $designation;
}
}
sub parse_xl {
my $file = shift;
my $xls = Spreadsheet::ParseExcel::Simple->read($file) or die $!;
my @worksheets = $xls->sheets;
my $worksheet = $worksheets[0];
my @data = (); # create array of row arrayrefs:
while ($worksheet->has_data) {
push @data, [ $worksheet->next_row ]; # next_row() = array mode
}
return \@data;
}