<?php
// index served started as 1 for array
//fetching table of cols from marksheeet_data

ini_set('display_errors', 1);

// Include necessary files
require_once '../../base_path_include.php';
require_once $base_path_to_learning_resources  . "includes/connect.php";
require_once $base_path_to_learning_resources . 'lib/function.php';
require_once $base_path_to_learning_resources . 'lib/validate_api_signature.php';
require_once $base_path_to_learning_resources . 'lib/validate_function.php';
require_once $base_path_to_learning . 'user_management/authenticate.php';
require_once $base_path_to_learning . 'admin_api/academic_session/functions/validate_faculty.php';
require_once $base_path_to_learning . 'admin_api/academic_session/functions/functions.php';
require_once $base_path_to_learning . 'functions/common_functions.php';
require_once $base_path_to_learning_resources . 'includes/specific_db_config.php';
require_once $base_path_to_learning . "vendor/autoload.php";
require_once $base_path_to_learning_resources . 'lib/bucket_functions/bucket_functions.php';
require_once $base_path_to_learning_resources . 'includes/aws_bucket_config.php';

// Decode JSON input data
// $postdata = json_decode(file_get_contents("php://input"), true);
$postdata = $_GET;

// Validate required fields
if (
	!isset($postdata['institution_id']) || !checkIfIssetAndNotEmpty($postdata['institution_id']) ||
	!isset($postdata['student_id']) || !checkIfIssetAndNotEmpty($postdata['student_id']) ||
	!isset($postdata['marksheet_id']) || !checkIfIssetAndNotEmpty($postdata['marksheet_id']) or
    !isset($postdata['api_signature']) or !checkIfIssetAndNotEmpty($postdata['api_signature']) or
    !isset($postdata['jwt_token']) or  !checkIfIssetAndNotEmpty($postdata['jwt_token'])
) {
	errorreturn("All * fields are required.");
}
validateApiSignature($postdata['api_signature']);// Authenticate JWT token
$jwttoken = $postdata['jwt_token'];
$jwt_validate = authenticate_jwt($jwttoken);

// Extract user details from JWT token
$userid = $jwt_validate->data->id;
$workspace_id = $jwt_validate->data->workspace_id;
$username = $jwt_validate->data->username;
$role = $jwt_validate->data->role;

// Validate user access and get specific database name
$specific_db_name = validateUserAccess($conn_rjllearning, $userid, $role, $workspace_id,["superadmin","admin","principal","teacher"], null);
if (!$specific_db_name) {
	errorreturn('Access denied.');
} else {
	$conn_rjllearning_specific = dynamicDbConnection($specific_db_name);
}
$api_signature=$postdata['api_signature'];
$institution_id = $postdata['institution_id'];
$student_id = $postdata['student_id'];
$marksheet_id = $postdata['marksheet_id'];


$ExecuteSqlTemplate = $conn_rjllearning_specific->prepare("SELECT * FROM students WHERE institution_id = ? and id=?");
$ExecuteSqlTemplate->execute([$institution_id, $student_id]);
$Resultstudents = $ExecuteSqlTemplate->fetch(PDO::FETCH_ASSOC);

if (!$Resultstudents) {
	errorreturn("student does not exist.");
}

$branch_id = $Resultstudents['branch_id'];

$class_id = $Resultstudents['class_id'];

$section_id = $Resultstudents['section_id'];
// Prepare the SQL statement
$class_info = getClass($conn_rjllearning_specific, $institution_id,$class_id );

$section_info = getSection($conn_rjllearning_specific, $institution_id, $section_id);



	$SqlTemplate = "SELECT * FROM academic_session WHERE institution_id = ? AND active_academic_session = ?";
	$StmtTemplate = $conn_rjllearning_specific->prepare($SqlTemplate);
	$StmtTemplate->execute([$institution_id, 1]);
	$result = $StmtTemplate->fetchAll(PDO::FETCH_ASSOC); // Make sure to fetch associative array

	if (count($result) < 1) {
		errorreturn("Academic session not found. Contact admin.");
	}

	// Fetch institution information
	$institutions = getInstitution($conn_rjllearning, $institution_id);

	// Define additional data fields
	$additional_data = ['branch_code', 'address', 'pincode', 'contact_number', 'email'];

	// Fetch branch information
	$branch = getBranchInfo($conn_rjllearning_specific, $institution_id, $branch_id, $additional_data);
	
		$ExecuteSqlTemplate = $conn_rjllearning_specific->prepare("SELECT examination_name, template_id, academic_session FROM marksheet WHERE institution_id = ? and id=?");
	$ExecuteSqlTemplate->execute([$institution_id,$marksheet_id]);
	$ResultTemplates = $ExecuteSqlTemplate->fetch(PDO::FETCH_ASSOC);

	if (!$ResultTemplates) {
		errorreturn("examination_name does not exist.");
	}

	$examination = $ResultTemplates['examination_name'];
	$template_id= $ResultTemplates['template_id'];
	$academic_session= $ResultTemplates['academic_session'];
	
	
	
	$ExecuteSqlTemplate = $conn_rjllearning->prepare("SELECT cols, template_name FROM template_info WHERE id = ? ");
	$ExecuteSqlTemplate->execute([$template_id]);
	$ResultTemplate = $ExecuteSqlTemplate->fetch(PDO::FETCH_ASSOC);

	if (!$ResultTemplate) {
		errorreturn("Marksheet Template does not exist.");
	}
	$cols = $ResultTemplate['cols'];


// Fetching marksheet data
$stmt = $conn_rjllearning_specific->prepare("SELECT data FROM student_marksheet_data WHERE student_id = ? AND marksheet_id = ? AND institution_id = ?");
$stmt->execute([$student_id, $marksheet_id, $institution_id]); 

// Fetch the result as an associative array
$fetchmarksheet_data = $stmt->fetch(PDO::FETCH_ASSOC);

if ($fetchmarksheet_data) {
    // Unserialize the 'data' column
    $arrayfetch = json_decode($fetchmarksheet_data['data'], true);

    // Check the number of columns in the fetched data
    if (count($arrayfetch) != $cols) {
        // Deleting any pre-existing entries
        $deleteExistingData = $conn_rjllearning_specific->prepare("DELETE FROM student_marksheet_data WHERE student_id = ? AND marksheet_id = ?");
        if (!$deleteExistingData->execute([$student_id, $marksheet_id])) {
            errorreturn("Failed to delete existing data.");
        }
		for($i=1;$i<=$cols;$i++)
		{
			$array[$i]=0;
		}
		$array[6]="";
		$array[7]="";
	}
	else
	{
		$array=array();
		$counter=1;
		foreach($arrayfetch as $element)
		{
			$array[$counter]=$element;
			$counter++;
		}
	}
}
else
{
	$deleteExistingData = $conn_rjllearning_specific->prepare("DELETE FROM student_marksheet_data WHERE student_id = ? AND marksheet_id = ?");
	if (!$deleteExistingData->execute([$student_id, $marksheet_id])) {
		errorreturn("Failed to delete existing data.");
	}
	for($i=1;$i<=$cols;$i++)
	{
		$array[$i]=0;
	}
	$array[6]="";
	$array[7]="";
}
?><html>

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Template 8 (template 12)</title>
	<script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
	<link href="<?php echo 'https://rejoicebilldesk.in/rjllearning_development/resources/marksheet_template/template10/style_template10.css?key=' . time(); ?>" type="text/css" rel="stylesheet">

</head>
<body><div class="container_marksheet_template1">
		
		<div class="border_template1"><!--border template is not being used-->

			<div class="content_container_template1">
				
				<!--template 3 logo-->
				<div class="fullstretch header_template1" align="center">
					<div class="logo_div_img_template1">
						<!--<div class="logo_left_template1" align="left">--><img class="images"  src="<?php echo $institutions['logo']; ?>"><!--</div>-->
					</div>
					<div class="header_institution">
						<span class="heading_template1"><?php echo $institutions['institution_name']; ?></span><br>
						<span class="heading_code_info_template1"><?php echo $branch['branch_code']; ?></span><?php if($branch['branch_code']!=""){
	?><br><?php
}
					?>
					<span class="heading_address_template1"><?php echo $branch['address'];
					if($branch['pincode']!="")
					{
						echo " - ".$branch['pincode'];  
					}
					?></span><br><span class="contact_template1" style="text-transform: lowercase;"><?php echo $branch['contact_number'];
					if($branch['email']!="")
					{
						echo ", &nbsp;".strtolower($branch['email']);
					}
					?></span>
					</div>
				</div>
					
				<div class=" fullstretch header_info_container" align="center">
					<div class="fullstretch heading_report_template1">Progress Report</div>
					<div class="year_template1">Academic Session <?php echo $academic_session;?></div>
					</div>
				
				<!--template 1 student info-->
				<div class="fullstretch" align="center">
					<div class="student_info_template1">
					<table class="student_info_table_template1">
						<tr>
							<td>Name</td><td></td>
							<td><?php echo $Resultstudents['name']; ?></td>
						</tr>
						<tr>
							<td>Class</td><td></td>
							<td><?php echo $class_info['class_name']; ?></td>
						</tr>
						<tr>
							<td>Father's Name</td><td></td>
							<td><?php echo $Resultstudents['fathername']; ?></td>
						</tr>
						</table></div>
					<div class="student_info_template1">
					<table class="student_info_table_template1">
						<tr>
							<td>Admission Number</td><td></td>
							<td><?php echo $Resultstudents['admission_number']; ?></td>
						</tr>
						<tr>
							<td>Section</td><td></td>
							<td><?php echo $section_info['section_name'];?></td>
						</tr>
						<tr>
							<td>Mother's Name</td><td></td>
							<td><?php echo $Resultstudents['mothername']; ?></td>
						</tr>
						</table></div>
				</div>
<div class="section">
	<form name="upload_student_marksheet" action="" method="post" id="upload_student_marksheet">
			<input type="hidden" name="marksheet_id" value="<?php echo $marksheet_id; ?>">
		<input type="hidden" name="institution_id" value="<?php echo $institution_id; ?>">
		<input type="hidden" name="student_id" value="<?php echo $student_id; ?>">
		<input type="hidden" name="jwt_token" value="<?php echo $jwttoken; ?>">
		<input type="hidden" name="api_signature" value="<?php echo $api_signature;?>">
<div class="table_container mt-5 w-100">
	<table id="template_table_edit" class="table table-striped">

		<tr align="left">
				<th>Subject</th>
				<th>*Unit* Examination (20)</th>	
		</tr>
			
		<tr>
			<th class="texttransformupper alignleft">english</th>
			<td class="code"><input type="number" min="0" max="20" autofocus required name="1" id="col1" class="columns_number" value="<?php echo $array[1];?>"></td>
		</tr>

		<tr>
			<th class="texttransformupper alignleft">Mathematics</th>
			<td class="code"><input type="number" min="0" max="20" autofocus required name="2" id="col2" class="columns_number" value="<?php echo $array[2];?>"></td>
		</tr>
		
		<tr>
			<th class="texttransformupper alignleft">E.V.S.</th>
			<td class="code"><input type="number" min="0" max="20" autofocus required name="3" id="col3" class="columns_number" value="<?php echo $array[3];?>"></td>
		</tr>
		
		<tr>
			<th class="texttransformupper alignleft">Punjabi</th>
			<td class="code"><input type="number" min="0" max="20" autofocus required name="4" id="col4" class="columns_number" value="<?php echo $array[4];?>"></td>
		</tr>
		
		<tr>
			<th class="texttransformupper alignleft">Hindi</th>
			<td class="code"><input type="number" min="0" max="20" autofocus required name="5" id="col5" class="columns_number" value="<?php echo $array[5];?>"></td>
		</tr>

	</table>
</div>
	<label>Add Remarks</label><br>
	<select class="form-control" id="remarks_marksheet" required name="7">
		<?php if($array[7]=="")
{
	?><option disabled selected value="">Select</option><?php
}
		else
		{
			?><option value="<?php echo $array[7];?>" selected><?php echo $array[7];?></option><?php
		}
		?>
			<option value="Excellent">Excellent</option>
			<option value="Good">Good</option>
			<option value="Keep it up">Keep it up</option>
			<option value="Dedicated">Dedicated</option>
			<option value="Worked hard">Worked hard</option>
			<option value="Capable of achieving a higher grade">Capable of achieving a higher grade</option>
			<option value="Completes his/her work carefully and on time">Completes his/her work carefully and on time</option>
			<option value="Good conceptual clarity">Good conceptual clarity</option>
			<option value="Needs to focus a little more on concepts">Needs to focus a little more on concepts</option>
		</select><br><br>
		<button type="submit" id="submit_marksheet">Upload Marksheet</button>
	</form><br>
	<!--display homework success error-->
	<div id="error_div" style="display:none;">
		<span id="error_message"></span>
	</div>
	<div id="displayadd_homework_success" style="display:none;">
		<span id="success_message"></span>
	</div>
	<!--div loading image for fetching-->

</div><div class="fullstretch margintop50" align="center">
					<div class="student_info_template1">
					<table class="student_info_table_template1">
						<tr>
							<td>Class Incharge</td>
						</tr>
						</table></div>
					<div class="student_info_template1">
					<table class="student_info_table_template1">
						<tr>
							<td>Principal / Headmistress</td>
						</tr>
						</table></div>
				</div>
				
				<div class="date_footer fullstretch margintop50" align="left">
					<?php echo date('Y-m-d');?>
				</div>
				<div class="fullstretch margintop20" align="center" style="color:red;font-size:10pt;">* Incase of any discrepancies in marksheet, please contact school administration.</div>
			</div>
				</body>

</html>
<script>
	$(document).ready(function() {
		$("#upload_student_marksheet").on('submit', function(e) {
			e.preventDefault(); // Prevent the default form submission

			$.ajax({
				type: 'POST',
				url: 'https://rejoicebilldesk.in/rjllearning_development/resources/marksheet_template/template10/process.php', // Directly using the URL
				data: new FormData(this), // Capture all form data including file uploads
				contentType: false,
				cache: false,
				processData: false,
				beforeSend: function() {
					// Disable form fields and the submit button
					$(".columns_number").attr('readonly', true);
					$("#remarks_marksheet").attr('readonly', true);
					$("#attendance_marksheet").attr('readonly', true);
					$("#submit_marksheet").prop('disabled', true); // Ensure you're targeting the correct button

					// Append loader to the submit button
					$("#submit_marksheet").html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span> Uploading...');
				},
				error: function(xhr, status, error) {
					// Re-enable form fields and submit button in case of error
					$(".columns_number").attr('readonly', false);
					$("#remarks_marksheet").attr('readonly', false);
					$("#attendance_marksheet").attr('readonly', false);
					$("#submit_marksheet").prop('disabled', false);
					$("#submit_marksheet").html('Upload Marksheet'); // Reset submit button text

					// Show error message
					$("#error_message").text('Marks upload failed, please try again later.');
					$("#error_div").css('color', 'red').fadeIn(300);
					setTimeout(function() {
						$("#error_div").fadeOut(300);
					}, 5000);
				},
				success: function(resp) {
					try {
						var response = JSON.parse(resp);

						if (response.status === 1) { // Success
							// Re-enable form fields and submit button
							$(".columns_number").attr('readonly', false);
							$("#remarks_marksheet").attr('readonly', false);
							$("#attendance_marksheet").attr('readonly', false);
							$("#submit_marksheet").prop('disabled', false);
							$("#submit_marksheet").html('Upload Marksheet'); // Reset submit button text

							// Show success message
							$("#success_message").text("Upload successful.");
							$("#displayadd_homework_success").fadeIn(300);
							setTimeout(function() {
								$("#displayadd_homework_success").fadeOut(300);
							}, 3000);
						} else { // Failure response from the server
							throw new Error(response.response || 'Unknown error');
						}
					} catch (e) {
						// If there's an error parsing or in the response
						$(".columns_number").attr('readonly', false);
						$("#remarks_marksheet").attr('readonly', false);
						$("#attendance_marksheet").attr('readonly', false);
						$("#submit_marksheet").prop('disabled', false);
						$("#submit_marksheet").html('Upload Marksheet'); // Reset submit button text

						// Show server error message
						$("#error_message").text(e.message || 'Upload failed.');
						$("#error_div").css('color', 'red').fadeIn(300);
						setTimeout(function() {
							$("#error_div").fadeOut(300);
						}, 5000);
					}
				}
			});
		});
	});
</script>