RSS Git Download  Clone
Raw Blame History
#!/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;
}