package EventLogger; use strict; use warnings; sub new { my ($class, $dbh) = @_; return bless { dbh => $dbh }, $class; } sub logEvent { my ($self, $session_id, $event) = @_; $self->{dbh}->do("INSERT INTO event_table (session_id, datestamp, event) VALUES('$session_id', NOW(), '$event')"); } sub getEventReport { my ($self, $month, $year) = @_; my ($num_logins) = $self->{dbh}->selectrow_array("SELECT COUNT(*) FROM event_table WHERE event = 'Successful Login' AND MONTH(date_created) = $month AND YEAR(date_created) = $year"); my ($standard_reports) = $self->{dbh}->selectrow_array("SELECT COUNT(*) FROM event_table WHERE event = 'Standard Report' AND MONTH(date_created) = $month AND YEAR(date_created) = $year"); my ($custom_reports) = $self->{dbh}->selectrow_array("SELECT COUNT(*) FROM event_table WHERE event = 'Custom Report' AND MONTH(date_created) = $month AND YEAR(date_created) = $year"); my $total_reports = $standard_reports + $custom_reports; my $reports_per_login = ($total_reports / $num_logins); return ( 'Successful Logins' => $num_logins, 'Standard Reports' => $standard_reports, 'Custom Reports' => $custom_reports, 'Total Reports' => $total_reports, 'Reports Per Login' => $reports_per_login ); } 1;