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 : 18.190.154.24


Current Path : /var/www/html/univadmin/src/
Upload File :
Current File : /var/www/html/univadmin/src/tdvsdecoding.php

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

    function getTDVSBoardDetails($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $deggrp = $aobj_context->mobj_data['deggrp'];
        if($deggrp !== "undefined"){
            if($deggrp === "All"){
                $cond = "";
            }else{
                $cond = "where fdeggrp = '{$deggrp}'";
            } 
        }else{
            $cond = "";
        }

        $query="select ifnull(fboard,'')as fboard, 
                ifnull(fboardname,'')as fboardname 
                from tdvs_masboard {$cond}  order by fboard like 'UG%' desc";
        $result = $aobj_context->pobj_db->GetAll($query);
        if($result)
        {
        echo $aobj_context->mobj_output->ToJSONEnvelope($result,0,"success"); 
        }
        else
        {
        $arr['msg'] = 'No Boards details found';
        echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 	
        }	
    }

    function getTdvsQPDetails($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $board = $aobj_context->mobj_data['board'];
        $deggrp = $aobj_context->mobj_data['deggrp'];

        if($deggrp !== "undefined"){
            if($deggrp === "All"){
                $cond = "";
            }else{
                $cond = "and fdeggrp = '{$deggrp}'";
            }
        }else{
            $cond = "";
        }

        if($board !== "undefined"){
            if($board === "All"){
                $condboard = "";
            }else{
                $condboard = "where fboard='{$board}'";
            }
        }else{
            $condboard = "where fboard='{$board}'";
        }
        

        $query = "select distinct ifnull(m.fqpcode,'')as fqpcode, 
                  ifnull(m.fsubname, '')as fsubname from tdvs_masqp m
                  inner join tdvs_tabhead t
                  on t.fqpcode = m.fqpcode
			      {$condboard} {$cond}";

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

    function getTDVSQpPdfDet($aobj_context)
    {
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $board = $aobj_context->mobj_data['board'];
        $qpcode = $aobj_context->mobj_data['qpcode'];
        $userid = $aobj_context->mobj_data['userid'];
        $enter = $aobj_context->mobj_data['enter'];
      
        // if($enter == 2){
        //     $qur = "select count(*) as count 
        //     from tdvs_tabhead where fqpcode='{$qpcode}'
        //     and ifnull(fstatus,'') <>'C'";
          
        //     $res = $aobj_context->pobj_db->GetRow($qur);
          
        //     if($res['count'] > 0){
        //         $arr['msg'] = 'First Enter Not Completed';
        //         echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
        //         return;
        //     }
        // }
    
        if($enter == 1){
            $cond = "and (ifnull(fstatus,'') = '' or ifnull(fstatus,'') = 'A')";
        }elseif ($enter == 2){
            $cond = "and ifnull(fstatus,'') = 'C' and (ifnull(fstatus2,'') = '' or ifnull(fstatus2,'') = 'A')";
        }

        $qry = "select count(*)as count from tdvs_tabhead where fqpcode = '{$qpcode}'
                $cond";
        //var_dump($qry);

        $res = $aobj_context->pobj_db->GetRow($qry);
        
        if($res['count'] == 0){
        
                $arr['msg'] = 'No Script found for decoding';
                echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
                return;
        }

        if($enter == 1){
            $cond1 = "ifnull(t.fstatus,'')='A'";
            $us = "fuser";
        }elseif ($enter == 2){
            $cond1 = "ifnull(t.fstatus2,'')='A' and ifnull(t.fstatus,'')='C'";
            $us = "fuser2";
        }

        $qrydata = "select t.ffilepath, t.fuserid, t.fstatus, t.fregcode, m.fsubname, FFILFRMSER, ifnull(ffilepreix, 'https://app.universitysolutions.in/eval-img/')as ffileprefix from 
                    tdvs_tabhead t inner join tdvs_masqp m on m.fqpcode = t.fqpcode
                    where t.fqpcode='{$qpcode}' and {$us} = '{$userid}'
                    and $cond1 limit 1";
        
                    // var_dump($qrydata);die();
        $resdata = $aobj_context->pobj_db->GetRow($qrydata); 
        

        if($resdata){
            if($resdata ['ffileprefix'] == "https://answer-booklets.s3.ap-south-1.amazonaws.com/eval-img/"){
                $filepath = getAnswerBookletsFromS3($resdata['ffilepath']);
                $resdata['filefroms3'] = $filepath;
                $resdata['filedata'] = 'S3';
            }
            echo $aobj_context->mobj_output->ToJSONEnvelope($resdata,0,"success");
            return;
        }

        if($enter == 1){
            $cond2 = "fuser, fcreatedate";
        }elseif ($enter == 2){
            $cond2 = "fuser2, fcreatedate2";
        }
        $qryins = "insert ignore into tdvs_dcuser($cond2) 
                values('{$userid}', now())";
        $resins = $aobj_context->pobj_db->Execute($qryins);
        // var_dump($resins);
        if($resins)
        {
            // var_dump($enter);die();
            if($enter == 1){
                $cond3 = "fuser";
            }elseif ($enter == 2){
                $cond3 = "fuser2";
            }
            $getins = "select fid from tdvs_dcuser where $cond3 ='{$userid}'";
            $resGetins = $aobj_context->pobj_db->GetRow($getins);

            $fid = $resGetins["fid"];

            if($enter == 1){
                $cond4 = "and ifnull(t.fstatus,'')<>'C' and ifnull(t.fstatus,'')<>'A'";
            }elseif ($enter == 2){
                $cond4 = "and ifnull(t.fstatus2,'')<>'C' and ifnull(t.fstatus2,'')<>'A'";
            }

            $qrydata = "select t.ffilepath, t.fuserid, t.fstatus, t.fregcode, m.fsubname, FFILFRMSER, ifnull(ffilepreix, 'https://app.universitysolutions.in/eval-img/')as ffileprefix from 
                        tdvs_tabhead t inner join tdvs_masqp m on m.fqpcode = t.fqpcode
                        where t.fqpcode='{$qpcode}' 
                        $cond4
                        limit 1";
            
            $resdata = $aobj_context->pobj_db->GetRow($qrydata);

            $regcode = $resdata['fregcode']; 

            if(count($resdata)>0){
                if($enter == 1){
                    $updStatus = "update tdvs_tabhead set FUSERID='{$fid}', FUSER='{$userid}', 
                            FSTATUS = 'A' where fregcode='{$regcode}' 
                            and fqpcode='{$qpcode}'";
                }elseif($enter ==2){
                    $updStatus = "update tdvs_tabhead set FUSERID2='{$fid}', FUSER2='{$userid}', 
                            FSTATUS2 = 'A' where fregcode='{$regcode}' 
                            and fqpcode='{$qpcode}'";
                            
                }

                $resUpdStatus = $aobj_context->pobj_db->Execute($updStatus);

                if($resdata ['ffileprefix'] == "https://answer-booklets.s3.ap-south-1.amazonaws.com/eval-img/"){
                    $filepath = getAnswerBookletsFromS3($resdata['ffilepath']);
                    $resdata['filefroms3'] = $filepath;
                    $resdata['filedata'] = 'S3';
                }
                echo $aobj_context->mobj_output->ToJSONEnvelope($resdata,0,"success"); 
                return;
            }
            else{
                $arr['msg'] = 'No Script found for decoding';
                echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
                return;
            }
        }
        else
        {
                $arr['msg'] = 'Please try after some time';
                echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
                return;
        }
    }

    function getTDVSStudentDeatils($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $regno = $aobj_context->mobj_data['regno'];
        
        $query = "select ifnull(fname, '')as fname,ifnull(fstudid,'') as fstudid,
                  ifnull(fregno,'') as fregno 
                  from student where (fregno= '{$regno}' or fstudid = '{$regno}')";
                  
        $res = $aobj_context->pobj_db->GetRow($query);  
        
        if($res){
            echo $aobj_context->mobj_output->ToJSONEnvelope($res,0,"success"); 
        }else{
            if($univcode == '053' || $univcode == '098')
            {
                $query = "select '' as fname,'{$regno}' as fstudid,
                '{$regno}' as fregno 
                from student limit 1";
                
                 $res = $aobj_context->pobj_db->GetRow($query);  

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

    function saveTDVSDecoding($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $regcode = $aobj_context->mobj_data['regcode'];
        $ansbook = $aobj_context->mobj_data['ansbook'];
        $qpcode = $aobj_context->mobj_data['qpcode'];
        $regnos = strtoupper($aobj_context->mobj_data['regno']);
        $user = $aobj_context->mobj_data['user'];
        $reject = $aobj_context->mobj_data['rejected'];
        $remarks = $aobj_context->mobj_data['remarks'];
        $enter = $aobj_context->mobj_data['enter'];
        $fstudid = $aobj_context->mobj_data['fstudid'];
        $regno = $aobj_context->mobj_data['fregno'];
        
        $query = "select fexamtype,fyear from tdvs_tabhead where fqpcode='{$qpcode}' and fregcode = '{$regcode}'";
        
        $result1 = $aobj_context->pobj_db->GetRow($query);
        $fexamtype = $result1['fexamtype'];
        $fyear = $result1['fyear'];

        if(strtolower($reject)!="rejected"){
            // if($univcode != '053'){
            //     $studqry = "select fregno,fstudid from student  
            //             where (fregno= '{$regnos}' or fstudid = '{$regnos}')";
            //     $resstud = $aobj_context->pobj_db->GetRow($studqry);
            //     $regno = $resstud['fregno'];
            //     $fstudid = $resstud['fstudid'];
            //     if(strtoupper($resstud['fregno']) != strtoupper($regno)){
            //         $arr['msg'] = "Enter valid Register Number";
            //         echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"Failure"); 
            //         return;
            // // }   
            // }
            if($enter == 1){
                $fregno = "fregno";
            }elseif($enter == 2){
                $fregno = "fregno2";
            }

            $query = "select fregcode from tdvs_tabulate where $fregno='{$regno}'
                    and fqpcode='{$qpcode}'";
                    
            $res = $aobj_context->pobj_db->GetRow($query); 

            if(count($res)>0){
                $arr['msg'] = "Decoding Completed against Reg Code ".$res["fregcode"];
                echo $aobj_context->mobj_output->ToJSONEnvelope($arr,0,"success"); 
                return;
            }else{
                if($enter == 1){
                    $con = "fuser";
                    $con2 = "fstatus";
                }elseif($enter == 2){
                    $con = "fuser2";
                    $con2 = "fstatus2";
                }

                if($enter == 1){
                    $query = "insert into tdvs_tabulate
                        (fregcode, fqpcode, FREGNO, fansbook,fsysdate,fuser,fstudid,fyear,fexamtype)
                        values('{$regcode}','{$qpcode}','{$regno}','{$ansbook}',now(),'{$user}','{$fstudid}','{$fyear}','{$fexamtype}')";
                       
                }elseif($enter == 2){
                    $query = "update tdvs_tabulate set FREGNO2 = '{$regno}', fansbook2 = '{$ansbook}',
                        fsysdate2 = now(), fuser2 = '{$user}',fstudid2 = '{$fstudid}'
                        where fregcode = '{$regcode}' and fqpcode = '{$qpcode}'";
                }

                $res = $aobj_context->pobj_db->Execute($query);
                if($res){
                    //update status
                    $qryUpd = "update tdvs_tabhead set $con2 = 'C'
                            where fqpcode='{$qpcode}' and fregcode = '{$regcode}' and  $con = '{$user}'";
                    
                            
                    $resUpd = $aobj_context->pobj_db->Execute($qryUpd); 

                    if($resUpd){
                        $qrydlt = "delete from tdvs_dcuser where $con='{$user}'";
                        $resdlt = $aobj_context->pobj_db->Execute($qrydlt);
                    } 
                }
                // getTDVSQpPdfDet($aobj_context);
            }
        }else{
            if($enter == 1){
                $con = "fstatus";
                $con2 = "FREMARKS";
                $con3 = "freject";
            }elseif($enter == 2){
                $con = "fstatus2";
                $con2 = "FREMARKS2";
                $con3 = "FREJSTATUS2";
            }
            // freject2
            $query = "update tdvs_tabhead set $con3='T', $con='C', $con2 = '{$remarks}'
                        where fqpcode='{$qpcode}' and fregcode='{$regcode}'";
            
                        // var_dump($query);die();
            $res = $aobj_context->pobj_db->Execute($query); 

            if(!$res){
                $arr['msg'] = "Something went wrong";
                echo $aobj_context->mobj_output->ToJSONEnvelope($arr, -1, "failure"); 
                return;
            }
        }          
    }

    function getTdvsAnsBookDet($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $ansbook = $aobj_context->mobj_data['ansbook'];
        $enter = $aobj_context->mobj_data['enter'];
        if($ansbook == ""){
            return;
        }
        if($enter == 1){
            $cond1 = "ifnull(fansbook,'') as fansbook";
            $cond2 = "FREGNO";
            $cond3 = "ifnull(fansbook,'')";
        }elseif($enter == 2){
            $cond1 = "ifnull(fansbook2,'') as fansbook2";
            $cond2 = "FREGNO2";
            $cond3 = "ifnull(fansbook2,'')";
        }
        
        $query = "select fregcode, $cond1, $cond2 
                  from tdvs_tabulate where $cond3='{$ansbook}'";
        
        $res = $aobj_context->pobj_db->GetRow($query);
    
        if(count($res)>0){
            $arr['msg'] = "Decoding Completed against Reg Code ".$res["$cond"]." and Reg. No. is ".$res["$cond2"];
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"Failure"); 
            return;
        }
    }

    function getTDVSRegCode($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $regcode = $aobj_context->mobj_data['regcode'];

        $decoded = "select fregcode, FREGNO, fansbook, fqpcode
                    from tdvs_tabulate where fregcode='{$regcode}'";
        $resdecoded = $aobj_context->pobj_db->GetRow($decoded);

        if($resdecoded['fregcode'] == $regcode){
            $arr['msg'] = "decoded done against Reg. no. ".$resdecoded['FREGNO']." and QP Code ".$resdecoded['fqpcode'];
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
            return;
        }else{
            $query = "select ffilepath, fqpcode, fregcode, ifnull(FFILFRMSER, '')as FFILFRMSER, 
                      ifnull(ffilepreix, 'https://app.universitysolutions.in/eval-img/')as ffileprefix 
                      from tdvs_tabhead where fregcode='{$regcode}'";
  
            $res = $aobj_context->pobj_db->GetRow($query);
            if($res){
                if($res ['ffileprefix'] == "https://answer-booklets.s3.ap-south-1.amazonaws.com/eval-img/"){
                    $filepath = getAnswerBookletsFromS3($res['ffilepath']);
                    $res['filefroms3'] = $filepath;
                    $res['filedata'] = 'S3';
                }
                echo $aobj_context->mobj_output->ToJSONEnvelope($res,0,"success"); 
                return;
            }
        }
    }

    function saveMissedRegcode($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $regcode = $aobj_context->mobj_data['regcode'];
        $ansbook = $aobj_context->mobj_data['ansbook'];
        $qpcode = $aobj_context->mobj_data['qpcode'];
        $regnos = $aobj_context->mobj_data['regno'];
        $user = $aobj_context->mobj_data['user'];
        $reject = $aobj_context->mobj_data['rejected'];
        $remarks = $aobj_context->mobj_data['remarks'];

        $selectQry = "select fregcode,fyear,fexamtype 
                    from tdvs_tabhead where fregcode = '{$regcode}'";
        $res1 = $aobj_context->pobj_db->GetRow($selectQry);
        $fyear = $res1['fyear'];
        $fexamtype = $res1['fexamtype'];

        $query = "select ifnull(fname, '')as fname,ifnull(fstudid,'') as fstudid,
                  ifnull(fregno,'') as fregno 
                  from student where (fregno= '{$regnos}' or fstudid = '{$regnos}')";
                  
        $res = $aobj_context->pobj_db->GetRow($query); 
        $regno =  $res['fregno'];
        $fstudid =  $res['fstudid'];

        $selectQry = "select * from tdvs_tabulate where fansbook = '{$ansbook}'";
        $resQry = $aobj_context->pobj_db->GetRow($selectQry);

        if($resQry){
                $arr['msg'] = "Ansbook already present against Regcode. ".$resQry['fregcode']." and Regno. ".$resQry['FREGNO'];
                echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"success"); 
                return;
            }

        if($reject != "Rejected"){
            $query = "insert into tdvs_tabulate
                (fregcode, fqpcode, FREGNO, fansbook,fsysdate,fuser,fyear,fexamtype,fstudid)
                values('{$regcode}','{$qpcode}','{$regno}','{$ansbook}',now(),'{$user}','{$fyear}','{$fexamtype}','{$fstudid}')";
                
            $res_reg = $aobj_context->pobj_db->Execute($query);
            
            if($res_reg){
                $qryUpd = "update tdvs_tabhead set fstatus = 'C', fuser = '{$user}' 
                        where fqpcode='{$qpcode}' and fregcode = '{$regcode}'";
                      
                $resUpd = $aobj_context->pobj_db->Execute($qryUpd); 

                if($resUpd){
                    $qrydlt = "delete from tdvs_dcuser where fuser='{$user}'";
                    $resdlt = $aobj_context->pobj_db->Execute($qrydlt);
                    $arr['msg'] = "Decode Completed";
                    echo $aobj_context->mobj_output->ToJSONEnvelope($arr,0,"success"); 
                    return;
                }
            }
        }else{
            $query = "update tdvs_tabhead set freject='T', fstatus='C', FREMARKS='{$remarks}', fuser='{$user}'
                      where fqpcode='{$qpcode}' and fregcode='{$regcode}'";
            $resUpd = $aobj_context->pobj_db->Execute($query); 
            $arr['msg'] = "Reject status Completed";
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-2,"success"); 
            return;
        }
    }

    function getTotalDecodedScripts($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $qpcode = $aobj_context->mobj_data['qpcode'];
        $enter = $aobj_context->mobj_data['enter'];
        
        if($enter == 1){
            $con1 = "count(if(fstatus = 'C',fstatus,null))as Completed, 
            (count(*) - count(if(fstatus = 'C',fstatus,null)))as Remaining";
        }elseif($enter == 2){
            $con1 = "count(if(fstatus2 = 'C',fstatus2,null))as Completed2, 
            (count(*) - count(if(fstatus2 = 'C',fstatus2,null)))as Remaining2";
        }

        $query="select fqpcode,count(*)as Total, $con1
                from tdvs_tabhead where fqpcode='{$qpcode}'";
        
        $res = $aobj_context->pobj_db->GetRow($query);      
        if($res){
            echo $aobj_context->mobj_output->ToJSONEnvelope($res,0,"success"); 
            return;
        }          
    }

    function getQPVerificationDet($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $deggrp = $aobj_context->mobj_data['deggrp'];
        $board = $aobj_context->mobj_data['board'];
        $qpcode = $aobj_context->mobj_data['qpcode'];
        $type = $aobj_context->mobj_data['type'];
        $limit = $aobj_context->mobj_data['limit'];

        if($deggrp === "All"){
            $degcond = "";
        }else{
            $degcond = "and m.fdeggrp = '{$deggrp}'";
        }

        if($board === "All"){
            $boardcond = "";
        }else{
            $boardcond = "and  fboard='{$board}'";
        }

        if($type === "All"){
            $condtype = "";
        }else if($type === "Verified"){
            $condtype = "and FVERSTATUS = 'Approved'";
        }else if($type === "Pending"){
            $condtype = "and ifnull(FVERSTATUS,'') <> 'Approved' and ifnull(FVERSTATUS,'') <> 'Rejected'";
        }else if($type === "Rejected"){
            $condtype = "and FVERSTATUS = 'Rejected'";
        }

        if($limit === "All"){
            $cond="";
        }else{
            $cond = "limit $limit";
        }

        $query="select t.FQPCODE, FREGCODE, FFILEPATH, FVERSTATUS, FVERREMARKS from tdvs_tabhead t inner join tdvs_masqp m 
                on m.fqpcode = t.fqpcode where t.fqpcode = '{$qpcode}' {$degcond} {$boardcond} {$condtype} $cond" ;

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

    function verifyRegcode($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $data = json_decode($aobj_context->mobj_data['data'], true);

        foreach($data as $val){
            $query="update tdvs_tabhead set FVERSTATUS = '{$val['status']}', FVERDATE = now(),
                FVERBY = '{$val['user']}', FVERREMARKS = '{$val['remarks']}' where
                FQPCODE = '{$val['qpcode']}' and FREGCODE = '{$val['regcode']}'";
                
            $res = $aobj_context->pobj_db->Execute($query); 

            if($val['status'] === 'Rejected'){
                $qry = "update tdvs_tabhead set FVERSTATUS = '{$val['status']}', FVERREMARKS = '{$val['remarks']}'
                          where FQPCODE = '{$val['qpcode']}' and FREGCODE = '{$val['regcode']}'";
                $result = $aobj_context->pobj_db->Execute($qry); 
            }
        }
             
        if($result){
            $arr['msg'] = "Saved Successfully";
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,0,"success"); 
            return;
        }else{
            $arr['msg'] = "No data found";
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
            return;
        }          
    }

    function updateRegCode($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $regcode = $aobj_context->mobj_data['regcode'];

        $decoded = "select lat.fregcode, lat.FREGNO, lat.fansbook, 
        lat.fqpcode,hed.ffilepath,hed.fqpcode, FFILFRMSER,
        ifnull(hed.ffilepreix, 'https://app.universitysolutions.in/eval-img/')as ffileprefix  
        from tdvs_tabulate lat inner join tdvs_tabhead hed 
        on lat.fregcode = hed.fregcode and lat.fregcode = hed.fregcode
        where lat.fregcode='{$regcode}'";
        
        $resdecoded = $aobj_context->pobj_db->GetRow($decoded);

        if($resdecoded){
            if($resdecoded ['ffileprefix'] == "https://answer-booklets.s3.ap-south-1.amazonaws.com/eval-img/"){
                $filepath = getAnswerBookletsFromS3($resdecoded['ffilepath']);
                $resdecoded['filefroms3'] = $filepath;
                $resdecoded['filedata'] = 'S3';
            }
            echo $aobj_context->mobj_output->ToJSONEnvelope($resdecoded,0,"success"); 
            return;
        }else{
            $arr['msg'] = "No data found";
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
            return;
        }    
    }

    function getNameRegNo($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $regno = $aobj_context->mobj_data['regno'];

        $query = "select ifnull(fname, '')as fname,ifnull(fstudid,'') as fstudid 
                  from student where fregno='{$regno}'";
        $res = $aobj_context->pobj_db->GetRow($query);  
        
        if($res){
            echo $aobj_context->mobj_output->ToJSONEnvelope($res,0,"success"); 
        }else{
             $arr['msg'] = 'No Student data found';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
        }
    }

    function saveUpdatedRegNo($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $regcode = $aobj_context->mobj_data['regcode'];
        $ansbook = $aobj_context->mobj_data['ansbook'];
        $qpcode = $aobj_context->mobj_data['qpcode'];
        $regno = $aobj_context->mobj_data['regno'];
        $user = $aobj_context->mobj_data['user'];
        $entrytyp = $aobj_context->mobj_data['entrytyp'];
        $studid = $aobj_context->mobj_data['studid'];
       
        if($entrytyp == 1){
            $query = "update tdvs_tabulate set fansbook = '{$ansbook}', FREGNO = '{$regno}',
                    fsysdate = now(),fuser = '{$user}',FSTUDID = '{$studid}' 
                    where fqpcode='{$qpcode}' and fregcode = '{$regcode}'";
                   
        }elseif($entrytyp == 2){
            $query = "update tdvs_tabulate set fansbook2 = '{$ansbook}', FREGNO2 = '{$regno}',
            fsysdate2 = now(),fuser2 = '{$user}' ,FSTUDID2 = '{$studid}'
            where fqpcode='{$qpcode}' and fregcode = '{$regcode}'";
        }
        
        $res_reg = $aobj_context->pobj_db->Execute($query);
        if($res_reg){
            $arr['msg'] = 'Successfully Update';
            $arr['code'] = '0';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,0,"success"); 
        }else{
             $arr['msg'] = 'Not Updated';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
        }
    }

    function saveUpdatedRegAnsNo($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $regcode = $aobj_context->mobj_data['regcode'];
        $reg1 = $aobj_context->mobj_data['reg1'];
        $qpcode = $aobj_context->mobj_data['qpcode'];
        $reg2 = $aobj_context->mobj_data['reg2'];
        $user = $aobj_context->mobj_data['user'];
        $ans1 = $aobj_context->mobj_data['ans1'];
        $ans2 = $aobj_context->mobj_data['ans2'];
        $type = $aobj_context->mobj_data['type'];

        
        
        if($reg1 === $reg2){
            $qry = "select fstudid from student where fregno ='{$reg1}'";
            $stud = $aobj_context->pobj_db->GetRow($qry);
            $studid = $stud['fstudid'];
        }else{
            $arr['msg'] = 'Reg no 1 and Reg no 2 Miss Match';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
            return;
        }

        if($type !== "Regno"){
            if($ans1 != $ans2){
                $arr['msg'] = 'Ans Book no 1 and Ans Book no 2 Miss Match';
                echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
                return;
            }
        }           

        $query = "update tdvs_tabulate set fansbook = '{$ans1}', FREGNO = '{$reg1}',fstudid = '{$studid}',
                fansbook2 = '{$ans2}', FREGNO2 = '{$reg2}',fstudid2 = '{$studid}',
                fsysdate = now(),fuser = '{$user}' 
                where fqpcode='{$qpcode}' and fregcode = '{$regcode}'";
            //    var_dump($query);die();
        $res_reg = $aobj_context->pobj_db->Execute($query);
        if($res_reg){
            $arr['msg'] = 'Successfully Update';
            $arr['code'] = '0';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,0,"success"); 
        }else{
             $arr['msg'] = 'updation failed';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
        }
    }


    function decodingData($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $qpcode = $aobj_context->mobj_data['qpcode'];
        $typ = $aobj_context->mobj_data['typ'];
        $from = $aobj_context->mobj_data['from'];
        $to = $aobj_context->mobj_data['to'];

        if($typ == "All"){
            $cnd = "";
        }
        if($typ == "C"){
            $cnd = "and ifnull(t.fverifystatus,'') = 'T'";
        }
        if($typ == "P"){
            $cnd = "and ifnull(t.fverifystatus,'F') = 'F'";
        }

        $query = "select  t.fregcode, t.fansbook, t.fregno, s.fname,t.fverifystatus,
        h.ffilepath, ifnull(h.FFILFRMSER, 'F')as FFILFRMSER,
        ifnull(h.ffilepreix, 'https://app.universitysolutions.in/eval-img/')as ffileprefix   
        from tdvs_tabulate t
        inner join student s on t.fregno = s.fregno 
        inner join tdvs_tabhead h on h.fregcode = t.fregcode
        where t.fqpcode = '{$qpcode}' $cnd limit {$to} OFFSET {$from};";
    
        $result = $aobj_context->pobj_db->getAll($query);
        
        if($result){
            echo $aobj_context->mobj_output->ToJSONEnvelope($result,0,"success"); 
        }else{
             $arr['msg'] = 'No Decoded data found';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
        }
    }

    function saveVerifyDecode($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $mob = $aobj_context->mobj_data["mob"];
        $req = $aobj_context->req_body;
        $data = $req['data'];
        $table = $data['table'];
        $userid = $data['userid'];
        $qpcode = $data['qpcode'];
        
        $date = date('Y-m-d H:i:s');
        
    
        foreach ($table as $k => $v) {
            if($v['fverifystatus'] === 'T'){
                $valCond = 'T';
            }else{
                $valCond = '';
            }
            $query = "UPDATE tdvs_tabulate
            SET fverifystatus='{$valCond}', fverifyuser='{$mob}', fverifydate= now()
            WHERE fregno='{$v['fregno']}'";
        
            $result = $aobj_context->pobj_db->Execute($query);
        }
        
        if($result){
            $arr['msg'] = 'Updated Success';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,0,"Success"); 
        }
        else{
            $arr['msg'] = 'Update Failed';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 	
        }	
    }

    function getDecodeDiff($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $board = $aobj_context->mobj_data['board'];
        $qpcode = $aobj_context->mobj_data['qpcode'];
        $type = $aobj_context->mobj_data['type'];
       
        if($board == "All"){
            $cnd = "";
        }else{
            $cnd = "and mas.fboard = '{$board}'";
        }

        if($qpcode == "All"){
            $cnd1 = "";
        }else{
            $cnd1 = "and tab.fqpcode = '{$qpcode}'";
        }

        if($type == "Ans"){
            $cond = "tab.fansbook != tab.fansbook2";
        }else if($type == "Regno"){
            $cond = "tab.fregno != tab.fregno2";
        }else{
            $cond = "(tab.fregno != tab.fregno2 or tab.fansbook != tab.fansbook2)";
        }
       
        $query = "select mas.fboard, tab.fqpcode, tab.fregcode, tab.fregno, tab.fansbook,
                tab.fregno2, tab.fansbook2, hed.FFILEPATH,ifnull(tab.FSTUDID,'') as FSTUDID,
                ifnull(tab.fstudid2,'') as fstudid2, FFILFRMSER,
                ifnull(hed.ffilepreix, 'https://app.universitysolutions.in/eval-img/')as ffileprefix  
                from tdvs_tabulate tab inner join tdvs_masqp mas on tab.fqpcode = mas.fqpcode
                inner join tdvs_tabhead hed on mas.fqpcode = hed.fqpcode and
                tab.fqpcode = hed.fqpcode and tab.fregcode = hed.fregcode
                where $cond $cnd $cnd1";
       
        $result = $aobj_context->pobj_db->getAll($query);
        
        if($result){
            echo $aobj_context->mobj_output->ToJSONEnvelope($result,0,"success"); 
        }else{
             $arr['msg'] = 'No data mismatch';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
        }
    }

    function getTdvsCountData($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $entry = $aobj_context->mobj_data['entry'];
        $status = $aobj_context->mobj_data['status'];
        $board = $aobj_context->mobj_data['board'];
        $qpcode = $aobj_context->mobj_data['qpcode'];

        if($board === "All"){
            $boardCond = "ifnull(m.fboard, '')<>''";
        }else{
            $boardCond = "m.fboard='{$board}'";
        }

        if($entry == "1"){
            $cond = "fstatus";
        }else{
            $cond = "fstatus2";
        }

        if($status === "Pending"){
            $statusCond = "and (ifnull($cond,'A')='A' or $cond = '')";
        }else if($status === "Completed"){
            $statusCond = "and ifnull($cond,'')='C'";
        }else if($status === "All"){
            $statusCond = "";
        }

        if($qpcode === "All"){
            $qpcond = "";
        }else{
            $qpcond = "and h.fqpcode='{$qpcode}'";
        }

        $query = "update tdvs_tabhead th, tdvs_tabulate tb set th.FSTATUS = 'C'
        where th.fregcode = tb.fregcode
        and th.fqpcode = tb.fqpcode
        and ifnull(tb.fregno,'') <> ''";
        $result = $aobj_context->pobj_db->Execute($query);

        $query = "update tdvs_tabhead th, tdvs_tabulate tb set th.FSTATUS2 = 'C'
        where th.fregcode = tb.fregcode
        and th.fqpcode = tb.fqpcode
        and ifnull(tb.fregno2,'') <> ''";
        $result = $aobj_context->pobj_db->Execute($query);

        // $query = "update tdvs_tabhead set fstatus='' 
        // where ifnull(fstatus,'')='C' and fregcode not in (select fregcode from tdvs_tabulate)";
        // $result = $aobj_context->pobj_db->Execute($query);

        // $query = "update tdvs_tabhead set fstatus2='' 
        // where ifnull(fstatus2,'')='C' and fregcode in (select fregcode from tdvs_tabulate 
        // where ifnull(fregno2,'')='')";
        // $result = $aobj_context->pobj_db->Execute($query);

        $query = "select m.fboard, h.fqpcode, m.fsubname, m.fboard,
                  count(ifnull($cond, ''))as total,
                  sum(case when ifnull($cond, '')= 'C' then 1 else 0 end)as Completed,
                  sum(case when (ifnull($cond, 'A')= 'A' or $cond = '') then 1 else 0 end)as Pending
                  from tdvs_tabhead h 
                  inner join tdvs_masqp m on m.fqpcode = h.fqpcode 	
                  where {$boardCond} {$qpcond} {$statusCond}
                  group by fqpcode;";
        // var_dump($query);
        // die();
        $result = $aobj_context->pobj_db->getAll($query);

        if($result){
            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 releaseDecodeData($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $entry = $aobj_context->mobj_data['entry'];
        $board = $aobj_context->mobj_data['board'];
        $qpcode = $aobj_context->mobj_data['qpcode'];
        
        if($entry == '1'){
            $cond = 'FSTATUS';
            $cond1 = 'FUSER';
        }else{
            $cond = 'FSTATUS2';
            $cond1 = 'FUSER2';
        }

        $query = "update tdvs_tabhead set {$cond} = '',{$cond1} = ''
                 where fqpcode = '{$qpcode}' and {$cond} = 'A'";
                 
        $result = $aobj_context->pobj_db->Execute($query);

        if($result){
            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 getUUCMSDeggr($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];

        $query = "select fdeggrp,concat(fdeggrp,'-',fexamdate) as fexamdate,
        fyear,fexamtype from deggrp where ifnull(fdeleted,'F') = 'F'";
                 
        $result = $aobj_context->pobj_db->GetAll($query);

        if($result){
            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 upldUUCMSFile($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $file = $_FILES['file'];
        $fexamno = $aobj_context->mobj_data['fexamdate'];
        $split = explode("*",$fexamno);
        $fdeggrp = $split[0];
        $fexamdate = $split[1];
        $fyear = $split[2];
        $fexamtype = $split[3];

        $date = date("Ymdhis");
        $filename = $date." - ".$file['name'];
        $filedata = $file['tmp_name'];
        $values = '';
        
        $columns = 'FREGCODE,FEXAMDATE,FQPCODE,FREGNO,FSTUDNAME,FPACKET,FENCODED,FLOGDATE';
        
        if(move_uploaded_file($filedata, 'upload/'.$filename)){
            $file = $aobj_context->main_src.'upload/'.$filename;
            
            if(!file_exists($file)){
                $data = "Upload failure. Upload file does not exist";
				echo $aobj_context->mobj_output->ToJSONEnvelope($data, -1, "failure"); 
				return;
            }else{

                $query1 = "drop table if exists uucmstemptab";
                $result1 = $aobj_context->pobj_db->Execute($query1);

                $query2 = "create table uucmstemptab(FREGCODE varchar(25) primary key ,FEXAMDATE varchar(50),
                FQPCODE varchar(12),FREGNO varchar(20),FSTUDNAME varchar(50),FPACKET varchar(5),FENCODED varchar(50),FLOGDATE DATETIME)";
                $result2 = $aobj_context->pobj_db->Execute($query2);
                

                $xlsFile = $file;
                $handle = fopen($xlsFile, "r");

                if ($handle === false) {
                    die("Error opening file");
                }

                $i=0;
                $date = date("Ymdhis");
                $curdate = $date;
                
                while (($data = fgetcsv($handle)) !== false) {
                    // var_dump($data);
                    $ecode = str_pad($data[6], 2, '0', STR_PAD_LEFT);
                    $regcode = $data[2].$data[5].$ecode;
                    // var_dump($ecode,ctype_digit($regcode),$regcode);
                    if(ctype_digit($regcode)){
                        $name = str_replace("'","",$data[4]);

                        $values .="('{$regcode}','{$data[1]}','{$data[2]}','{$data[3]}','{$name}', '{$data[5]}','{$data[6]}','{$curdate}'),";   
                    }
                    $i++;
                }
                // die();
            }
        }

        $values = rtrim($values, ",");
        $sql = "INSERT INTO uucmstemptab ($columns) VALUES $values";
        
        $result = $aobj_context->pobj_db->Execute($sql);

        if($result){
            $sql = "insert IGNORE into tabulate(FDEGREE,FEXAMNO,FREGNO,FSUBCODE,FREGCODE,FQPCODE,FYEAR,FEXAMTYPE,FLOGDATE,FPACKET)
            select distinct su.fdegree,su.fexamno,u.fregno,su.fsubcode,FREGCODE as fregcode,
            su.fqpcode,'{$fyear}','{$fexamtype}',FLOGDATE,FPACKET
            from uucmstemptab u 
            left join subject su on u.fqpcode = su.fqpcode
            group by FREGCODE";

            $result1 = $aobj_context->pobj_db->Execute($sql);   
            
            $getCount = "select count(*) as totrecord 
            from tabulate where flogdate = '{$curdate}'";
            $coutres = $aobj_context->pobj_db->GetRow($getCount);
            $totcount = $coutres['totrecord'];

            if($result1){
                $getInsterData = "SELECT count(T.FREGNO)as mismatch,
                '$totcount' as totrecord FROM tabulate T 
                INNER JOIN uucmstemptab U ON T.FREGCODE = U.FREGCODE
                WHERE U.FREGNO <> T.FREGNO;";
                
                $result2 = $aobj_context->pobj_db->GetRow($getInsterData); 
            }
            echo $aobj_context->mobj_output->ToJSONEnvelope($result2,0,"success"); 
            return;
        }else{
            $arr['msg'] = 'No data found';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
            return;
        }
    }

    function getQPCodeVal($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $fyear = $aobj_context->mobj_data['fyear'];
        $fexamno = $aobj_context->mobj_data['fexamno'];
        $fdeggrp = $aobj_context->mobj_data['fdeggrp'];
        
        if($fdeggrp == NULL){
            $query = "select distinct tu.FQPCODE, concat(tu.FQPCODE, ' - ', s.fsubname) as fsubname
            from tabulate tu
            inner join subject s on tu.fqpcode = s.fqpcode 
            and tu.fdegree = s.fdegree
            and tu.fsubcode = LEFT(s.fcsubcode, 4)
            where FYEAR ='{$fyear}' and FEXAMTYPE = '{$fexamno}'";
        }else{
            $query = "select su.FQPCODE, concat(su.FQPCODE, ' - ', su.fsubname) as fsubname 
            from subject su inner join degree dg on su.fdegree = dg.fdegree
            and dg.fexamno = su.fexamno
            where dg.fdeggrp = '{$fdeggrp}'
            and ifnull(fqpcode,'') <> ''";
        }

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

        if($result){
            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 getUUCMSQPData($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $fyear = $aobj_context->mobj_data['fyear'];
        $fexamno = $aobj_context->mobj_data['fexamno'];
        $fqpcode = $aobj_context->mobj_data['fqpcode'];
        $fpacketNo = $aobj_context->mobj_data['fpacketNo'];
        $verftype = $aobj_context->mobj_data['verftype'];
        $mismatchTyp = $aobj_context->mobj_data['mismatchTyp'];
        $cond = "";
        $cond1 = "";
        $cond2 = "";
        $cond3 = "";

        if($fqpcode != 'All')
            $cond = "AND TU.FQPCODE = '{$fqpcode}'";
        
        if($fpacketNo != 'All')
            $cond1 = "AND TU.FPACKET = '{$fpacketNo}'";

        if($verftype == 'Pending')
            $cond2 = "AND IFNULL(TU.FVERFIY,'') <> 'T'";
        else if($verftype == "Verfication")
            $cond2 = "AND IFNULL(TU.FVERFIY,'') = 'T'";
        
        if($mismatchTyp == 'Mismatch')
            $cond3 = "AND (TU.FLREGNO <> RIGHT(TU.FREGNO,2)
                    OR TU.FSLNO <> RIGHT(TU.FREGCODE,2))";

        $query = "SELECT COUNT(DISTINCT TU.FREGNO) AS TOTSTUD,TU.FPACKET,
                TU.FQPCODE,S.FSUBCODE,
                CONCAT(TU.FSUBCODE,' - ', S.FSUBNAME) AS fsubname,
                SUM(IF(IFNULL(TU.FVERFIY,'') = 'T',1,0)) AS VERFIY,
                SUM(IF(IFNULL(TU.FVERFIY,'') <> 'T',1,0)) AS PENDING
                FROM tabulate TU 
                INNER JOIN subject S ON TU.FQPCODE = S.FQPCODE
                WHERE TU.FYEAR = '{$fyear}' AND TU.FEXAMTYPE = '{$fexamno}'
                $cond $cond1 $cond2 $cond3
                GROUP BY TU.FPACKET,TU.FQPCODE, TU.FSUBCODE";

                // "SELECT COUNT(DISTINCT TU.FREGNO) AS TOTSTUD,TU.FPACKET,
                // TU.FQPCODE,S.FSUBCODE,
                // CONCAT(TU.FSUBCODE,' - ', S.FSUBNAME) AS fsubname,
                // SUM(IF(IFNULL(TU.FVERFIY,'') = 'T',1,0)) AS VERFIY,
                // SUM(IF(IFNULL(TU.FVERFIY,'') <> 'T',1,0)) AS PENDING
                // FROM tabulate TU 
                // INNER JOIN subject S ON TU.FSUBCODE = S.FSUBCODE
                // AND TU.FDEGREE = S.FDEGREE AND TU.FEXAMNO = S.FEXAMNO
                // AND TU.FQPCODE = S.FQPCODE
                // LEFT JOIN uucmstemptab u on TU.FQPCODE = u.FQPCODE 
                // AND TU.FREGCODE =u.FREGCODE AND TU.FPACKET = u.FPACKET
                // AND S.FQPCODE = u.FQPCODE
                // WHERE TU.FYEAR = '{$fyear}' AND TU.FEXAMTYPE = '{$fexamno}'
                // $cond $cond1 $cond2 $cond3
                // GROUP BY TU.FPACKET,TU.FQPCODE, TU.FSUBCODE";

// var_dump($query);

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

        if($result){
            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 getQPVrfyData($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $fyear = $aobj_context->mobj_data['fyear'];
        $fexamno = $aobj_context->mobj_data['fexamno'];
        $fqpcode = $aobj_context->mobj_data['fqpcode'];
        $fsubcode = $aobj_context->mobj_data['fsubcode'];
        $fpacket = $aobj_context->mobj_data['fpacket'];
        $fverfy = $aobj_context->mobj_data['fverfy'];
        $fmismth = $aobj_context->mobj_data['fmismth'];
        $cond = "";
        $cond1 = "";

        if($fverfy == 'Pending')
            $cond = "AND IFNULL(TU.FVERFIY,'') <> 'T'";
        else if($verftype == "Verfication")
            $cond = "AND IFNULL(TU.FVERFIY,'') <> 'T'";
        
        if($fmismth == 'Mismatch')
            $cond1 = "AND (TU.FLREGNO <> RIGHT(TU.FREGNO,2)
            OR TU.FSLNO <> RIGHT(TU.FREGCODE,2))";

        $query = "select TU.FQPCODE, concat(TU.FQPCODE, '-', TU.FPACKET, '-', right(TU.fregcode, 2)) as REGCODE, 
                TU.FREGCODE as FREGCODE, TU.FREGNO,
                ifnull(TU.FREMARKS,'') as FREMARKS,
                ifnull(TU.FLREGNO,'') as FLREGNO,
                ifnull(TU.FVERFIY,'F') as FVERFIY,
                concat(S.fsubcode,' - ',S.fsubname) as fsubname,
                S.FSUBCODE,TU.FPACKET,st.fname,ifnull(TU.FSLNO,'') as FSLNO
                FROM tabulate TU 
                left JOIN student st ON TU.FREGNO = st.FREGNO  
                INNER JOIN subject S ON TU.FQPCODE = S.FQPCODE
                WHERE TU.FYEAR ='{$fyear}' AND TU.FEXAMTYPE = '{$fexamno}'
                AND TU.FQPCODE = '{$fqpcode}' AND TU.FPACKET = '{$fpacket}'
                $cond $cond1
                group by TU.FREGCODE";
// var_dump($query);die();
        $result = $aobj_context->pobj_db->GetAll($query);

        if($result){
            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 saveUUCMSVrfyData($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $req = $aobj_context->req_body;
        $data = $req['data'];
        $tabData = $data['fintab'];
        $qpcode = $data['fqpcode'];
        $fexamno = $data['fexamno'];
        $fyear = $data['fyear'];
        $fuserid = $data['fuserid'];
        $date = date('Y-m-d H:i:s');
       
        foreach($tabData as $t => $val ){
            $query = "update tabulate set FLREGNO = '{$val['FLREGNO']}',
            FREMARKS='{$val['FREMARKS']}', FVERFIY = 'T', FSLNO = '{$val['FSLNO']}',
            FVERFUSER='{$fuserid}', FVERFDATE = NOW()
            where fqpcode = '{$val['FQPCODE']}' and FYEAR ='{$fyear}' and FEXAMTYPE = '{$fexamno}'
            and fsubcode = '{$val['FSUBCODE']}' and FREGCODE = '{$val['FREGCODE']}'";
        
            // var_dump($query);die();
            $result = $aobj_context->pobj_db->Execute($query);
        }

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

    function uucmsPacketNO($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $fqpcode = $aobj_context->mobj_data['fqpcode'];
        $fyear = $aobj_context->mobj_data['fyear'];
        $fexamno = $aobj_context->mobj_data['fexamno'];
        $cond = "";

        if($fqpcode != 'All')
            $cond = "and TU.FQPCODE = '{$fqpcode}'";

        $query = "select DISTINCT TU.FPACKET from tabulate TU
        WHERE TU.FYEAR = '{$fyear}' AND TU.FEXAMTYPE = '{$fexamno}' $cond";
                 
        $result = $aobj_context->pobj_db->GetAll($query);

        if($result){
            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 saveNewRegNo($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data['univcode'];
        $req = $aobj_context->req_body;
        $data = $req['data'];
        $FREGCODE = $data['FREGCODE'];
        $FQPCODE = $data['FQPCODE'];
        $FPACKET = $data['FPACKET'];
        $newRegno = $data['newRegno'];
        $FLREGNO = $data['FLREGNO'];
        $FREMARKS = $data['FREMARKS'];
        $FYEAR = $data['FYEAR'];
        $FEXAMTYPE = $data['FEXAMTYPE'];
        $FSUBCODE = $data['FSUBCODE'];
        $fuserid = $data['fuserid'];
        $FSLNO = $data['FSLNO'];
        $date = date('Y-m-d H:i:s');

        if($FLREGNO != "")
            $cond = ",FLREGNO = '{$FLREGNO}'";
        if($FREMARKS != "")
            $cond2 = ",FREMARKS='{$FREMARKS}'";
        if($newRegno != "")
            $cond3 = ",FREGNO = '{$newRegno}'";
        if($FSLNO != "")
            $cond4 = ",FREGNO = '{$FSLNO}'";
        
        $query = "update tabulate set FVERFDATE = NOW(),FVERFIY = 'T',
        FVERFUSER='{$fuserid}', FREGNO = '{$newRegno}' 
        where fqpcode = '{$FQPCODE}' and FYEAR ='{$FYEAR}' and FEXAMTYPE = '{$FEXAMTYPE}'
        and fsubcode = '{$FSUBCODE}' and FREGCODE = '{$FREGCODE}'";
    
        // var_dump($query);die();
        $result = $aobj_context->pobj_db->Execute($query);

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

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

        $res = $s3->listObjectsV2([
            'Bucket' => "answer-booklets", 
            'Prefix' => 'eval-img/'.$path,
        ]);

        if (isset($res['Contents'])) {
            return $res['Contents'][0]['Key'];
        } else {
            return "something went wrong";
        }
    }
?>