<?

/*
 * This file is part of the 'Science Fair In A Box' project
 * SFIAB Website: http://www.sfiab.ca
 *
 * Copyright (C) 2009 James Grant <james@lightbox.org>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public
 * License as published by the Free Software Foundation, version 2.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; see the file COPYING.  If not, write to
 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */
?>
<?
require ('../common.inc.php');
require_once ('../user.inc.php');

user_auth_required('committee', 'admin');

if (get_value_from_array($_GET, 'action') == 'refresh') {
?>

<h3><?= i18n('Fundraising Purposes and Progress Year to Date') ?></h3>
<?
    $q = $pdo->prepare("SELECT * FROM fundraising_goals WHERE fiscalyear=? ORDER BY deadline");
    $q->execute([$config['FISCALYEAR']]);
?>
<table class="tableview">
 <thead>
 <tr>
	<th><?= i18n('Purpose') ?></th>
	<th><?= i18n('Goal') ?></th>
	<th><?= i18n('Amount Received') ?></th>
	<th><?= i18n('% to Budget') ?></th>
	<th><?= i18n('Deadline') ?></th>
 </tr>
 </thead>
 <?
    while ($r = $q->fetch(PDO::FETCH_OBJ)) {
        // lookup all donations made towards this goal
        $recq = $pdo->prepare("SELECT SUM(value) AS received FROM fundraising_donations WHERE fundraising_goal=? AND fiscalyear=? AND status='received'");
        $recq->execute([$r->goal,$config['FISCALYEAR']]);
        show_pdo_errors_if_any($pdo);
        $recr = $recq->fetch(PDO::FETCH_OBJ);
        $received = $recr->received;
        if ($r->budget)
            $percent = round($received / $r->budget * 100, 1);
        else
            $percent = 0;

        echo "<tr><td>$r->name</td>";
        echo '<td style="text-align: right;">' . format_money($r->budget, false) . '</td>';
        echo '<td style="text-align: right;">' . format_money($received, false) . '</td>';
        $col = colour_to_percent($percent);
        echo "<td style=\"text-align: center; background-color: $col;\">{$percent}%</td>";
        echo '<td>' . format_date($r->deadline) . "</td></tr>\n";
    }
?>
</table>
<br />

<h3><?= i18n('Current Appeals') ?></h3>
<table class="tableview">
 <thead>
 <tr>
	<th><?= i18n('Name') ?></th>
	<th><?= i18n('Type') ?></th>
	<th><?= i18n('Start Date') ?></th>
	<th><?= i18n('End Date') ?></th>
	<th><?= i18n('Target($)') ?></th>
	<th><?= i18n('Received') ?></th>
	<th><?= i18n('% to Budget') ?></th>
	<th><?= i18n('Purpose') ?></th>
 </tr>
 </thead>
<?
    $q = $pdo->prepare("SELECT * FROM fundraising_campaigns WHERE fiscalyear=?");
    $q->execute([$config['FISCALYEAR']]);

    while ($r = $q->fetch(PDO::FETCH_OBJ)) {
        $goalq = $pdo->prepare("SELECT * FROM fundraising_goals WHERE goal=? AND fiscalyear=?");
        $goalq->execute([$r->fundraising_goal,$config['FISCALYEAR']]);
        $goalr = $goalq->fetch(PDO::FETCH_OBJ);
        $recq = $pdo->prepare("SELECT SUM(value) AS received FROM fundraising_donations WHERE fundraising_campaigns_id=? AND fiscalyear=? AND status='received'");
        $recq->execute([$r->id,$config['FISCALYEAR']]);
        show_pdo_errors_if_any($pdo);
        $recr = $recq->fetch(PDO::FETCH_OBJ);
        $received = $recr->received;
        if ($r->target)
            $percent = round($received / $r->target * 100, 1);
        else
            $percent = 0;
        $col = colour_to_percent($percent);

        if (!$goalr) {
            $goalr = new stdClass();
            $goalr->name = '';
        }

        echo "<tr style=\"cursor:pointer;\" onclick=\"window.location.href='fundraising_campaigns.php?manage_campaign=$r->id'\">\n";
        echo "  <td>$r->name</td>\n";
        echo "  <td>$r->type</td>\n";
        echo '  <td>' . format_date($r->startdate) . "</td>\n";
        echo '  <td>' . format_date($r->enddate) . '</td>';
        echo '  <td style="text-align: right;">' . format_money($r->target, false) . "</td>\n";
        echo '  <td style="text-align: right;">' . format_money($received, false) . "</td>\n";
        echo "  <td style=\"text-align: center; background-color: $col;\">{$percent}%</td>\n";
        echo "  <td>$goalr->name</td>";
        echo "</tr>\n";
    }
?>
 </tr>
</table>
<script type="text/javascript"> $('.tableview').tablesorter();</script>
<br />

<form id="thankyouform" method="post" action="fundraising.php">
<h3><?= i18n('To Do List') ?></h3>
<h4><?= i18n("Thank You's") ?></h4>
<?
    $q = $pdo->prepare("SELECT id,value, thanked, status, sponsors_id, datereceived,
\tDATE_ADD(datereceived, INTERVAL 1 MONTH) < NOW() AS onemonth,
\tDATE_ADD(datereceived, INTERVAL 2 MONTH) < NOW() AS twomonth
    FROM fundraising_donations
    WHERE thanked='no' AND status='received'
    AND fiscalyear=? 
    ORDER BY datereceived
    ");
    $q->execute([$config['FISCALYEAR']]);
    show_pdo_errors_if_any($pdo);

    if ($q->rowCount()) {
        echo '<table class="tableview">';
        echo '<thead><tr><th>' . i18n('Name') . "</th>\n";
        echo '<th>' . i18n('Date Received') . "</th>\n";
        echo '<th>' . i18n('Amount') . "</th>\n";
        echo '<th>' . i18n('Generate Thank You') . "</th>\n";
        echo '<th>' . i18n('Thanked') . "</th>\n";
        echo "</tr></thead>\n";

        while ($r = $q->fetch(PDO::FETCH_OBJ)) {
            $dq = $pdo->prepare("SELECT organization AS name FROM sponsors WHERE id=?");
            $dq->execute([$r->sponsors_id]);
            $dr = $dq->fetch(PDO::FETCH_OBJ);
            if ($r->twomonth)
                $s = 'style="background-color: ' . colour_to_percent(0) . ';"';
            else if ($r->onemonth)
                $s = 'style="background-color: ' . colour_to_percent(50) . ';"';
            else
                $s = '';

            $u = getUserForSponsor($r->sponsors_id);

            echo "<tr $s>";
            echo " <td>$dr->name</td>";
            echo ' <td>' . format_date($r->datereceived) . '</td>';
            echo ' <td style="text-align: right;">' . format_money($r->value) . '</td>';
            echo ' <td style="text-align: center;">';
            if ($u) {
                echo "<a href=\"#\" onclick=\"return opencommunicationsender('{$u['uid']}','fundraising_thankyou_template');\">" . i18n('Generate Thank You') . '</a></td>';
            } else {
                echo i18n('No contact');
            }
            echo "<td align=\"center\"><input style=\"padding: 0px; margin: 0px;\" type=\"checkbox\" name=\"thanked[]\" value=\"$r->id\" onclick=\"return thanked($r->id)\"></td>\n";
            echo "</tr>\n";
        }
        echo "</table>\n";
    } else {
        echo i18n("No Thank You's pending");
        echo "<br />\n";
    }
?>
</form>

<br />
<h4><?= i18n('Receipts to Issue') ?></h4>
<?
    $q = $pdo->prepare("SELECT value, receiptrequired, receiptsent, status, sponsors_id, datereceived,
\tDATE_ADD(datereceived, INTERVAL 1 MONTH) < NOW() AS onemonth,
\tDATE_ADD(datereceived, INTERVAL 2 MONTH) < NOW() AS twomonth
    FROM fundraising_donations
    WHERE (receiptrequired='yes' AND receiptsent='no') AND status='received'
    AND fiscalyear=? 
    ORDER BY datereceived
    ");
    $q->execute([$config['FISCALYEAR']]);
    show_pdo_errors_if_any($pdo);
    if ($q->rowCount()) {
        echo '<table class="tableview">';
        echo '<tr><th>' . i18n('Name') . "</th>\n";
        echo '<th>' . i18n('Date Received') . "</th>\n";
        echo '<th>' . i18n('Amount') . "</th>\n";
        echo '<th>' . i18n('Generate Receipt') . "</th>\n";
        echo "</tr>\n";

        while ($r = $q->fetch(PDO::FETCH_OBJ)) {
            $dq = $pdo->prepare("SELECT organization AS name FROM sponsors WHERE id=?");
            $dq->execute([$r->sponsors_id]);
            $dr = $dq->fetch(PDO::FETCH_OBJ);
            if ($r->twomonth)
                $s = 'style="background-color: ' . colour_to_percent(0) . ';"';
            else if ($r->onemonth)
                $s = 'style="background-color: ' . colour_to_percent(50) . ';"';
            else
                $s = '';

            echo "<tr $s>";
            echo " <td>$dr->name</td>";
            echo ' <td>' . format_date($r->datereceived) . '</td>';
            echo ' <td style="text-align: right;">' . format_money($r->value) . '</td>';
            echo ' <td style="text-align: center;">';
            echo '<a href="#" onclick="return false;">' . i18n('Generate Receipt') . '</a></td>';
            echo "</tr>\n";
        }
        echo "</table>\n";
    } else {
        echo i18n('No Receipts pending');
        echo "<br />\n";
    }
?>

<br />
<h4><?= i18n('Appeal Follow-Ups') ?></h4>
<?
    $q = $pdo->prepare('SELECT * FROM fundraising_campaigns WHERE followupdate>=NOW() ORDER BY followupdate LIMIT 5');
    $q->execute();
    show_pdo_errors_if_any($pdo);
    if ($q->rowCount()) {
        echo '<table class="tableview">';
        echo '<thead><tr>';
        echo ' <th>' . i18n('Appeal') . "</th>\n";
        echo ' <th>' . i18n('Start Date') . "</th>\n";
        echo ' <th>' . i18n('Follow-Up Date') . "</th>\n";
        echo "</tr></thead>\n";
        while ($r = $q->fetch(PDO::FETCH_OBJ)) {
            echo "<tr><td>$r->name</td><td>" . format_date($r->startdate) . '</td><td>' . format_date($r->followupdate) . "</td></tr>\n";
        }
        echo "</table>\n";
    } else {
        echo i18n('No appeal follow-ups');
        echo "<br />\n";
    }

?>
<br />
<h4>Upcoming Proposals</h4>
<?
    $q = $pdo->prepare('SELECT * FROM sponsors WHERE fundingselectiondate>=NOW() OR proposalsubmissiondate>=NOW() ORDER BY fundingselectiondate LIMIT 5');
    $q->execute();
    show_pdo_errors_if_any($pdo);

    if ($q->rowCount()) {
        echo '<table class="tableview">';
        echo '<tr>';
        echo ' <th>' . i18n('Name') . "</th>\n";
        echo ' <th>' . i18n('Proposal Submission Date') . "</th>\n";
        echo ' <th>' . i18n('Funding Selection Date') . "</th>\n";
        echo "</tr>\n";
        while ($r = $q->fetch(PDO::FETCH_OBJ)) {
            echo "<tr><td>$r->organization</td>";
            echo '<td>' . format_date($r->proposalsubmissiondate) . '</td>';
            echo '<td>' . format_date($r->fundingselectiondate) . '</td>';
            echo "</tr>\n";
        }
        echo "</table>\n";
    } else {
        echo i18n('No proposals upcoming');
    }

    exit;
} else if (get_value_from_array($_POST, 'thanked')) {
    foreach ($_POST['thanked'] AS $t) {
        $stmt = $pdo->prepare("UPDATE fundraising_donations SET thanked='yes' WHERE id=?");
        $stmt->execute([$t]);
    }
}

send_header('Fundraising',
    array('Committee Main' => 'committee_main.php',
        'Administration' => 'admin/index.php',
        'Fundraising' => 'admin/fundraising.php'),
    'fundraising');
?>
<script type="text/javascript">
$(document).ready(function() {
	refreshDashboard();
});

function refreshDashboard() {
	$("#dashboard").load("fundraising.php?action=refresh");
}

function thanked() {
	$.post("fundraising.php",$("#thankyouform").serializeArray(),function() {
		refreshDashboard();
	});
}

//key is initial or followup
//start is either 'new' to start with a blank, or 'existing' to load an existing email to start from
function opencommunicationsender(uid,template) {
	$("#debug").load("communication.php?action=dialog_sender&uid="+uid+"&template=fundraising_thankyou_template",null,function() {
	});
	return false;
}

</script>

<div id="dashboard"></div>

<?
send_footer();
?>