#!/usr/bin/perl BEGIN { use lib '/usr/home/cfg' ; require push_inc ; } require cfg ; print "Content-type: text/html\n\n"; # unless ($useropts{it}{$username}) { print "<<<<<<<<<<<< MAINTENANCE IN PROGRESS >>>>>>>>>" ; exit ; } #--------------------------------------------------------------------------------------------------------------------------------------------------------------------- use CGI::Carp qw(fatalsToBrowser); use CGI; use Mail::Sendmail; use Fcntl qw(:flock); use File::Copy; use File::Basename; use Date::Calc qw(:all); use Excel::Writer::XLSX; use Time::Piece ; &today; #--------------------------------------------------------------------------------------------------------------------------------------------------------------------- @ARGV = split(/\\*\&/, $ENV{'QUERY_STRING'}) ; $action = $ARGV[0] ; our ($q) = CGI -> new() ; our $iaction = $q -> param('iaction') || $action ; our $isaved = $q -> param('isaved') || '' ; our $open_new_tab = qq~target="_blank"~ ; # opens booking page in a new tab # our $debug = 1 ; # our $testing = 1 ; # if ($username ne 'handre') { # print "<< MAINTENANCE IN PROGRESS >>" ; exit ; # } #-------- page opts -------------------------------------------------------------------------------------------------------------------------------------------------- our %fixtures_status = (1 => 'Coding',2 => 'Ready',3 => 'Complete') ; # our %coding_provider = (1 => 'SportVot',2 => 'iSport') ; our %footage_type = ("s" => "Pixellot","r" => "YouTube") ; our %service_types = (1 => "Live Coding",2 => "Individual 48 hrs",3 => "Post Coding 24 hrs") ; our %coding_type = ("s" => "Standard","p" => "Premium","i" => "Individual") ; our @months = ("","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec") ; &page_opts ; #--------------------------------------------------------------------------------------------------------------------------------------------------------------------- our $srchscr = 1 ; # $usertype = 'coding_provider' ; # if ($username ne 'handre' && $username ne 'rory') { if ($glod_user_level < 5 && $usertype ne 'coding_provider') { print "Please Log in as a Level 5 or Coding Provider User Type!" ; exit ; } if ($iaction eq 'save') { &db_open_upd ; our $db_ignore_open_close = 1 ; # do one open and one close instead of repeating it &common_min_load_params ; &update ; &report_ifields; $isaved = qq~SUCCESSFULLY SAVED!~ ; &list_screen ; $db_ignore_open_close = 0 ; # do one open and one close instead of repeating it &db_close_conn ; exit if $testing ; &screen3; # &redirect_screen; } &db_open_ro ; our $db_ignore_open_close = 1 ; # do one open and one close instead of repeating it &report_screen if $iaction eq '' ; if ($iaction eq 'report') { &common_min_load_params ; &report_ifields ; &list_screen ; &screen3 ; } &common_min_action; $db_ignore_open_close = 0 ; # do one open and one close instead of repeating it &db_close_conn ; exit; #------------------------------------------------------------------------------------------ sub validate { } #------------------------------------------------------------------------------------------ sub insert { } #------------------------------------------------------------------------------------------ sub update { my @analytics_field_keys = ("stream_forwarding","stream_key","stream_URL") ; &db_min_ro($table,"id,start_date_time,client_id,fixtures_saved_values,analytics_saved_values,cant_charge_client_fixtures,sport_type_ids,total_fixtures,event_accepted,event_name,created_by","",'','') ; my %seen_event_id = () ; my %ii = %i ; %i = () ; my %email = () ; our @months = ("","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec") ; foreach my $_ (keys %ii) { # next if $_ !~ /update_/ || ($_ =~ /update_/ && !$ii{$_}) ; next if $_ !~ /update_/ ; my @abc = split(/\_/,$_) ; my $event_id = $abc[-1] ; # or -2? next if $seen_event_id{$event_id} ; $seen_event_id{$event_id} = 1 ; $i{fixtures_saved_values} = qq~~ ; $i{analytics_saved_values} = qq~~ ; our @fixtures_saved_values_split = split(/\|/,$db{$table}{$event_id}{fixtures_saved_values}) ; my @cant_charge_client_split = split(/\;/,$db{$table}{$event_id}{cant_charge_client_fixtures}) ; my $nr_of_rows = $db{$table}{$event_id}{total_fixtures} ; $nr_of_rows = scalar @fixtures_saved_values_split if scalar @fixtures_saved_values_split > $nr_of_rows ; # my $cant_charge_field = "cant_charge_client_reasons_$event_id" ; # $ignore{$cant_charge_field} = 1 ; my %iii = () ; for my $row_nr (1 .. 100) { last if $row_nr > $nr_of_rows ; my $input_vals = qq~~ ; my $upd_field = "update_$row_nr\_$event_id" ; my $coding_provider_field = "coding_provider_$row_nr\_$event_id" ; my $status_field = "status_$row_nr\_$event_id" ; my $moderated_field = "moderated_$row_nr\_$event_id" ; my $analyst_field = "analyst_$row_nr\_$event_id" ; my $cant_charge_field = "cant_charge_client_$row_nr\_$event_id" ; my @parts = split(/\;/,$fixtures_saved_values_split[$row_nr - 1]); $i{cant_charge_client_fixtures} .= ($ii{$upd_field}) ? qq~$ii{$cant_charge_field};~ : qq~$cant_charge_client_split[$row_nr-1];~ ; # $cant_charge_field # splice(@parts, -2) if @parts >= 2; $i{fixtures_saved_values} .= ($ii{$upd_field}) ? join(";",@parts[0..9]) . ';' . qq~$ii{$coding_provider_field};$ii{$status_field};$ii{$moderated_field};$ii{$analyst_field}~ : qq~$fixtures_saved_values_split[$row_nr - 1]~ ; $i{fixtures_saved_values} =~ s/;+$//g ; $i{fixtures_saved_values} .= qq~|~ ; $ignore{$upd_field} = 1 ; $ignore{$coding_provider_field} = 1 ; $ignore{$status_field} = 1 ; $ignore{$moderated_field} = 1 ; $ignore{$analyst_field} = 1 ; foreach (@analytics_field_keys) { my $field_key = "$_\_$row_nr\_$event_id" ; $i{$field_key} =~ s/\;/\_semi_colon_character_/g ; $i{$field_key} =~ s/\|/\_pipe_character_/g ; $i{analytics_saved_values} .= qq~$ii{$field_key};~ ; $ignore{$field_key} = 1 ; } $i{analytics_saved_values} =~ s/;+$//g ; $i{analytics_saved_values} .= qq~|~ ; if ((!$parts[12] || $parts[12] eq "2") && $ii{$moderated_field} eq "1" && $ii{$upd_field}) { $email{$event_id}{$row_nr}{date} = ($parts[0]) ? $parts[0] : $db{$table}{$event_id}{start_date_time} ; $email{$event_id}{$row_nr}{date} = &common_min_date_as_string($email{$event_id}{$row_nr}{date}) ; $email{$event_id}{$row_nr}{sport} = ($parts[1]) ? $parts[1] : ($db{$table}{$event_id}{sport_type_ids} !~ /;/) ? $db{$table}{$event_id}{sport_type_ids} : "" ; $email{$event_id}{$row_nr}{age_group} = ucfirst $parts[2] ; $email{$event_id}{$row_nr}{coding_type} = $coding_type{$parts[7]} ; } } $i{cant_charge_client_fixtures} =~ s/;+$//g ; $i{analytics_saved_values} =~ s/\|+$//g ; $i{fixtures_saved_values} =~ s/\|+$//g ; # $i{fixtures_saved_values} =~ s/([a-zA-Z0-9;])\|+\z/$1/; $i{fixtures_saved_values} =~ s/([a-zA-Z0-9]);+(\|)/$1$2/g; $i{fixtures_saved_values} =~ s/([a-zA-Z0-9])\|+$/$1/; $ignore{fixtures_saved_values} = (($i{fixtures_saved_values} && $db{$table}{$event_id}{fixtures_saved_values} && $i{fixtures_saved_values} eq $db{$table}{$event_id}{fixtures_saved_values} ) || (!$i{fixtures_saved_values} && !$db{$table}{$event_id}{fixtures_saved_values})) ? 1 : 0 ; $ignore{analytics_saved_values} = (($i{analytics_saved_values} && $db{$table}{$event_id}{analytics_saved_values} && $i{analytics_saved_values} eq $db{$table}{$event_id}{analytics_saved_values}) || (!$i{analytics_saved_values} && !$db{$table}{$event_id}{analytics_saved_values})) ? 1 : 0 ; $ignore{cant_charge_client_fixtures} = (($i{cant_charge_client_fixtures} && $db{$table}{$event_id}{cant_charge_client_fixtures} && $i{cant_charge_client_fixtures} eq $db{$table}{$event_id}{cant_charge_client_fixtures}) || (!$i{cant_charge_client_fixtures} && !$db{$table}{$event_id}{cant_charge_client_fixtures})) ? 1 : 0 ; $i{client_id} = $db{$table}{$event_id}{client_id} ; $ignore{client_id} = 1 ; $i{total_fixtures} = $db{$table}{$event_id}{total_fixtures} ; $ignore{total_fixtures} = 1 ; $i{sport_type_ids} = $db{$table}{$event_id}{sport_type_ids} ; $ignore{sport_type_ids} = 1 ; $i{event_accepted} = $db{$table}{$event_id}{event_accepted} ; $ignore{event_accepted} = 1 ; if (!$ignore{cant_charge_client_fixtures} && $i{event_accepted} && $i{client_id} && $i{sport_type_ids}) { &analytics_event_booking_tabs_update_credits_used($event_id,'') ; } &db_min_upd($table,"id='$event_id'") ; } %i = %ii ; my $client_sql = join(" OR ", map { "id='$db{$table}{$_}{client_id}'"} keys %{$db{$table}}) ; if ($client_sql) { &db_min_ro('customers','id,name',$client_sql,'','') ; &db_min_ro('sport_types','id,name','','','') ; my $users_sql = join(" OR ", map { "id='$db{$table}{$_}{created_by}'"} keys %{$db{$table}}) ; &db_min_ro('users','id,email',$users_sql,'','') ; } foreach my $event_id (sort {$a cmp $b} keys %email) { foreach my $row_cnt (sort {$a cmp $b} keys %{$email{$event_id}}) { my $event_name = ($db{$table}{$event_id}{event_name}) ? $db{$table}{$event_id}{event_name} : "N/A" ; my $sport = ($db{sport_types}{$email{$event_id}{$row_cnt}{sport}}{name}) ? $db{sport_types}{$email{$event_id}{$row_cnt}{sport}}{name} : "N/A" ; my $age_group = ($email{$event_id}{$row_cnt}{age_group}) ? $email{$event_id}{$row_cnt}{age_group} : "N/A" ; my $coding_type = ($email{$event_id}{$row_cnt}{coding_type}) ? $email{$event_id}{$row_cnt}{coding_type} : "N/A" ; # my $subj = "" ; # my $message = "Hi $db{customers}{$db{$table}{$event_id}{client_id}}{name}, # Your match analysis is now complete and ready for review in your analytics channel. # Match details: # Date: $email{$event_id}{$row_cnt}{date} # Event name: $event_name # Sport: $sport # Age group: $age_group # Coding type: $coding_type # You can now log in and begin reviewing the analysis, clips, and insights with your team. # If you have any questions or would like feedback adjusted or expanded, please don’t hesitate to get in touch. # Kind regards, # AI Sport Africa Analytics # $email_analytics" ; my $hmsg = qq~Hi Kre8IT,

Your match analysis is now complete and ready for review in your analytics channel.~; my $tmsg = qq~ Match Details   Date:  $email{$event_id}{$row_cnt}{date}   Event name:  $event_name   Sport:  $sport   Age group:  $age_group   Coding type:  $coding_type  ~ ; our $display_notif_msg = qq~You can now log in and begin reviewing the analysis, clips, and insights with your team.

AI Sport Africa Analytics

If you have any questions or would like feedback adjusted or expanded, please don’t hesitate to get in touch.

AI Sport Africa Analytics
$email_analytics

~ ; #
AI Sport Africa Analytics
# &db_min_ro('users','id,email',"id='25'",'','') if $event_id eq '1001' ; # &common_send_smtp_mail('',$db{users}{$db{$table}{$event_id}{created_by}}{email},'','',"Match Analysis Event $event_id Fixture $row_cnt",$message) if $event_id eq '1001' ; # &common_send_smtp_mail('',$db{users}{$db{$table}{$event_id}{created_by}}{email},$email_analytics,'',"Match Analysis Event $event_id Fixture $row_cnt",$message) if $event_id ne '1001' ; &common_send_smtp_mail('',$db{users}{$db{$table}{$event_id}{created_by}}{email},$email_analytics,'',"Match Analysis Event $event_id Fixture $row_cnt",$hmsg,$tmsg,'html') ; } } # &common_send_smtp_mail('','handre@kre8it.co.za','','',"Hello OWrld",'Hello World!') ; # exit ; } #------------------------------------------------------------------------------------------ # sub analytics_event_booking_tabs_update_credits_used { # my ($id,$id2) = @_ ; # my %credits_used = () ; my $row_cnt = 0 ; # my @cnt_charge = split(/\;/,$db{$table}{$id}{cant_charge_client_fixtures}) ; # if ($db{$table}{$id}{client_id}) { # foreach my $fixture_row (@fixtures_saved_values_split) { # $row_cnt++ ; # last if $row_cnt > $db{$table}{$id}{total_fixtures} ; # my @fixtures_saved_values_split_2 = split(/\;/,$fixture_row) ; # my $sport_id = ($db{$table}{$id}{sport_type_ids} !~ /;/) ? $db{$table}{$id}{sport_type_ids} : $fixtures_saved_values_split_2[1] ; # next unless $sport_id ; # $credits_used{previous}{premium}{$db{$table}{$id}{client_id}}{$sport_id} += 1 if $fixtures_saved_values_split_2[7] eq 'p' && !$cnt_charge[$row_cnt-1] ; # $credits_used{previous}{standard}{$db{$table}{$id}{client_id}}{$sport_id} += 1 if $fixtures_saved_values_split_2[7] eq 's' && !$cnt_charge[$row_cnt-1] ; # $credits_used{previous}{individual}{$db{$table}{$id}{client_id}}{$sport_id} += 1 if $fixtures_saved_values_split_2[7] eq 'i' && !$cnt_charge[$row_cnt-1] ; # } # } # if ($i{client_id}) { # @fixtures_saved_values_split = split(/\|/,$i{fixtures_saved_values}) ; # $row_cnt = 0 ; # @cnt_charge = split(/\;/,$i{cant_charge_client_fixtures}) ; # foreach my $fixture_row (@fixtures_saved_values_split) { # $row_cnt++ ; # last if $row_cnt > $i{total_fixtures} ; # my @fixtures_saved_values_split_2 = split(/\;/,$fixture_row) ; # my $sport_id = ($i{sport_type_ids} !~ /;/) ? $db{$table}{$id}{sport_type_ids} : $fixtures_saved_values_split_2[1] ; # next unless $sport_id ; # $credits_used{new}{premium}{$i{client_id}}{$sport_id} += 1 if $fixtures_saved_values_split_2[7] eq 'p' && !$cnt_charge[$row_cnt-1] ; # $credits_used{new}{standard}{$i{client_id}}{$sport_id} += 1 if $fixtures_saved_values_split_2[7] eq 's' && !$cnt_charge[$row_cnt-1] ; # $credits_used{new}{individual}{$i{client_id}}{$sport_id} += 1 if $fixtures_saved_values_split_2[7] eq 'i' && !$cnt_charge[$row_cnt-1] ; # } # my %seen = () ; # } # $seen{client}{$i{client_id}} = 1 if $i{client_id} ; # $seen{client}{$db{$table}{$id}{client_id}} = 1 if $db{$table}{$id}{client_id} ; # foreach (split(/\;/,$db{$table}{$id}{sport_type_ids})) { # $seen{sport}{$_} = 1 if $_ ; # } # if ($i{sport_type_ids}) { # foreach (split(/\;/,$i{sport_type_ids})) { # $seen{sport}{$_} = 1 if $_ ; # } # } # my $sport_sql = join(" OR ",map{"sport_type_id='$_'"} keys %{$seen{sport}}) ; # my $client_sql = join(" OR ",map{"client_id='$_'"} keys %{$seen{client}}) ; # my $id_sql = ($id2) ? "analytics_event_id='$id2'" : ($id) ? "analytics_event_id='$id'" : "" ; # my @sql_where_arr = () ; # push @sql_where_arr,"($sport_sql)" if $sport_sql ; # push @sql_where_arr,"($client_sql)" if $client_sql ; # push @sql_where_arr,$id_sql if $id_sql ; # my $sql_where = join(" AND ",@sql_where_arr) ; # &db_min_ro('credits_used','*',$sql_where,'','') ; my %exists = () ; # my %db_credits_used = %db ; # foreach my $_id (keys %{$db{credits_used}}) { # $exists{$db{credits_used}{$_id}{sport_type_id}}{$db{credits_used}{$_id}{client_id}} = 1 ; # } # my $new_id = 0 ; # foreach my $client_id (sort {$a <=> $b} keys %{$seen{client}}) { # foreach my $sport_id (sort {$a <=> $b} keys %{$seen{sport}}) { # unless ($exists{$sport_id}{$client_id}) { # if ($new_id) { # $new_id++ ; # } else { # $new_id = &db_min_get_max('credits_used','id') ; # } # $db_credits_used{credits_used}{$new_id}{sport_type_id} = $sport_id ; # $db_credits_used{credits_used}{$new_id}{client_id} = $client_id ; # } # } # } # my %hidden_old = %hidden ; # %hidden = () ; # my %ignore_old = %ignore ; # %ignore = () ; # my %ij = %i ; # # cant_charge_client_fixtures_1 # foreach my $_id (keys %{$db_credits_used{credits_used}}) { # my $premium_credits = ($db_credits_used{credits_used}{$_id}{premium_credits_used}) ? $db_credits_used{credits_used}{$_id}{premium_credits_used} : 0 ; # my $standard_credits = ($db_credits_used{credits_used}{$_id}{standard_credits_used}) ? $db_credits_used{credits_used}{$_id}{standard_credits_used} : 0 ; # my $individual_credits = ($db_credits_used{credits_used}{$_id}{individual_credits_used}) ? $db_credits_used{credits_used}{$_id}{individual_credits_used} : 0 ; # my $sport_id = $db_credits_used{credits_used}{$_id}{sport_type_id} ; # my $client_id = $db_credits_used{credits_used}{$_id}{client_id} ; # %i = () ; # $i{premium_credits_used} = $credits_used{new}{premium}{$client_id}{$sport_id} ; # $i{standard_credits_used} = $credits_used{new}{standard}{$client_id}{$sport_id} ; # $i{individual_credits_used} = $credits_used{new}{individual}{$client_id}{$sport_id} ; # $i{premium_credits_used} = 0 unless $i{premium_credits_used} ; # $i{standard_credits_used} = 0 unless $i{standard_credits_used} ; # $i{individual_credits_used} = 0 unless $i{individual_credits_used} ; # $ignore{premium_credits_used} = ($credits_used{new}{premium}{$client_id}{$sport_id} ne $premium_credits) ? 0 : 1 ; # $ignore{standard_credits_used} = ($credits_used{new}{standard}{$client_id}{$sport_id} ne $standard_credits) ? 0 : 1 ; # $ignore{individual_credits_used} = ($credits_used{new}{individual}{$client_id}{$sport_id} ne $individual_credits) ? 0 : 1 ; # if (!$exists{$sport_id}{$client_id} && ($i{premium_credits_used} || $i{standard_credits_used} || $i{individual_credits_used}) && $ij{event_accepted}) { # $i{id} = "$_id" ; # $i{sport_type_id} = "$sport_id" ; # $i{client_id} = "$client_id" ; # $i{analytics_event_id} = ($id2) ? "$id2" : ($id) ? "$id" : "0" ; # &db_min_insert('credits_used') ; # } elsif ($exists{$sport_id}{$client_id} && ($i{premium_credits_used} || $i{standard_credits_used} || $i{individual_credits_used}) && $ij{event_accepted}) { # &db_min_upd('credits_used',"id='$_id'") ; # } elsif ($exists{$sport_id}{$client_id} && ((!$i{premium_credits_used} && !$i{standard_credits_used} && !$i{individual_credits_used}) || !$ij{event_accepted})) { # &db_min_delete('credits_used',"id='$_id'") ; # } # } # %ignore = %ignore_old ; # %hidden = %hidden ; # %i = %ij ; # } sub report_ifields { if ($i{start_date_from} && $i{start_date_to}) { push @report_sql, " (('$i{start_date_from}' <= q.start_date_time AND q.start_date_time <= '$i{start_date_to}') OR ('$i{start_date_from}' <= q.end_date_time AND q.end_date_time <= '$i{start_date_to}' AND q.end_date_time IS NOT NULL) OR (q.start_date_time <= '$i{start_date_from}' AND '$i{start_date_to}' <= q.end_date_time AND q.end_date_time IS NOT NULL) OR (q.start_date_time <= '$i{start_date_from}' AND q.end_date_time IS NULL)) " ; # our @months = ("","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec") ; my $start_date_from = &common_min_date_as_string($i{start_date_from}) ; my $start_date_to = &common_min_date_as_string($i{start_date_to}) ; push @report_results, " (DATE BETWEEN '$start_date_from' AND '$start_date_to') " ; } if ($i{country}) { push @report_sql, "(q.country_id = '$i{country}')" ; push @report_results, "country_id = `$i{country}`" ; } if ($i{customer_name} && $i{customer_name} ne 'all') { push @report_sql, "(q.client_id = '$i{customer_name}')" ; &db_min_ro('customers','id,name',"`id`='$i{customer_name}'",'','') ; push @report_results, "customer = `$db{customers}{$i{customer_name}}{name}`" ; } # if ($i{accepted} || $i{options} eq 'accepted') { # push @report_sql, "(q.event_accepted='1' AND q.event_completed<>'1')" ; # push @report_results, "event_accepted = `Yes`" ; # } if ($i{options} eq 'accepted') { push @report_sql, "(q.event_accepted='1')" ; push @report_results, "Event is Accepted" ; } elsif ($i{options} eq 'completed') { push @report_sql, "(q.event_completed='1')" ; push @report_results, "Event is Completing" ; } elsif ($i{options} eq 'pending') { push @report_sql, "(q.event_pending='1')" ; push @report_results, "Event is Pending" ; } elsif ($i{options} eq 'cancelled') { push @report_sql, "(q.event_cancelled='1' OR (q.event_expiry IS NOT NULL AND q.event_expiry<'$now_year-$now_mm-$now_dd' AND q.event_accepted<>'1'))" ; push @report_results, "Event is Cancelled" ; } elsif ($i{options} eq 'rejected') { push @report_sql, "(q.event_rejected='1')" ; push @report_results, "Event is Rejecting" ; } $preferred_title{region_id} = "Region" ; $preferred_title{city_id} = "City" ; $preferred_title{organisation_ids} = "Venue" ; $preferred_title{sport_type_ids} = "Sport Type" ; if ($i{sport_type_ids} && $i{sport_type_ids} ne 'all') { &db_min_ro('sport_types',"id,name","id='$i{sport_type_ids}'",'','') ; push @report_sql, "FIND_IN_SET($i{sport_type_ids},REPLACE(q.sport_type_ids,';',','))" ; push @report_results, "sport_types INCLUDE `$db{sport_types}{$i{sport_type_ids}}{name}`" ; } if ($i{service_type_id} && $i{service_type_id} ne 'all') { # push @report_sql, "(service_type_id = '$i{service_type_id}')" ; push @report_results, "Service Type is `$service_types{$i{service_type_id}}`" ; } if ($i{coding_provider_id} && $i{coding_provider_id} ne 'all') { # push @report_sql, "(fixtures_saved_values REGEXP ';$i{coding_provider_id};[0-9a-z]+\\|' OR fixtures_saved_values REGEXP ';$i{coding_provider_id};[0-9a-z]+\$')" ; # fixtures_saved_values REGEXP '(^|\\|)([0-9a-z]+;){9}$i{coding_provider_id}(;[0-9]+;[0-9]+|;;[0-9]+|;[0-9]+)(\\||\$)' # push @report_sql, " # (fixtures_saved_values REGEXP '(^|\\|)([0-9a-z]+;|;){9}') # " ; push @report_results, "Coding Provider is `$coding_type{$i{coding_provider_id}}`" ; } if ($usertype eq 'analytics_client') { push @report_sql, "(q.client_id='$userid')" ; } our $srch_where_sql = join(" AND ",@report_sql) ; $report_results_msg = uc join(', ', @report_results) ; unless ($report_results_msg) { $error = qq(ENTER AT LEAST ONE SEARCH PARAMETER) ; &report_screen ; } else { $isaved = qq(SELECT WHERE $report_results_msg) ; } } #------------------------------------------------------------------------------------------ sub load_search_vars { } #------------------------------------------------------------------------------------------ sub list_screen { $print_box_content_rows .= &common_min_forms_start("$lcpage") ; our $set_up_groups = 1 ; &load_list_vars("$srch_where_sql") ; $fcol = 12 ; my $report = 1 ; our $xlsxdir = "fixtures_report" ; our $xlsxreportname = "Fixtures_Report" ; my $date = &common_write_date_interval($i{date_from},$i{date_to}) ; our $xlsx_title_heading = "Fixtures Report $date" ; &build_table_and_or_excel(1) ; $fnsortorder = 'asc' ; &common_min_extra_crumb("$lcpage","Search Screen") ; $trigger_jquery_raw .= qq~ \$("#savebutt").click(function() { \$("#$lcpage-form").submit() ; }) ; ~ ; } #------------------------------------------------------------------------------------------ sub build_table_and_or_excel { my ($report) = @_ ; # $custom_header{$headers[13]} .= qq~~ ; our @sql_col_display = ("nr","start_date_time","sport","age_group","team","home_team","ht_colour","away_team","coding_type","footage_type","service_type","stream_forwarding","stream_key","stream_URL","coding_provider","status","moderated") ; # push @sql_col_display,"analyst" if $usertype eq 'coding_provider' ; push @sql_col_display,"analyst" ; $custom_header{"analyst"} = qq~ANALYST  ~ ; $custom_header{"cant_charge_client"} = qq~~ ; &report_xlsx_export_header("$xlsxreportname",$xlsxdir,'',$xlsx_title_heading) ; push @sql_col_display,"cant_charge_client" ; push @sql_col_display,"update" ; my $nr_of_cols = scalar @sql_col_display ; my @rev_sql_col_display = reverse @sql_col_display ; foreach (@rev_sql_col_display) { $lastchild++ ; $last_child{$_} = $lastchild ; } # &common_debug("last-child : $_ [$last_child{$_}]"); $xlsxrow-- ; my $cali_cnt = 0 ; my $found_editable = 0 ; my @all_select_ids = () ; $format84 -> set_align("center") ; my $start_date_input = $i{start_date_from} ; $start_date_input =~ s/://g ; $start_date_input =~ s/-//g ; $start_date_input =~ s/ //g ; my $end_date_input = $i{start_date_to} ; $end_date_input =~ s/://g ; $end_date_input =~ s/-//g ; $end_date_input =~ s/ //g ; my %seen_analytics_id = () ; # foreach my $id (sort {$db{$table}{$a}{date_from} cmp $db{$table}{$b}{date_from}} keys %{$db{$table}}) { use URI::Escape; foreach my $id (sort { $b <=> $a } keys %{$db{$table}}) { my @fixtures_split = split(/\|/,$db{$table}{$id}{fixtures_saved_values}) ; my @analytics_split = split(/\|/,$db{$table}{$id}{analytics_saved_values}) ; my @sport_type_ids = split(/\;/,$db{$table}{$id}{sport_type_ids}) ; my @cant_charge_client_fixtures_arr = split(/\;/,$db{$table}{$id}{cant_charge_client_fixtures}) ; my @cant_charge_client_reasons_arr = split(/\:\|;/,$db{$table}{$id}{cant_charge_client_reasons}) ; my $row_cnt = - 1 ; # foreach my $row (@fixtures_split) { foreach my $row_nr (1 .. $db{$table}{$id}{total_fixtures}) { my @fixtures_split_2 = split(/\;/,$fixtures_split[$row_nr - 1]) ; my @analytics_split_2 = split(/\;/,$analytics_split[$row_nr - 1]) ; $row_cnt++ ; next if $i{coding_provider_id} && $i{coding_provider_id} ne 'all' && $fixtures_split_2[10] ne $i{coding_provider_id} ; next if $i{service_type_id} && $i{service_type_id} ne 'all' && (($fixtures_split_2[9] && $fixtures_split_2[9] ne $i{service_type_id}) || (!$fixtures_split_2[9] && $db{$table}{$id}{service_type_id} ne $i{service_type_id})) ; my $date_val = ($fixtures_split_2[0]) ? $fixtures_split_2[0] : $db{$table}{$id}{start_date_time} ; $date_val =~ s/://g ; $date_val =~ s/-//g ; $date_val =~ s/ //g ; next if $date_val < $start_date_input || $date_val > $end_date_input ; $cali_cnt++ ; my $col_cnt = -2 ; # last if $db{$table}{$id}{total_fixtures} eq $row_cnt ; $xlsxcol = 0 ; our $default_javascript = qq~~ ; $seen_analytics_id{$id} = 1 ; foreach (@sql_col_display) { # &common_debug("1. XLSX >>> $_") if !$report ; $nr_of_cols_cnt-- ; next unless $_ ; # blank for the buttons column my $formatting = $format84 ; my $val = $db{$table}{$id}{$_} ; my $val_xlsx = 'MUSTBEBLANK' ; my $align = qq~ class="dt-center"~ ; my $nowrap = '' ; my $cell_id = '' ; # &common_debug("2. XLSX >>> val_min=$val_min") if !$report ; my $sys_day_cnt = $cnt{$event_sys_id}{$id} ; $col_cnt++ ; my $field = "" ; my $default_val = ($_ eq 'stream_forwarding') ? $analytics_split_2[0] : ($_ eq 'stream_key') ? $analytics_split_2[1] : ($_ eq 'stream_URL') ? $analytics_split_2[2] : $fixtures_split_2[$col_cnt] ; my $only_display_val = 0 ; my $background_color = "#424949" ; my $default_val_is_saved = ($default_val) ? 1 : 0 ; # our %fixtures_status = (1 => 'Pending',2 => 'Booked',3 => 'Completed') ; # our %coding_provider = (1 => 'SportVot',2 => 'iSport') ; # our %footage_type = ("s" => "SSS","r" => "Raw") ; # our %service_types = (1 => "Live Coding",2 => "Post Coding 12 hrs",3 => "Post Coding 24 hrs") ; # our %coding_type = ("s" => "Standard","p" => "Premium") ; # our @months = ("","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec") ; if ($_ eq 'nr') { $val = &common_min_get_event_quote_button($id,$table,'analytics-event-bookings') ; $val .= qq~~ if $db{$table}{$id}{event_quote_id} > 0 && $db{$table}{$id}{event_quote_id} ; $val_xlsx = $id ; $nowrap = 'nowrap' ; } elsif ($_ eq "start_date_time") { $val = ($fixtures_split_2[0]) ? &common_min_date_as_string($fixtures_split_2[0]) : &common_min_date_as_string($db{$table}{$id}{start_date_time}) ; $nowrap = 'nowrap' ; } elsif ($_ eq "sport") { $val = ($fixtures_split_2[1] && $db{$table}{$id}{sport_type_ids} =~ /\b$fixtures_split_2[1]\b/) ? $db{sport_types}{$fixtures_split_2[1]}{name} : ($db{$table}{$id}{sport_type_ids} !~ /;/ && !$fixtures_split_2[1]) ? $db{sport_types}{$db{$table}{$id}{sport_type_ids}}{name} : "" ; } elsif ($_ eq "age_group") { $val = ucfirst $fixtures_split_2[2] ; } elsif ($_ eq "team") { $val = uc $fixtures_split_2[3] ; } elsif ($_ eq "home_team") { $val = $db{teams}{$fixtures_split_2[4]}{name} ; } elsif ($_ eq "ht_colour") { $val = $db{analytics_ht_colors}{$fixtures_split_2[5]}{name} ; } elsif ($_ eq "away_team") { $val = $db{teams}{$fixtures_split_2[6]}{name} ; } elsif ($_ eq "coding_type") { $val = $coding_type{$fixtures_split_2[7]} ; } elsif ($_ eq "footage_type") { $val = $footage_type{$fixtures_split_2[8]} ; } elsif ($_ eq "service_type") { $val = ($fixtures_split_2[9]) ? $service_types{$fixtures_split_2[9]} : $service_types{$db{$table}{$id}{service_type_id}} ; $nowrap = 'nowrap' ; } elsif ($_ eq 'stream_forwarding') { $col_cnt-- ; $background_color = ($default_val eq '1') ? "rgb(46,204,113)" : ($default_val eq '2') ? "rgb(249,13,13)" : "" ; $opts{"stream_forwarding_$row_nr\_$id"} = qq~~ ; $val = &common_min_table_select("stream_forwarding_$row_nr\_$id",$default_val,$only_display_val,$cali_cnt,$last_child{$_},$background_color,$default_val,$_) ; $val_xlsx = ($default_val eq '1') ? 'Yes' : ($default_val eq '2') ? 'No' : '' ; $val = qq~Do not edit this hidden input below!~ . $val_xlsx if $usertype eq 'coding_provider' ; } elsif ($_ eq 'stream_key') { $col_cnt-- ; my $hide_text = ($analytics_split_2[0] eq '2') ? 1 : 0 ; $default_val =~ s/\_semi_colon_character_/\;/g ; $default_val =~ s/\_pipe_character_/\|/g ; my $default_is_saved = ($default_val && $analytics_split_2[0] ne '2') ? 1 : 0 ; $readonly{"stream_key_$row_nr\_$id"} = "READONLY" if $usertype eq 'coding_provider' ; $val = qq~Do not edit this teaxtarea below if readonly!~ . &common_min_table_textarea("stream_key_$row_nr\_$id",$default_val,'',$cali_cnt,$last_child{$_},$background_color,$default_is_saved,'','',$hide_text) ; $val_xlsx = $default_val ; } elsif ($_ eq 'stream_URL') { $col_cnt-- ; my $hide_text = ($analytics_split_2[0] eq '2') ? 1 : 0 ; $default_val =~ s/\_semi_colon_character_/\;/g ; $default_val =~ s/\_pipe_character_/\|/g ; my $default_is_saved = ($default_val && $analytics_split_2[0] ne '2') ? 1 : 0 ; $readonly{"stream_URL_$row_nr\_$id"} = "READONLY" if $usertype eq 'coding_provider' ; $val = qq~Do not edit this teaxtarea below if readonly!~ . &common_min_table_textarea("stream_URL_$row_nr\_$id",$default_val,'',$cali_cnt,$last_child{$_},$background_color,$default_is_saved,'','',$hide_text) ; $val_xlsx = $default_val ; } elsif ($_ eq 'coding_provider') { $field = "coding_provider_$row_nr\_$id" ; $opts{$field} = ($default_val) ? qq~~ : $opts{coding_provider_id} ; $dont_allow_deselect_in_table{$field} = 1 if $usertype eq 'coding_provider' || $default_val ; $val = &common_min_table_select($field,$default_val,$only_display_val,$cali_cnt,$last_child{$_},$background_color,$default_val) ; $val_xlsx = "$db{users}{$default_val}{name} [$db{users}{$default_val}{username}]" ; } elsif ($_ eq 'status') { # if ($default_val eq '1') { #calibrating # $background_color = "#FFA500" ; orange # $formatting = $format89 ; # } elsif ($default_val eq '2') { #cancelled # $background_color = "#AD0502" ; red # $formatting = $format90 ; # } elsif ($default_val eq '3') { #done # $background_color = "#2ECC71" ; greeen # $formatting = $format88 ; # } elsif ($default_val eq '4') { # $background_color = "#424949" ; # } # rgb(81, 203, 242) blue if ($default_val eq '1') { $background_color = "#FFA500" ; } elsif ($default_val eq '2') { # $background_color = "rgb(81, 203, 242)" ; } elsif ($default_val eq '3') { $background_color = "#2ECC71" ; } $field = "status_$row_nr\_$id" ; $opts{$field} = $opts{status_id} ; # 1;;;open;a;7495;1;6684;s;s;s;s|2;;;u19;b;845;1;778;p;r;p;r|3;2025-06-18 06:00:00;8;u17;c;54;1;3975;s;s;s;s $val = &common_min_table_select($field,$default_val,$only_display_val,$cali_cnt,$last_child{$_},$background_color,$default_val,$_) ; $val_xlsx = $fixtures_status{$default_val} ; } elsif ($_ eq 'analyst') { # $opts{"analyst_$row_nr\_$id"} = $opts{analyst} ; # if ($usertype ne 'coding_provider') { if ($fixtures_split_2[10]) { $opts{"analyst_$row_nr\_$id"} = $opts{$fixtures_split_2[10]}{analyst} ; } else { $opts{"analyst_$row_nr\_$id"} = qq~~ ; } $opts{"analyst_$row_nr\_$id"} =~ s/value='$default_val'/value='$default_val' SELECTED/g if $default_val ; my $ab = "analyst_$row_nr\_$id" ; $val = &common_min_table_select("analyst_$row_nr\_$id",$default_val,$only_display_val,$cali_cnt,$last_child{$_},$background_color,$default_val) ; $val_xlsx = $db{all_fixtures_analysts}{$default_val}{name} ; } elsif ($_ eq 'moderated') { # $background_color = (($_ eq 'status' || $_ eq 'equipment_checked') && $default_vals[$col_cnt] eq '1') ? "rgb(46,204,113)" : (($_ eq 'status' || $_ eq 'equipment_checked') && $default_vals[$col_cnt] eq '2') ? "rgb(249,13,13)" : ($_ eq 'status' && $default_vals[$col_cnt] eq '3') ? "rgb(255,153,0)" : '' ; $background_color = ($default_val eq '1') ? "rgb(46,204,113)" : ($default_val eq '2') ? "rgb(249,13,13)" : "" ; $opts{"moderated_$row_nr\_$id"} = $opts{moderated} ; $val = &common_min_table_select("moderated_$row_nr\_$id",$default_val,$only_display_val,$cali_cnt,$last_child{$_},$background_color,$default_val,$_) ; $val_xlsx = ($default_val eq '1') ? "Yes" : ($default_val eq '2') ? "No" : "" ; } elsif ($_ eq 'cant_charge_client') { # $val = &common_min_table_checkbox("cant_charge_client_$row_nr\_$id") ; $nowrap = 'nowrap' ; # $align = "class='dt-left'" ; my $checked = ($cant_charge_client_fixtures_arr[$row_cnt]) ? 'CHECKED' : '' ; $val = qq~~ ; my $reason_url = $cant_charge_client_reasons_arr[$row_cnt] ; $reason_url =~ s/\R/\_new_line_character_/g ; $reason_url =~ s/ /\ /g ; $disp_reason = ($cant_charge_client_fixtures_arr[$row_cnt]) ? "" : "display:none;" ; $val .= qq~  ~ if $cant_charge_client_reasons_arr[$row_cnt] ; $default_javascript .= ($cant_charge_client_fixtures_arr[$row_cnt]) ? qq~"checkboxCant_charge_client_$row_nr\_$id":"true",~ : qq~"checkboxCant_charge_client_$row_nr\_$id":"false",~ ; $cell_id = "id='c_cant_charge_client_$row_nr\_$id'" ; } elsif ($_ eq 'update') { $val = &common_min_table_checkbox("update_$row_nr\_$id") ; $default_javascript =~ s/,+$//g ; if ($default_javascript) { push @default_javascript_by_id, qq~"$row_nr\_$id":{$default_javascript}~ ; my $update_ids_str = "#selectStatus_$row_nr\_$id,#selectCoding_provider_$row_nr\_$id,#selectModerated_$row_nr\_$id,#selectStream_forwarding_$row_nr\_$id,#textareaStream_key_$row_nr\_$id,#textareaStream_URL_$row_nr\_$id,#checkboxCant_charge_client_$row_nr\_$id" ; # $update_ids_str .= ",#selectAnalyst_$row_nr\_$id" if $usertype eq 'coding_provider' ; $update_ids_str .= ",#selectAnalyst_$row_nr\_$id" ; push @all_update_field_ids,$update_ids_str ; } } $print_tbody .= qq~$val~ if $report ; $val_xlsx = $val if $val_xlsx eq 'MUSTBEBLANK' ; &xlsxcreator_write_xlsx($ws,$xlsxrow,$xlsxcol,$val_xlsx,$formatting) if $val_xlsx && $_ ne 'update' ; $xlsxcol++ ; } $print_tbody .= qq~~ if $report ; $xlsxrow++ ; } } &common_shared_build_select_primary_jquery ; foreach my $id (%seen_analytics_id) { next if $id eq '1' ; $db{$table}{$id}{cant_charge_client_reasons} =~ s/\R/\_new_line_character_/g ; $db{$table}{$id}{cant_charge_client_reasons} =~ s/ /\ /g ; $print_box_content_rows .= qq~~ ; } $trigger_jquery_raw .= qq~ \$("#$useropts{table_id}").on("change","[id^='selectCoding_provider_']", async function (event) { let row_nr = get_row_nr (this.id,2) ; let analysts = "[]" ; console.log("row_nr : "+row_nr) ; if (!\$("#selectCoding_provider_"+row_nr).val()) { \$("#selectAnalyst_"+row_nr).val('').trigger("chosen:updated") ; clearSelect(\$("#selectAnalyst_"+row_nr)); } else { let url_get_analysts = "$useropts{scripts}/get/get_analyst_from_coding_provider.pl?coding_provider_id="+\$("#selectCoding_provider_"+row_nr).val() ; console.log("url_get_analysts : "+url_get_analysts) ; analysts = await fetchJSON(url_get_analysts) ; clearSelect(\$("#selectAnalyst_"+row_nr)); populateSelect(\$("#selectAnalyst_"+row_nr),analysts,r => r.name); } }) ; \$("#$useropts{table_id}").on("click","[id^='checkboxCant_charge_client']", function () { let analytics_id = get_row_nr(this.id,1) ; let row_nr = get_row_nr(this.id,2) ; row_nr = row_nr.split('_')[0]; if (\$("#"+this.id).is(":checked")) { if (\$("#reason_icon_"+row_nr+"_"+analytics_id).html()) { \$("#reason_icon_"+row_nr+"_"+analytics_id).css("display","") ; } else { dlgMdl("$useropts{scripts}/dialog/add_fixtures_charge_free_table_reason.pl?add&&"+analytics_id+"&"+row_nr+"&&1","Add Reason",'','medium-dialog') ; } } else { \$("#reason_icon_"+row_nr+"_"+analytics_id).hide() ; } }) ; ~ ; # \$("#itv-table tr th:nth-last-child(1)").css("width","0%") ; # \$("#itv-table tr th:nth-last-child(1)").css("display","none") ; my $all_select_ids_string = join(",",@all_select_ids) ; # $trigger_jquery_raw .= qq~\$('[data-toggle="tooltip"]').tooltip({ container: 'body' });~ ; $trigger_jquery_raw .= qq~\$("$all_select_ids_string").chosen({allow_single_deselect:true});~ ; # if ($usertype eq 'coding_provider') { &common_min_table_select_jquery("#$useropts{table_id} td:nth-last-child($last_child{stream_forwarding}),#$useropts{table_id} td:nth-last-child($last_child{analyst}),#$useropts{table_id} td:nth-last-child($last_child{status}),#$useropts{table_id} td:nth-last-child($last_child{moderated}),#$useropts{table_id} td:nth-last-child($last_child{coding_provider})") ; # } else { # &common_min_table_select_jquery("#$useropts{table_id} td:nth-last-child(7),#$useropts{table_id} td:nth-last-child(4),#$useropts{table_id} td:nth-last-child(3),#$useropts{table_id} td:nth-last-child(2)") ; # } &common_min_table_update_checkbox_col("2") ; $worksheet{$ws}->set_column(0,0,10) ; $worksheet{$ws}->set_column(1,17,20) ; &report_xlsx_export_footer('L',15,$xlsxdir) ; # "#$useropts{table_id} tr:eq(???) td:nth-last-child(6)" ; # my $key_col = ($usertype ne 'coding_provider') ? 6 : 7 ; # my $url_col = ($usertype ne 'coding_provider') ? 5 : 6 ; my $key_col = 7 ; my $url_col = 6 ; $trigger_jquery_raw .= qq~ \$("#$useropts{table_id}").on("change","[id^='selectStream_forwarding_']", function () { let row_nr = get_row_nr (this.id,2) ; let \$tr = \$(this).closest("tr"); if ((\$(this).val() == '1' || !\$(this).val()) && \$("#textareaStream_key_"+row_nr).is(":hidden")) { \$("#textareaStream_key_"+row_nr).show() ; if (\$("#textareaStream_key_"+row_nr).val()) { \$tr.find("td:nth-last-child($key_col)").css("background-color","rgb(66,73,73)") ; } \$("#textareaStream_URL_"+row_nr).show() ; if (\$("#textareaStream_URL_"+row_nr).val()) { \$tr.find("td:nth-last-child($url_col)").css("background-color","rgb(66,73,73)") ; } } else if (\$(this).val() == '2' && !\$("#textareaStream_key_"+row_nr).is(":hidden")) { \$("#textareaStream_key_"+row_nr).hide() ; if (\$("#textareaStream_key_"+row_nr).val()) { \$tr.find("td:nth-last-child($key_col)").css("background-color","") ; } \$("#textareaStream_URL_"+row_nr).hide() ; if (\$("#textareaStream_URL_"+row_nr).val()) { \$tr.find("td:nth-last-child($url_col)").css("background-color","") ; } } }) ; \$("#$useropts{table_id}").on("change","[id^='textareaStream_key_'],[id^='textareaStream_URL_']", function () { let row_nr = get_row_nr (this.id,2) ; if (!\$("#selectStream_forwarding_"+row_nr).val()) { \$("#selectStream_forwarding_"+row_nr).val("1").trigger("chosen:updated") ; } }) ; ~ ; } #------------------------------------------------------------------------------- sub thead { # # # # # # &common_min_thead ; $print_thead = qq~~ ; foreach (@sql_col_display) { my $coltitle = "" ; if ($custom_header{$_}) { $coltitle = $custom_header{$_} ; } else { $coltitle = $_ ; $coltitle =~ s/\_id//g ; $coltitle =~ s/\_/ /g ; $coltitle = uc $coltitle ; $coltitle = $replace_blank_table_top_right if $coltitle eq '' and $replace_blank_table_top_right ; } # $custom_column_styles{$_} = qq~style="min-width:120px;"~ unless $custom_column_styles{$_} ; $print_thead .= qq~$coltitle~ ; } if ($add_th_row) { $print_thead .= $add_th_row ; } # used in agent_commission_report.pl and cruiseline_commission_report.pl $print_thead .= qq~~ ; } #------------------------------------------------------------------------------- sub page_opts { our $glyphicon = 'list' ; our $lcpage = 'all-fixtures-report' ; $ucpage = uc $lcpage ; $ucfirstpage = ucfirst $lcpage ; &common_page_name ; our $table = 'analytics_event_bookings q' ; $page_title = 'All Fixtures Report' ; } #------------------------------------------------------------------------------- sub report_screen { our $lcol = 2 ; our $fcol = 5 ; my ($set_year,$set_month,$set_day) = Add_Delta_Days($now_year,$now_mm,$now_dd,-42) ; # 6 weeks back $set_month = sprintf("%02s", $set_month) ; $set_day = sprintf("%02s", $set_day) ; my $set_ccyy_dd_mm = $set_year . '-' . $set_month . '-' . $set_day ; $print_box_content_rows .= &common_min_forms_start('report') ; # $allow_deselect{customer_name} = 1 ; $allow_deselect{options} = 1 ; $allow_deselect{sport_type_ids} = 1 ; my $defualt_customer = 0 ; $defualt_customer = 5 if $usertype ne 'school_manager' ; # &common_min_select_opts('customer_name','customers','name',$defualt_customer,'','',"events='1'") ; &common_min_select_opts('customer_name','customers','name','','','',"analytics='1'") ; $opts{customer_name} .= qq~~ ; my $def_val = ($i{customer_name}) ? $i{customer_name} : "all" ; $opts{customer_name} =~ s/value='$def_val'/value='$def_val' SELECTED/g ; $print_box_content_rows .= &common_min_form_select('customer_name','') ; $preferred_title{event_from} = 'Event Date From' ; my $day_of_week = Day_of_Week($now_year,$now_mm,$now_dd) ; my ($def_s_year,$def_s_mm,$def_s_day) = Add_Delta_Days($now_year,$now_mm,$now_dd,1-$day_of_week) ; my ($def_e_year,$def_e_mm,$def_e_day) = Add_Delta_Days($now_year,$now_mm,$now_dd,7-$day_of_week) ; $def_s_mm = sprintf("%02d",$def_s_mm) ; $def_s_day = sprintf("%02d",$def_s_day) ; $def_e_mm = sprintf("%02d",$def_e_mm) ; $def_e_day = sprintf("%02d",$def_e_day) ; $i{start_date_from} = qq~$def_s_year-$def_s_mm-$def_s_day 00:00:00~ unless $i{start_date_from} ; $i{start_date_to} = qq~$def_e_year-$def_e_mm-$def_e_day 23:59:59~ unless $i{start_date_to} ; $preferred_title{start_date_from} = "Date Time From" ; $preferred_title{start_date_to} = "Date Time To" ; $print_box_content_rows .= &common_min_form_datetimepicker('start_date_from',$i{start_date_from},720) ; $print_box_content_rows .= &common_min_form_datetimepicker('start_date_to',$i{start_date_to},720) ; $opts{options} = qq~ ~ ; $allow_deselect{options} = 0 ; $print_box_content_rows .= &common_min_form_select('options','') ; &common_min_select_opts('sport_type_ids','sport_types','name','','','','') ; $preferred_title{sport_type_ids} = "Sport Type" ; $allow_deselect{sport_type_ids} = 0 ; $opts{sport_type_ids} .= qq~~ ; $print_box_content_rows .= &common_min_form_select('sport_type_ids','') ; if ($usertype ne 'coding_provider') { &common_min_select_opts('coding_provider_id','users','name','','','username',"user_type='coding_provider'") ; $opts{coding_provider_id} .= qq~~ ; $i{coding_provider_id} = 'all' unless $i{coding_provider_id}; $opts{coding_provider_id} =~ s/value="$i{coding_provider_id}"/value="$i{coding_provider_id}" SELECTED/g ; } elsif ($usertype eq 'coding_provider') { &db_min_ro('users','1,name,username',"id='$userid'",'','') ; $opts{coding_provider_id} = qq~~ ; } $print_box_content_rows .= &common_min_form_select('coding_provider_id','') ; our %service_types = (1 => "Live Coding",2 => "Individual 48 hrs",3 => "Post Coding 24 hrs") ; foreach (keys %service_types) { $opts{service_type_id} .= qq~~ ; } $opts{service_type_id} .= qq~~ ; $i{service_type_id} = 'all' unless $i{service_type_id}; $opts{service_type_id} =~ s/value="$i{service_type_id}"/value="$i{service_type_id}" SELECTED/g ; $print_box_content_rows .= &common_min_form_select('service_type_id','') ; $print_box_content_rows .= &common_min_forms_end('','','report') ; local $all_select_ids_string = join(",",@all_select_ids) ; $trigger_jquery_raw .= qq~\$("$all_select_ids_string").chosen({ allow_single_deselect:true });~ ; &common_min_search_screen ; } #------------------------------------------------------------------------------- sub screen3 { $custom_column_styles{coding_provider} = qq~style="width:7.5%;min-width:120px;"~ ; $custom_column_styles{status} = qq~style="width:7.5%;min-width:120px;"~ ; $custom_column_styles{moderated} = qq~style="width:7.5%;min-width:120px;"~ ; $custom_column_styles{stream_forwarding} = qq~style="width:7.5%;min-width:120px;"~ ; $custom_column_styles{stream_key} = qq~style="width:7.5%;min-width:120px;"~ ; $custom_column_styles{stream_URL} = qq~style="width:7.5%;min-width:120px;"~ ; $custom_column_styles{analyst} = qq~style="width:7.5%;min-width:120px;position:relative;"~ ; # stream_forwarding","stream_key","stream_URL &thead; if ($isaved) { $alert = &common_min_alert('success',"$ucpage $isaved!",'ok') ; } else { &common_min_alert_type ; } # my $page = "$lcpage\s" ; my $page = "analytics-event-bookings" ; if ($s{no}) { $page = $lcpage ; } &common_min_table('id',$page,'list') ; our $savjqy = 1 ; # &common_min_extra_crumb("manage-$lcpage\s","Manage $ucfirstpage\s") ; $extra_form_fields .= qq~ ~; # $skip_save_btn = 1 if $usertype eq 'coding_provider' ; $print_box_content_rows .= &common_min_forms_end('','','save') ; # $trigger_jquery_raw .= qq~\$("#selectCoding_provider_1_1020_chosen").~ ; require _blank ; exit ; } #------------------------------------------------------------------------------------------ sub redirect_screen { &common_min_alert_type ; print < $useropts{title}

ENDOFTEXT # exit ; } #------------------------------------------------------------------------------------------ sub load_list_vars { my ($where) = @_ ; &db_min_ro($table,'id,event_quote_id,fixtures_saved_values,analytics_saved_values,event_completed,event_accepted,event_pending,event_cancelled,event_rejected,sport_type_ids,start_date_time,region_id,client_id,total_fixtures,service_type_id,cant_charge_client_fixtures,cant_charge_client_reasons',$where,'','') ; my %seen_region = () ; my %seen_client = () ; my $cnt_client = 0 ; foreach (keys %{$db{$table}}) { $seen_region{$db{$table}{$_}{region_id}} = 1 ; $seen_client{$db{$table}{$_}{client_id}} = 1 ; $cnt_client++ ; } &db_min_ro('sport_types','id,name','','','') ; &db_min_ro('analytics_ht_colors','id,name','','','') ; if ($usertype eq 'coding_provider') { &db_min_ro('users','id,name,username',"id='$userid'",'','') ; &db_min_ro('all_fixtures_analysts','id,name',"coding_provider_id='$userid'",'','') ; foreach (sort {$db{all_fixtures_analysts}{$a}{name} cmp $db{all_fixtures_analysts}{$b}{name}} keys %{$db{all_fixtures_analysts}}) { $opts{$userid}{analyst} .= qq~~ ; } } else { &db_min_ro('users','id,name,username',"user_type='coding_provider'",'','') ; &db_min_ro('all_fixtures_analysts','id,name,coding_provider_id',"",'','') ; foreach (sort {$db{all_fixtures_analysts}{$a}{name} cmp $db{all_fixtures_analysts}{$b}{name}} keys %{$db{all_fixtures_analysts}}) { $opts{$db{all_fixtures_analysts}{$_}{coding_provider_id}}{analyst} .= qq~~ ; } } # my $teams_sql_where = join (" OR ", map { "region_id='$_' OR (region_id='0' AND matched_region_id ='$_')" } keys %seen_region) ; # $teams_sql_where .= qq~ OR ~ if $cnt_client && $teams_sql_where ; # my $teams_sql_where .= join (" OR ", map { "aisa_client_id='$_'" } keys %seen_client) ; &db_switch_conn('sss') ; &db_min_ro('teams','id,name',"",'','') ; &db_switch_conn('aisa') ; foreach (keys %{$db{users}}) { $opts{coding_provider_id} .= qq~~ ; } # # our %coding_provider = (1 => 'SportVot',2 => 'iSport') ; # foreach (keys %coding_provider) { foreach (keys %fixtures_status) { $opts{status_id} .= qq~~ ; } $opts{moderated} = qq~~ ; } #------------------------------------------------------------------------------------------ use common ; use common_shared ; use report ; use xlsxcreator ; use today ; use analytics_event_booking_tabs ; 1;