<?php
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';

$postdata = $_GET;

$required_fields = [
    'institution_id',
    'student_id',
    'marksheet_id',
    'api_signature',
    'jwt_token'
];

foreach ($required_fields as $field) {
    if (!isset($postdata[$field]) || empty($postdata[$field])) {
        errorreturn("All * fields are required.$field");
    }
}
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'];

// Fetch student information
$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'];

// Get class and section info
$class_info = getClass($conn_rjllearning_specific, $institution_id, $class_id);
$section_info = getSection($conn_rjllearning_specific, $institution_id, $section_id);

// Get academic session
$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);

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);

// Get marksheet info
$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'];

// Get template info
$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]); 
$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[4]="";
		$array[5]="";
	}
	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[4]="";
	$array[5]="";
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Template 16 Marks Upload</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/template16/style_template16.css?key=' . time(); ?>" type="text/css" rel="stylesheet">
</head>
<body>
    <div class="report-container">
        <div class="header">
            <div class="logo">
                <img src="<?php echo $institutions['logo']; ?>" alt="School Logo" class="School Logo">
            </div>
            <div class="school-info">
                <div class="school-name"><?php echo $institutions['institution_name']; ?></div>
                <div class="affiliation-code"><?php echo $branch['branch_code']; ?></div>
                <div class="address"><?php echo $branch['address'];
                    if($branch['pincode'] != "") {
                        echo " - ".$branch['pincode'];  
                    }
                ?></div>
                <div class="contact"><?php echo $branch['contact_number'];
                    if($branch['email'] != "") {
                        echo ", &nbsp;".strtolower($branch['email']);
                    }
                ?></div>
            </div>
        </div>

        <div class="main-content">
            <div class="report-title">Progress Report</div>
            <div class="academic-year">Academic Session <?php echo $academic_session; ?></div>

            <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="student-details">
                    <div class="student-column">
                        <div class="student-row">
                            <div class="student-label">Name</div>
                            <div class="student-value"><?php echo $Resultstudents['name']; ?></div>
                        </div>
                        <div class="student-row">
                            <div class="student-label">Class</div>
                            <div class="student-value"><?php echo $class_info['class_name']; ?></div>
                        </div>
                        <div class="student-row">
                            <div class="student-label">Father's Name</div>
                            <div class="student-value"><?php echo $Resultstudents['fathername']; ?></div>
                        </div>
                    </div>
                    <div class="student-column">
                        <div class="student-row">
                            <div class="student-label">Admission Number</div>
                            <div class="student-value"><?php echo $Resultstudents['admission_number']; ?></div>
                        </div>
                        <div class="student-row">
                            <div class="student-label">Section</div>
                            <div class="student-value"><?php echo $section_info['section_name']; ?></div>
                        </div>
                        <div class="student-row">
                            <div class="student-label">Mother's Name</div>
                            <div class="student-value"><?php echo $Resultstudents['mothername']; ?></div>
                        </div>
                    </div>
                </div>

                <table class="marks-table">
                    <thead>
                        <tr>
                            <th>Subject</th>
                            <th>*Term Examination*<br>(20)</th>
                            <th>Marks Obtained</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>English</td>
                            <td>20</td>
                            <td><input type="number" min="0" max="20" required name="1" id="col1" class="columns_number" value="<?php echo $array[1]; ?>"></td>
                        </tr>
                        <tr>
                            <td>Mathematics</td>
                            <td>20</td>
                            <td><input type="number" min="0" max="20" required name="2" id="col2" class="columns_number" value="<?php echo $array[2]; ?>"></td>
                        </tr>
                        <tr>
                            <td>Punjabi</td>
                            <td>20</td>
                            <td><input type="number" min="0" max="20" required name="3" id="col3" class="columns_number" value="<?php echo $array[3]; ?>"></td>
                        </tr>
                        <!--<tr class="total-row">-->
                        <!--    <td>Total</td>-->
                        <!--    <td>60</td>-->
                        <!--    <td><?php echo $array[1] + $array[2] + $array[3]; ?></td>-->
                        <!--</tr>-->
                    </tbody>
                </table>

                <div class="remarks-section">
                    <div class="remarks-heading">Remarks</div>
                    <div class="remarks-content">
                        <select class="form-control" id="remarks_marksheet" required name="5">
                            <?php if($array[5] == "") { ?>
                                <option disabled selected value="">Select</option>
                            <?php } else { ?>
                                <option value="<?php echo $array[5]; ?>" selected><?php echo $array[5]; ?></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>
                    </div>
                </div>

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

            <!-- Display messages -->
            <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 class="signatures">
                <div class="signature-box">
                    <div class="signature-line">Class Incharge</div>
                </div>
                <div class="signature-box">
                    <div class="signature-line">Principal / Headmistress</div>
                </div>
            </div>

            <div class="disclaimer">* In case of any discrepancies in marksheet, please contact school administration.</div>
        </div>
    </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/template16/process.php', // Update with correct path
                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);
                    $("#submit_marksheet").prop('disabled', true);

                    // 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);
                    $("#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);
                            $("#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);
                        $("#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>