sub production_time_read_db_to_match_events_and_systems { &common_date_array($last_start_ccyymmdd,$last_end_ccyymmdd); &db_min_ro('event_systems','id,name,description,system_type','','','') ; foreach my $id (keys %{$db{event_systems}}) { $event_system_description{$id} = $db{event_systems}{$id}{description} ; $event_system_name{$id} = $db{event_systems}{$id}{name} ; } $start_sql = substr($start_sql,0,11) . '00:00:00' ; $end_sql = substr($end_sql,0,11) . '23:59:59' ; # &db_min_ro('event_quotes','id,ref,event_system_id_multiple,format_of_title,date_from,date_to',"(date_from BETWEEN '$start_sql' AND '$end_sql') OR (date_to BETWEEN '$start_sql' AND '$end_sql')",'','') ; &db_min_ro('event_quotes','id,ref,event_system_id_multiple,format_of_title,date_from,date_to,sport_type_ids,club_ids',"((date_from BETWEEN '$start_sql' AND '$end_sql') OR (date_to BETWEEN '$start_sql' AND '$end_sql')) AND event_system_id_multiple IS NOT NULL AND event_system_id_multiple <> ''",'','') ; our %seen_event_system_in_event_quotes = () ; foreach my $event_id (keys %{$db{event_quotes}}) { $db{event_quotes}{$event_id}{ref} =~ s/\'//g ; $db{event_quotes}{$event_id}{event_system_id_multiple} =~ s/;+/;/g; # Replace multiple semicolons with one $db{event_quotes}{$event_id}{event_system_id_multiple} =~ s/^;+|;+$//g; # Remove leading or trailing semicolons # next unless $db{event_quotes}{$event_id}{event_system_id_multiple} ; $opts{matched_event} .= qq~~ ; foreach (split(";",$db{event_quotes}{$event_id}{event_system_id_multiple})) { # $opts{matched_system} .= $seen_event_system_in_event_quotes{$_} $seen_event_system_in_event_quotes{$_} = 1 ; } } foreach (sort {$seen_event_system_in_event_quotes{$a} cmp $seen_event_system_in_event_quotes{$b}} keys %seen_event_system_in_event_quotes) { $opts{matched_system} .= qq~~ ; } $opts{matched_system_none} .= qq~~ ; &db_min_ro('sport_types','*','','','') ; our %sport_name_to_id = () ; foreach (keys %{$db{sport_types}}) { $db{sport_types}{$_}{name} = lc $db{sport_types}{$_}{name} ; $db{sport_types}{$_}{name} =~ s/ //g ; $sport_name_to_id{$db{sport_types}{$_}{name}} = $_ ; } &db_min_ro('clubs','id,name','','','') ; foreach (keys %{$db{clubs}}) { my $c_name = lc $db{clubs}{$_}{name} ; $c_name =~ s/\'//g ; $club_name_to_id{$c_name} = $_ ; } # foreach my $id (keys %{$db{event_quotes}}) { # # $match_bank_trans{$db{event_quotes}{$id}{trans_date}}{$db{event_quotes}{$id}{description}} = 1 ; # foreach my $event_id (split(";",$db{$tables}{$id}{event_system_id_multiple})) { # $val .= qq~$db{event_systems}{$event_id}{name} [$db{event_systems}{$event_id}{description}], ~ ; # } # } } #------------------------------------------------------------------------------------------ sub production_time_process_matched_events_and_systems { my %system_match = () ; my %matched_event_name = () ; my %csv_line_possible_match = () ; my %matched_events = () ; $system_match{"None"}{"None"} = -1 ; foreach my $event_code (keys %csv_line) { next if $matched_event{$event_code} ; my ($club_name,$system_desc_clue) = split("-",$csv_line{$event_code}{club_name}) ; $club_name =~ s/ $//g ; $system_desc_clue =~ s/^ //g ; # remove whitespace $club_name =~ s/\'//g ; $system_desc_clue = "None" unless $system_desc_clue ; my @eventdetails = split(/ /,$club_name) ; my $system_name_clue = $eventdetails[-1] ; $system_name_clue = "None" if $system_name_clue !~ /\d+/ ; if ($system_desc_clue =~ /\d+/ && length($system_desc_clue) == 5) { $system_name_clue = $system_desc_clue ; $system_desc_clue = 'None' ; } if ($system_desc_clue =~ /AISA/ && $system_desc_clue =~ /SOLO/) { my @sysparts = split(/\_/,$system_desc_clue) ; $system_name_clue = $sysparts[2] ; $system_desc_clue =~ s/\_/ /g ; } $csv_line{$event_code}{system_id} = -1 if $system_name_clue eq 'None' && $system_desc_clue eq 'None' ; $system_desc_clue = lc $system_desc_clue ; $csv_line{$event_code}{system_id} = $system_match{$system_name_clue}{$system_desc_clue} if $system_match{$system_name_clue}{$system_desc_clue} ; if (!$csv_line{$event_code}{system_id}) { foreach my $system_id (keys %{$db{event_systems}}) { # foreach my $system_id (keys %seen_event_system_in_event_quotes) { my $sys_desc = lc $db{event_systems}{$system_id}{description} ; my $sys_name = $db{event_systems}{$system_id}{name} ; if (($sys_name =~ /\b$system_name_clue\b/ || $sys_name =~ /_$system_name_clue\b/) && $sys_desc =~ /\b$system_desc_clue\b/ && $system_name_clue ne 'None' && $system_desc_clue ne 'none') { $csv_line{$event_code}{system_id} = $system_id ; $system_match{$system_name_clue}{$system_desc_clue} = $system_id ; last ; } elsif (($sys_name =~ /\b$system_name_clue\b/ || $sys_name =~ /_$system_name_clue\b/) && $system_name_clue ne 'None' && $system_desc_clue eq 'none') { $csv_line{$event_code}{system_id} = $system_id ; $system_match{$system_name_clue}{$system_desc_clue} = $system_id ; last ; } elsif ($sys_desc =~ /\b$system_desc_clue\b/ && $system_name_clue eq 'None' && $system_desc_clue ne 'none') { $csv_line{$event_code}{system_id} = $system_id ; $system_match{$system_name_clue}{$system_desc_clue} = $system_id ; last ; } } } my @sport_split = split(":",$csv_line{$event_code}{event_name}) ; $sport_split[0] =~ s/ //g ; $sport_split[0] = lc $sport_split[0] ; my $sport_id = ($csv_line{$event_code}{event_name} =~ /:/) ? $sport_name_to_id{$sport_split[0]} : '' ; my @event_name_details = split(/-/,$csv_line{$event_code}{event_name}) ; my $to_match_event_name = $event_name_details[-1] ; $to_match_event_name =~ s/^ //g ; $to_match_event_name =~ s/ $//g ; $to_match_event_name = ($csv_line{$event_code}{event_name} =~ /:/ && $csv_line{$event_code}{event_name} !~ /-/) ? $sport_split[1] : $to_match_event_name ; $to_match_event_name =~ s/\'//g ; my $club_id = $club_name_to_id{$club_name} ; $club_name = ($csv_line{$event_code}{club_name} =~ /AISA/ && $csv_line{$event_code}{club_name} =~ /SOLO/) ? lc $club_name : lc $csv_line{$event_code}{club_name} ; if (!$csv_line{$event_code}{system_id}) { foreach my $id (keys %{$db{event_quotes}}) { next unless $id ; next if $sport_id && $db{event_quotes}{$id}{sport_type_ids} !~ /\b$sport_id\b/ ; next if $club_id && $db{event_quotes}{$id}{club_ids} !~ /\b$club_id\b/ ; next if !$db{event_quotes}{$id}{event_system_id_multiple} || $db{event_quotes}{$id}{event_system_id_multiple} !~ /\d+/ ; my $event_end = substr($db{event_quotes}{$id}{date_to},0,11) . '23:59:59' ; my $event_start = substr($db{event_quotes}{$id}{date_from},0,11) . '00:00:00' ; my $after_event_end = &greater_date_time($event_end,$csv_line{$event_code}{start_time}) ; next if $after_event_end ; my $before_event_start = &greater_date_time($csv_line{$event_code}{end_time},$event_start) ; next if $before_event_start ; if ($to_match_event_name && ($db{event_quotes}{$id}{ref} eq $to_match_event_name || $db{event_quotes}{$id}{ref} =~ /$to_match_event_name/)) { $csv_line{$event_code}{event_id} = $id ; $matched_events{$event_code} .= qq~$id;~ ; } my $found_match = 0 ; foreach my $system_id (split(";",$db{event_quotes}{$id}{event_system_id_multiple})) { my $sys_desc = lc $db{event_systems}{$system_id}{description} ; my $sys_name = $db{event_systems}{$system_id}{name} ; if ($sys_name =~ /\b$system_name_clue\b/ && $sys_desc =~ /\b$system_desc_clue\b/ && $system_name_clue ne 'None' && $system_desc_clue ne 'none') { $csv_line{$event_code}{system_id} = $system_id ; $system_match{$system_name_clue}{$system_desc_clue} = $system_id ; } elsif ($sys_name =~ /\b$system_name_clue\b/ && $system_name_clue ne 'None' && $system_desc_clue eq 'none') { $csv_line{$event_code}{system_id} = $system_id ; $system_match{$system_name_clue}{$system_desc_clue} = $system_id ; } elsif ($sys_desc =~ /\b$system_desc_clue\b/ && $system_name_clue eq 'None' && $system_desc_clue ne 'none') { $csv_line{$event_code}{system_id} = $system_id ; $system_match{$system_name_clue}{$system_desc_clue} = $system_id ; } # my $sys_desc = $db{event_systems}{$system_id}{description} ; # my $sys_name = $db{event_systems}{$system_id}{name} ; # # my @sysparts = split(/\_/,$system) ; # if ($sys_name =~ /\b$sysno\b/ && $sys_desc =~ /\b$system\b/iog) { # $csv_line{$event_code}{system_id} = $system_id ; # $system_match{$system}{$sysno} = $system_id ; # $found_match = 1 ; # } elsif ($system =~ /\d+/ && $sys_name =~ /\b$system\b/) { # $csv_line{$event_code}{system_id} = $system_id ; # $system_match{$system}{$sysno} = $system_id ; # $found_match = 1 ; # } elsif ($system =~ /AISA/ && $system =~ /SOLO/ && $sysparts[2] && $sys_name =~ /\b$sysparts[2]\b/) { # $csv_line{$event_code}{system_id} = $system_id ; # $system_match{$system}{$sysno} = $system_id ; # $found_match = 1 ; # } elsif ($sys_desc eq 'St Stithians Hockey Red' && $clubname =~ /Red/i && $clubname =~ /Stithians/i) { # $csv_line{$event_code}{system_id} = $event_id ; # $system_match{$system}{$sysno} = $system_id ; # $found_match = 1 ; # } } if ($found_match && !$csv_line{$event_code}{event_id}) { $csv_line_possible_match{$event_code}{event_id} .= qq~$id;~ ; } } } if ($csv_line{$event_code}{system_id} && !$csv_line{$event_code}{event_id}) { foreach my $id (keys %{$db{event_quotes}}) { next if $sport_id && $db{event_quotes}{$id}{sport_type_ids} && $db{event_quotes}{$id}{sport_type_ids} !~ /\b$sport_id\b/ ; next if $club_id && $db{event_quotes}{$id}{club_ids} !~ /\b$club_id\b/ ; my $event_end = substr($db{event_quotes}{$id}{date_to},0,11) . '23:59:59' ; my $event_start = substr($db{event_quotes}{$id}{date_from},0,11) . '00:00:00' ; my $after_event_end = &greater_date_time($event_end,$csv_line{$event_code}{start_time}) ; next if $after_event_end ; my $before_event_start = &greater_date_time($csv_line{$event_code}{end_time},$event_start) ; next if $before_event_start ; if (!$db{event_quotes}{$id}{event_system_id_multiple} || $db{event_quotes}{$id}{event_system_id_multiple} !~ /\d+/ || $db{event_quotes}{$id}{event_system_id_multiple} !~ /\b$csv_line{$event_code}{system_id}\b/) { if ($csv_line{$event_code}{system_id} && !$seen_event_system_in_event_quotes{$csv_line{$event_code}{system_id}}) { $csv_line_possible_match{$event_code}{event_id} .= qq~$id;~ ; } next ; } # if ($to_match_event_name && ($db{event_quotes}{$id}{ref} eq $to_match_event_name || $db{event_quotes}{$id}{ref} =~ /$to_match_event_name/)) { if ($db{event_quotes}{$id}{sport_type_ids} && $to_match_event_name && ($db{event_quotes}{$id}{ref} eq $to_match_event_name || $db{event_quotes}{$id}{ref} =~ /$to_match_event_name/)) { $csv_line{$event_code}{event_id} = $id ; last ; } elsif ($db{event_quotes}{$id}{sport_type_ids}) { $csv_line{$event_code}{event_id} = $id ; last ; } else { $csv_line_possible_match{$event_code}{event_id} .= qq~$id;~ ; } } } if ((!$csv_line{$event_code}{system_id}) && !$csv_line{$event_code}{event_id}) { foreach my $id (keys %{$db{event_quotes}}) { next if $sport_id && $db{event_quotes}{$id}{sport_type_ids} && $db{event_quotes}{$id}{sport_type_ids} !~ /\b$sport_id\b/ ; next if $club_id && $db{event_quotes}{$id}{club_ids} !~ /\b$club_id\b/ ; next if !$db{event_quotes}{$id}{event_system_id_multiple} || $db{event_quotes}{$id}{event_system_id_multiple} !~ /\d+/ ; my $event_end = substr($db{event_quotes}{$id}{date_to},0,11) . '23:59:59' ; my $event_start = substr($db{event_quotes}{$id}{date_from},0,11) . '00:00:00' ; my $after_event_end = &greater_date_time($event_end,$csv_line{$event_code}{start_time}) ; next if $after_event_end ; my $before_event_start = &greater_date_time($csv_line{$event_code}{end_time},$event_start) ; next if $before_event_start ; # if (!$db{event_quotes}{$id}{event_system_id_multiple} || $db{event_quotes}{$id}{event_system_id_multiple} !~ /\d+/ || $db{event_quotes}{$id}{event_system_id_multiple} !~ /\b$csv_line{$event_code}{system_id}\b/) { # if ($csv_line{$event_code}{system_id} && !$seen_event_system_in_event_quotes{$csv_line{$event_code}{system_id}}) { # $csv_line_possible_match{$event_code}{event_id} .= qq~$id;~ ; # } # next ; # } if ($db{event_quotes}{$id}{sport_type_ids} && $to_match_event_name && ($db{event_quotes}{$id}{ref} eq $to_match_event_name || $db{event_quotes}{$id}{ref} =~ /$to_match_event_name/)) { $csv_line{$event_code}{event_id} = $id ; last ; } elsif ($db{event_quotes}{$id}{sport_type_ids}) { $csv_line{$event_code}{event_id} = $id ; last ; } else { $csv_line_possible_match{$event_code}{event_id} .= qq~$id;~ ; } } } chop $csv_line_possible_match{$event_code}{event_id} if $csv_line_possible_match{$event_code}{event_id} ; } $print_box_content_rows .= &common_min_forms_start("$lcpage") ; our @sql_col_display = ("club_system","system_nr","matched_system","production_hours","production_seconds","cloud_recording_seconds","club_name","start","end","event_name","matched_event","match") ; my $row_cnt = 0 ; my %no_system_or_event = () ; foreach my $event_code (sort {$csv_line{$a}{line_cnt} cmp $csv_line{$b}{line_cnt}} keys %csv_line) { next if $matched_event{$event_code} ; $row_cnt++ ; $print_tbody .= qq~