<?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]="";
}
?><!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Template 14</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/template14/style_template14.css?key=' . time(); ?>" type="text/css" rel="stylesheet">
</head>
<body>

<div class="report-container">

  <!-- Header -->
  <div class="header">
    <div class="logo">
      <img src="<?php echo $institutions['logo']; ?>" alt="School Logo">
    </div>
    <div class="school-info">
      <h1 class="school-name"><?php echo $institutions['institution_name']; ?></h1>
      <div class="affiliation-details">
        <span><?php echo $branch['branch_code']; ?></span> 
        <span><?php echo $branch['address']; ?> <?php if($branch['pincode']) echo "- ".$branch['pincode']; ?></span> 
        <span><?php echo $branch['contact_number']; ?> <?php if($branch['email']) echo ", ".strtolower($branch['email']); ?></span>
      </div>
    </div>
  </div>

  <!-- Title -->
  <div class="text-center">
    <h2 class="progress-report-title">Progress Report</h2>
    <p class="session-info">Academic Session <?php echo $academic_session; ?></p>
  </div>

  <!-- Student Info -->
  <div class="student-info">
    <div class="student-info-item">
      <span class="label">Name:</span>
      <span class="value"><?php echo $Resultstudents['name']; ?></span>
    </div>
    <div class="student-info-item">
      <span class="label">Admission Number:</span>
      <span class="value"><?php echo $Resultstudents['admission_number']; ?></span>
    </div>
    <div class="student-info-item">
      <span class="label">Class:</span>
      <span class="value"><?php echo $class_info['class_name']; ?></span>
    </div>
    <div class="student-info-item">
      <span class="label">Section:</span>
      <span class="value"><?php echo $section_info['section_name']; ?></span>
    </div>
    <div class="student-info-item">
      <span class="label">Father's Name:</span>
      <span class="value"><?php echo $Resultstudents['fathername']; ?></span>
    </div>
    <div class="student-info-item">
      <span class="label">Mother's Name:</span>
      <span class="value"><?php echo $Resultstudents['mothername']; ?></span>
    </div>
  </div>

  <!-- Marks Form -->
  <form id="upload_student_marksheet" method="post">
    <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; ?>">

    <table class="marks-table">
      <thead>
        <tr>
          <th>Subject</th>
          <th>Unit Examination (20)</th>
          <th>Marks Obtained</th>
        </tr>
      </thead>
      <tbody>
        <tr>
      <td>English</td>
      <td>20</td> <!-- Maximum Marks -->
      <td><input type="number" min="0" max="20" name="1" value="<?php echo $array[1]; ?>"></td> 
    </tr>
    <tr>
      <td>Mathematics</td>
      <td>20</td>
      <td><input type="number" min="0" max="20" name="2" value="<?php echo $array[2]; ?>"></td>
    </tr>
    <tr>
      <td>E.V.S.</td>
      <td>20</td>
      <td><input type="number" min="0" max="20" name="3" value="<?php echo $array[3]; ?>"></td>
    </tr>
    <tr>
      <td>Punjabi</td>
      <td>20</td>
      <td><input type="number" min="0" max="20" name="4" value="<?php echo $array[4]; ?>"></td>
    </tr>
    <tr>
      <td>Hindi</td>
      <td>20</td>
      <td><input type="number" min="0" max="20" name="5" value="<?php echo $array[5]; ?>"></td>
    </tr>
      </tbody>
    </table>

    <!-- Remarks -->
    <div class="remarks">
      <label for="remarks_marksheet">Remarks:</label>
      <select id="remarks_marksheet" name="7" required>
        <?php if ($array[7] == "") { ?>
          <option disabled selected value="">Select a remark</option>
        <?php } else { ?>
          <option selected value="<?php echo $array[7]; ?>"><?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>
      </select>
    </div>

    <button type="submit" id="submit_marksheet">Upload Marksheet</button>
  </form>

    <!-- success & Error placeholders -->
    <div id="displayadd_homework_success" style="display:none; color:green; margin-top:10px;">
      <span id="success_message"></span>
    </div>
    
    <div id="error_div" style="display:none; margin-top:10px;">
      <span id="error_message"></span>
    </div>
  <!-- Signatures -->
  <div class="signatures">
    <div class="signature-item">
      <span class="signature-label">Class Incharge</span>
    </div>
    <div class="signature-item">
      <span class="signature-label">Principal / Headmistress</span>
    </div>
  </div>

  <p class="date">Date: <?php echo date('d-m-Y'); ?></p>
  <p class="disclaimer">* Incase of any discrepancies in marksheet, please contact school administration.</p>
</div>






<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/template14/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>
</body>
</html>