<?

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

?>
<?
require ('../common.inc.php');
include '../config/signaturepage_or_permissionform.php';
require_once ('../user.inc.php');
user_auth_required('committee', 'admin');
require ('../register_participants.inc.php');

send_header("Input Received $plural_participationform",
	array('Committee Main' => 'committee_main.php',
		'Administration' => 'admin/index.php',
		'Participant Registration' => 'admin/registration.php'));
echo '<br />';

$showformatbottom = true;
if (get_value_from_array($_POST, 'action') == 'received' && get_value_from_array($_POST, 'registration_number')) {
	$q = $pdo->prepare("SELECT * FROM registrations WHERE num=? AND year=?");
	$q->execute([$_POST['registration_number'],$config['FAIRYEAR']]);
	if ($q->rowCount() == 1) {
		$r = $q->fetch(PDO::FETCH_OBJ);
		$reg_id = $r->id;
		$reg_num = $r->num;
		$reg_status = $r->status;

		if ($r->status == 'new') {
			echo error(i18n('Invalid Registration Status (%1 is New).  Cannot receive an empty form.', array($_POST['registration_number'])));
		} else {
			// make sure all of the statuses are correct
			$statusstudent = studentStatus($reg_id);
			$statusemergencycontact = emergencycontactStatus($reg_id);
			$statusproject = projectStatus($reg_id);
			if ($config['participant_mentor'] == 'yes')
				$statusmentor = mentorStatus($reg_id);
			else
				$statusmentor = 'complete';
			$statussafety = safetyStatus($reg_id);
			$statusnamecheck = namecheckStatus($reg_id);

			if (
				$statusstudent == 'complete' &&
				$statusemergencycontact == 'complete' &&
				$statusproject == 'complete' &&
				$statusmentor == 'complete' &&
				$statussafety == 'complete' &&
				$statusnamecheck == 'complete'
			) {
				$q = $pdo->prepare("SELECT projects.title,
							projectcategories.category,
							projectdivisions.division
						FROM
							projects,projectcategories,projectdivisions
						WHERE
							projects.registrations_id=?
							AND
							projects.projectcategories_id=projectcategories.id
							AND
							projects.projectdivisions_id=projectdivisions.id
							AND 
							projectcategories.year=projects.year
							AND
							projectdivisions.year=projects.year
						");
				$q->execute([$reg_id]);

				show_pdo_errors_if_any($pdo);
				$projectinfo = $q->fetch(PDO::FETCH_OBJ);
				echo '<table class="summarytable">';
				echo '<tr><th colspan="2">' . i18n('Registration Summary for %1', array($reg_num)) . '</th></tr>';
				switch ($reg_status) {
					case 'paymentpending':
						$status_text = 'Payment Pending';
						break;
					case 'complete':
						$status_text = 'Complete';
						break;
					case 'open':
						$status_text = 'Open';
						break;
				}
				echo '<tr><td><b>' . i18n('Registration Status') . "</b></td><td>$status_text</td></tr>";

				echo '<tr><td><b>' . i18n('Registration Number') . "</b></td><td>$reg_num</td></tr>";
				echo '<tr><td><b>' . i18n('Project Title') . "</b></td><td>$projectinfo->title</td></tr>";
				echo '<tr><td><b>' . i18n('Category / Division') . "</b></td><td>$projectinfo->category / $projectinfo->division</td></tr>";

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

				$studnum = 1;
				while ($studentinfo = $q->fetch(PDO::FETCH_OBJ)) {
					echo '<tr><td><b>' . i18n('School %1', array($studnum)) . "</b></td><td>$studentinfo->school </td></tr>";

					echo '<tr><td><b>' . i18n('Student %1', array($studnum)) . "</b></td><td>$studentinfo->firstname $studentinfo->lastname </td></tr>";
					$studnum++;
				}

				list($regfee, $regfeedata) = computeRegistrationFee($reg_id);
				echo '<tr><td><b>' . i18n('Registration Fee') . '</b></td><td>' . sprintf('$%.02f', $regfee) . '</td></tr>';
				echo "</table>\n";
				echo '<br />';

				if ($r->status != 'complete') {
					echo '<table style="margin-left: 30px;">';
					echo '<tr><td colspan="3">';
					echo i18n('Is this the correct form to register?');
					echo '</td></tr>';
					echo '<tr>';
					echo '<td>';

					echo '<form method="post" action="registration_receivedforms.php">';
					echo "<input type=\"hidden\" name=\"registration_number\" value=\"$reg_num\" />";
					echo '<input type="hidden" name="action" value="receivedno" />';
					echo '<input type=submit value="' . i18n('No, this is the wrong form') . '" style="width: 400px; height: 40px; margin: 10px;"/>';
					echo '</form>';

					if ($config['regfee'] > 0) {
						echo '<form method="post" action="registration_receivedforms.php">';
						echo "<input type=\"hidden\" name=\"registration_number\" value=\"$reg_num\" />";
						echo '<input type="hidden" name="action" value="receivedyes" />';
						echo '<input type=submit value="' . i18n('Yes, right form with registration fee') . '" style="width: 400px; height: 40px; margin: 10px;"/>';
						echo '</form>';

						echo '<form method="post" action="registration_receivedforms.php">';
						echo "<input type=\"hidden\" name=\"registration_number\" value=\"$reg_num\" />";
						echo '<input type="hidden" name="action" value="receivedyesnocash" />';
						echo '<input type=submit value="' . i18n('Yes, right form without registration fee') . '" style="width: 400px; height: 40px; margin: 10px;"/>';
						echo '</form>';
					} else {
						echo '<form method="post" action="registration_receivedforms.php">';
						echo "<input type=\"hidden\" name=\"registration_number\" value=\"$reg_num\" />";
						echo '<input type="hidden" name="action" value="receivedyes" />';
						echo '<input type=submit value="' . i18n('Yes, this is the right form') . '" style="width: 400px; height: 40px; margin: 10px;"/>';
						echo '</form>';
					}
					echo '<br />';

					echo "</td>\n";
					echo '</tr>';
					echo '</table>';
					$showformatbottom = false;
				} else {
					echo i18n('This form has already been received.  Registration is complete');
					echo '<br />';
					echo "<a href=\"registration_receivedforms.php?action=unregister&registration_number=$reg_num\">" . i18n('Click here to unregister this project') . '</a>';
					echo '<br />';
					echo '<hr />';
				}
			} else {
				echo error(i18n('All registration sections are not complete.  Cannot register incomplete form'));
			}
		}
	} else {
		echo error(i18n('Invalid Registration Number (%1)', array($_POST['registration_number'])));
	}
} else if ((get_value_from_array($_POST, 'action') == 'receivedyes' || get_value_from_array($_POST, 'action') == 'receivedyesnocash') && get_value_from_array($_POST, 'registration_number')) {
	$regnum = intval($_POST['registration_number']);
	$checkNumQuery = $pdo->prepare("SELECT projectnumber
					FROM projects, registrations 
					WHERE projects.registrations_id = registrations.id 
						AND num=?
						AND registrations.year=?");
	$checkNumQuery->execute([$regnum,$config['FAIRYEAR']]);
	$checkNumResults = $checkNumQuery->fetch(PDO::FETCH_OBJ);
	$projectnum = $checkNumResults->projectnumber;

	$q = $pdo->prepare("SELECT id FROM registrations WHERE num=? AND year=?");
	$q->execute([$regnum, $config['FAIRYEAR']]);
	$r = $q->fetch(PDO::FETCH_OBJ);
	$reg_id = $r->id;

	if ($projectnum == null) {
		list($projectnumber, $ps, $pns, $pss) = generateProjectNumber($reg_id);
		$stmt = $pdo->prepare("UPDATE projects SET projectnumber='$projectnumber',
				projectsort='$ps',projectnumber_seq='$pns',projectsort_seq='$pss'
				WHERE registrations_id='$reg_id' AND year='{$config['FAIRYEAR']}'");
		echo happy(i18n('Assigned Project Number: %1', array($projectnumber)));
	} else
		$projectnumber = $projectnum;

	// get all students with this registration number
	$recipients = getEmailRecipientsForRegistration($reg_id);

	if ($_POST['action'] == 'receivedyes') {
		// actually set it to 'complete'
		$stmt = $pdo->prepare("UPDATE registrations SET status='complete' WHERE num=? AND year=?");
		$stmt->execute([$regnum,$config['FAIRYEAR']]);
		foreach ($recipients AS $recip) {
			$to = $recip['to'];
			$subsub = array();
			$subbod = array(
				'TO' => $recip['to'],
				'EMAIL' => $recip['email'],
				'FIRSTNAME' => $recip['firstname'],
				'LASTNAME' => $recip['lastname'],
				'NAME' => $recip['firstname'] . ' ' . $recip['lastname'],
				'REGNUM' => $regnum,
				'PROJECTNUMBER' => $projectnumber,
			);
			email_send('register_participants_received', $to, $subsub, $subbod);
		}

		echo happy(i18n('Registration of form %1 successfully completed', array($regnum)));
	} else if ($_POST['action'] == 'receivedyesnocash') {
		// actually set it to 'paymentpending'
		$stmt = $pdo->prepare("UPDATE registrations SET status='paymentpending' WHERE num=? AND year=?");
		$stmt->execute([$regnum,$config['FAIRYEAR']]);
		foreach ($recipients AS $recip) {
			$to = $recip['to'];
			$subsub = array();
			$subbod = array(
				'TO' => $recip['to'],
				'EMAIL' => $recip['email'],
				'FIRSTNAME' => $recip['firstname'],
				'LASTNAME' => $recip['lastname'],
				'NAME' => $recip['firstname'] . ' ' . $recip['lastname'],
				'REGNUM' => $regnum,
				'PROJECTNUMBER' => $projectnumber,
			);

			email_send('register_participants_paymentpending', $to, $subsub, $subbod);
		}
		echo happy(i18n('Registration of form %1 marked as payment pending', array($regnum)));
	}
} else if (get_value_from_array($_POST, 'action') == 'receivedno' && get_value_from_array($_POST, 'registration_number')) {
	echo notice(i18n('Registration of form %1 cancelled', array($_POST['registration_number'])));
} else if (get_value_from_array($_GET, 'action') == 'unregister' && get_value_from_array($_GET, 'registration_number')) {
	$reg_num = intval(trim($_GET['registration_number']));
	$q = $pdo->prepare("SELECT registrations.id AS reg_id, projects.id AS proj_id FROM projects,registrations WHERE projects.registrations_id=registrations.id AND registrations.year=? AND registrations.num=?");
	$q->execute([$config['FAIRYEAR'],$reg_num]);
	$r = $q->fetch(PDO::FETCH_OBJ);
	$stmt = $pdo->prepare("UPDATE projects SET projectnumber=null, projectsort=null, projectnumber_seq=0, projectsort_seq=0 WHERE id=? AND year=?");
	$stmt->execute([$r->proj_id,$config['FAIRYEAR']]);
	$stmt = $pdo->prepare("UPDATE registrations SET status='open' WHERE id=? AND year=?");
	$stmt->execute([$r->reg_id,$config['FAIRYEAR']]);
	echo happy(i18n('Successfully unregistered project'));
}

if ($showformatbottom) {
	echo '<table>';
	echo '<tr><td>';
	echo '<form id="inputform" method="post" action="registration_receivedforms.php">';
	echo '<input type="hidden" name="action" value="received" />';
	echo i18n("Enter the registration number from the $signatureformpermissionform : ") . '<br />';
	echo '<input id="registration_number" type="text" size="15" name="registration_number" />';
	echo '<input type="submit" value="' . i18n('Lookup Registration Number') . '" />';
	echo '</form>';
	?>
	 <script type="text/javascript">
	 document.forms.inputform.registration_number.focus();
	 </script>
	 <?

	echo '<br/><br/>';
	echo '</td></tr><tr><td>';
	echo '<font size="2" color="red">This button does not keep track of payments</font>';
	echo '</td></tr><tr><td>';
	echo '<form method="post" action="registration_receivedforms.php">';
	echo '<input type="hidden" name="action" value="receive_all" />';
	echo '<input type="submit" value="' . i18n('Receive All') . "\" onclick=\"return confirmClick('Are you sure you wish to mark all students as has having their $signatureformpermissionform received?')\" />";
	echo '</form>';
	echo '</tr></td>';
	echo '</table>';
	echo '<br>';
	echo i18n(" <lh>'Receive All' notes:</lh> <ul><li>The button will mark all open-status students that have completed registration as having their $signatureformpermissionform received.
\t \t\t\t\t\t\t\t\t\t\t\t\t    <li> Students with above status will be emailed a \"$signatureformpermissionform received\" confirmation.
\t \t\t\t\t\t\t\t\t\t\t\t\t    <li> Project numbers will be assigned to these students' projects.
\t \t\t\t\t\t\t\t\t\t\t\t\t</ul>");
}

if (get_value_from_array($_POST, 'action') == 'receive_all') {
	// Grab all projects that don't have project numbers. Status should therefor be open or new but not complete
	$query_noprojectnumber = $pdo->prepare('SELECT * FROM projects WHERE projectnumber IS NULL AND year =?');
	// Define arrays to append to later
	$query_noprojectnumber->execute([$config['FAIRYEAR']]);
	$completed_students = array();
	$incomplete_students = array();
	$newstatus_students = array();

	// loop through each project that doesn't have a project number
	while ($studentproject = $query_noprojectnumber->fetch(PDO::FETCH_ASSOC)) {
		// Grab registration information about the current project
		$q = $pdo->prepare("SELECT * FROM registrations WHERE id=? AND year=?");
		$q->execute([$studentproject['registrations_id'],$config['FAIRYEAR']]);
		$r = $q->fetch(PDO::FETCH_OBJ);
		$reg_id = $r->id;
		$reg_num = $r->num;
		$reg_status = $r->status;

		// student has completed some or all of the registration process for their project. Let's find out which one is true
		if ($r->status != 'new') {
			// make sure all of the statuses are correct
			$statusstudent = studentStatus($reg_id);
			$statusemergencycontact = emergencycontactStatus($reg_id);
			$statusproject = projectStatus($reg_id);
			if ($config['participant_mentor'] == 'yes')
				$statusmentor = mentorStatus($reg_id);
			else
				$statusmentor = 'complete';
			$statussafety = safetyStatus($reg_id);
			$statusnamecheck = namecheckStatus($reg_id);

			if (
				$statusstudent == 'complete' &&
				$statusemergencycontact == 'complete' &&
				// S$statusproject == "complete" &&
				$statusmentor == 'complete' &&
				$statussafety == 'complete' &&
				$statusnamecheck == 'complete' &&
				$r->status != 'complete'
				// above: project status must not be complete. If it is complete signature page/permission form has already been received.
			) {
				// Generate project number and update it in data base
				list($projectnumber, $ps, $pns, $pss) = generateProjectNumber($reg_id);
				$stmt = $pdo->prepare("UPDATE projects SET projectnumber=?,
							projectsort=?,projectnumber_seq=?,projectsort_seq=?
							WHERE registrations_id=? AND year=?");
				$stmt->execute([$projectnumber,$ps,$pns,$pss,$reg_id,$config['FAIRYEAR']]);

				// email stuff
				// get all students with this registration number
				// $recipients=getEmailRecipientsForRegistration($reg_id);

				// Set status to 'complete'
				$stmt = $pdo->prepare("UPDATE registrations SET status='complete' WHERE num=? AND year=?");
				$stmt->execute([$reg_num,$config['FAIRYEAR']]);
				/*foreach($recipients AS $recip) {
					$to=$recip['to'];
					$subsub=array();
					$subbod=array(
						"TO"=>$recip['to'],
						"EMAIL"=>$recip['email'],
						"FIRSTNAME"=>$recip['firstname'],
						"LASTNAME"=>$recip['lastname'],
						"NAME"=>$recip['firstname']." ".$recip['lastname'],
						"REGNUM"=>$regnum,
						"PROJECTNUMBER"=>$projectnumber,
						);
					email_send("register_participants_received",$to,$subsub,$subbod);
				}*/

				// End email stuff
				// add cuurent registration number to completed_students array
				$completed_students[] = $reg_num;
			} else {
				// or add current registration number to incomplete_student array
				$incomplete_students[] = $reg_num;
			}
		}
		// New status automatically means student has not completed the registration process for their project. So execute below:
		else {
			// or add current registration number to newstatus_students array
			$newstatus_students[] = $reg_num;
		}
	}
	// Find how many project numbers were assigned/how many projects have complete status (ie signature page/permission form is considered received)
	$total_completed = count($completed_students);

	// since incomplete_students and newstatus_students both did not get project numbers and are not considered as having signature page/permission form received
	//    combine them
	$total_incomplete = array_merge($incomplete_students, $newstatus_students);

	echo '<br><br>';
	echo '<table>';
	echo '<tr><td>' . i18n("$total_completed student(s) registered as $non_capital_participationform received.") . '</td></tr>';

	// display below only if there are registration numbers that don't have project numbers and the students have not completed the registration process
	if (count($total_incomplete) > 0) {
		echo '<tr><td>' . i18n("Registration numbers which are NOT marked as having their $non_capital_participationform received are shown below:") . '</td></tr>';
		echo '<tr><td>&nbsp</td></tr>';
		$string = '';
		echo '<tr><td>';

		// create a string that contains all incomplete registration numbers
		foreach ($total_incomplete as $regnum) {
			$string = $string . i18n($regnum);
			$string = $string . ', ';
		}

		// delete the comma at the end of the string
		$string = substr($string, 0, strlen($string) - 2);
		echo $string;
		echo '</td></tr>';
		echo '<tr><td>&nbsp</td></tr>';
		echo '<tr><td>';
		echo i18n('The above registration numbers correspond to projects in which the registration process has not been completed by the student.');
		echo '</td></tr>';
	}
	echo '</table>';
	echo happy_(i18n('Received all permision forms for complete students'));
}

send_footer();

?>