############################################################
#
# pooclub_oblongs.pl
#
############################################################

sub get_remote_lottery_file
{
  $dest_filename = "${SHAREDROOT}/oblottery/lottery_${YYYYMMDD}.txt";
  $src_filename = "http://www.national-lottery.co.uk/player/lotto/results/downloadResultsCSV.ftl";
  $src_filename = "http://www.national-lottery.co.uk/results/lotto/draw-history/csv";

  system("lwp-download $src_filename $dest_filename >/dev/null");

  return $dest_filename;
}

############################################################
#
# 21 Dec 2010 - 20 Mar 2011 ==> 2011_1
# 21 Mar 2011 - 20 Jun 2011 ==> 2011_2
# 21 Jun 2011 - 20 Sep 2011 ==> 2011_3
# 21 Sep 2011 - 20 Dec 2011 ==> 2011_4

sub get_corner_id
{
  my ($yyyymmdd) = @_;
  $yyyymmdd = $YYYYMMDD if ($yyyymmdd eq "");

  my $tomorrow = date_manip("-d1 $yyyymmdd");
  my $next_oblit = next_obliteration_yyyymmdd($tomorrow);
  my $end_corner = date_manip("-d-1 $next_oblit");

  # $end_corner must be the 20th of a month
  # so we only need to look at year and month
  # Jan, Feb, Mar ==> 1
  # Apr, May, Jun ==> 2
  # Jul, Aug, Sep ==> 3
  # Oct, Nov, Dec ==> 4
  my $yyyy = substr($end_corner, 0, 4);
  my $mm = substr($end_corner, 4, 2);
  my $c = 4;

  if ($mm < 4)
  {
    $c = 1;
  }
  elsif ($mm < 7)
  {
    $c = 2;
  }
  elsif ($mm < 10)
  {
    $c = 3;
  }

  return $yyyy . '_' . $c;
}

############################################################

sub get_oblog_filename
{
  my ($yyyymmdd) = @_;
  $yyyymmdd = $YYYYMMDD if ($yyyymmdd eq "");

  my $corner_id = get_corner_id($yyyymmdd);
  my $fname = "${SHAREDROOT}/oblongs/oblog_${corner_id}.log";

  return $fname;
}

############################################################


sub process_give_oblongs_new # if ($cgi->param('give_oblongs') eq "Give")
{
    my %players = {};
    my @ids = ();
    $UBERENV{'MESSAGE'} = "";

log_info("FISH process_give_oblongs_new");

    if (! is_logged_in())
    {
        $UBERENV{'MESSAGE'} = qq(FAILED - You are not logged in.);
        log_action("ALERT process_give_oblongs failed - not logged in.");
        return;
    }

    my $to = $cgi->param('to');
    my $num = $cgi->param('n');
    my $reason = $cgi->param('reason');

    my $username = $UBERACC{'USERNAME'};

    read_players_file(\@ids, \%players);
    my $to_name = $players{$to};
    my $name = $players{$username};

    # For validation
    my %names = {};
    my %bag = {};
    my %oblongs = {};
    read_oblong_files(\%names, \%oblongs, \%bag, \@ids);
    my $inBag = int($bag{$username}) + 5; # TODO: Why do I have to add 5 here?
    my $myTrophy = int($oblongs{$username});
    my $toTrophy = int($oblongs{$to});

    if ($inBag < 1)
    {
        $UBERENV{'MESSAGE'} .= qq(YOU HAVE NO OBLONGS IN YOUR BAG.);
        return;
    }
    if ($to eq $username)
    {
        $UBERENV{'MESSAGE'} .= qq(A-AH! NO CHEATING NOW.);
        return;
    }

    reset_date_time();
    my $timestamp = sprintf ("%02d:%02d:%02d", $Hour, $Min, $Sec);

    my $week_commencing = date_manip("-nMON -d-7 $YYYYMMDD");
#    my $log_fname = "${SHAREDROOT}/oblongs/oblongs_${week_commencing}.log";
    my $log_fname = get_oblog_filename();

    open (FLOG, ">>$log_fname") or
        log_error("process_give_oblongs - failed to open file $log_fname");
    print FLOG qq($YYYYMMDD;$timestamp;$username;$to;$num;$reason;\n);
    close(FLOG);

    my $oblongs = qq(oblong);
    $oblongs = qq(oblongs) if ($num > 1);

    # pass this on to oblongs_page
    $UBERENV{'MESSAGE'} .= qq(You have given $to_name [$to] $num $oblong for "$reason");

    my $mailname = qq(Pooclub Oblongs);
    my $subject = qq($name has given $to_name $num $oblongs);
    my $message = qq($subject

Reason: $reason

To send or fine an oblong go to:
http://pooclub.shite.org/oblongs
);

#    email_notify($UBERENV{'GROUP_EMAIL'}, # TODO: for testing
    email_notify($UBERENV{'EMAIL'}, # mike2sheds@gmail.com
                 $UBERENV{'ADMIN_EMAIL'},
                 "$subject",
                 "$message",
                 "$mailname");

    log_action("$name [$username] gave $to_name [$to] $num oblong(s) for \"$reason\"");

}

############################################################

sub process_fine_oblongs_new # if ($cgi->param('fine_oblongs') eq "Fine")
{
}

############################################################

sub process_buy_ticket_new # if ($cgi->param('buy_ticket') eq "Buy")
{
}

############################################################

sub display_oblottery_ticket
{
  my ($ticketNum) = @_;
#  $ticketNum = '&nbsp;' . $ticketNum if ($ticketNum < 10);

  print qq(<div id="ticket">$ticketNum</div> );
}

############################################################

sub display_oblong_page_header
{
  my ($names, $oblongs, $ids) = @_;
  my $leaderId = $$ids[0];


    my %players = {};
    my %dobs = {};
    my %bag = {};
    my %oblongs = {};
    my @id_list = ();

    # new fields
    my %given = {};
    my %received = {};
    my %fined = {};
    my %been_fined = {};
    my %generosity_bonus = {};
    my %scrooge_penalty = {};
    my %other_bonus = {};
    my %other_penalty = {};

    read_players_file(\@id_list, \%players, \%dobs);
    read_oblong_files(\%players, \%oblongs, \%bag, \@id_list);

    my @ids = sort {$oblongs{$b} <=> $oblongs{$a}} @id_list;

    my $latest_oblit_yyyymmdd = latest_obliteration_date();
    my @oblog_fnames = latest_oblog_files($latest_oblit_yyyymmdd);

    for my $oblog_fname (@oblog_fnames)
    {
        read_oblog_file($latest_obliteration_date,
                        $oblog_fname,
                        \%given,
                        \%received,
                        \%fined,
                        \%been_fined,
                        \%generosity_bonus,
                        \%scrooge_penalty,
                        \%other_bonus,
                        \%other_penalty);
    }

  my $best_id = $ids[0];
  my $best_given = 0;

  for my $id (@ids)
  {
    if ($given{$id} > $best_given)
    {
      $best_given = $given{$id};
      $best_id = $id;
    }
  }



  print qq(
    <p />
    <table border="0" cellspacing="5">
     <tr>
      <td align="center" valign="top">
);

  display_corner_champ();

  print qq( </td><td align="center" valign="top">);

  display_current_leader($$names{$$ids[0]}, $$oblongs{$$ids[0]});

  print qq( </td><td align="center" valign="top">);

  display_greatest_giver($players{$best_id}, $best_given);

  print qq( </td><td align="center" valign="top">);

  display_recommended_oblonger($names, $ids, $oblongs);

  print qq(
      </td>
     </tr>
    </table>
);
}

############################################################

sub display_current_leader
{
  my ($name, $oblongs) = @_;

  $leader_name = $name;
  $leader_name = "Unknown" if ($leader_name eq "");

  my $leader_image = "${IMGPOODIR}/who_" . lc( ${leader_name} ) . ".jpg";

  print qq(
    <div style="font-size:15; font-weight:bold;">Current&nbsp;Table<br />Leader</div>
     <div>
      <img hspace="0" vspace="0" border="0" height="125"
           alt="$name"
           src="$leader_image" />
      <span style="font-size:15; font-weight:bold">$name</span>&nbsp;<span style="font-size:13; font-weight:normal">($oblongs)</span>
     </div>
);
}

############################################################

sub display_corner_champ
{
  my ($name, $image, $date, $oblongs) = corner_champ();

  print qq(
    <div style="font-size:15; font-weight:bold">Big&nbsp;Oblong<br />Corner&nbsp;Champion</div>
     <div>
      <img hspace="0" vspace="0" border="0" height="125"
           alt="$name"
           src="$image" />
      <span style="font-size:15; font-weight:bold">$name</span>&nbsp;<span style="font-size:13; font-weight:normal">($oblongs)</span>
     </div>
     <div style="font-size:13; font-weight:normal; text-align:center">
<a href="${THIS_CGI}?p=bigoblong">$date</a>
    </div>
);
}

############################################################

sub display_greatest_giver
{
  my ($name, $oblongs) = @_;
#  my ($name, $image, $date) = corner_champ();



#  my $name = $players{$best_id};
  my $image = "${IMGPOODIR}/who_" . lc( ${name} ) . ".jpg";

  print qq(
    <div style="font-size:15; font-weight:bold">Greatest<br />Giver</div>
     <div>
      <img hspace="0" vspace="0" border="0" height="125"
           alt="$name"
           src="$image" />
      <span style="font-size:15; font-weight:bold">$name</span>&nbsp;<span style="font-size:13; font-weight:normal">($oblongs)</span>
     </div>
);
}

############################################################

sub display_recommended_oblonger
{
  my ($names, $ids, $oblongs) = @_;

  my $size = scalar @$ids;
  my $seed = $Hour + $Min + $Sec;
  srand($seed);
  my $ran = int(rand($size));
  my $id = $$ids[$ran];
  if ($id eq "brian") {$id = "naomionions";}
  my $name = $$names{$id};

  $name = "Unknown" if ($name eq "");

  my $image = "${IMGPOODIR}/who_" . lc( ${name} ) . ".jpg";

  print qq(
    <div style="font-size:15; font-weight:bold;"><nobr>Why not give an</nobr><br /><nobr>oblong to . . . ?</nobr></div>
     <div>
      <img hspace="0" vspace="0" border="0" height="125"
           alt="$name"
           src="$image" />
      <span style="font-size:15; font-weight:bold">$name</span>&nbsp;<span style="font-size:13; font-weight:normal">($$oblongs{$id})</span>
     </div>
);
}

############################################################
#

sub show_corner_champ
{
    my ($name, $image, $date) = corner_champ();

    print qq(

   <div style="font-size:16; font-weight:bold; text-align:center">$date</div>

   <table cellspacing="0" align="center" border="0" width="150" cellpadding="0">
    <tr>
     <td align="center">
       <div style="font-size:13; font-weight:normal">Corner Champion</div>

      <div>
       <img hspace="0" vspace="0" border="0" width="125"
            alt="$name"
            src="$image" />
       <div style="font-size:15; font-weight:bold">$name</div>
      </div>

     </td>
    </tr>
   </table>
);
}

############################################################
1;
############################################################
# EOF
