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


Current Path : /proc/thread-self/root/var/www/html/admission/src/
Upload File :
Current File : //proc/thread-self/root/var/www/html/admission/src/teacherEntry.php

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

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

        $query = "select FDEGNCODE, FDEGNDESC from masdegn";
        $result = $aobj_context->pobj_db->GetAll($query);
        if($result){
            echo $aobj_context->mobj_output->ToJSONEnvelope($result,0,"success");  
        }else{
            $arr['msg'] = 'Failed to load';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
        }
    }

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

        $get_data= "select distinct m.fboard as code, b.fboardname as value from subject m 
                    inner join masboard b on m.fboard = b.fboardcode 
                    where ifnull(fboard, '') <> ''
                    and m.fdegree in(select distinct fdegree from degree where fdeggrp = '{$deggrp}')";
        $lobj_get_data = $aobj_context->pobj_db->GetAll($get_data);
        if($lobj_get_data){
            echo $aobj_context->mobj_output->ToJSONEnvelope($lobj_get_data,0,"success");  
        }else{
            $arr['msg'] = 'Failed to load';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
        }
    }

    function getQPSubjects($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data["univcode"];
        $deggrp = $aobj_context->mobj_data["deggrp"];
        $sem = trim($aobj_context->mobj_data["sem"]);
        $board = trim($aobj_context->mobj_data["board"]);
        // $db = trim($aobj_context->mobj_data["db"]);

        if($board === "ALL"){
            $boardCond = " ";
        }else{
            $boardCond = "and fboard = '{$board}'";
        }
        if($sem == 'ODD')
                $examno = "A', 'C', 'E";
            else if($sem == 'EVEN')
                $examno = "B', 'D', 'F";
            else if($sem == 'ALL')
                $examno = "A', 'B', 'C', 'D', 'E', 'F";
            else
                $examno = $fexamno;
        if($univcode == '026')
        {
        $query = "select fexamno, fboard, fqpcode, fsubname, '' as fdegrees 
        from subject where fboard = '{$fdeggrp}'
        and fexamno in ('$examno')
        and ifnull(fqpcode,'') <> ''";
        }else if($univcode == '050' || $univcode == '051')
        {
        $query = "select s.fexamno, ifnull(s.fboard,'') as fboard, s.fqpcode, s.fsubname, group_concat(distinct s.fdegree SEPARATOR ', ') as fdegrees 
        from subject s inner join degree d on  s.fdegree = d.fdegree
        and s.fexamno = d.fexamno
        where d.fdeggrp = '{$deggrp}' 
        and d.fexamno in ('$examno') 
        and ifnull(s.fqpcode,'') <>''
        and s.fexamno in ('$examno') 
        {$boardCond}
        group by s.fexamno, s.fqpcode
        order by s.fexamno, s.fqpcode";
        }
        else
        {
        $query = "select fexamno, fboard, fqpcode, fsubname, fdegreerange as fdegrees 
        from masqp where fboard = '{$board}' and fdeggrp = '{$deggrp}' 
        and fexamno in ('$examno') order by fexamno, fqpcode";
        
        } 

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

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

    function saveTeacherEntry($aobj_context){
        $univcode = $aobj_context->mobj_data["univcode"];
        $college = $aobj_context->mobj_data["college"];
        $staff = $aobj_context->mobj_data["staff"];
        $nameTitle = $aobj_context->mobj_data["nameTitle"];
        $teachcode = $aobj_context->mobj_data["teachcode"];
        $teachname = $aobj_context->mobj_data["teachname"];
        $gender = $aobj_context->mobj_data["gender"];
        $dob = $aobj_context->mobj_data["dob"];
        $mobile = $aobj_context->mobj_data["mobile"];
        $landline = $aobj_context->mobj_data["landline"];
        $email = $aobj_context->mobj_data["email"];
        $aadhaar = $aobj_context->mobj_data["aadhaar"];
        $address = $aobj_context->mobj_data["address"];
        $designation = $aobj_context->mobj_data["designation"];
        $qualification = $aobj_context->mobj_data["qualification"];
        $salscale = $aobj_context->mobj_data["salscale"];
        $collegeJoinDate = $aobj_context->mobj_data["collegeJoinDate"];
        $teacherJoinDate = $aobj_context->mobj_data["teacherJoinDate"];
        $ugcTeachDate = $aobj_context->mobj_data["ugcTeachDate"];
        $fullTime = $aobj_context->mobj_data["fullTime"];
        $permanent = $aobj_context->mobj_data["permanent"];
        $anyMember = $aobj_context->mobj_data["anyMember"];
        $eligibleValuation = $aobj_context->mobj_data["eligibleValuation"];
        $workStatus = $aobj_context->mobj_data["workStatus"];
        $remarks = $aobj_context->mobj_data["remarks"];
        $accno = $aobj_context->mobj_data["accno"];
        $ifsc = $aobj_context->mobj_data["ifsc"];
        $bankname = $aobj_context->mobj_data["bankname"];
        $pan = $aobj_context->mobj_data["pan"];
        $deggrp = $aobj_context->mobj_data["deggrp"];
        if($college === "9999"){
            $collname = $aobj_context->mobj_data["collname"];
        }else{
            $collname = "";
        }

        if($designation === "10"){
            $desnname = $aobj_context->mobj_data["desnname"];
        }else{
            $desnname = "";
        }
        $experience = $aobj_context->mobj_data["experience"];
        $sem = $aobj_context->mobj_data["sem"];
        $board = $aobj_context->mobj_data["board"];
        $data = json_decode($aobj_context->mobj_data["data"], true);
        $filename = $_FILES["File"]["name"];
        $tempname = $_FILES["File"]["tmp_name"];

        $qryTeach = "select fteachcode from masteach where fteachcode = '{$teachcode}'";
        $resultTeach = $aobj_context->pobj_db->GetRow($qryTeach);

        // if($filename !== '' && $filename !== NULL){
        //     $server_path = move_uploaded_file($tempname, 'photocopy/'. $filename);
        //     $file_path = $aobj_context->main_src."photocopy/{$filename}";
            
        //     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."/".$college."/".$filename;
        //         try {
        //             $s3->putObject(['Bucket' => "teacher-photos", 'Key' => $key, 'SourceFile' => $file_path]);
        
                    if($resultTeach['fteachcode'] === $teachcode){
                        
                        $updQuery = "update masteach set FCOLLCODE='{$college}', FSTAFFTYPE='{$staff}', FTEACHNAME='{$teachname}', 
                                    FGENDER='{$gender}', FDOB=date_format(str_to_date('{$dob}', '%d/%m/%Y'), '%Y-%m-%d'), 
                                    FQUAL='{$qualification}', FDEGNCODE='{$designation}',FMOBILE='{$mobile}', FPHONE='{$landline}', 
                                    FEMAIL='{$email}', FAADHARNO='{$aadhaar}', FADDR1='{$address}', FSCALE='{$salscale}', 
                                    FDOA=date_format(str_to_date('{$teacherJoinDate}', '%d/%m/%Y'), '%Y-%m-%d'), 
                                    FDOJUGC=date_format(str_to_date('{$ugcTeachDate}', '%d/%m/%Y'), '%Y-%m-%d'), 
                                    fdoc=date_format(str_to_date('{$collegeJoinDate}', '%d/%m/%Y'), '%Y-%m-%d'), 
                                    FFULLTIME='{$fullTime}', FPERMANENT='{$permanent}', FMEMBER='{$anyMember}', fvalelig='{$eligibleValuation}', 
                                    FSTATUS='{$workStatus}', FREMARKS='{$remarks}', FACCNO='{$accno}', FIFSCCODE='{$ifsc}', 
                                    FBANKNAME='{$bankname}', FPANNO='{$pan}', 
                                    FPHOTO='{$key}', 
                                    FTITLE='{$nameTitle}', 
                                    FDEGGRP='{$deggrp}', FBOARD='{$board}',
                                    FEXP='{$experience}',fdesname = '{$desnname}', FCOLLNAME = '{$collname}'
                                    where FTEACHCODE = '{$teachcode}'";
                                    
                        $result = $aobj_context->pobj_db->Execute($updQuery);

                    }else{

                        $chkMob = "select  FMOBILE from masteach where fmobile = '{$mobile}'";
                        $resultMob = $aobj_context->pobj_db->GetRow($chkMob);

                        if(count($resultMob)>0){
                             $arr['msg'] = 'Mobile Number already existed';
                            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
                            return;
                        }

                        if($univcode == "021" || $univcode == "030" || $univcode == "098")
                        {    
                            if($teachcode == '')
                            {
                                $teach = $mobile;
                            }else
                            {
                                $teach = $teachcode;
                            }

                        }else{
                            $teach = $mobile;
                        }
                          
                        $query = "insert into masteach (FCOLLCODE, FSTAFFTYPE, FTEACHCODE, FTEACHNAME, FGENDER, FDOB, FQUAL, FDEGNCODE,
                              FMOBILE, FPHONE, FEMAIL, FAADHARNO, FADDR1, FSCALE, FDOA, FDOJUGC, fdoc, FFULLTIME, FPERMANENT, 
                              FMEMBER, fvalelig, FSTATUS, FREMARKS, FACCNO, FIFSCCODE, 
                              FBANKNAME, FPANNO, FPHOTO, FTITLE, FDEGGRP, FBOARD, FEXP,fdesname,FCOLLNAME)
                              values('{$college}', '{$staff}', '{$teach}', 
                              '{$teachname}', '{$gender}', date_format(str_to_date('{$dob}', '%d/%m/%Y'), '%Y-%m-%d'), 
                              '{$qualification}', '{$designation}', '{$mobile}', '{$landline}',
                              '{$email}', '{$aadhaar}', '{$address}', '{$salscale}', 
                              date_format(str_to_date('{$teacherJoinDate}', '%d/%m/%Y'), '%Y-%m-%d'), 
                              date_format(str_to_date('{$ugcTeachDate}', '%d/%m/%Y'), '%Y-%m-%d'), 
                              date_format(str_to_date('{$collegeJoinDate}', '%d/%m/%Y'), '%Y-%m-%d'), 
                              '{$fullTime}', '{$permanent}', '{$anyMember}', '{$eligibleValuation}', '{$workStatus}',
                              '{$remarks}', '{$accno}', '{$ifsc}', '{$bankname}', '{$pan}', '{$key}', 
                              '{$nameTitle}', '{$deggrp}', '{$board}', '{$experience}','{$desnname}','{$collname}')";
                            
                        $result = $aobj_context->pobj_db->Execute($query);

                        $getTeachcode = "select internal_code from masteach where fteachcode = '{$mobile}'";
                        $resultTeachCode = $aobj_context->pobj_db->GetRow($getTeachcode);
                        $teachcode = $resultTeachCode['internal_code'];

                        $insTeachcode = "update  masteach set fteachcode='{$resultTeachCode['internal_code']}' 
                        where fteachcode = '{$mobile}'";
                        $resultTeachcode = $aobj_context->pobj_db->Execute($insTeachcode);
                        
                    }           
                    
                    foreach($data as $val){
                        if($val['fdeleted'] === 'T'){
                            if($resultTeach['fteachcode'] === $teachcode){
                                $queryDlt = "delete from teachsub where fqpcode = '{$val['fqpcode']}' and fteachcode = '{$teachcode}'";
                                $resultDlt = $aobj_context->pobj_db->Execute($queryDlt);
                            }else{
                                $queryDlt = "delete from teachsub where fqpcode = '{$val['fqpcode']}' and fteachcode = '{$resultTeachCode['internal_code']}'";
                                $resultDlt = $aobj_context->pobj_db->Execute($queryDlt);
                            }  
                        }else{
                            if($resultTeach['fteachcode'] === $teachcode){
                                $queryIns = "insert into teachsub (fteachcode, fqpcode) values('{$teachcode}','{$val['fqpcode']}')";
                                $resultIns= $aobj_context->pobj_db->Execute($queryIns);
                            }else{
                                $queryIns = "insert into teachsub (fteachcode, fqpcode) values('{$resultTeachCode['internal_code']}','{$val['fqpcode']}')";
                                $resultIns= $aobj_context->pobj_db->Execute($queryIns);
                            }
                        }
                    }
                    
                    if($result){
                        // unlink($file_path);
                        $query1 = "insert ignore into logisys3_comexam.pushstud(funivcode, fregno,fname,fdob,FCOLLCODE,FUSERTYPE) 
                        values('{$univcode}','{$teachcode}','{$teachname}',date_format(str_to_date('{$dob}', '%d/%m/%Y'), '%Y-%m-%d'),'{$college}','600')";
                        $resul1 = $aobj_context->pobj_db->Execute($query1);
                        $arr['msg'] = 'Saved Successfully';
                        echo $aobj_context->mobj_output->ToJSONEnvelope($arr,0,"Success");
                        return;
                    }else{
                        $arr['msg'] = 'Failed to save';
                        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 viewTeacherEntry($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data["univcode"];

        $query = "select * from masteach";
        $result = $aobj_context->pobj_db->GetAll($query);
        if($result){
            echo $aobj_context->mobj_output->ToJSONEnvelope($result,0,"success");  
        }else{
            $arr['msg'] = 'Failed to load';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
        }
    }

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

        $query = "select * from masteach where fteachcode='{$teachcode}' and fcollcode='{$collcode}'";
        $result = $aobj_context->pobj_db->GetRow($query);

        $subQuery = "select m.fexamno, ifnull(m.fboard,'') as fboard, t.fqpcode, m.fsubname, group_concat(distinct m.fdegree SEPARATOR ', ') as fdegrees 
                    from teachsub t inner join subject m
                    on t.fqpcode = m.fqpcode where t.fteachcode = '{$teachcode}'
                    group by t.fqpcode,t.fteachcode
                    order by  m.fexamno, t.fqpcode";

        $subResult = $aobj_context->pobj_db->GetAll($subQuery);

        if($result){
            $arr['det'] = $result;
            $arr['sub'] = $subResult;
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,0,"success");  
        }else{
            $arr['msg'] = 'Failed to load';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
        }
    }

    function assignModerator($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"];
        $deggrp = $aobj_context->mobj_data["deggrp"];

        $split = explode("*", $deggrp);
        $dggrp = $split[0];
        $yearmode = explode('-',$split[1]);
        $year = $yearmode[0];
        $fexamtype = $yearmode[1];

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

        if($board === "All"){
            $boardCond = " ";
        }else{
            $boardCond = "and s.fboard = '{$board}'";
        }

        $get_data= "select distinct s.fqpcode, concat(s.fsubname, ' - ', s.fsubshort) as fsubname, m.fteachcode, ifnull(m.flogin, '')as fstatus, m.fdeleted,
                    mas.fteachname, mas.fmobile,count(q.fset) as fset, 
                    SUM(IFNULL(q.fqpfilepath, 1)) AS not_uploaded, 
					(count(q.fset) - SUM(IFNULL(q.fqpfilepath, 1))) AS uploaded,ifnull(m.ffromdate,'') as ffromdate,ifnull(m.ftodate,'') as ftodate,
                    ifnull(m.femailstatus,'') as emailstatus
                    from moderator m right join subject s on m.fqpcode = s.fqpcode
                    left join masteach mas on mas.fteachcode = m.fteachcode  
                    inner join degree d on d.fdegree = s.fdegree and d.fexamno = s.fexamno
					left join qpseterdet q on s.fqpcode = q.fqpcode
                    where d.fdeggrp = '{$dggrp}' and ifnull(s.fqpcode, '') <> ''
                    and q.fyear = '{$year}' and q.fexamtype = '{$fexamtype}'
                    {$boardCond} {$qpcond} group by s.fqpcode";

        $lobj_get_data = $aobj_context->pobj_db->GetAll($get_data);

        $teach = "select fteachcode, fteachname, fmobile  from masteach where ifnull(fteachcode, '')<>''";
        $teach_res = $aobj_context->pobj_db->GetAll($teach);
        if($teach_res){
            $arr['teach'] = $teach_res;
            $arr['mod'] = $lobj_get_data;
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,0,"success");  
        }else{
            $arr['msg'] = 'Failed to load';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
        }
    }

    function saveAssignModerator($aobj_context){
        include("sendGridMail.php");
        include("error_log.php");
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data["univcode"];
        $user = $aobj_context->mobj_data["user"];
        $year = $aobj_context->mobj_data["exam"];
        $board = $aobj_context->mobj_data["board"];
        $qpcode = $aobj_context->mobj_data["qpcode"];
        $data = json_decode($aobj_context->mobj_data["data"], true);
        $onldate = date('d-m-Y');
        
        $split = explode("*",$year);
        $degree = $split[0];
        $splitagain = explode("-",$split[1]);
        $year = $splitagain[0];
        $mode = $splitagain[1];
        
        foreach($data as $val){
            $query = "select fqpcode from moderator where fqpcode = '{$val['fqpcode']}'";
            $res = $aobj_context->pobj_db->GetRow($query);
            
            if($val['fteachcode']!==NULL && $val['fteachcode']!=="" && $val['fteachcode']!=="Select"){

                if($res['fqpcode'] == $val['fqpcode']){
                     
                $Qry = "update moderator set fyear='{$year}', fexamtype='{$mode}', fteachcode='{$val['fteachcode']}', 
                        flogin='{$val['fstatus']}', fdeleted='{$val['fdeleted']}', fcreateduser='{$user}',ffromdate = '{$val['ffromdate']}',
                        ftodate = '{$val['ftodate']}',fcreatedate=now(), femailstatus = '{$val['emailstatus']}' where fqpcode='{$val['fqpcode']}'";
                    
                }else{
                    $Qry = "insert ignore into moderator (fyear, fexamtype, fqpcode, fteachcode, flogin, 
                        fdeleted, fcreateduser, fcreatedate, femailstatus,ffromdate,ftodate) 
                        values('{$year}', '{$mode}', '{$val['fqpcode']}',
                        '{$val['fteachcode']}', '{$val['fstatus']}', '{$val['fdeleted']}',
                        '{$user}', now(), '{$val['emailstatus']}','{$val['ffromdate']}','{$val['ftodate']}')";
                }
                
                $result = $aobj_context->pobj_db->Execute($Qry);
                $remarks = "Moderator is Assigned for teacher ".$val['fteachcode']." and qpcode ".$val['fqpcode']." and exam year and number ".$year."-".$mode;
                $res = error_logs($aobj_context, $univcode, $remarks, $collcode, "Assign Moderator", $user, $user);
            }
           

            if($result){
                
                $slt = "select FMOBILENO, FUSERTYPE, FPASSWD, FEMAIL from logisys3_comexam.masuser where FMOBILENO = '{$val['fmobile']}'";
                $reslt = $aobj_context->pobj_db->GetRow($slt);
                $usertype = $reslt['FUSERTYPE'];
                $emailid = $reslt['FEMAIL'];
                if(count($reslt) > 0){
                    $queryIns = "update logisys3_comexam.masuser set 
                                 FUSERTYPE = concat('{$usertype}','*','502'), ftype = 'M', FTEMP = 'M'
                                 where FMOBILENO = '{$val['fmobile']}' and funivcode = '{$univcode}'";
                }else{
                    $queryIns = "insert ignore into logisys3_comexam.masuser(FUNIVCODE, FREGNO, FMOBILENO,
                             FUSERTYPE, FPASSWD, ftype, FTEMP, FACTIVE)
                             values('{$univcode}', '{$val['fteachcode']}', '{$val['fmobile']}',
                             '502', '{$val['fmobile']}', 'M', 'M', 'T')";
                }
                // var_dump($queryIns);die();
                $resultIns = $aobj_context->pobj_db->Execute($queryIns);
                
                $remarks = "Added new Usertype for ".$val['fmobile']." and Univcode ".$univcode;
                $res = error_logs($aobj_context, $univcode, $remarks, $collcode, "Assign Moderator", $user, $user);
             
                if($resultIns){
                    $sentStat = "select ifnull(fsent, '')as fsent from moderator where  
                                fteachcode='{$val['fteachcode']}'";
                                
                    $sentRes = $aobj_context->pobj_db->GetRow($sentStat);
                    
                    // if($sentRes['fsent'] !== 'T'){
                        
                        if($val['emailstatus'] == 'T'){

                            $slt = "select FMOBILENO, FUSERTYPE, FPASSWD, FEMAIL from logisys3_comexam.masuser
                                    where FMOBILENO = {$val['fmobile']}";
                                    
                            $reslt = $aobj_context->pobj_db->GetRow($slt);
                            $usertype = $reslt['FUSERTYPE'];
                            $emailid = $reslt['FEMAIL'];

                            $getEmail = "select FEMAIL from masteach where FMOBILE = '{$val['fmobile']}'";
                            $ret = $aobj_context->pobj_db->GetRow($getEmail);
                            $emailsent = $ret['FEMAIL'];
                
                            $unishort = "select funivname, ffolder, pdf_logo_path,FTOWN  from control";
                            $resunishort = $aobj_context->pobj_db->GetRow($unishort);
                            $univname = $resunishort['funivname'];
                            $town = $resunishort['FTOWN'];
                            $univshort = strtoupper($resunishort['ffolder']);

                            $teachDet = "select ifnull(m.fteachname, '')as fteachname, 
                                        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 = '{$val['fteachcode']}'";

                            $teachDet1 = $aobj_context->pobj_db->GetRow($teachDet);
                            $teachname = $teachDet1['fteachname'];
                            $colladd = $teachDet1['fcollname'];
                            $degn = $teachDet1['fdegndesc'];

                            $query1 = "select distinct s.fqpcode,s.fsubname,d.fexamdate,d.fexamname,d.fdescpn  
                                        from subject s 
                                        inner join degree d on s.fdegree = d.fdegree and s.fexamno = d.fexamno
                                        where fqpcode = '{$val['fqpcode']}'";
                            $res1 = $aobj_context->pobj_db->GetRow($query1);
                            $fqpcode = $res1['fqpcode'];
                            $fsubname = $res1['fsubname'];
                            $fexamdate = $res1['fexamdate'];
                            $fexamnmae = $res1['fexamname'];
                            $fdescpn = $res1['fdescpn'];

                            $qur = "select fmodemail,ftdvs_helplineno from control";
                            $resn = $aobj_context->pobj_db->GetRow($qur);

                            $mailmtr =$resn['fmodemail'];
                            $helplineno =$resn['ftdvs_helplineno'];

                            $qur1 = "select fexamdate from deggrp where fdeggrp = '{$degree}'";
                            $resn1 = $aobj_context->pobj_db->GetRow($qur1);

                            $exm =$resn1['fexamdate'];

                            $frmdate = date("d-m-Y", strtotime($val['ffromdate']));
                            $todate = date("d-m-Y", strtotime($val['ftodate']));

                            if($univcode == "051"){
                                $logo_path = "/img/dyp_elogo.jpeg";
                            }else{
                                $logo_path = $resunishort['pdf_logo_path'];
                            }

                            $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>Dear Sir/Madam,<br><br><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 moderator for the University Examination – Summer 2023.</p>";

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

                            $message.="<p style='font-size:12px; font-family: Verdana, Arial, Helvetica, sans-serif'>
                            The University is pleased to appoint you as the Question paper moderator for the course "."$fqpcode"."–"."$fsubname"." of $fdescpn, University exams.<br>
                            You are asked to report to the CoE office on {$todate} and complete the Question paper moderation on the same day.</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'>Total No of QP for the code (both Internal & external)</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'>"."{$val['fset']}"."</td></tr></table></p>";

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

                            // $message.="<p style='font-size:12px; font-family: Verdana, Arial, Helvetica, sans-serif'>
                            // You are asked to report at CoE office on DATE at TIME</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'>
                            // 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'>
                            // 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.="<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:"."{$val['fteachcode']}"."<br>";
                            $message.="Mobile No.:"."{$val['fmobile']}"."<br></p>";

                            $message.="<p style='font-size:12px; font-family: Verdana, Arial, Helvetica, sans-serif'>
                            Kindly call to "."$helplineno"." 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><br><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>
                            $town
                            </p>";

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

                            $subject= strtoupper("$univshort".": Appointment as Moderator for the University ".$fexamdate." Examination"); 
                            $from = "";
                        
                            $resp = sendGridMail($emailsent,$subject,$message,$univcode);
                            
                            $insQry = "update moderator set fsent='T' where fteachcode='{$val['fteachcode']}'";
                            $res = $aobj_context->pobj_db->Execute($insQry);

                        }
                    // }
                }
            }
        }
        
        if($resultIns){
            $arr['msg'] = 'Saved Successfully';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,0,"success");    
        } else{
            $arr['msg'] = 'Failed to save';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
        }  
    }

    function qpModeratorSummary($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data["univcode"];
        $year = $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"];
        $teachstatus = $aobj_context->mobj_data["status"];
        $modstatus = $aobj_context->mobj_data["modstatus"];

        $split = explode("*", $year);
        $deggrp = $split[0];
        $splitYearAndMode = explode("-", $split[1]);
        $year = $splitYearAndMode[0];
        $type = $splitYearAndMode[1];

        if($board === "All"){
            $boardCond = " ";
        }else{
            $boardCond = "and s.fboard='{$board}'";
        }

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

        $degreeArr = explode(",", $degree);
        foreach($degreeArr as $key => $val){
            if($val != 'All'){
                $fdegree .= "'".$val."',";
            }
        }
        $degArray = substr_replace($fdegree ,"",-1);

        if($degree === "All"){
            $degCond = " ";
        }else{
            $degCond = "and d.fdegree in ({$degArray})";
        }

        if($sem === "All"){
            $semCond = " ";
        }else{
            $semCond = "and d.fexamno = '{$sem}'";
        }

        if($teachstatus === "uploaded"){
            $teachUpdCond = "and ifnull(qd.fqpfilepath, '') <> ''  
                             and ifnull(fanskeypath, '') <> '' ";
        }else if($teachstatus === "not_uploaded"){
            $teachUpdCond = "and ifnull(qd.fqpfilepath, '') = ''  
                             and ifnull(fanskeypath, '') = ''";
        }else{
            $teachUpdCond = " ";
        }

        if($modstatus === "uploaded"){
            $modstatusCond = "and ifnull(qd.fmodqppath, '') <> ''";
        }else if($modstatus === "not_uploaded"){
            $modstatusCond = "and ifnull(qd.fmodqppath, '') = ''";
        }else{
            $modstatusCond = " ";
        }

        $query = "select q.fqpcode,concat(s.fsubname, ' - ', s.fsubshort) as fsubname,q.fnoqp,
                group_concat(distinct concat('Set: ',fset,' - ',if(ifnull(fqpfilepath,'') = '','Not Uploaded','Uploaded')) separator ', ')as fstatus,
                group_concat(distinct concat('Set: ',fset,' - ',if(ifnull(fmodqpupd,'') = '','Not Uploaded','Uploaded')) separator ', ')as fmodstatus,
                q.fteachcode, m.fteachname, 
                group_concat(distinct concat('Set: ',fset,' - ',if(ifnull(qd.fstatus,'') = '','',qd.fstatus)) separator ', ')as status
                from qpseter q inner join qpseterdet qd on q.fqpcode = qd.fqpcode
                and qd.fteachcode = q.fteachcode
                inner join subject s on q.fqpcode = s.fqpcode
                inner join degree d on s.fdegree = d.fdegree and s.fexamno = d.fexamno
                inner join masteach m on q.fteachcode = m.fteachcode
                WHERE ifnull(q.fappointed,'') = 'T' and d.fdeggrp = '{$deggrp}'
                and qd.fyear='{$year}' and qd.fexamtype='{$type}' {$boardCond} {$qpcond} 
                {$degCond} {$semCond} {$teachUpdCond} {$modstatusCond}
                group by q.fqpcode,q.fteachcode
                order by q.fqpcode,q.fteachcode;";
// 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'] = 'Failed to load';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
        }
    }

    function viewQuestionPaper($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data["univcode"];
        $year = $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"];
        $stype = $aobj_context->mobj_data["stype"];
        $status = $aobj_context->mobj_data["status"];

        $split = explode("*", $year);
        $deggrp = $split[0];
        $splitYearAndMode = explode("-", $split[1]);
        $year = $splitYearAndMode[0];
        $type = $splitYearAndMode[1];

        if($board === "All"){
            $boardCond = " ";
        }else{
            $boardCond = "and qd.fboard='{$board}'";
        }

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

        if($degree === "All"){
            $degCond = " ";
        }else{
            $degCond = "and d.fdegree = '{$degree}'";
        }

        if($sem === "All"){
            $semCond = " ";
        }else{
            $semCond = "and d.fexamno = '{$sem}'";
        }

        if($status === "All"){
            $statCond = " ";
        }else if($status === "uploaded"){
            $statCond = "and ifnull(fqpfilepath, '')<>'' and ifnull(fanskeypath, '')<>'' and 
                         ifnull(fmodqppath, '')<>''";
        }else if($status === "not_uploaded"){
            $statCond = "and ifnull(fqpfilepath, '')='' and ifnull(fanskeypath, '')='' and 
                         ifnull(fmodqppath, '')=''";
        }
        if(strtoupper($stype) == 'OLD')
        {
            $query = "select  q.fqpcode, concat(s.fsubname, ' - ', s.fsubshort) as fsubname, q.fset, m.fteachcode, 
            m1.fteachname as fmodteachname, q.fmodteach,
            ifnull(q.fqpfilepath, '')as fqpfilepath, ifnull(q.fmodqppath, '')as fmodqppath,
            date_format(fqpdtme, '%d/%m/%Y %H:%i:%s')as fqpupddate,
            m.fteachname, ifnull(q.ffinalpaper, '') as ffinalpaper,
            ifnull(q.fanskeypath, '')as fanskeypath, ifnull(q.fstatus, '') as status
            from qpseterdet q inner join subject s on s.fqpcode = q.fqpcode 
            inner join masteach m on m.fteachcode = q.fteachcode
            left join masteach m1 on m1.fteachcode = q.fmodteach
            inner join qpseter qd on qd.fqpcode = q.fqpcode 
            and qd.fteachcode = q.fteachcode
            inner join degree d on s.fdegree = d.fdegree and s.fexamno = d.fexamno
            where d.fdeggrp = '{$deggrp}'
            {$boardCond} {$qpCond} {$degCond} {$semCond} {$statCond}
            group by q.fqpcode, m.fteachcode, q.fset, qd.fyear, qd.fexamtype
            order by q.fqpcode, m.fteachcode, q.fset, qd.fyear, qd.fexamtype";
        }else 
        {
            $query = "select  q.fqpcode, concat(s.fsubname, ' - ', s.fsubshort) as fsubname, q.fset, m.fteachcode, 
            m1.fteachname as fmodteachname, q.fmodteach,
            ifnull(q.fqpfilepath, '')as fqpfilepath, ifnull(q.fmodqppath, '')as fmodqppath,
            date_format(fqpdtme, '%d/%m/%Y %H:%i:%s')as fqpupddate,
            m.fteachname, ifnull(q.ffinalpaper, '') as ffinalpaper,
            ifnull(q.fanskeypath, '')as fanskeypath, ifnull(q.fstatus, '') as status
            from qpseterdet q inner join subject s on s.fqpcode = q.fqpcode 
            inner join masteach m on m.fteachcode = q.fteachcode
            left join masteach m1 on m1.fteachcode = q.fmodteach
            inner join qpseter qd on qd.fqpcode = q.fqpcode 
            and qd.fteachcode = q.fteachcode
            inner join degree d on s.fdegree = d.fdegree and s.fexamno = d.fexamno
            where qd.fyear = '{$year}' and qd.fexamtype = '{$type}' and d.fdeggrp = '{$deggrp}'
            {$boardCond} {$qpCond} {$degCond} {$semCond} {$statCond}
            group by q.fqpcode, m.fteachcode,q.fset,qd.fyear,qd.fexamtype
            order by q.fqpcode, m.fteachcode, q.fset,qd.fyear,qd.fexamtype";
        }
        

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

        if($result){
            echo $aobj_context->mobj_output->ToJSONEnvelope($result,0,"success");  
        }else{
            $arr['msg'] = 'Failed to load';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
        }

    }


    function saveViewQuestionPaper($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        $univcode = $aobj_context->mobj_data["univcode"];
        $year = $aobj_context->mobj_data["exam"];
        $board = $aobj_context->mobj_data["board"];
        $qpcode = $aobj_context->mobj_data["qpcode"];
        $data = json_decode($aobj_context->mobj_data["data"], true);

        $split = explode("*", $year);
        $splitYearAndMode = explode("-", $split[1]);
        $fyear = $splitYearAndMode[0];
        $fexamtype = $splitYearAndMode[1];

        foreach($data as $value){
            $query = "update qpseterdet set ffinalpaper='{$value['ffinalpaper']}' where 
                      fyear = '{$fyear}' and fexamtype = '{$fexamtype}' and 
                      fqpcode = '{$value['fqpcode']}' and fteachcode = '{$value['fteachcode']}'
                      and fset = '{$value['fset']}'";
      
            $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'] = 'Failed to load';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
        }
    }

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

        if($sem === "All"){
            $semCond = " ";
        }else{
            $semCond = "and d.fexamno='{$sem}'";
        }

        if($status === "pending"){
            $statusCond = "and ifnull(FQPPATREN, '') = ''";
        }else if($status === "uploaded"){
             $statusCond = "and ifnull(FQPPATREN, '') <> ''
                            or ifnull(FSCHPATTERN, '') <> '' 
                            or ifnull(FQPSYLLABUS, '') <> ''";
        }else{
            $statusCond = " ";
        }

        $split = explode("*", $year);
        $deggrp = $split[0];
        $splitYearAndMode = explode("-", $split[1]);
        $year = $splitYearAndMode[0];
        $type = $splitYearAndMode[1];

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

        if($qpcode === "All"){
            $qpCond = "where  ifnull(fqpcode, '') <> ''";
        }else{
            $qpCond = "where fqpcode = '{$qpcode}'";
        }

        $query = "select distinct ifnull(fqpcode, '')as fqpcode, 
                  concat(s.fsubname, ' - ', s.fsubshort) as fsubname, ifnull(FSUBSHORT, '')as FSUBSHORT, 
                  ifnull(FQPPATREN, '')as FQPPATREN, ifnull(FQPSYLLABUS, '')as FQPSYLLABUS, ifnull(FSCHPATTERN, '')as FSCHPATTERN, 
                  fboard from subject s inner join degree d on s.fdegree = d.fdegree and s.fexamno = d.fexamno
                  left join deggrp dg on d.fdeggrp = dg.fdeggrp
                  {$qpCond} {$boardCond} {$statusCond} and d.fdeggrp = '{$deggrp}' {$semCond}";
        
        // 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'] = 'Failed to load';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
        }

    }

    function uploadQpSyllabusFile($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        include("error_log.php");
        $univcode = $aobj_context->mobj_data["univcode"];
        $year = $aobj_context->mobj_data["year"];
        $board = $aobj_context->mobj_data["board"];
        $qpcode = $aobj_context->mobj_data["qpcode"];
        $collcode = $aobj_context->mobj_data["collcode"];
        $mobile = $aobj_context->mobj_data["mobile"];
        $fuserid = $aobj_context->mobj_data["fuserid"];
        $qpfile = $_FILES['qpFile']['name'];
        $temp_qpfile = $_FILES['qpFile']['tmp_name'];
        $syllabusfile = $_FILES['syllabusFile']['name'];
        $temp_syllabusfile = $_FILES['syllabusFile']['tmp_name'];
        $schemefile = $_FILES['schemeFile']['name'];
        $temp_schemefile = $_FILES['schemeFile']['tmp_name'];
        $date = date('Y-m-d H:i:s');

        try{

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


            if($qpfile !== null){
                $qpfileExt = pathinfo($qpfile, PATHINFO_EXTENSION);
                $qpfile = $qpcode."_pattern".".".$qpfileExt;

                $moveQp = move_uploaded_file($temp_qpfile, "uploadqpscheme/".$qpfile);   
                $qpfile_path = $aobj_context->main_src."uploadqpscheme/{$qpfile}";
                $Qpkey = $univcode."/"."pattern/".$qpfile;

                $s3->putObject(['Bucket' => "qp-scheme", 'Key' => $Qpkey, 'SourceFile' => $qpfile_path]);

                $query = "update subject set FQPPATREN = '{$Qpkey}',
                FQPDATE = '{$date}', FUSERID = '{$fuserid}'
                where  fqpcode = '{$qpcode}'";

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

            }
            if($syllabusfile !== null){
                $syllabusfileExt = pathinfo($syllabusfile, PATHINFO_EXTENSION);
                $syllabusfile = $qpcode."_syllabus".".".$syllabusfileExt;

                $moveSyllabus = move_uploaded_file($temp_syllabusfile, "uploadqpscheme/".$syllabusfile);
                $syllabusfile_path = $aobj_context->main_src."uploadqpscheme/{$syllabusfile}";
                $Schemekey = $univcode."/"."syllabus/".$syllabusfile;

                $s3->putObject(['Bucket' => "qp-scheme", 'Key' => $Schemekey, 'SourceFile' => $syllabusfile_path]);

                $query = "update subject set FQPSYLLABUS='{$Schemekey}',
                FQPDATE = '{$date}', FUSERID = '{$fuserid}'
                where  fqpcode = '{$qpcode}'";

                $result = $aobj_context->pobj_db->Execute($query);
            }
            if($schemefile !== null){
                $schemefileExt = pathinfo($schemefile, PATHINFO_EXTENSION);
                $schemefile = $qpcode."_scheme".".".$schemefileExt;

                $moveScheme = move_uploaded_file($temp_schemefile, "uploadqpscheme/".$schemefile);
                $schemefile_path = $aobj_context->main_src."uploadqpscheme/{$schemefile}";
                $Schemefilekey = $univcode."/"."scheme/".$schemefile;

                $s3->putObject(['Bucket' => "qp-scheme", 'Key' => $Schemefilekey, 'SourceFile' => $schemefile_path]);

                $query = "update subject set 
                FSCHPATTERN = '{$Schemefilekey}',
                FQPDATE = '{$date}', FUSERID = '{$fuserid}'
                where  fqpcode = '{$qpcode}'";

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

            }

            if($result){
                unlink($qpfile_path);
                unlink($syllabusfile_path);
                unlink($schemefile_path);

                $remarks = "uploaded qppattern and syllabus pattern file against qpcode ".$qpcode;
                $res = error_logs($aobj_context, $univcode, $remarks, $collcode, "Upload QP Pattern and Syllabus Pattern", $mobile, $mobile);

                $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;
            } 
        } catch(S3Exception $e) {
            $arr['msg'] = 'Failed to upload';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
            return;
        }

        // $split = explode("*", $year);
        // $splitYearAndMode = explode("-", $split[1]);
        // $year = $splitYearAndMode[0];
        // $type = $splitYearAndMode[1];
    }

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

        $split = explode("*", $year);
        $degree = $split[0];
        $splitYearAndMode = explode("-", $split[1]);
        $fyear = $splitYearAndMode[0];
        $fexamtype = $splitYearAndMode[1];

        if($board === "All"){
            $boardCond = " ";
        }else{
            $boardCond = "and s.fboard = '{$board}'";
        }

        if($qpcode === "All"){
            $qpCond = " ";
        }else{
            $qpCond = "and q.fqpcode='{$qpcode}'";
        }
        
        $query = "select distinct q.fqpcode, concat(s.fsubname, ' - ', s.fsubshort) as fsubname, 
                    ifnull(fmodqppath, '')as modqppath,q.* from qpseterdet q 
                    inner join subject s on s.fqpcode = q.fqpcode  
                    inner join degree d on d.fdegree = s.fdegree and 
                    d.fexamno = s.fexamno
                    left join deggrp dg on d.fdeggrp = dg.fdeggrp
                    where ffinalpaper = 'T' and d.fdeggrp = '{$degree}' 
                    and dg.fyear = '{$fyear}' and dg.fexamtype = '{$fexamtype}'
                    {$qpCond} {$boardCond}";
        $result = $aobj_context->pobj_db->GetAll($query);
        if($result){
            echo $aobj_context->mobj_output->ToJSONEnvelope($result,0,"success");  
        }else{
            $arr['msg'] = 'Failed to load';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
        }
    }

    function downloadQPFinal($aobj_context){
        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);
        include("error_log.php");
        $univcode = $aobj_context->mobj_data["univcode"];
        $fcollcode = $aobj_context->mobj_data["fcollcode"];
        $fmobileno = $aobj_context->mobj_data["fmobileno"];
        $fuserid = $aobj_context->mobj_data["fuserid"];
        $qpcode = $aobj_context->mobj_data["qpcode"];
        
        $remarks = "View Question Paper - ". $fuserid ."Downloaded or viewed question paper qpcode ". $qpcode;
        $res = error_logs($aobj_context, $univcode, $remarks, $collcode, "View Final Question Paper", $fuserid, $fmobileno);
    }

    function getModeratorData($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.fset, q.fteachcode, s.fqpsyllabus,
                q.fexamtype,q.fyear,ifnull(q.fmodqpdate,'') as fmodqpdate
                from qpseterdet q inner join 
                (select distinct fqpcode, fsubname, fqpsyllabus, fsubshort from subject where ifnull(fqpcode, '') <> '') s on 
                s.fqpcode = q.fqpcode 
                inner join moderator m on m.fqpcode = q.fqpcode 
                where m.fteachcode = '{$teachcode}' and ifnull(q.fqpfilepath, '') <> ''
                and m.flogin = 'T' order by fmodqpdate = '',fmodqpdate desc";
       
        $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 getModUpdData($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"];
        $fyear = $aobj_context->mobj_data["fyear"];
        $fexamtype = $aobj_context->mobj_data["fexamtype"];
        
        $query = "select * from moderator where fteachcode = '{$user}' and flogin = 'T' and fqpcode = '{$qpcode}'";
       
        $res = $aobj_context->pobj_db->GetRow($query);

        
        if($res)
        {
            $query = "select q.fset, ifnull(q.fqpfilepath,'')as fqpfilepath, 
            ifnull(q.fanskeypath, '') as fanskeypath,
            ifnull(q.fmodqppath, '') as fmodqppath,
            ifnull(q.fmodqpupd, '') as fmodqpupd, 
            ifnull(q.fmodanskey, '') as fmodanskey, 
            ifnull(q.fmodform, '') as fmodform,
            ifnull(q.fteachcode,'') as fteachcode,
            q.fyear,q.fexamtype
            from qpseterdet q inner join moderator m on m.fqpcode = q.fqpcode 
            where q.fqpcode = '{$qpcode}' and m.fteachcode = '{$user}' and
            ifnull(q.fqpfilepath, '') <> ''
            and m.flogin = 'T' and q.fteachcode = '{$teachcode}' and q.fset = '{$fset}'
            and q.fyear = '{$fyear}' and q.fexamtype = '{$fexamtype}'";
        
            $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 uploadQPMODFIle($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"];
        $fexamtype = $aobj_context->mobj_data["fexamtype"];
        $fyear = $aobj_context->mobj_data["fyear"];
        $yearmode = $fyear."-".$fexamtype;

        $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."_QP_".$randomString.".".$ext;

        if($filename!=="" && $filename!==NULL){
            // $yearMode = "select concat(fyear,'-',fexamtype) as yearMode from qpseterdet 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 qpseterdet set fmodqpupd='{$key}', fmodqpdate=now() where fqpcode = '{$qpcode}'
                              and fset='{$set}' and fteachcode = '{$teachcode}' and fyear = '{$fyear}'
                              and fexamtype = '{$fexamtype}'";
                    $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 uploadAnsMODFIle($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"];
        $fexamtype = $aobj_context->mobj_data["fexamtype"];
        $fyear = $aobj_context->mobj_data["fyear"];
        $yearmode = $fyear."-".$fexamtype;

        $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."_Ans_".$randomString.".".$ext;

        if($filename!=="" && $filename!==NULL){
            // $yearMode = "select concat(fyear,'-',fexamtype) as yearMode from qpseterdet 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 qpseterdet set fmodanskey='{$key}', fmodansdate=now() where fqpcode = '{$qpcode}'
                              and fset='{$set}' and fteachcode = '{$teachcode}' and fyear = '{$fyear}'
                              and fexamtype = '{$fexamtype}'";
                    $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 uploadMODFormFIle($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"];
        $fexamtype = $aobj_context->mobj_data["fexamtype"];
        $fyear = $aobj_context->mobj_data["fyear"];
        $yearmode = $fyear."-".$fexamtype;

        $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_".$randomString.".".$ext;

        if($filename!=="" && $filename!==NULL){
            // $yearMode = "select concat(fyear,'-',fexamtype) as yearMode from qpseterdet 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 qpseterdet set fmodform='{$key}', fmodformdate=now() 
                              where fqpcode = '{$qpcode}'
                              and fset='{$set}' and fteachcode = '{$teachcode}' and fyear = '{$fyear}'
                              and fexamtype = '{$fexamtype}'";
                    $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 checkTeachEntryMobile($aobj_context){
        $univcode = $aobj_context->mobj_data["univcode"];
        $mobile = $aobj_context->mobj_data["mobileno"];

        $query = "select * from masteach where fmobile = '{$mobile}'";
        $result = $aobj_context->pobj_db->GetAll($query);

        // var_dump($result);die();
        
        if(count($result) > 0){
            $arr['msg'] = 'Mobile number already present';
            echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
            return;
        }
    }
?>