0xV3NOMx
Linux ip-172-26-7-228 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64



Your IP : 52.15.92.58


Current Path : /var/www/html/admission/src/
Upload File :
Current File : /var/www/html/admission/src/qp_setter_new.php

<?php
require_once("/var/www/html/aws/aws-autoloader.php");
require_once(_DIR_."/../../aws/aws-autoloader.php");
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
include("/var/www/config.php");

function submitQPDet($aobj_context){
    $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
    $univcode = $aobj_context->mobj_data["univcode"];
    $exam = $aobj_context->mobj_data["exam"];
    $board = $aobj_context->mobj_data["board"];
    $status = $aobj_context->mobj_data["status"];
    $examval = explode('*',$exam);
    $deggrp = $examval[0];
    $yearmode = explode('-',$examval[1]);
    $year = $yearmode[0];
    $mode = $yearmode[1];

    if($board !== 'All'){
        $cond = "and s.fboard = '{$board}'";
    }else{
        $cond = "";
    }
    if($status == "Not Assiged"){
        $cond1 = "and ifnull(q.fteachcode,'') = ''";
    }else if($status == "Assiged"){
        $cond1 = "and ifnull(q.fteachcode,'') <> ''";
    }else{
        $cond1 = "";
    }
    
    $query = "select distinct ifnull(q.fqpcode, '')as fqpcode, concat(s.fsubname, ' - ', s.fsubshort) as subname,
    q.fset,q.fqpcodeno,ifnull(q.fteachcode,'') as fteachcode, q.flastdate,
    if(ifnull(fqpfilepath,'') <> '','QP Uploaded',if(ifnull(q.fstatus,'') <> '',q.fstatus,
    if(ifnull(q.fteachcode,'') <> '','Not Viewd','Not Assined'))) as fstatus,ifnull(s.fboard,'All') as fboard,
    s.fvalmax, ifnull(m.fteachname, '')as fteachname
    from qpseterdet1 q inner join subject s on q.fqpcode = s.fqpcode
    left join masteach m on m.fteachcode = q.fteachcode
    where ifnull(s.fdeleted,'') <> ''
    and s.fdegree in(select distinct fdegree from degree where fdeggrp = '{$deggrp}')
    and q.fyear = '{$year}'
    and q.fexamtype = '{$mode}'
    $cond $cond1";
    $result = $aobj_context->pobj_db->GetAll($query);

    $teach = "select fteachcode, fteachname, fmobile  from masteach where ifnull(fteachcode, '')<>''";
    $teach_res = $aobj_context->pobj_db->GetAll($teach);
    $res['res']=$result;
    $res['teach'] = $teach_res;

    if(count($result) > 0)
    {
        echo $aobj_context->mobj_output->ToJSONEnvelope($res,0,"success"); 
    }
    else
    {
        $arr['msg'] = 'No data Found';
        echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
    }
}

function saveSelQPSeterNew($aobj_context){
    include("sendGridMail.php");
    include("error_log.php");
    $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
    $univcode = $aobj_context->mobj_data["univcode"];
    $mob = $aobj_context->mobj_data["mob"];
    $user = $aobj_context->mobj_data["user"];
    $exam = $aobj_context->mobj_data["exam"];
    $board = $aobj_context->mobj_data["board"];
    $subj = $aobj_context->mobj_data["subj"];
    $collcode = $aobj_context->mobj_data["collcode"];
    $mobile = $aobj_context->mobj_data["mobile"];
    $table = json_decode($aobj_context->mobj_data["data"], true);
    
    $spl = explode('*',$exam);
    $split = explode('-',$spl[1]);
    $fyear = $split[0];
    $fexamtype = $split[1];
    
    $date = date('Y-m-d H:i:s');
    $onldate = date('d-m-Y');

    $unishort = "select funivname, ffolder, pdf_logo_path  from control";
    $resunishort = $aobj_context->pobj_db->GetRow($unishort);

    $univname = $resunishort['funivname'];
    $univshort = strtoupper($resunishort['ffolder']);
    $logopath = $resunishort['pdf_logo_path'];
    
    foreach ($table as $k => $v) {

        $lastdate = $v['flastdate'];
        $fqpcode = $v['fqpcode'];
        $fset = $v['fset'];
        $fsec = $v['fqpcodeno'];
        $fqpcodeno = $v['fqpcodeno'];
        $fteachcode = $v['fteachcode'];
        $fsubname = $v['subname'];
 
        $teachDet = "select ifnull(m.fteachname, '')as fteachname, 
                    femail,fmobile,
                     ifnull(m.fcollname, '')as fcollname, d.fdegncode, 
                     ifnull(d.fdegndesc, '')as fdegndesc 
                     from masteach m inner join masdegn d on d.fdegncode = m.fdegncode 
                     where fteachcode = '{$fteachcode}'";
                     
                    
        $teachDet1 = $aobj_context->pobj_db->GetRow($teachDet);
        
        $teachname = $teachDet1['fteachname'];
        $emailid = $teachDet1['femail'];
        $mobile = $teachDet1['fmobile'];
        $colladd = $teachDet1['fcollname'];
        $degn = $teachDet1['fdegndesc'];
       
      
            $query = "update qpseterdet1 set fappointdate = '{$date}', 
            fappointuser = '{$user}', fteachcode = '{$fteachcode}',flastdate = '{$lastdate}'
            where fqpcode = '{$fqpcode}'
            and fset = '{$fset}'
            and fqpcodeno = '{$fqpcodeno}'
            and fyear = '{$fyear}'
            and fexamtype = '{$fexamtype}'";
            
            $result = $aobj_context->pobj_db->Execute($query);
            
            $remarks = "Teacher ". $fteachcode. " Added for the Qp Code ".$fqpcode." No. of Sets: ".$fset." Section: ".$fqpcodeno." Last Date: ".$lastdate;

            $res = error_logs($aobj_context, $univcode, $remarks, $collcode, "QP Setter", $mobile, $mobile);

           

            if($univcode == "051"){
                $logo_path = "/img/dyp_elogo.jpeg";
            }else{
                $logo_path = $logopath;
            }

            $logo = "https://college.universitysolutions.in/".$resunishort['ffolder']. $logo_path;

            $message="<html>";
            $message.="<body>";
            $message.="<style>";		
            $message.=".mail_tbl td{text-align:left; padding:2px; font-size:12px; 
                font-family: Verdana, Arial, Helvetica, sans-serif;}";	
            $message.="</style>";
            $message.="<center><img src='{$logo}' height='100px' width='200px'/></center>";
            $message.="<p style='font-size:12px; font-family: Verdana, Arial, Helvetica, sans-serif; text-align:center; color:red'>
            CONFIDENTIAL</p>";
            $message.="<p style='font-size:12px; font-family: Verdana, Arial, Helvetica, sans-serif'>
            Ref.: DYPU/COE/AYU/2022-23/EP/C-041.</p>";
            $message.="<p style='font-size:12px; font-family: Verdana, Arial, Helvetica, sans-serif; text-align:right'>Date.:"." $onldate "."</p>";

            $message.="<p>To,<br></p>";
            $message.="<p style='line-height: 0;'>"."$teachname".",<br></p>";
            if($degn != ""){
                $message.="<p style='line-height: 2;'>"."$degn".",<br></p>";
            }
            if($colladd != ""){
                $message.="<p style='line-height: 0;'>"."$colladd".",<br></p>";
            }
            $message.="<p style='font-size:12px; font-family: Verdana, Arial, Helvetica, sans-serif'>
            Sub: Appointment as Question Paper Setter for the University Examination.</p>";

            $message.="<p style='font-size:12px; font-family: Verdana, Arial, Helvetica, sans-serif'>
            Respected Sir / Madam,</p>";

            $message.="<p style='font-size:12px; font-family: Verdana, Arial, Helvetica, sans-serif'>
            I am pleased to inform you that this university has appointed you as Question Paper Setter for the following course</p>";
            
            $message.="<p style='font-size:12px; font-family: Verdana, Arial, Helvetica, sans-serif'>
            <table style='width: 100%;border: 1px solid'><tr><th style='border: 1px solid'>Course Code</th>
            <th style='border: 1px solid'>Course Name</th>
            <th style='border: 1px solid'>Set No.</th></tr>
            <tr style='text-align:center'><td style='border: 1px solid'>"."$fqpcode"."</td><td style='border: 1px solid'>"."$fsubname"."</td>
            <td style='border: 1px solid'>"."$fset"."-"."$fsec"."</td>
            </tr></table></p>";

            $message.="<p style='font-size:12px; font-family: Verdana, Arial, Helvetica, sans-serif'>
            Syllabus with Course Outcomes (CO) and Question Paper Pattern are provided. Kindly prepare question paper as per the requirements
            of COs and Blooms Taxonomy (Preferably higher cognitive levels) and indicate them at the appropriate places in the question paper along with the marks allotted.</p>";

            $message.="<p style='font-size:12px; font-family: Verdana, Arial, Helvetica, sans-serif'>
            Also share the brief answer key (All Sections) for all questions with proper mark split up.</p>";

            $message.="<p style='font-size:12px; font-family: Verdana, Arial, Helvetica, sans-serif'>
            The Question paper and the answer key (All Sections) are to be uploaded only in the portal on or before "."$lastdate"."</p>";
            
            $message.="<p style='font-size:12px; font-family: Verdana, Arial, Helvetica, sans-serif'>
            Kindly submit your bank details at the portal.</p>";

            $message.="<p style='font-size:12px; font-family: Verdana, Arial, Helvetica, sans-serif'>
            Kindly inform your acceptance within three days of the receipt of this communication</p><br>";

            $message.="<b>Registration Steps are:</b>";
            $message.="<p>1. State: Maharashtra</p>";
            $message.="<p>2. University: D Y Patil University, Navi Mumbai</p>";
            $message.="<p>3. Select user type as Teacher</p>";
            $message.="<p>4. Enter Teacher code which is available in your mail</p>";
            $message.="<p>5. Click Validate</p>";
            $message.="<p>6. Fill details as: Enter your Email id and Password is your mobile number. Reenter the same password.</p>";
            $message.="<p>7. Click Send OTP. You will receive the OTP on your mobile and email also.</p>";
            $message.="<p>8. Enter OTP.</p>";
            $message.="<p>9. After this for Login: your mobile number will be the user id and password.</p>";
            $message.="<p>10. After Login in Question Paper setting Accept the Question Paper Request.</p>";
            $message.="<p>11. You can see the Question Paper Pattern and Syllabus.</p>";
            $message.="<p>12. Prepare the two separate word documents</p>";
            $message.= "<ul><li>Question Paper as per given pattern.</li><li>Brief Answer Keys.</li></ul>";
            $message.="<p>13. For Uploading the Question Paper, first upload the answer key then upload the question paper and click upload button. Repeat the same steps for uploading second set of question paper.</p>";
            $message.="<p>14. Update the Bank details.</p>";

            $message.="<p style='font-size:12px; font-family: Verdana, Arial, Helvetica, sans-serif'>
            Portal Login details are as follows.<br><br>";
            $message.="Portal Link: https://egov.universitysolutions.in/#/register"."<br>";
            $message.="Teacher Code:"." $fteachcode"."<br>";
            $message.="Mobile No.:"." $mobile"."<br></p>";

            $message.="<p style='font-size:12px; font-family: Verdana, Arial, Helvetica, sans-serif'>
            Kindly call to 022-30965931/32 in case if you have any technical issues.<br></p>";


            $message.="<p style='font-size:12px; font-family: Verdana, Arial, Helvetica, sans-serif'>
            Thanking You,</p>";

            $message.="<p style='font-size:12px; font-family: Verdana, Arial, Helvetica, sans-serif'>
            Yours Sincerely<br>";

            $querySign =  "select distinct s.fqpcode, d.fsignpath from degree d inner join subject s on 
                            s.fdegree = d.fdegree and s.fexamno = d.fexamno 
                            where s.fqpcode='{$fqpcode}' and ifnull(fsignpath,'')<>''";

            $ressign = $aobj_context->pobj_db->GetRow($querySign);
            
            $sign = $ressign['fsignpath'];

            $signpath = "https://college.universitysolutions.in/".$resunishort['ffolder']."/img/".$sign;

            if($sign!==NULL){
                $message .= "<img src='{$signpath}' width='100' height='50'/>";
                $message .= "<br/>";
            }
            $message.="Controller of Examinations<br>"."$univname"."<br>
            Navi Mumbai
            </p>";

            $message.="</body>";
            $message.="</html>";

            
            $subject= strtoupper("$univshort".": Appointment as Question Paper Setter for the University Examination"); 
            $from = "";
          if($v['emailstatus' ] == 'T')
            $resp = sendGridMail($emailid,$subject,$message,$univcode);  
         
          $qrySlt = "select fmobileno, fusertype from logisys3_comexam.masuser where fmobileno='{$mobile}'";
          $resQrySlt = $aobj_context->pobj_db->GetRow($qrySlt);

          $uType = $resQrySlt['fusertype'];
          $split = explode("*", $uType);
          foreach($split as $val){
            if($val!==""){
                $userType = $val."*";
            }
          }

          if(count($resQrySlt)>0){
            if(strpos($uType, '600')===false){
                $qry = "update logisys3_comexam.masuser set fusertype=concat('$userType', '600') 
                        where funivcode='{$univcode}' and fmobileno='{$mobile}'";
                $resQry = $aobj_context->pobj_db->GetRow($qry);
            }
          }
    }
     
    if (!$result) {
        $arr['msg'] = 'Updation Failed';
        echo $aobj_context->mobj_output->ToJSONEnvelope($arr, -1, "failure");
        return;
    }else
    {
        $arr['msg'] = 'Updated Success';
        echo $aobj_context->mobj_output->ToJSONEnvelope($arr,0,"Udated Success"); 
    }
}

function getProgramDet($aobj_context){
    $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
    $univcode = $aobj_context->mobj_data["univcode"];
    $exam = $aobj_context->mobj_data["exam"];
    $board = $aobj_context->mobj_data["board"];
    $examval = explode('*',$exam);
    $deggrp = $examval[0];
    $yearmode = explode('-',$examval[1]);
    $year = $yearmode[0];
    $mode = $yearmode[1];
    
    if($board !== 'All'){
        $cond = "and s.fboard = '{$board}'";
    }else{
        $cond = "";
    }
    
    $query = "select distinct d.fprogcode from degree d
          inner join subject s on d.fdegree = s.fdegree and d.fexamno = s.fexamno
          where d.fdeggrp = '{$deggrp}' $cond ";
          
    $result = $aobj_context->pobj_db->GetAll($query);

    if(count($result) > 0)
    {
        echo $aobj_context->mobj_output->ToJSONEnvelope($result,0,"success"); 
    }
    else
    {
        $arr['msg'] = 'No data Found';
        echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
    }
}

function getQPDeta($aobj_context){
    $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
    $univcode = $aobj_context->mobj_data["univcode"];
    $exam = $aobj_context->mobj_data["exam"];
    $board = $aobj_context->mobj_data["board"];
    $progr = $aobj_context->mobj_data["progr"];
    $examval = explode('*',$exam);
    $deggrp = $examval[0];
    $yearmode = explode('-',$examval[1]);
    $year = $yearmode[0];
    $mode = $yearmode[1];
    
    if($board !== 'All'){
        $cond = "and s.fboard = '{$board}'";
    }else{
        $cond = "";
    }

    if($progr !== 'All'){
        $cond1 = "and d.fprogcode = '{$progr}'";
    }else{
        $cond1 = "";
    }

    $query = "SELECT d.fdegree,s.fexamno,s.fsubcode,s.fsubname,s.fvalmax, 
    s.fqpcode,ifnull(totbal,'0') as totbal,
    ifnull(s.fboard,'') as fboard
    FROM subject s 
    LEFT JOIN(select sum(IF(ifnull(ffinalpaper,'') <> 'T',1,0)) as totbal,
    fqpcode from qpseterdet1 where fyear = '{$year}' and fexamtype = '{$mode}'
    and ifnull(fqpfilepath,'') <> ''
    group by fqpcode) qpdata on s.fqpcode = qpdata.fqpcode 
    inner join degree d on s.fdegree = d.fdegree and s.fexamno = d.fexamno
    inner join deggrp dg on d.fdeggrp = dg.fdeggrp
    where ifnull(s.fqpcode,'') <> '' and d.fdeggrp = '{$deggrp}' 
    and dg.fyear = '{$year}' and dg.fexamtype = '{$mode}' $cond $cond1";
 
    $result = $aobj_context->pobj_db->GetAll($query);

    if(count($result) > 0)
    {
        echo $aobj_context->mobj_output->ToJSONEnvelope($result,0,"success"); 
    }
    else
    {
        $arr['msg'] = 'No data Found';
        echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
    }
}

function getModeratorDet($aobj_context){
    $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
    $univcode = $aobj_context->mobj_data["univcode"];
    $teachcode = $aobj_context->mobj_data["teachcode"];

    $query = "select q.fqpcode, concat(s.fsubname, ' - ', s.fsubshort) as fsubname, q.fteachcode, q.fsqpsyllabus,s.fsubshort,
    q.fset,q.fqpcodeno as section,q.fyear,q.fexamtype,
    if(ifnull(fmodqpupd,'') = '','Not Uploaded','Uploaded') fmod
    from qpseterdet1 q 
    inner join subject s on s.fqpcode = q.fqpcode 
    inner join degree d on s.fdegree = d.fdegree 
    and s.fexamno= d.fexamno
    inner join deggrp dg on d.fdeggrp = dg.fdeggrp
    and q.fyear = dg.fyear 
    and q.fexamtype = dg.fexamtype
    where q.fmodteach = '{$teachcode}' 
    and ifnull(q.fqpfilepath,'') <> ''
    and q.flogin = 'T'
    group by q.fqpcode,fset,fqpcodeno";
          
    $result = $aobj_context->pobj_db->GetAll($query);

    if(count($result) > 0)
    {
        echo $aobj_context->mobj_output->ToJSONEnvelope($result,0,"success"); 
    }
    else
    {
        $arr['msg'] = 'No data Found';
        echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
    }
}

function getModQPData($aobj_context){
    $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
    $univcode = $aobj_context->mobj_data["univcode"];
    $teachcode = $aobj_context->mobj_data["teachcode"];
    $qpcode = $aobj_context->mobj_data["qpcode"];
    $user = $aobj_context->mobj_data["userId"];
    $fset = $aobj_context->mobj_data["setnos"];
    $section = $aobj_context->mobj_data["section"];
    
    $query = "select * from qpseterdet1 where fmodteach = '{$user}' and flogin = 'T' and fqpcode = '{$qpcode}'";
   
    $res = $aobj_context->pobj_db->GetRow($query);

    if($res)
    {
        $query = "select fset, ifnull(fqpfilepath,'')as fqpfilepath, 
        ifnull(fanskeypath, '') as fanskeypath,
        ifnull(fmodqppath, '') as fmodqppath,
        ifnull(fmodqpupd, '') as fmodqpupd, 
        ifnull(fmodanskey, '') as fmodanskey, 
        ifnull(fmodform, '') as fmodform,
        ifnull(fteachcode,'') as fteachcode,fqpcodeno
        from qpseterdet1
        where fqpcode = '{$qpcode}' and fmodteach = '{$user}' and
        ifnull(fqpfilepath, '') <> ''
        and flogin = 'T' and fteachcode = '{$teachcode}' 
        and fset = '{$fset}' and fqpcodeno = '{$section}'";
        
        $result = $aobj_context->pobj_db->GetAll($query);

        if($result){
            echo $aobj_context->mobj_output->ToJSONEnvelope($result,0,"success");  
            return;
        }else{
            $arr['msg'] = 'No data found';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
            return;
        }
    }else
    {
        $arr['msg'] = 'Login Disabled. Kindly contact admin';
        echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
        return;
    }
}

function upldQPMODFile($aobj_context)
{
    $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
    include("error_log.php");
    $univcode = $aobj_context->mobj_data["univcode"];
    $qpcode = $aobj_context->mobj_data["qpcode"];
    $filename = $_FILES['qpmodfile']['name'];
    $tempname = $_FILES['qpmodfile']['tmp_name'];
    $teachcode = $aobj_context->mobj_data["teachcode"];
    $set = $aobj_context->mobj_data["set"];
    $fqpcodeno = $aobj_context->mobj_data["fqpcodeno"];
    
    $ext = pathinfo($filename, PATHINFO_EXTENSION);

    $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    $length = 30; 
    $randomString = '';

    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, strlen($characters) - 1)];
    }

    $file_name = $qpcode."_Mod_QP_".$randomString.".".$ext;

    if($filename!=="" && $filename!==NULL){
        $qur = "select distinct dg.fyear,dg.fexamtype from subject s
        inner join degree d on s.fdegree= d.fdegree and s.fexamno = d.fexamno
        inner join deggrp dg on d.fdeggrp = dg.fdeggrp
        where fqpcode = '{$qpcode}'";
        $resyerexm = $aobj_context->pobj_db->GetRow($qur);

        $fyearmode = $resyerexm['fyear'];
        $fexammode = $resyerexm['fexamtype'];
        $yearMode = "select concat(fyear,'-',fexamtype) as yearMode from qpseterdet1 where fteachcode = '{$teachcode}' and fqpcode = '{$qpcode}'";
        $resultyearMode = $aobj_context->pobj_db->GetRow($yearMode);
        $yearmode = $resultyearMode['yearMode'];
        $server_path = move_uploaded_file($tempname, "QP_Details/". $file_name);
        $file_path = $aobj_context->main_src."QP_Details/{$file_name}";

        if(file_exists($file_path)){
            $s3 = S3Client::factory(
            array(
                'credentials' => array(
                    'key' => IAM_KEY,
                    'secret' => IAM_SECRET
                ),
                'version' => "latest",
                'region'  => 'ap-south-1'
            ));

            $key = $univcode."/".$yearmode."/".$qpcode."/".$file_name;
            
            try {
                $s3->putObject(['Bucket' => "moderator-upd", 'Key' => $key, 'SourceFile' => $file_path]);
                $query = "update qpseterdet1 set fmodqpupd='{$key}', fmodqpdate=now() where fqpcode = '{$qpcode}'
                            and fset='{$set}' and fteachcode = '{$teachcode}' and fqpcodeno = '{$fqpcodeno}'
                            and fyear = '{$fyearmode}' and fexamtype = '{$fexammode}'";
                $result = $aobj_context->pobj_db->Execute($query);

                $remarks = "Moderator QP Details - uploaded QPMODFILE against QP CODE: ".$qpcode. " ,set: ".$set. " and Moderator: ".$teachcode;
                $res = error_logs($aobj_context, $univcode, $remarks, $collcode, "Moderator QP Details", $teachcode, $teachcode);

                if($result){
                    unlink($file_path);
                    $arr['msg'] = "File Uploaded Successfully";
                    echo $aobj_context->mobj_output->ToJSONEnvelope($arr,0,"success");
                }else{
                    $arr['msg'] = "Something went wrong";
                    echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
                    return;
                }
            }catch(S3Exception $e) {
                $arr['msg'] = 'Failed to upload';
                echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
                return;
            }
        }
    }
}

function upldAnsMODFile($aobj_context){
    $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
    include("error_log.php");
    $univcode = $aobj_context->mobj_data["univcode"];
    $qpcode = $aobj_context->mobj_data["qpcode"];
    $filename = $_FILES['ansmodfile']['name'];
    $tempname = $_FILES['ansmodfile']['tmp_name'];
    $teachcode = $aobj_context->mobj_data["teachcode"];
    $set = $aobj_context->mobj_data["set"];
    $fqpcodeno = $aobj_context->mobj_data["fqpcodeno"];
    $ext = pathinfo($filename, PATHINFO_EXTENSION);

    $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    $length = 30; 
    $randomString = '';

    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, strlen($characters) - 1)];
    }

    $file_name = $qpcode."_Mod_Ans_".$randomString.".".$ext;

    if($filename!=="" && $filename!==NULL){
        $qur = "select distinct dg.fyear,dg.fexamtype from subject s
        inner join degree d on s.fdegree= d.fdegree and s.fexamno = d.fexamno
        inner join deggrp dg on d.fdeggrp = dg.fdeggrp
        where fqpcode = '{$qpcode}'";
        $resyerexm = $aobj_context->pobj_db->GetRow($qur);

        $fyearmode = $resyerexm['fyear'];
        $fexammode = $resyerexm['fexamtype'];
        $yearMode = "select concat(fyear,'-',fexamtype) as yearMode from qpseterdet1 where fteachcode = '{$teachcode}' and fqpcode = '{$qpcode}'";
        $resultyearMode = $aobj_context->pobj_db->GetRow($yearMode);
        $yearmode = $resultyearMode['yearMode'];
        $server_path = move_uploaded_file($tempname, "QP_Details/". $file_name);
        $file_path = $aobj_context->main_src."QP_Details/{$file_name}";

        if(file_exists($file_path)){
            $s3 = S3Client::factory(
            array(
                'credentials' => array(
                    'key' => IAM_KEY,
                    'secret' => IAM_SECRET
                ),
                'version' => "latest",
                'region'  => 'ap-south-1'
            ));

            $key = $univcode."/".$yearmode."/".$qpcode."/".$file_name;
            
            try {
                $s3->putObject(['Bucket' => "moderator-upd", 'Key' => $key, 'SourceFile' => $file_path]);
                $query = "update qpseterdet1 set fmodanskey='{$key}', fmodansdate=now() where fqpcode = '{$qpcode}'
                            and fset='{$set}' and fteachcode = '{$teachcode}' and fqpcodeno = '{$fqpcodeno}'
                            and fyear = '{$fyearmode}' and fexamtype = '{$fexammode}'";
                
                $result = $aobj_context->pobj_db->Execute($query);

                $remarks = "Moderator QP Details - uploaded ANSMODFILE against QP CODE: ".$qpcode. " ,set: ".$set. " and Moderator: ".$teachcode;
                $res = error_logs($aobj_context, $univcode, $remarks, $collcode, "Moderator QP Details", $teachcode, $teachcode);

                if($result){
                    unlink($file_path);
                    $arr['msg'] = "File Uploaded";
                    echo $aobj_context->mobj_output->ToJSONEnvelope($arr,0,"success");
                }else{
                    $arr['msg'] = "Something went wrong";
                    echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
                    return;
                }
            }catch(S3Exception $e) {
                $arr['msg'] = 'Failed to upload';
                echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
                return;
            }
        }
    }
}

function upldMODFormFile($aobj_context){
    $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
    include("error_log.php");
    $univcode = $aobj_context->mobj_data["univcode"];
    $qpcode = $aobj_context->mobj_data["qpcode"];
    $filename = $_FILES['modfile']['name'];
    $tempname = $_FILES['modfile']['tmp_name'];
    $teachcode = $aobj_context->mobj_data["teachcode"];
    $set = $aobj_context->mobj_data["set"];
    $fqpcodeno = $aobj_context->mobj_data["fqpcodeno"];
    $ext = pathinfo($filename, PATHINFO_EXTENSION);

    $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    $length = 30; 
    $randomString = '';

    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, strlen($characters) - 1)];
    }

    $file_name = $qpcode."_Mod_Form_".$randomString.".".$ext;

    if($filename!=="" && $filename!==NULL){
        $qur = "select distinct dg.fyear,dg.fexamtype from subject s
        inner join degree d on s.fdegree= d.fdegree and s.fexamno = d.fexamno
        inner join deggrp dg on d.fdeggrp = dg.fdeggrp
        where fqpcode = '{$qpcode}'";
        $resyerexm = $aobj_context->pobj_db->GetRow($qur);

        $fyearmode = $resyerexm['fyear'];
        $fexammode = $resyerexm['fexamtype'];
        $yearMode = "select concat(fyear,'-',fexamtype) as yearMode from qpseterdet1 where fteachcode = '{$teachcode}' and fqpcode = '{$qpcode}'";
        $resultyearMode = $aobj_context->pobj_db->GetRow($yearMode);
        $yearmode = $resultyearMode['yearMode'];
        $server_path = move_uploaded_file($tempname, "QP_Details/". $file_name);
        $file_path = $aobj_context->main_src."QP_Details/{$file_name}";

        if(file_exists($file_path)){
            $s3 = S3Client::factory(
            array(
                'credentials' => array(
                    'key' => IAM_KEY,
                    'secret' => IAM_SECRET
                ),
                'version' => "latest",
                'region'  => 'ap-south-1'
            ));

            $key = $univcode."/".$yearmode."/".$qpcode."/".$file_name;

            
            try {
                $s3->putObject(['Bucket' => "moderator-upd", 'Key' => $key, 'SourceFile' => $file_path]);
                $query = "update qpseterdet1 set fmodform='{$key}', fmodformdate=now() where fqpcode = '{$qpcode}'
                            and fset='{$set}' and fteachcode = '{$teachcode}' and fqpcodeno = '{$fqpcodeno}'
                            and fyear = '{$fyearmode}' and fexamtype = '{$fexammode}'";
                $result = $aobj_context->pobj_db->Execute($query);

                $remarks = "Moderator QP Details - uploaded MODFORM against QP CODE: ".$qpcode. " ,set: ".$set. " and Moderator: ".$teachcode;
                $res = error_logs($aobj_context, $univcode, $remarks, $collcode, "Moderator QP Details", $teachcode, $teachcode);

                if($result){
                    unlink($file_path);
                    $arr['msg'] = "File Uploaded";
                    echo $aobj_context->mobj_output->ToJSONEnvelope($arr,0,"success");
                }else{
                    $arr['msg'] = "Something went wrong";
                    echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
                    return;
                }
            }catch(S3Exception $e) {
                $arr['msg'] = 'Failed to upload';
                echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
                return;
            }
        }else{
            $arr['msg'] = 'Failed to upload';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
            return;
        }
    }
}

function getFinQPData($aobj_context){
    $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
    $univcode = $aobj_context->mobj_data["univcode"];
    $exam = $aobj_context->mobj_data["exam"];
    $board = $aobj_context->mobj_data["board"];
    $qpcode = $aobj_context->mobj_data["qpcode"];
    $degree = $aobj_context->mobj_data["degree"];
    $sem = $aobj_context->mobj_data["sem"];
    $status = $aobj_context->mobj_data["status"];
    
    $examval = explode('*',$exam);
    $deggrp = $examval[0];
    $yearmode = explode('-',$examval[1]);
    $year = $yearmode[0];
    $mode = $yearmode[1];

    if($board !== 'All'){
        $cond = "and s.fboard = '{$board}'";
    }else{
        $cond = "";
    }
    if($qpcode !== 'All'){
        $cond1 = "and q.fqpcode = '{$qpcode}'";
    }else{
        $cond1 = "";
    }
    if($degree !== 'All'){
        $cond2 = "and d.fdegree = '{$degree}'";
    }else{
        $cond2 = "";
    }
    if($sem !== 'All'){
        $cond3 = "and s.fexamno = '{$sem}'";
    }else{
        $cond3 = "";
    }
    if($status == "Not Uploaded"){
        $cond4 = "and ifnull(q.ffinalqppath,'') = ''";
    }else if($status == "Uploaded"){
        $cond4 = "and ifnull(q.ffinalqppath,'') <> ''";
    }else{
        $cond4 = "";
    }
    
    $query = "select  q.fqpcode, concat(s.fsubname, ' - ', s.fsubshort) as fsubname,
        ifnull(q.ffinalqppath,'') as ffinalqppath,
        ifnull(q.ffinalanspath,'') as ffinalanspath
        from qpseterdet1 q 
        inner join subject s on s.fqpcode = q.fqpcode 
        inner join degree d on s.fdegree = d.fdegree 
        and s.fexamno= d.fexamno
        inner join deggrp dg on d.fdeggrp = dg.fdeggrp
        and q.fyear = dg.fyear 
        and q.fexamtype = dg.fexamtype
        where dg.fdeggrp = '{$deggrp}' 
        and dg.fyear ='{$year}'
        and dg.fexamtype= '{$mode}' 
        $cond2
        $cond3
        $cond1 
        $cond
        $cond4 group by q.fqpcode";

    $result = $aobj_context->pobj_db->GetAll($query);

    if(count($result) > 0)
    {
        echo $aobj_context->mobj_output->ToJSONEnvelope($result,0,"success"); 
    }
    else
    {
        $arr['msg'] = 'No data Found';
        echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
    }
}

function uploadFinalQPFile($aobj_context){
    $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
    include("error_log.php");
    $univcode = $aobj_context->mobj_data["univcode"];
    $userid = $aobj_context->mobj_data["userid"];
    $exam = $aobj_context->mobj_data["exam"];
    $data = json_decode($aobj_context->mobj_data["data"], true);
    $qpcode = $data['fqpcode'];

    $finQPFile = $_FILES['finQPFile'];
    $finalQPFile = $finQPFile['name'];
    $finalQPData = $finQPFile['tmp_name']; 
    $qpExt = pathinfo($finalQPFile, PATHINFO_EXTENSION);

    $date = date('Y-m-d H:i:s');

    $finAnsFile = $_FILES['finAnsFile'];
    $finalAnsFile = $finAnsFile['name'];
    $finalAnsData = $finAnsFile['tmp_name'];
    
    $ansExt = pathinfo($finalAnsFile, PATHINFO_EXTENSION);

    $qur = "select distinct dg.fyear,dg.fexamtype from subject s
        inner join degree d on s.fdegree= d.fdegree and s.fexamno = d.fexamno
        inner join deggrp dg on d.fdeggrp = dg.fdeggrp
        where fqpcode = '{$qpcode}'";
    $resyerexm = $aobj_context->pobj_db->GetRow($qur);

    $fyearmode = $resyerexm['fyear'];
    $fexammode = $resyerexm['fexamtype'];
    $yearMode = "select concat(fyear,'-',fexamtype) as yearMode from qpseterdet1 
                where fqpcode = '{$qpcode}'";
    $resultyearMode = $aobj_context->pobj_db->GetRow($yearMode);
    $yearmode = $resultyearMode['yearMode'];

    if($finQPFile!=="" && $finQPFile!==NULL){
        $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
        $length = 30; 
        $randomString = '';
    
        for ($i = 0; $i < $length; $i++) {
            $randomString .= $characters[rand(0, strlen($characters) - 1)];
        }
    
        $file_name = $qpcode."_Final_QP_".$randomString.".".$qpExt;
        
        $server_path = move_uploaded_file($finalQPData, "QP_Details/". $file_name);
        $file_path = $aobj_context->main_src."QP_Details/{$file_name}";

        if(file_exists($file_path)){
            $s3 = S3Client::factory(
            array(
                'credentials' => array(
                    'key' => IAM_KEY,
                    'secret' => IAM_SECRET
                ),
                'version' => "latest",
                'region'  => 'ap-south-1'
            ));

            $key = $univcode."/".$yearmode."/".$qpcode."/".$file_name;

            $s3->putObject(['Bucket' => "moderator-upd", 'Key' => $key, 'SourceFile' => $file_path]);
            
            $query = "update qpseterdet1 set ffinalqppath='{$key}', ffinalqpdate=now(),
            ffinalqpuser = '{$userid}' where fqpcode = '{$qpcode}'
            and fyear = '{$fyearmode}' and fexamtype = '{$fexammode}'";
            
            $result = $aobj_context->pobj_db->Execute($query);

            $remarks = "Moderator QP Details - uploaded MODFORM against QP CODE: ".$qpcode. " ,set: ".$set. " and Moderator: ".$teachcode;
            $res = error_logs($aobj_context, $univcode, $remarks, $collcode, "Moderator QP Details", $teachcode, $teachcode);
            if($result) {unlink($file_path);}
        }
    }
    
    if($finAnsFile!=="" && $finAnsFile!==NULL){
        $characters1 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
        $length1 = 30; 
        $randomString1 = '';
        
        for ($i = 0; $i < $length1; $i++) {
            $randomString1 .= $characters1[rand(0, strlen($characters1) - 1)];
        }
    
        $file_name = $qpcode."_Final_Ans_".$randomString1.".".$ansExt;
        
        $server_path = move_uploaded_file($finalAnsData, "QP_Details/". $file_name);
        $file_path = $aobj_context->main_src."QP_Details/{$file_name}";
        
        if(file_exists($file_path)){
            $s3 = S3Client::factory(
            array(
                'credentials' => array(
                    'key' => IAM_KEY,
                    'secret' => IAM_SECRET
                ),
                'version' => "latest",
                'region'  => 'ap-south-1'
            ));

            $key = $univcode."/".$yearmode."/".$qpcode."/".$file_name;

            $s3->putObject(['Bucket' => "moderator-upd", 'Key' => $key, 'SourceFile' => $file_path]);
            
            $query1 = "update qpseterdet1 set ffinalanspath='{$key}', ffinalansdate=now(),
            ffinalansuser = '{$userid}' where fqpcode = '{$qpcode}'
            and fyear = '{$fyearmode}' and fexamtype = '{$fexammode}'";
            $result1 = $aobj_context->pobj_db->Execute($query1);

            $remarks = "Moderator QP Details - uploaded MODFORM against QP CODE: ".$qpcode. " ,set: ".$set. " and Moderator: ".$teachcode;
            $res = error_logs($aobj_context, $univcode, $remarks, $collcode, "Moderator QP Details", $teachcode, $teachcode);
            if($result1) {unlink($file_path);}
        }
    }
    if($result || $result1){
        $arr['msg'] = "File Uploaded";
        echo $aobj_context->mobj_output->ToJSONEnvelope($arr,0,"success");
        return;
    }else{
        $arr['msg'] = 'Failed to upload';
        echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
        return;
    }
}

function getFinalQPAns($aobj_context){
    $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
    $univcode = $aobj_context->mobj_data["univcode"];
    $exam = $aobj_context->mobj_data["exam"];
    $qpcode = $aobj_context->mobj_data["qpcode"];
    $board = $aobj_context->mobj_data["board"];
    $degree = $aobj_context->mobj_data["degree"];
    $sem = $aobj_context->mobj_data["sem"];

    $examval = explode('*',$exam);
    $deggrp = $examval[0];
    $yearmode = explode('-',$examval[1]);
    $year = $yearmode[0];
    $mode = $yearmode[1];

    if($board !== 'All'){
        $cond = "and s.fboard = '{$board}'";
    }else{
        $cond = "";
    }
    if($qpcode !== 'All'){
        $cond1 = "and q.fqpcode = '{$qpcode}'";
    }else{
        $cond1 = "";
    }
    if($degree !== 'All'){
        $cond2 = "and d.fdegree = '{$degree}'";
    }else{
        $cond2 = "";
    }
    if($sem !== 'All'){
        $cond3 = "and s.fexamno = '{$sem}'";
    }else{
        $cond3 = "";
    }
   
    $query = "select q.fqpcode, concat(s.fsubname, ' - ', s.fsubshort) as fsubname,fqpcodeno,
    d.fdegree,ifnull(q.fmodqpupd,'') as fmodqpupd,
    ifnull(q.fmodanskey,'') as fmodanskey
    from qpseterdet1 q 
    inner join subject s on s.fqpcode = q.fqpcode 
    inner join degree d on s.fdegree = d.fdegree 
    and s.fexamno= d.fexamno
    inner join deggrp dg on d.fdeggrp = dg.fdeggrp
    and q.fyear = dg.fyear 
    and q.fexamtype = dg.fexamtype
    where 
    ifnull(ffinalpaper,'') = 'T'
    and dg.fdeggrp = '{$deggrp}'
    $cond
    $cond1
    $cond2
    $cond3";
    // var_dump($query);die();
    $result = $aobj_context->pobj_db->GetAll($query);

    if($result){
        echo $aobj_context->mobj_output->ToJSONEnvelope($result,0,"success");  
        return;
    }else{
        $arr['msg'] = 'No data found';
        echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
        return;
    }
}

function getSysPatrDet($aobj_context){
    $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
    $univcode = $aobj_context->mobj_data["univcode"];
    $exam = $aobj_context->mobj_data["exam"];
    $qpcode = $aobj_context->mobj_data["qpcode"];
    $board = $aobj_context->mobj_data["board"];
    $degree = $aobj_context->mobj_data["degree"];
    $sem = $aobj_context->mobj_data["sem"];
    $status = $aobj_context->mobj_data["status"];

    $examval = explode('*',$exam);
    $deggrp = $examval[0];
    $yearmode = explode('-',$examval[1]);
    $year = $yearmode[0];
    $mode = $yearmode[1];

    if($board !== 'All'){
        $cond = "and s.fboard = '{$board}'";
    }else{
        $cond = "";
    }
    if($qpcode !== 'All'){
        $cond1 = "and q.fqpcode = '{$qpcode}'";
    }else{
        $cond1 = "";
    }
    if($degree !== 'All'){
        $cond2 = "and d.fdegree = '{$degree}'";
    }else{
        $cond2 = "";
    }
    if($sem !== 'All'){
        $cond3 = "and s.fexamno = '{$sem}'";
    }else{
        $cond3 = "";
    }
   if($status == 'Uploaded'){
        $cond4 = "and ifnull(q.FSQPPATREN,'') <> ''
                and ifnull(q.FSQPSYLLABUS,'') <> ''";
   }else if($status == "Not Uploaded"){
        $cond4 = "and ifnull(q.FSQPPATREN,'') = ''
                and ifnull(q.FSQPSYLLABUS,'') = ''";
   }else{
        $cond4 = "";
   }

   
    $query = "select  q.fqpcode, concat(s.fsubname, ' - ', s.fsubshort) as fsubname,
            q.fset,q.fqpcodeno,ifnull(q.FSQPPATREN,'') as FSQPPATREN,
            ifnull(q.FSQPSYLLABUS,'') as FSQPSYLLABUS
            from qpseterdet1 q 
            inner join subject s on s.fqpcode = q.fqpcode 
            inner join degree d on s.fdegree = d.fdegree 
            and s.fexamno= d.fexamno
            inner join deggrp dg on d.fdeggrp = dg.fdeggrp
            and q.fyear = dg.fyear 
            and q.fexamtype = dg.fexamtype
            where dg.fdeggrp = '{$deggrp}' 
            and dg.fyear ='{$year}'
            and dg.fexamtype= '{$mode}' 
            $cond2
            $cond3
            $cond1
            $cond4";
    // var_dump($query);die();
    $result = $aobj_context->pobj_db->GetAll($query);

    if($result){
        echo $aobj_context->mobj_output->ToJSONEnvelope($result,0,"success");  
        return;
    }else{
        $arr['msg'] = 'No data found';
        echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
        return;
    }
}

function upldSyllPatrn($aobj_context){
    $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
    include("error_log.php");
    $univcode = $aobj_context->mobj_data["univcode"];
    $userid = $aobj_context->mobj_data["userid"];
    $exam = $aobj_context->mobj_data["exam"];
    $data = json_decode($aobj_context->mobj_data["data"], true);
    $qpcode = $data['fqpcode'];
    $fset = $data['fset'];
    $fqpcodeno = $data['fqpcodeno'];

    $qpSyllanusFile = $_FILES['qpSyllanusFile'];
    $qpSyllaFile = $qpSyllanusFile['name'];
    $qpSyllaData = $qpSyllanusFile['tmp_name']; 
    $qpSyllExt = pathinfo($qpSyllaFile, PATHINFO_EXTENSION);

    $date = date('Y-m-d H:i:s');

    $qpPatternFile = $_FILES['qpPatternFile'];
    $qpPattFile = $qpPatternFile['name'];
    $qpPattData = $qpPatternFile['tmp_name'];
    
    $qppatExt = pathinfo($qpPattFile, PATHINFO_EXTENSION);

    $qur = "select distinct dg.fyear,dg.fexamtype from subject s
        inner join degree d on s.fdegree= d.fdegree and s.fexamno = d.fexamno
        inner join deggrp dg on d.fdeggrp = dg.fdeggrp
        where fqpcode = '{$qpcode}'";
    $resyerexm = $aobj_context->pobj_db->GetRow($qur);

    $fyearmode = $resyerexm['fyear'];
    $fexammode = $resyerexm['fexamtype'];
    $yearMode = "select concat(fyear,'-',fexamtype) as yearMode from qpseterdet1 
                where fqpcode = '{$qpcode}'";
    $resultyearMode = $aobj_context->pobj_db->GetRow($yearMode);
    $yearmode = $resultyearMode['yearMode'];

    if($qpSyllanusFile!==" " && $qpSyllanusFile!==null){
        $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
        $length = 30; 
        $randomString = '';
    
        for ($i = 0; $i < $length; $i++) {
            $randomString .= $characters[rand(0, strlen($characters) - 1)];
        }
    
        $file_name = $qpcode."_QP_SYLLABUS_".$randomString.".".$qpSyllExt;
        
        $server_path = move_uploaded_file($qpSyllaData, "QP_Details/". $file_name);
        $file_path = $aobj_context->main_src."QP_Details/{$file_name}";

        if(file_exists($file_path)){
            $s3 = S3Client::factory(
            array(
                'credentials' => array(
                    'key' => IAM_KEY,
                    'secret' => IAM_SECRET
                ),
                'version' => "latest",
                'region'  => 'ap-south-1'
            ));

            $key = $univcode."/"."syllabus"."/".$file_name;

            $s3->putObject(['Bucket' => "qp-scheme", 'Key' => $key, 'SourceFile' => $file_path]);
            
            $query = "update qpseterdet1 set FSQPSYLLABUS='{$key}'
             where fqpcode = '{$qpcode}' and fset = '{$fset}'
             and fqpcodeno = '{$fqpcodeno}'
            and fyear = '{$fyearmode}' and fexamtype = '{$fexammode}'";

            $result = $aobj_context->pobj_db->Execute($query);

            $remarks = "Moderator QP Details - uploaded MODFORM against QP CODE: ".$qpcode. " ,set: ".$set. " and Moderator: ".$teachcode;
            $res = error_logs($aobj_context, $univcode, $remarks, $collcode, "Moderator QP Details", $teachcode, $teachcode);
            if($result) {unlink($file_path);}
        }
    }
    
    if($qpPatternFile!==" " && $qpPatternFile!==null){
        $characters1 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
        $length1 = 30; 
        $randomString1 = '';
        
        for ($i = 0; $i < $length1; $i++) {
            $randomString1 .= $characters1[rand(0, strlen($characters1) - 1)];
        }
    
        $file_name = $qpcode."_QP_PATTERN_".$randomString1.".".$qppatExt;
        
        $server_path = move_uploaded_file($qpPattData, "QP_Details/". $file_name);
        $file_path = $aobj_context->main_src."QP_Details/{$file_name}";
        
        if(file_exists($file_path)){
            $s3 = S3Client::factory(
            array(
                'credentials' => array(
                    'key' => IAM_KEY,
                    'secret' => IAM_SECRET
                ),
                'version' => "latest",
                'region'  => 'ap-south-1'
            ));

            $key = $univcode."/"."pattern"."/".$file_name;

            $s3->putObject(['Bucket' => "qp-scheme", 'Key' => $key, 'SourceFile' => $file_path]);
            
            $query1 = "update qpseterdet1 set FSQPPATREN='{$key}'
             where fqpcode = '{$qpcode}' and fset = '{$fset}'
             and fqpcodeno = '{$fqpcodeno}'
            and fyear = '{$fyearmode}' and fexamtype = '{$fexammode}'";

            $result1 = $aobj_context->pobj_db->Execute($query1);
            $remarks = "Moderator QP Details - uploaded MODFORM against QP CODE: ".$qpcode. " ,set: ".$set. " and Moderator: ".$teachcode;
            $res = error_logs($aobj_context, $univcode, $remarks, $collcode, "Moderator QP Details", $teachcode, $teachcode);
            if($result1) {unlink($file_path);}
        }
    }
    if($result || $result1){
        $arr['msg'] = "File Uploaded";
        echo $aobj_context->mobj_output->ToJSONEnvelope($arr,0,"success");
        return;
    }else{
        $arr['msg'] = 'Failed to upload';
        echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
        return;
    }
}

function saveQPSetData($aobj_context){
    $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
    $univcode = $aobj_context->mobj_data["univcode"];
    $exam = $aobj_context->mobj_data["exam"];
    $board = $aobj_context->mobj_data["board"];
    $progr = $aobj_context->mobj_data["progr"];
    $data = json_decode($aobj_context->mobj_data["data"], true);
    // var_dump($data);die();
    $examval = explode('*',$exam);
    $deggrp = $examval[0];
    $yearmode = explode('-',$examval[1]);
    $year = $yearmode[0];
    $mode = $yearmode[1];

    if($board !== 'All'){
        $cond = "and s.fboard = '{$board}'";
    }else{
        $cond = "";
    }
    if($qpcode !== 'All'){
        $cond1 = "and q.fqpcode = '{$qpcode}'";
    }else{
        $cond1 = "";
    }
    
    $alphabet = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];

    foreach($data as $val){
        for($j=0; $j< intval($val['fnoset']); $j++){
            for($i=0; $i < intval($val['fsec']); $i++){
                $count = $j+1;
                $query = "insert into qpseterdet1 (fyear, fexamtype, fqpcode, fset, fqpcodeno)
                values('{$year}', '{$mode}', '{$val['fqpcode']}', '{$count}', '{$alphabet[$i]}')";
                $result = $aobj_context->pobj_db->Execute($query);
            }
        }
    }

    if($result){
        echo $aobj_context->mobj_output->ToJSONEnvelope($result,0,"success");  
        return;
    }else{
        $arr['msg'] = 'No data found';
        echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
        return;
    }
}

function saveFinalQPData($aobj_context){
    $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
    include("error_log.php");
    $univcode = $aobj_context->mobj_data["univcode"];
    $userid = $aobj_context->mobj_data["userid"];
    $exam = $aobj_context->mobj_data["exam"];
    $data = json_decode($aobj_context->mobj_data["data"], true);
    $qpcode = $data['fqpcode'];
    $fremarks = $data['fremarks'];
    $fteachcode = $data['fteachcode'];
    $ffinalqpstatus = $data['ffinalqpstatus'];
    $set = $data['fset'];
    // var_dump($data);die();

    $examexplode= explode('*',$exam);
    $exmexplde= explode('-',$examexplode[1]);
    $curyear = $exmexplde[0];
    $curexam = $exmexplde[1];
    $curyearexam = $examexplode[1];
    $fyearmode = $data['fyear'];
    $fexammode = $data['fexamtype'];
    $yearmode = $data['fyear']."-".$data['fexamtype'] ;

    $finQPFile = $_FILES['finQPFile'];
    $finalQPFile = $finQPFile['name'];
    $finalQPData = $finQPFile['tmp_name']; 
    $qpExt = pathinfo($finalQPFile, PATHINFO_EXTENSION);

    $finAnsFile = $_FILES['finAnsFile'];
    $finalAnsFile = $finAnsFile['name'];
    $finalAnsData = $finAnsFile['tmp_name']; 
    $ansExt = pathinfo($finalAnsFile, PATHINFO_EXTENSION);

    $date = date('Y-m-d H:i:s');

    if($finQPFile!=="" && $finQPFile!==NULL){
        $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
        $length = 30; 
        $randomString = '';
    
        for ($i = 0; $i < $length; $i++) {
            $randomString .= $characters[rand(0, strlen($characters) - 1)];
        }
    
        $file_name = $qpcode."_Final_QP_".$randomString.".".$qpExt;
        
        $server_path = move_uploaded_file($finalQPData, "QP_Details/". $file_name);
        $file_path = $aobj_context->main_src."QP_Details/{$file_name}";

        if(file_exists($file_path)){
            $s3 = S3Client::factory(
            array(
                'credentials' => array(
                    'key' => IAM_KEY,
                    'secret' => IAM_SECRET
                ),
                'version' => "latest",
                'region'  => 'ap-south-1'
            ));

            $key = $univcode."/".$curyearexam."/".$qpcode."/".$file_name;

            $s3->putObject(['Bucket' => "moderator-upd", 'Key' => $key, 'SourceFile' => $file_path]);
        }
        $qur = "select * from tdvs_qpfile where fqpcode = '{$qpcode}'
            and fyear = '{$curyear}' and fexamtype = '{$curexam}'";
        $res = $aobj_context->pobj_db->GetRow($qur);

        if(count($res) !== 0){
            $insrt_tdvs = "update tdvs_qpfile set FQPFILEPATH='{$key}', FQPDATE=now()
            where fqpcode = '{$qpcode}'
            and fyear = '{$curyear}' and fexamtype = '{$curexam}'";
            
        }else{
            $insrt_tdvs = "INSERT INTO tdvs_qpfile (FQPCODE, FYEAR, FEXAMTYPE,FQPFILEPATH,FQPDATE)
            VALUES('{$qpcode}','{$curyear}','{$curexam}','{$key}',now())";
        }
        $result1 = $aobj_context->pobj_db->Execute($insrt_tdvs);
        $consd = ",ffinalqppath='{$key}', ffinalqpdate=now(),
        ffinalqpuser = '{$userid}'";
        
    }
    if($finAnsFile!=="" && $finAnsFile!==NULL){
        $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
        $length = 30; 
        $randomString = '';
    
        for ($i = 0; $i < $length; $i++) {
            $randomString .= $characters[rand(0, strlen($characters) - 1)];
        }
    
        $file_name = $qpcode."_Final_ANS_".$randomString.".".$ansExt;
        
        $server_path = move_uploaded_file($finalAnsData, "QP_Details/". $file_name);
        $file_path = $aobj_context->main_src."QP_Details/{$file_name}";

        if(file_exists($file_path)){
            $s3 = S3Client::factory(
            array(
                'credentials' => array(
                    'key' => IAM_KEY,
                    'secret' => IAM_SECRET
                ),
                'version' => "latest",
                'region'  => 'ap-south-1'
            ));

            $Anskey = $univcode."/".$curyearexam."/".$qpcode."/".$file_name;

            $s3->putObject(['Bucket' => "moderator-upd", 'Key' => $Anskey, 'SourceFile' => $file_path]);
        }
        $qur = "select * from tdvs_qpfile where fqpcode = '{$qpcode}'
                and fyear = '{$curyear}' and fexamtype = '{$curexam}'";
        $res = $aobj_context->pobj_db->GetRow($qur);

        if(count($res) !== 0){
            $insrt_tdvs = "update tdvs_qpfile set FSCHEMA='{$Anskey}', FQPDATE=now()
            where fqpcode = '{$qpcode}'
            and fyear = '{$curyear}' and fexamtype = '{$curexam}'";
        }else{
            $insrt_tdvs = "INSERT INTO tdvs_qpfile (FQPCODE, FYEAR, FEXAMTYPE,FSCHEMA,FQPDATE)
            VALUES('{$qpcode}','{$curyear}','{$curexam}','{$Anskey}',now())";
        }
        
        $result1 = $aobj_context->pobj_db->Execute($insrt_tdvs);
        $consd1 = ",ffinalanspath='{$Anskey}', ffinalansdate=now(),ffinalansuser = '{$userid}'";
    }
    // var_dump($Anskey,$key);

    $query = "update qpseterdet set fremarks = '{$fremarks}',
            ffinalqpstatus = '{$ffinalqpstatus}', fcuryear = '{$curyear}',fcurexamtype = '{$curexam}'
             $consd $consd1
            where fqpcode = '{$qpcode}'
            and fyear = '{$fyearmode}' and fexamtype = '{$fexammode}' 
            and ffinalpaper = 'T' and fteachcode = '{$fteachcode}'
            and fset='{$set}'";
            // var_dump($query);
    $result = $aobj_context->pobj_db->Execute($query);

    if($result) {unlink($file_path);}
    
    if($result || $result1){
        $arr['msg'] = "File Uploaded";
        echo $aobj_context->mobj_output->ToJSONEnvelope($arr,0,"success");
        return;
    }else{
        $arr['msg'] = 'Failed to upload';
        echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
        return;
    }
}
?>