package RequestLog;
use Moose;
with (
'Role::User',
'Role::RebuildTables',
);
use namespace::clean -except => 'meta';
use Data::Dumper;
has $_ => (is => 'ro', isa => 'HashRef', required => 1)
foreach qw( db sql );
has log_file => ( is => 'ro', required => 1 );
__PACKAGE__->meta->make_immutable;
$|++;
sub convert {
my $self = shift;
$self->do_changelog();
$self->do_phonelog();
$self->do_dispatchlog();
$self->do_viewlog();
$self->do_printlog();
$self->do_general_notes();
}
sub do_changelog {
my $self = shift;
my $dbix3 = $self->db->{dbix3};
my $dbix4 = $self->db->{dbix4};
my $log_file = $self->log_file;
$self->rebuild_tables('request_report_history');
my $hilis3 = $dbix3->query(q!select CL_Rpt_ID, Field, Content,
if(UserID is not null, UserID, ModifiedBy) as User, DateTime,
HMDS, year(Date) as 'year' from ChangeLog left join Main on
CL_Rpt_ID = DBID left join Users on ModifiedBy = Signature
where length(Content) > 4!); # random crap + all Outreach have NULL (as Str) entry
ROW:
while ( my $vals = $hilis3->hash ) {
my $request_id = $dbix4->query( q!select id from requests where request_number
= ? and year = ?!, $vals->{hmds}, $vals->{year} )->list;
if (! $request_id ) {
warn "no request_id for $vals->{cl_rpt_id}";
next ROW;
}
my $user = $vals->{user};
my $user_id = $self->_get_user_id(lc $user)
|| die "no user_id for $user ($vals->{cl_rpt_id})";
my %data = (
request_id => $request_id,
field => lc $vals->{field},
content => $vals->{content},
user_id => $user_id,
time => $vals->{datetime},
);
$dbix4->insert('request_report_history', \%data);
}
}
sub do_dispatchlog {
my $self = shift;
my $dbix3 = $self->db->{dbix3};
my $dbix4 = $self->db->{dbix4};
my $log_file = $self->log_file;
$self->rebuild_tables('request_dispatch_log');
my $hilis3 = $dbix3->query(q!select * from MailedReports!);
LOG:
while ( my $vals = $hilis3->hash ) {
my ($hmds, $yr) = $vals->{labno} =~ m!H(\d+)/(\d{2})!;
my $request_id = $dbix4->query( q!select id from requests where request_number
= ? and year = ?!, $hmds, $yr + 2000 )->list;
if (! $request_id ) {
print $log_file "no request_id for $vals->{labno}\n";
next LOG;
}
my %data = (
request_id => $request_id,
recipient => $vals->{recipient},
time => $vals->{datetime},
);
$dbix4->insert('request_dispatch_log', \%data);
}
}
sub do_phonelog {
my $self = shift;
my $dbix3 = $self->db->{dbix3};
my $dbix4 = $self->db->{dbix4};
my $log_file = $self->log_file;
$self->rebuild_tables('request_phone_log');
my $hilis3 = $dbix3->query(q!select * from PhoneLog!);
LOG:
while ( my $vals = $hilis3->hash ) {
my ($hmds, $yr) = $vals->{labno} =~ m!H(\d+)/(\d{2})!;
my $request_id = $dbix4->query( q!select id from requests where request_number
= ? and year = ?!, $hmds, $yr + 2000 )->list;
if (! $request_id ) {
print $log_file "no request_id for $vals->{labno}\n";
next LOG;
}
my $user_id = $self->_get_user_id(lc $vals->{userid});
if (! $user_id ) {
print $log_file "$0: no user_id for $vals->{userid}";
next LOG;
}
my %data = (
request_id => $request_id,
user_id => $user_id,
status => lc $vals->{direction} . 'bound',
contact => $vals->{contact},
details => $vals->{summary},
time => $vals->{datetime},
);
$dbix4->insert('request_phone_log', \%data);
}
}
sub do_viewlog {
my $self = shift;
my $dbix3 = $self->db->{dbix3};
my $dbix4 = $self->db->{dbix4};
my $log_file = $self->log_file;
$self->rebuild_tables('request_view_log');
my $hilis3 = $dbix3->query(q!select * from ViewLog!);
LOG:
while ( my $vals = $hilis3->hash ) {
my ($hmds, $yr) = $vals->{lab_no} =~ m!H(\d+)/(\d{2})!;
my $request_id = $dbix4->query( q!select id from requests where request_number
= ? and year = ?!, $hmds, $yr + 2000 )->list;
if (! $request_id ) {
print $log_file "no request_id for $vals->{lab_no}\n";
next LOG;
}
my $user_id = $self->_get_user_id(lc $vals->{user_id});
if (! $user_id ) {
print $log_file "$0: no user_id for $vals->{user_id}";
next LOG;
}
my %data = (
request_id => $request_id,
ip_address => $vals->{ip_address},
user_id => $user_id,
time => $vals->{date_time},
);
$dbix4->insert('request_view_log', \%data);
}
}
sub do_printlog {
my $self = shift;
my $dbix3 = $self->db->{dbix3};
my $dbix4 = $self->db->{dbix4};
my $log_file = $self->log_file;
$self->rebuild_tables('request_print_log');
my $hilis3 = $dbix3->query(q!select * from PrintLog!);
LOG:
while ( my $vals = $hilis3->hash ) {
my ($hmds, $yr) = $vals->{hmds} =~ m!H(\d+)/(\d{2})!;
my $request_id = $dbix4->query( q!select id from requests where request_number
= ? and year = ?!, $hmds, $yr + 2000 )->list;
if (! $request_id ) {
print $log_file "no request_id for $vals->{hmds}\n";
next LOG;
}
my $user_id = $self->_get_user_id(lc $vals->{userid});
if (! $user_id ) {
print $log_file "$0: no user_id for $vals->{userid}";
next LOG;
}
my %data = (
request_id => $request_id,
user_id => $user_id,
time => $vals->{datetime},
);
$dbix4->insert('request_print_log', \%data);
}
}
sub do_general_notes {
my $self = shift;
my $dbh3 = $self->db->{dbix3};
my $dbh4 = $self->db->{dbix4};
$self->rebuild_tables('request_general_notes');
my $sql = q!select HMDS, year(Date) as 'year', Notes from Main left join Others
on O_ID = DBID where length(Notes) > 1!; # exclude crap
my $src = $dbh3->query( $sql );
while ( my $vals = $src->hash ) {
my $request_id = $dbh4->query( q!select id from requests where request_number
= ? and year = ?!, $vals->{hmds}, $vals->{year})->list;
my %data = (
request_id => $request_id,
detail => $vals->{notes},
);
$dbh4->insert('request_general_notes', \%data);
}
}
1;