<?

/*
 * This file is part of the 'Science Fair In A Box' project
 * SFIAB Website: http://www.sfiab.ca
 *
 * Copyright (C) 2005-2006 Sci-Tech Ontario Inc <info@scitechontario.org>
 * Copyright (C) 2005-2006 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.
 */

// This file was modified Jan of 2014 by Richard Sin
// Flagging has been added to monitor projects with concern.

?>
<?
require_once ('../common.inc.php');
require_once ('../user.inc.php');

$auth_type = user_auth_required(array('fair', 'committee'), 'admin');

// require_once('../register_participants.inc.php');

if (get_value_from_array($_GET, 'year'))
	$year = $_GET['year'];
else
	$year = $config['FAIRYEAR'];

$q = $pdo->prepare("SELECT * FROM projectcategories WHERE year=? ORDER BY id");
$q->execute([$year]);

while ($r = $q->fetch(PDO::FETCH_OBJ))
	$cats[$r->id] = $r->category;

$q = $pdo->prepare("SELECT * FROM projectdivisions WHERE year=? ORDER BY id");
$q->execute([$year]);

while ($r = $q->fetch(PDO::FETCH_OBJ))
	$divs[$r->id] = $r->division;

$action = get_value_from_array($_GET, 'action');
switch ($action) {
	case 'load_row':
		$id = intval($_GET['id']);
		$q = list_query($year, '', $id);
		$r = $q->fetch(PDO::FETCH_OBJ);
		print_row($r);
		exit;

	case 'delete':
		$regid = intval($_GET['id']);
		$q = $pdo->prepare("SELECT * FROM projects WHERE registrations_id=?");
		$q->execute([$regid]);
		if ($q->rowCount()) {
			$p = $q->fetch(PDO::FETCH_ASSOC);
			$stmt = $pdo->prepare("DELETE FROM winners WHERE projects_id=?");
			$stmt->execute([$p['id']]);
		}

		$stmt = $pdo->prepare("DELETE FROM registrations WHERE id=? AND year=?");
		$stmt->execute([$regid,$config['FAIRYEAR']]);

		$stmt = $pdo->prepare("DELETE FROM students WHERE registrations_id=? AND year=?");
		$stmt->execute([$regid,$config['FAIRYEAR']]);

		$stmt = $pdo->prepare("DELETE FROM projects WHERE registrations_id=? AND year=?");
		$stmt->execute([$regid,$config['FAIRYEAR']]);

		$stmt = $pdo->prepare("DELETE FROM safety WHERE registrations_id=? AND year=?");
		$stmt->execute([$regid,$config['FAIRYEAR']]);

		$stmt = $pdo->prepare("DELETE FROM questions_answers WHERE registrations_id=? AND year=?");
		$stmt->execute([$regid,$config['FAIRYEAR']]);

		$stmt = $pdo->prepare("DELETE FROM mentors WHERE registrations_id=? AND year=?");
		$stmt->execute([$regid,$config['FAIRYEAR']]);

		$stmt = $pdo->prepare("DELETE FROM emergencycontact WHERE registrations_id=? AND year=?");
		$stmt->execute([$regid,$config['FAIRYEAR']]);
		happy_('Registration and all related data successfully deleted');
		exit;
}

if ($auth_type == 'committee') {
	send_header('Registration Management',
		array('Committee Main' => 'committee_main.php',
			'Administration' => 'admin/index.php',
			'Participant Registration' => 'admin/registration.php'));
} else {
	send_header('Student/Project Management',
		array('Fair Main' => 'fair_main.php'));
}

?>

 

<div id="student_editor" title="Student/Project Editor" style="display: none">
	<div id="editor_tabs" >
		<ul>
			<li><a href="#editor_tab_reg"><span><?= i18n('Registration') ?></span></a></li>
			<li><a href="#editor_tab_students"><span><?= i18n('Students') ?></span></a></li>
			<li><a href="#editor_tab_project"><span><?= i18n('Project') ?></span></a></li>
		</ul>
		<div id="editor_tab_reg">Loading...
		</div>
		<div id="editor_tab_students">Loading...</div>
		<div id="editor_tab_project">Loading...</div>
	</div>
</div>


<script language="javascript" type="text/javascript">

var registrations_id = 0;
var registrations_new = 0;

function popup_editor(id, open_tab)
{
	var w = (document.documentElement.clientWidth * 0.9);
	var h = (document.documentElement.clientHeight * 0.9);

	registrations_id = id;
	
	registrations_new = 0;

	if(id == -1) {
		open_tab = 'reg';
		registrations_new = 1;
	}

	/* Force no tabs to be selected, need to set collapsible 
	 * to true first */
	$('#editor_tabs').tabs('option', 'collapsible', true);
	$('#editor_tabs').tabs('option', 'active', -1);


	/* Then we'll select a tab to force a reload */
	switch(open_tab) {
	case 'reg':
		/* If we open on the reg tab, disable the others until a save */
		$('#editor_tabs').tabs('option', 'disabled', [1,2]);
		$('#editor_tabs').tabs('option', 'active', 0);
		break;

	case 'project':
		$('#editor_tabs').tabs('option', 'disabled', []);
		$('#editor_tabs').tabs('option', 'active', 2);
		break;
	default:
		$('#editor_tabs').tabs('option', 'disabled', []);
		$('#editor_tabs').tabs('option', 'active', 1);
		break;
	}
	/* Don't let anything collapse */
	$('#editor_tabs').tabs('option', 'collapsible', false);

	/* Show the dialog */
	$('#student_editor').dialog('option', 'width', w);
	$('#student_editor').dialog('option', 'height', h);
	$("#student_editor").dialog('open');

	return true;
}

function update_students(numstudents)
{
	var id = registrations_id;

	var req = "action=students_load&id="+id;
	if(numstudents != 0 && numstudents != undefined) req = req+"&numstudents="+numstudents;
		
	$("#editor_tab_students").load("student_editor.php?"+req, '', 
		function(responseText, textStatus, XMLHttpRequest) {
			/* Attach to events we care about */
			$("#students_num").change(function() {
				var num = $("#students_num").val();
				update_students(num);
			});

			$("#students_save").click(function() {
				var id = registrations_id;
				$("#debug").load("student_editor.php?action=students_save&id="+id, $("#students_form").serializeArray());
			});

			$(".students_remove_button").click(function() {		
				var id = registrations_id;
				var sid = $("#"+this.id +"_students_id").val();
				var conf = confirmClick('<?= i18n('Are you sure you want to remove this student from the project?') ?>');

				if(conf == false) return false;

				$("#debug").load("student_editor.php?action=student_remove&id="+id+"&students_id="+sid, '',
					function(responseText, textStatus, XMLHttpRequest) {
						update_students();
					});

				return false;
			});
		}
	);
	return false;
}

function update_project() 
{
	var id = registrations_id;
	$("#editor_tab_project").load("project_editor.php?action=project_load&id="+id, '',
		function(responseText, textStatus, XMLHttpRequest) {
			/* Attach to regenerate button */
			$("#project_regenerate_number").click(function() {
				var id = registrations_id;
				/* Call for regen, and when that's done reload the project screen (and rebind everything), 
				 * pass all the form data in, because regen does a save first */
				$("#debug").load("project_editor.php?action=project_regenerate_number&id="+id,$("#project_form").serializeArray(),
					function(responseText, textStatus, XMLHttpRequest) {
						update_project();
					});
			});

			/* Attach to save button */
			$("#project_save").click(function() {
				var id = registrations_id;
				$("#debug").load("project_editor.php?action=project_save&id="+id, $("#project_form").serializeArray());
			});

		}
	);
	return false;
}

function delete_registration(id)
{
	registrations_id=id;
	var conf = confirmClick('<?= i18n('Are you sure you want to completely delete this registration?') ?>');
	if(conf == false) return false;

	$("#debug").load("<?= $_SERVER['PHP_SELF'] ?>?action=delete&id="+id,{},
			function(responseText, textStatus, XMLHttpRequest) {
				var id = registrations_id;
				$("#row_"+id).remove();
			});

}

function update_reg() 
{
	var id = registrations_id;
	$("#editor_tab_reg").load("student_editor.php?action=registration_load&id="+id, '',
		function(responseText, textStatus, XMLHttpRequest) {
			/* Attach to save button */
			$("#registration_save").click(function() {
				var id = registrations_id;
				$('#debug').load("student_editor.php?action=registration_save&id="+id, $("#registration_form").serializeArray());
				/* Enable the other tabs now after a save, FIXME: should be 
				 * after a successful save, but we should use on-the-fly form
				 * validation to disable the save button, so the extra callback/error
				 * check isn't needed */
				$('#editor_tabs').tabs('option', 'disabled', []);

				return false;
			});

		}
	);
	return false;
}



$(document).ready(function() {

	$("#student_editor").dialog({
		bgiframe: true, autoOpen: false,
		modal: true, resizable: false,
		draggable: false,
		buttons: { 
/*			"<?= i18n('Cancel') ?>": function() { 
				$(this).dialog("close"); 
			},
			"<?= i18n('Save') ?>": function() { 
				save_report();	
				$(this).dialog("close"); */
			"<?= i18n('Close') ?>": function() { 
//				save_report();	
				$(this).dialog("close"); 
			} 
		},
		close: function() {
			/* Reload the row after the dialog close in case the info has changed */
			var id = registrations_id;
			if(registrations_new == true) {
				/* Create a row before loading it */
				$("#registration_list").append("<tr id=\"row_"+id+"\"></tr>");
			}
			$("#" + $.escapeSelector("row_" + id)).load("<? $_SERVER['PHP_SELF'] ?>?action=load_row&id="+id);
			$("#" + $.escapeSelector("row_" + id)).effect('highlight',{},500);			
		}
	});


	$("#editor_tabs").tabs({
		create: function(event, ui) {
            update_students();
			update_project();
			update_reg();
        },
		
		activate: function( event, ui ) {
			update_students();
			update_project();
			update_reg();
		},
		selected: -1
	});

	/*$("#editor_tabs").tabs({
		show: function(event, ui) {
			console.log('hi');
			switch(ui.panel.id) {
			case 'editor_tab_students':
				update_students();
				break;
			case 'editor_tab_project':
				update_project();
				break;
			case 'editor_tab_reg':
				update_reg();
				break;
			default: 
				break;
			}
		},
		selected: -1
	});*/

	$("#newproject").on("click", (function() {
			popup_editor(-1);
		}
	));
});
</script>


<br />
<table width="100%">
<tr><td>
	<?= i18n('Choose Status') ?>:
	<form name="statuschangerform" method="get" action="registration_list.php">
	<select name="showstatus" onchange="document.forms.statuschangerform.submit()">

<?
// if there is no reg fee, then we dont need to show this status, because nobody will ever be in this status
$status_str = array('' => 'Any Status', 'complete' => 'Complete',
	'paymentpending' => ($config['regfee'] > 0) ? 'Payment Pending' : '',
	'completeorpaymentpending' => ($config['regfee'] > 0) ? 'Complete or Payment Pending' : '',
	'open' => 'Open', 'new' => 'New');

$showstatus = $_GET['showstatus'];

foreach ($status_str as $s => $str) {
	if ($str == '')
		continue;
	$sel = ($showstatus == $s) ? 'selected="selected"' : '';
	echo "<option $sel value=\"$s\">" . i18n($str) . "</option>\n";
}
?>
	</select></form></td>
	<td align="right"><button id="newproject"><?= i18n('Create New Project') ?></button></td>
	</tr></table>
<?

if ($showstatus) {
	switch ($showstatus) {
		case 'complete':
			$wherestatus = "AND status='complete' ";
			break;
		case 'paymentpending':
			$wherestatus = "AND status='paymentpending' ";
			break;
		case 'completeorpaymentpending':
			$wherestatus = "AND (status='complete' OR status='paymentpending') ";
			break;
		case 'open':
			$wherestatus = "AND status='open' ";
			break;
		case 'new':
			$wherestatus = "AND status='new' ";
			break;
		default:
			$wherestatus = '';
	}
} else
	$wherestatus = '';

$q = list_query($year, $wherestatus, false);

echo '<table id="registration_list" class="tableview">';
echo "<thead><tr style='background: black';>";
if ($showstatus)
	$stat = '&showstatus=' . $showstatus;
echo '<th>' . i18n('Status') . '</th>';
echo '<th>' . i18n('Email Address') . '</th>';
echo '<th>' . i18n('Reg Num') . '</th>';
echo '<th>' . i18n('Proj Num') . '</th>';
echo '<th>' . i18n('Project Title') . '</th>';
echo '<th>' . i18n('Age Category') . '</th>';
echo '<th>' . i18n('Division') . '</th>';
echo '<th>' . i18n('School(s)') . '</th>';
echo '<th>' . i18n('Student(s)') . '</th>';
echo '<th>' . i18n('Flagged') . '</th>';
echo '<th>' . i18n('Action') . '</th>';
echo '</tr></thead>';

while ($r = $q->fetch(PDO::FETCH_OBJ)) {
	echo "<tr id=\"row_{$r->reg_id}\">";
	print_row($r);
	echo '</tr>';
}
echo '</table>';

echo '<br/><br/>The statistics have moved here: <a href="registration_stats.php">Registration Statistics</a><br/><br/>';

send_footer();

/* Now some helper functions we call more than once */
function list_query($year, $wherestatus, $reg_id)
{
	global $auth_type, $pdo;

	$reg = '';
	if ($reg_id != false)
		$reg = "AND registrations.id='$reg_id'";

	$fair = '';
	if ($auth_type == 'fair') {
		$fair = "AND projects.fairs_id='{$_SESSION['fairs_id']}'";
	}

	$q = $pdo->prepare("SELECT  registrations.id AS reg_id,
				registrations.num AS reg_num,
				registrations.status,
				registrations.email,
				projects.title,
				projects.projectnumber,
				projects.projectcategories_id,
				projects.projectdivisions_id,
				projects.feedback,
				projects.flagged
			FROM
				registrations
				left outer join projects on projects.registrations_id=registrations.id
			WHERE
				1
				AND registrations.year=? 
				$wherestatus
				$reg $fair
			ORDER BY
				registrations.status DESC, projects.title
			");
	$q->execute([$year]);

	show_pdo_errors_if_any($pdo);
	return $q;
}

function print_row($r)
{
	global $cats, $divs, $config, $year, $pdo;
	$status_text = null;
	switch (get_value_property_or_default($r, 'status')) {
		case 'new':
			$status_text = 'New';
			break;
		case 'open':
			$status_text = 'Open';
			break;
		case 'paymentpending':
			$status_text = 'Payment Pending';
			break;
		case 'complete':
			$status_text = 'Complete';
			break;
	}

	$status_text = i18n($status_text);

	$scl = 'style="cursor:pointer;" onclick="popup_editor(\'' . get_value_property_or_default($r, 'reg_id') . "','');\"";
	$pcl = 'style="cursor:pointer;" onclick="popup_editor(\'' . get_value_property_or_default($r, 'reg_id') . "','project');\"";

	echo "<td $scl>{$status_text}</td>";
	// echo "<td $scl>" . get_value_property_or_default($r, 'email') . '</td>';
	// echo "<td $scl>" . get_value_property_or_default($r, 'reg_num') . '</td>';
	// $pn = str_replace(' ', '&nbsp;', get_value_property_or_default($r, 'projectnumber', ''));
	// echo "<td $scl>$pn</td>";
	// echo "<td $pcl>" . get_value_property_or_default($r, 'title') . '</td>';

	// echo "<td $scl>" . i18n(get_value_from_array($cats, get_value_property_or_default($r, 'projectcategories_id'), '')) . '</td>';
	// echo "<td $scl>" . i18n(get_value_from_array($divs, get_value_property_or_default($r, 'projectdivisions_id', ''))) . '</td>';

	echo "<td $scl>{$r->email}</td>";
	echo "<td $scl>{$r->reg_num}</td>";
	$pn = str_replace(' ', '&nbsp;', $r->projectnumber);
	echo "<td $scl>$pn</td>";
	echo "<td $pcl>{$r->title}</td>";

	echo "<td $scl>".i18n($cats[$r->projectcategories_id])."</td>";
	echo "<td $scl>".i18n($divs[$r->projectdivisions_id])."</td>";



	$sq = $pdo->prepare("SELECT students.firstname,
				students.lastname,
				students.id,
				schools.school,
				schools.board,
				schools.id AS schools_id
			FROM
				students,schools
			WHERE
				students.registrations_id=?
				AND
				students.schools_id=schools.id
			");
	$sq->execute([$r->reg_id]);
	show_pdo_errors_if_any($pdo);

	$studnum = 1;
	$schools = '';
	$students = '';
	while ($studentinfo = $sq->fetch(PDO::FETCH_OBJ)) {
		$students .= "$studentinfo->firstname $studentinfo->lastname<br />";
		$schools .= "$studentinfo->school <br />";
	}

	echo "<td $scl>$schools</td>";
	echo "<td $scl>$students</td>";

	echo '<td align="center"  >';
	if ($r->flagged == false) {
		echo '<a title="' . i18n('Not flagged') . "\" href=\"#\" onClick=\"popup_editor('$r->reg_id','project');\" >";
		echo '<img src="' . $config['SFIABDIRECTORY'] . '/images/16/ok.' . $config['icon_extension'] . '" border=0>';
		echo '</a>';
	} else {
		echo '<a title="' . i18n('Flagged') . "\" href=\"#\" onClick=\"popup_editor('$r->reg_id','project');\" >";
		echo '<img src="' . $config['SFIABDIRECTORY'] . '/images/16/flagged.' . $config['icon_extension'] . '" border=0>';
		echo '</a>';
	}

	echo '<td align="center"  >';
	if ($year == $config['FAIRYEAR']) {
		echo '<a title="' . i18n('Delete this registration') . "\" href=\"#\" onClick=\"delete_registration({$r->reg_id});return false\" >";
		echo '<img src="' . $config['SFIABDIRECTORY'] . '/images/16/button_cancel.' . $config['icon_extension'] . '" border=0>';
		echo '</a>';

		echo '<form target="_blank" method="post" action="../register_participants.php">';
		echo '<input type="hidden" name="action" value="continue">';
		echo "<input type=\"hidden\" name=\"email\" value=\"$r->email\">";
		echo "<input type=\"hidden\" name=\"regnum\" value=\"$r->reg_num\">";
		echo '<input type="submit" value="' . i18n('Login') . '">';
		echo '</form>';
	}
	echo '</td>';
}
?>