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.224.70.239


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

<?php

function getExamMonthRoomAllotment($aobj_context){
	session_start();
	$aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC); 
	$collcode = $aobj_context->mobj_data['collcode'];
	
	$doe = stripslashes($aobj_context->mobj_data["dates"]);


	$query = "select funivcode from control";
	$results = $aobj_context->mobj_db->GetRow($query);
	$funivcode = $results['funivcode'];
	
	$query = "select froomno as `key`, froomno as `value`, concat(froomname,' - ',fcapacity) as `label` from masroom 
			where ifnull(fdeleted,'') <>'T' and fcapacity > 0
			and  fcollcode = '{$collcode}' order by froomno ";
	$rst1 = $aobj_context->mobj_db->getAll($query);

	$query = "SELECT DISTINCT dg.fdeggrp as id, dg.fdeggrp as value, dg.fdescpn as label 
	FROM deggrp dg
	INNER JOIN degree d ON d.fdeggrp = dg.fdeggrp 
	INNER JOIN subject s on s.fdegree = d.fdegree and d.fexamno = s.fexamno
	INNER JOIN timetable t on s.fqpcode = t.fqpcode
	INNER JOIN colldeg c ON c.fdegree = d.fdegree and ifnull(c.fdeleted,'') <> 'T'
	WHERE t.fdate =date_format(STR_TO_DATE('{$doe}', '%d/%m/%Y'),'%Y-%m-%d')"; 
	$rst2 = $aobj_context->mobj_db->getAll($query);


	$query = "SELECT distinct CONCAT(d.fyear,'*',d.fexamtype,'*',t.fdeggrp,'*',d.fexamdate)AS `value`, concat(t.fdeggrp,' - ',d.fexamdate) as `label`, 
	concat(t.fdeggrp,' - ',d.fexamdate) as `key`
	FROM degexam d INNER JOIN candsum c
	ON d.fdegree = c.fdegree and d.fyear = c.fyear 
	and d.fexamtype = c.fexamtype
	INNER JOIN subject s on s.fdegree = c.fdegree
	INNER JOIN timetable t on s.fqpcode = t.fqpcode
	and	t.fyear = c.fyear 
	and t.fexamtype = c.fexamtype
	WHERE c.fcntrcode = '{$collcode}'
	and t.fdate =date_format(STR_TO_DATE('{$doe}', '%d/%m/%Y'),'%Y-%m-%d')
	GROUP BY d.fyear,d.fexamtype,t.fdeggrp";

	$result1 = $aobj_context->mobj_db->GetAll($query);
	
	
	if($funivcode == '012' || $funivcode == '052')
	{
		$query3 = "select distinct FREASONCD as id,concat(r.FDESCPN,' (',r.FREASONCD,')') as value 
		from reason r
		order by r.FREASONCD";

	}else
	{
		$cnd = "inner join colldeg cd on s.fdegree = cd.fdegree and ifnull(cd.fdeleted,'') <> 'T'
				where cd.fcollcode = '{$collcode}'";

		if($funivcode == '042')
		{
			$cnd = "";
		}

		$query3 = "SELECT DISTINCT s.fsession AS `key`,s.fsession AS `value`,CONCAT(s.fsession, ' - ',r.FDESCPN) AS `label`
		from subject s inner join reason r on s.fsession = r.FREASONCD
		{$cnd} and s.fdoe =DATE_FORMAT(STR_TO_DATE('{$doe}', '%d/%m/%Y'),'%Y-%m-%d')
		order by s.fsession";
	}
	
	$rst3 =$aobj_context->mobj_db->getAll($query3);

	$rst['room'] = $rst1;
	$rst['deggrp'] = $rst2;
	$rst['session'] = $rst3;
	$rst['exmmonth'] = $result1;
	echo $aobj_context->mobj_output->ToJSONEnvelope($rst,0,"success"); 


}

function SaveRoomAllotmentDatewise($aobj_context){

	session_start();


		$collcode=$aobj_context->mobj_data['collcode'];
		$funivcode=$aobj_context->mobj_data['univcode'];
		$frm_date = $aobj_context->mobj_data["dates"];
		
		$session = $aobj_context->mobj_data["session"];
		$ra_from = $aobj_context->mobj_data["ra_from"];
		$ra_to = $aobj_context->mobj_data["ra_to"];
		$alternative = $aobj_context->mobj_data["alternative"];
		$deggrp = $aobj_context->mobj_data["deggrp"];
		$romm = $aobj_context->mobj_data["romm"];
		$exmmonth = $aobj_context->mobj_data["exammonth"];
		$fusertype=$aobj_context->mobj_data["fusertype"];
		$fuser=$aobj_context->mobj_data["user"];
		$exmmonthy = explode('-',$exmmonth);

        $yearmode=explode('*',$exmmonthy[0]);

		$year = $yearmode[0];
		$examtype = $yearmode[1];

		
	
	
		if($_SESSION['fexamseparate'] == 'T')
		{
			$candsum = "examcandsum"; 
			$canddet = "examcanddet"; 

		}else
		{
			$candsum = "candsum"; 
			$canddet = "canddet"; 
		}	

		$roomarray = [];
		$roomalt = explode(",", $romm);
	
		foreach($roomalt as $key => $val){
			if($val == 'All'){
				$data = "ALL";
			}else{
				$roomarr .= "'".$val."',";
			}
		}
		$roomarray = substr_replace($roomarr ,"",-1);
	
		if($data == 'ALL'){
			$value = 'All';
		}else{
			$value = $roomarray;
		}
		
		if($value == 'All'){
			$cond="";
		}else{
			$cond="and froomno in ($value)";
		}

		if($session== 'select')
		{
			$sectionvalue = "";
		}
		else 
		{
			if($funivcode == '049'){
				$sectionvalue = "and t.fsessiont like '{$session}'";
			}else if($funivcode == '098'){
				$sectionvalue = "and t.fsession like '{$session}%'";
				
			}else{
				$sectionvalue = "and t.fsessiont like '{$session}%'";
			}
		}

		$query = "select * from collexam where 
		fcollcode = '{$collcode}' 
		and DATE_FORMAT(NOW(),'%Y-%m-%d') 
		BETWEEN DATE_FORMAT(frafrom,'%Y-%m-%d') 
		AND DATE_FORMAT(frato,'%Y-%m-%d')";
	
	
		$student_exam_details = $aobj_context->mobj_db->GetRow($query); 
		
		if(count($student_exam_details) > 0)
		{
	
		}else
		{
			$arr = "Room Allotment Not Enabled";
			echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure");
			return;
			
		} 
	
	
		$mpcnd = "and ifnull(ab.fabstype,'') <> 'QpM'";
		if($funivcode == '027' || $funivcode == '003' || $funivcode == '023' || $funivcode == '041' || $funivcode == '035' || $funivcode == '050' || $funivcode == '051' || $funivcode == '052')
			$mpcnd = "";
	
	
		if($funivcode == '050')	
			$orderby = "ORDER BY s.FQPCODE,s.fsession";
		else	
			$orderby = "ORDER BY reg_cnt DESC,s.fsession,s.FQPCODE";
	
		$query = "SELECT COUNT(DISTINCT cd.FREGNO) AS reg_cnt, s.FQPCODE,concat(s.fsubname,' - ',s.fssubname) as FQPCODE1,s.FDOE, 
				r.FDESCPN, cd.fsubcode
				FROM $canddet cd INNER JOIN subject s ON s.fdegree = cd.fdegree 
				AND s.fexamno = cd.fexamno AND s.FSUBCODE=cd.FSUBCODE
				INNER join degree d on cd.fdegree = d.fdegree and cd.fexamno = d.fexamno
				INNER JOIN  $candsum cs ON cs.FREGNO=cd.FREGNO 
				LEFT JOIN reason r ON s.FSESSION = r.FREASONCD
				left outer join attshort a on  a.fdegree = cd.fdegree 
				and cd.fexamno = a.fexamno and a.fregno = cd.fregno and a.fsubcode = s.fcsubcode
				and a.fyear = cd.fyear
				and a.fexamtype = cd.fexamtype
				left join absent  ab on   ab.fregno = cd.fregno and ab.fqpcode = s.fqpcode
				WHERE s.fdoe = date_format(STR_TO_DATE('{$frm_date}', '%d/%m/%Y'),'%Y-%m-%d')
				AND IFNULL(cd.fpassmth,'') = '' AND cd.FPRESENT='P'  and s.fsession like '{$session}%'
				AND IFNULL(cs.FRECPTDATE,'0000-00-00')<>'0000-00-00'  and cs.fcntrcode = '{$collcode}' 
				and ifnull(a.fregno,'') = '' and ifnull(s.fqpcode,'') <> ''
				{$mpcnd}
				and ifnull(cd.FTHPR,'') <> 'T'
				and ifnull(s.fparentsub,'') <> 'T'
				and INSTR(cs.fhtenable,cd.fexamno) >0
				and d.fdeggrp = '{$deggrp}'
				GROUP BY d.fdeggrp,s.FQPCODE 
				{$orderby}";

	
		$results = $aobj_context->mobj_db->GetAll($query); 
	
		$query1 = "SELECT COUNT(DISTINCT cd.FREGNO) AS reg_cnt
				FROM $canddet cd INNER JOIN subject s ON s.fdegree = cd.fdegree 
				AND s.fexamno = cd.fexamno AND s.FSUBCODE=cd.FSUBCODE
				INNER join degree d on cd.fdegree = d.fdegree and cd.fexamno = d.fexamno
				INNER JOIN {$candsum} cs ON  cd.fcollcode = cs.fcollcode and cs.FREGNO=cd.FREGNO 
				LEFT JOIN reason r ON s.FSESSION = r.FREASONCD
				left outer join attshort a on  a.fdegree = cd.fdegree and cd.fexamno = a.fexamno and a.fregno = cd.fregno and a.fsubcode = s.fcsubcode
				and a.fyear = cd.fyear
				and a.fexamtype = cd.fexamtype
				left join absent  ab on   ab.fregno = cd.fregno and ab.fqpcode = s.fqpcode
					INNER JOIN timetable t ON s.fqpcode = t.fqpcode AND cd.fyear = t.fyear AND cd.fexamtype = t.fexamtype
				AND t.fdeggrp = d.fdeggrp
				WHERE  t.fdate = date_format(STR_TO_DATE('{$frm_date}', '%d/%m/%Y'),'%Y-%m-%d')
				AND IFNULL(cd.fpassmth,'') = '' AND cd.FPRESENT='P'  {$sectionvalue}
				AND IFNULL(cs.FRECPTDATE,'0000-00-00')<>'0000-00-00'  and cs.fcntrcode = '{$collcode}' 
				and ifnull(a.fregno,'') = ''
				$mpcnd
				and INSTR(cs.fhtenable,cd.fexamno) >0
				and d.fdeggrp = '{$deggrp}'
				GROUP BY s.fdoe
				order by d.fdeggrp";
			
			
		
		$results1 = $aobj_context->mobj_db->GetRow($query1);
	
		$reg_cnt = $results1['reg_cnt'];
		
		
	
		$query1 = "select sum(fcapacity) as fcapacity from masroom where fcollcode = '{$collcode}'
		$cond";
		
		$results1 = $aobj_context->mobj_db->GetRow($query1);
		
		$fcapacity = $results1['fcapacity'];
	
		$cpacity = 0;
					$studcount = 0;
					$alloted = 0;
					$remaing = 0;
					
					$query2 ="SELECT GROUP_CONCAT(froomno,'->',froomname,'->',fcapacity) as roomname FROM masroom
							  WHERE  fcollcode = '{$collcode}' $cond
							  group by froomno
							  order by froomno";
						
							 
					$rst2 = $aobj_context->mobj_db->GetAll($query2);
	

$hall_no = []; 
$roomIndex = 0;

for ($subjectIndex = 0; $subjectIndex < count($results); $subjectIndex++) {
    $subjectData = $results[$subjectIndex];
    $qpcode = $subjectData["FQPCODE"];
    $subjectname = $subjectData["FQPCODE1"];
    $total = $subjectData["reg_cnt"];

    $remain = $total;
    $remaincapacity = 0;

    while ($remain > 0 && $roomIndex < count($rst2)) {
        if ($remaincapacity === 0) {
            $roomDetails = $rst2[$roomIndex]["roomname"];
            $rooms = explode("->", $roomDetails);
            $roomCapacity = (int)$rooms[2];
            $remaincapacity = $roomCapacity;
        }

        $allotted = min($remain, $remaincapacity);
        $remaincapacity -= $allotted;

        $hall_arr = [
            "blockno" => $rooms[0],
            "blockname" => $rooms[1],
            "capacity" => (int)$rooms[2],
            "code" => $qpcode,
            "subjectname" => $subjectname,
            "total" => $total,
            "alloted" => $allotted,
            "remain" => $remain - $allotted,
        ];

        $hall_no[] = $hall_arr;

        $remain -= $allotted;

        if ($remaincapacity === 0) {
            $roomIndex++;
        }
    }
}



		$query1 = "SELECT COUNT(DISTINCT cd.FREGNO) AS reg_cnt
		FROM $canddet cd INNER JOIN subject s ON s.fdegree = cd.fdegree 
		AND s.fexamno = cd.fexamno AND s.FSUBCODE=cd.FSUBCODE
		INNER JOIN $candsum cs ON  cd.fcollcode = cs.fcollcode and cd.FDEGREE=cs.FDEGREE 
		and cs.FREGNO=cd.FREGNO  and cd.fcollcode = cs.fcollcode
		inner join degree dd on cd.fdegree=dd.fdegree and dd.fexamno=cd.fexamno 
		inner join timetable t on s.fqpcode = t.fqpcode
		and t.fyear = cd.fyear
		and t.fexamtype = cd.fexamtype
		WHERE  t.fdate =date_format(STR_TO_DATE('{$frm_date}', '%d/%m/%Y'),'%Y-%m-%d')
		AND IFNULL(cd.fpassmth,'') = '' 
		AND cd.fyear = '{$year}'
		and cd.fexamtype = '{$examtype}'
		AND cd.FPRESENT='P'  
		{$sectionvalue}
		AND IFNULL(cs.FRECPTDATE,'0000-00-00')<>'0000-00-00'  
		and cs.fcntrcode = '{$collcode}'
		and cs.fdegree in(select distinct fdegree from degree where fdeggrp = '{$deggrp}') 
		GROUP BY t.fdate";

	
$results1 = $aobj_context->mobj_db->GetRow($query1);
$reg_cnt = $results1['reg_cnt'];


$query1 = "select sum(fcapacity) as fcapacity from masroom where 
 fcollcode = '{$collcode}' $cond";

$results1 = $aobj_context->mobj_db->GetRow($query1);
$fcapacity = $results1['fcapacity'];

if($reg_cnt > $fcapacity)
{
	$arr = "Insufficient Rooms for the allotment. Total Capacity : ".$fcapacity." Total Strength :".$reg_cnt;
	echo $aobj_context->mobj_output->ToJSONEnvelope($arr,-1,"failure"); 
	return;
}

$query = "update $canddet cd, subject s, timetable t  
		set cd.fqpcode1 = t.fqpcode, FHALLNO = NULL,fslno = NULL 
		where cd.fdegree = s.fdegree and cd.fexamno = s.fexamno 
		and ifnull(cd.fpassmth,'') = '' and cd.fpresent = 'P'
		and s.fqpcode = t.fqpcode
		and cd.fyear = t.fyear and cd.fexamtype = t.fexamtype
		and cd.fregno in (select fregno from $candsum where fcntrcode = '{$collcode}')
		and cd.fsubcode = s.fsubcode {$sectionvalue}
		and cd.fdegree in(select distinct fdegree from degree where fdeggrp = '{$deggrp}')
		AND cd.fyear = '{$year}'
		and cd.fexamtype = '{$examtype}'
		and t.fdate = date_format(STR_TO_DATE('{$frm_date}', '%d/%m/%Y'),'%Y-%m-%d')";
	
		$rst1 = $aobj_context->mobj_db->Execute($query);	
		$rows_affected = $aobj_context->mobj_db->affected_rows();

	
		$query = "update masroom set fbalroomcnt = fcapacity where fcollcode = '{$collcode}'
		$cond";
	
		$rst1 = $aobj_context->mobj_db->Execute($query);	
		
		$cnd = "and ifnull(ab.fabstype,'') <> 'QpM'";
		if($funivcode == '049' || $funivcode == '052' || $funivcode == '021' || $funivcode == '055')
			$cnd = "";

			$query = "SELECT COUNT(DISTINCT cd.FREGNO) AS reg_cnt,s.FQPCODE,t.fdate AS FDOE,s.fsubcode
				FROM $canddet cd INNER JOIN subject s ON s.fdegree = cd.fdegree 
				AND s.fexamno = cd.fexamno AND s.FSUBCODE = cd.FSUBCODE and cd.fqpcode1 = s.fqpcode
				INNER JOIN $candsum cs ON cs.FREGNO = cd.FREGNO AND cd.FDEGREE=cs.FDEGREE	
				inner join timetable t on s.fqpcode = t.fqpcode
				and t.fyear = cd.fyear
				and t.fexamtype = cd.fexamtype
				left join absent  ab on ab.fregno = cd.fregno
				WHERE t.fdate =date_format(STR_TO_DATE('{$frm_date}', '%d/%m/%Y'),'%Y-%m-%d')
				AND IFNULL(cd.fpassmth,'') = '' AND cd.FPRESENT='P'  {$sectionvalue}
				AND IFNULL(cs.FRECPTDATE,'0000-00-00')<>'0000-00-00'  
				and cs.fcntrcode = '{$collcode}' 
				AND cd.fyear = '{$year}'
				and cd.fexamtype = '{$examtype}' 
				{$cnd}
				 and ifnull(s.fqpcode,'') <> ''
				and cs.fdegree in(select distinct fdegree from degree where fdeggrp = '{$deggrp}')
				GROUP BY s.FQPCODE ORDER BY reg_cnt DESC,s.fsession,s.FQPCODE";
		
		
		$results = $aobj_context->mobj_db->GetAll($query); 
	
	
		$k = 0;
		foreach($results as $ak=>$value)
		{	
			$reg_cnt = $value['reg_cnt'];
			$qpcode = $value['FQPCODE'];			

			$query2 ="SELECT * FROM masroom
				WHERE fcollcode = '{$collcode}' $cond
				and fcapacity > 0
				order by froomno";
				
			
			$restults = $aobj_context->mobj_db->GetAll($query2);
		
			
			foreach($restults as $key => $value)
			{
			
				if($value['fbalroomcnt'] <= 0)
					continue;

				if($value['fmaxqpcnt'] == 0)
				{
					$value['fmaxqpcnt'] = 1;
				}	
				
				$capacity     = $value['fcapacity']; 
				$studperqp    = round($value['fcapacity'] / $value['fmaxqpcnt']);
				$balroomcnt   = $value['fcapacity'] - $studperqp;	

				if($reg_cnt < $studperqp)
					$studperqp = $reg_cnt;

				if($value['fbalroomcnt'] <= $studperqp)
					$studperqp = $value['fbalroomcnt'];
				
				if($funivcode == '055')
					$regorder = "ifnull(cd.fsorder,'01'),cd.fdegree,cd.fregno";
				else
					$regorder = "cd.fregno";
				
				if($funivcode == '049')
				{	
					if($session == 'N1' || $session == 'N2')
						$regorder = "cd.fdegree,cd.fregno";
					else
						$regorder = "cd.fregno";
				}

				$query1 = "SET SESSION group_concat_max_len=10000000";
				$res9 = $aobj_context->mobj_db->Execute($query1);

				$query = "select group_concat(distinct concat(\"'\",cd.FREGNO,\"'\") order by $regorder) as fregno 
				from $canddet cd inner join $candsum cs on cd.fregno = cs.fregno 
				inner join subject s ON s.fdegree = cd.fdegree 
				AND s.fexamno = cd.fexamno AND s.FSUBCODE=cd.FSUBCODE
				and s.fqpcode = cd.fqpcode1
				inner join timetable t on s.fqpcode = t.fqpcode
				and t.fyear = cd.fyear
				and t.fexamtype = cd.fexamtype
				left join absent  ab on ab.fregno = cd.fregno
				where cd.fqpcode1 = '{$qpcode}' 
				and cd.FPRESENT = 'P' and ifnull(cd.fpassmth,'') = '' 
				and ifnull(cd.FHALLNO,'') = '' 
				AND cd.fyear = '{$year}'
				and cd.fexamtype = '{$examtype}' 
				{$cnd}
				and cs.fcntrcode = '{$collcode}'
				order by {$regorder}
				limit {$studperqp}";						
			
				$rst3 = $aobj_context->mobj_db->GetRow($query);

				$regarr = explode(',',$rst3['fregno']);

				$regnoin = array_slice($regarr,0,$studperqp);
				$regnoin = implode(',',$regnoin);	
				
				$query = "update $canddet set FHALLNO = '{$hall_no[$k]['blockno']}'
						where fregno in ({$regnoin}) and fqpcode1 = '{$hall_no[$k]['code']}' 
						and FPRESENT = 'P' and ifnull(fpassmth,'') = ''";
			
				$rst1 = $aobj_context->mobj_db->Execute($query);
				$rows_affected = $aobj_context->mobj_db->affected_rows();
			

				if($rows_affected)
				{
					$query = "update masroom set fbalroomcnt = ({$value['fbalroomcnt']} - $rows_affected)
					where froomno = '{$hall_no[$k]['blockno']}' 
					and fcollcode = '{$collcode}'";	
					
					$rst1 = $aobj_context->mobj_db->Execute($query);

					$insert = " insert into room_allotment(FCOLLCODE,FQPCODE,FHALLNO,FCAPACITY,FLOGNAME,FLOGDATE,FDOE,FSESSION,FORDER )
						values ('{$collcode}','{$hall_no[$k]['code']}' ,'{$hall_no[$k]['blockno']}','{$rows_affected}','{$log_name}',now(),{date_format(STR_TO_DATE('{$frm_date}', '%d/%m/%Y'),'%Y-%m-%d')},'{$session}','{$k}')";
					//$lobj_insert = $this->aobj_context->mobj_db->Execute($insert);
                   
		
					$insert = " insert into room_allotment(FCOLLCODE,FQPCODE,FHALLNO,FCAPACITY,FLOGNAME,FLOGDATE,FDOE,FSESSION,FORDER )
							values ('{$collcode}','{$hall_no[$k]['code']}' ,'{$hall_no[$k]['blockno']}','{$hall_no[$k]['alloted']}','{$fuser}',now(),'{$frm_date}','{$session}','{$k}')
							ON DUPLICATE KEY UPDATE 
							FCOLLCODE = '{$collcode}',
							FQPCODE = '{$hall_no[$k]['code']}',
							FHALLNO = '{$hall_no[$k]['blockno']}',
							FCAPACITY = '{$hall_no[$k]['alloted']}',
							FLOGNAME = '{$fuser}',
							FLOGDATE = now(),
							FDOE = date_format(STR_TO_DATE('{$frm_date}', '%d/%m/%Y'),'%Y-%m-%d'),
							FSESSION = '{$session}',
							FORDER = '".($k + 1)."'";
					
							
				$lobj_insert = $aobj_context->mobj_db->Execute($insert);
			
					
							
				}
				else
				{
					break;
				}
				$k++;
			}
			
			
		}


		if($alternative == 'T')
		{

		}else
		{

			if($funivcode == '033')
			{
				$teacharry = [];
				$query = "select distinct fteachcode from roominvig where fsession = '{$session}' and fdate = date_format(STR_TO_DATE('{$frm_date}', '%d/%m/%Y'),'%Y-%m-%d')";
				$res1 = $aobj_context->mobj_db->GetAll($query);
			

				foreach($res1 as $val)
				{
					array_push($teacharry,$val['fteachcode']);
				}
				
			}
			

			$query = "SELECT distinct cd.fhallno
				FROM $canddet cd INNER JOIN subject s ON s.fdegree = cd.fdegree 
				AND s.fexamno = cd.fexamno AND s.FSUBCODE = cd.FSUBCODE and cd.fqpcode1 = s.fqpcode
				INNER JOIN $candsum cs ON cs.FREGNO = cd.FREGNO 			
				inner join timetable t on s.fqpcode = t.fqpcode
				and t.fyear = cd.fyear
				and t.fexamtype = cd.fexamtype
				WHERE t.fdate = date_format(STR_TO_DATE('{$frm_date}', '%d/%m/%Y'),'%Y-%m-%d')
				AND IFNULL(cd.fpassmth,'') = '' AND cd.FPRESENT='P'  {$sectionvalue}
				AND IFNULL(cs.FRECPTDATE,'0000-00-00')<>'0000-00-00'  
				AND cd.fyear = '{$year}'
				and cd.fexamtype = '{$examtype}'
				and cs.fcntrcode = '{$collcode}' 
				 and ifnull(s.fqpcode,'') <> ''
				 and cd.fdegree in(select distinct fdegree from degree where fdeggrp = '{$deggrp}')
				 order by cd.fhallno";
			//var_dump($query);
			$results = $aobj_context->mobj_db->GetAll($query);
			
			$roomprifxarry = ["A","B","C","D",'E',"F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","AA","AB",
			"AC","AD",'AE',"AF","AG","AH","AI","AJ","AK","AL","AM","AN","AO","AP","AQ","AR","AS","AT","AU","AV","AW","AX","AY","AZ"];

			$x = 0;
			foreach($results as $value)
			{

				$qrypre = "select fprefix,fcapacity from masroom where fcollcode = '{$collcode}'
				and froomno = '{$value['fhallno']}'";
				$resqrypre = $aobj_context->mobj_db->GetRow($qrypre);

	
				$teacode = $teacharry[$x];
				$roomprifix = $resqrypre['fprefix'];
				$fcapacity = ($resqrypre['fcapacity']/2);
				$lprix = 3;
				if($x >25)
					$lprix =2;
			
				if($funivcode == '033' || $funivcode == '052') 
				{

					$query1 = "SET SESSION group_concat_max_len=10000000";
					$res9 = $aobj_context->mobj_db->Execute($query1);

					$query =  "SELECT distinct s.fqpcode,cd.fdegree,cd.fqpcode1,cd.fcollcode,cd.fexamno, count(distinct cd.fregno) as cnt, 
					group_concat(distinct cd.fregno order by {$regorder}) as reg
					FROM $canddet cd INNER JOIN subject s ON s.fdegree = cd.fdegree 
					AND s.fexamno = cd.fexamno AND s.FSUBCODE = cd.FSUBCODE and cd.fqpcode1 = s.fqpcode
					INNER JOIN $candsum cs ON cs.FREGNO = cd.FREGNO 
					inner join timetable t on s.fqpcode = t.fqpcode
					and t.fyear = cd.fyear
					and t.fexamtype = cd.fexamtype
					WHERE t.fdate = date_format(STR_TO_DATE('{$frm_date}', '%d/%m/%Y'),'%Y-%m-%d')
					AND IFNULL(cd.fpassmth,'') = '' AND cd.FPRESENT='P'  {$sectionvalue}
					AND IFNULL(cs.FRECPTDATE,'0000-00-00')<>'0000-00-00'  
					and cs.fcntrcode = '{$collcode}' 
					AND cd.fyear = '{$year}'
					and cd.fexamtype = '{$examtype}'
					 and ifnull(s.fqpcode,'') <> ''
					 and cd.fhallno = '{$value['fhallno']}'
					 and cd.fdegree in(select distinct fdegree from degree where fdeggrp = '{$deggrp}')
					 group by fqpcode 
					 order by cnt desc,cd.fhallno";
					 //var_dump($query);
					 $res = $aobj_context->mobj_db->GetAll($query);

					$a =1;
					$b =2;	 
					$i =1;
					$r = 1;
					$y =1;
					$x = 1;
					foreach($res as $val)
					{

						$fdegree   = $val['fdegree'];
						$fqpcode1  = $val['fqpcode1'];
						$fexamno   = $val['fexamno'];
						$reg       = $val['reg'];
						$regdet    = explode(",",$reg);
						
					
						foreach($regdet as $ereg)
						{
							$regno = $ereg;

							if($funivcode == '052')
							{
								if($x <= $fcapacity)
								{	
									$slno = 'A'.$x;
									
								}
								else
								{	
									$slno = 'B'.$y;	
									$y++;
									
								}

								$update = "update $canddet set fslno = '{$slno}'
								where fqpcode1 = '{$fqpcode1}'
								and fexamno = '{$fexamno}'
								and fregno = '{$regno}'";
								
								$res1 = $aobj_context->mobj_db->Execute($update);
								$x++;
							}
							else
							{
								
								if(( $i == 1 && $r <= $fcapacity ))
									$slno = $roomprifix.str_pad($a, $lprix, "0",STR_PAD_LEFT);
								else
									$slno = $roomprifix.str_pad($b, $lprix, "0",STR_PAD_LEFT);	

								$update = "update $canddet set fslno = '{$slno}'
								where fqpcode1 = '{$fqpcode1}'
								and fexamno = '{$fexamno}'
								and fregno = '{$regno}'";
								
								$res1 = $aobj_context->mobj_db->Execute($update);
								if($i==1  && $r <= $fcapacity)
									$a = $a+2;
								else
									$b = $b+2;	
								
								$r++;
							}
						}
						$i++;

					}
					//die();

				} 
				else
				{
					if($funivcode == '055')
					{
						$query = "update $canddet x, (select right(concat('000',@a:=@a+1),3) as fslno, fregno, fqpcode1, fhallno
						from (select cd.fdegree, cd.fcollcode, 
						cd.fregno,cd.fqpcode1, cd.fhallno from  $canddet cd, subject s, $candsum cs
						where s.fdegree = cd.fdegree 
						AND s.fexamno = cd.fexamno AND s.FSUBCODE = cd.FSUBCODE 
						and cd.fqpcode1 = s.fqpcode and cs.FREGNO = cd.FREGNO AND cd.FDEGREE=cs.FDEGREE
						and cd.fcollcode = cs.fcollcode 
						and s.fdoe = date_format(STR_TO_DATE('{$frm_date}', '%d/%m/%Y'),'%Y-%m-%d')
						AND IFNULL(cd.fpassmth,'') = '' AND cd.FPRESENT='P'  {$sectionvalue}
						AND IFNULL(cs.FRECPTDATE,'0000-00-00')<>'0000-00-00'  and cd.fhallno = '{$value['fhallno']}'
						and cs.fcntrcode = '{$collcode}'
						and ifnull(s.fqpcode,'') <> ''
						order by cd.fqpcode1,RAND(),fregno) b, (SELECT @a:= '000') AS a) y
						set x.fslno = y.fslno 
						where x.fqpcode1 = y.fqpcode1
						and x.fhallno = y.fhallno
						and x.fregno = y.fregno";
					}else
					{
						$query = "update $canddet x, (select right(concat('000',@a:=@a+1),3) as fslno, fregno, fqpcode1, fhallno
						from (select cd.fdegree, cd.fcollcode, 
						cd.fregno,cd.fqpcode1, cd.fhallno from  $canddet cd, subject s, $candsum cs
						where s.fdegree = cd.fdegree 
						AND s.fexamno = cd.fexamno AND s.FSUBCODE = cd.FSUBCODE 
						and cd.fqpcode1 = s.fqpcode and cs.FREGNO = cd.FREGNO 
						and cd.fcollcode = cs.fcollcode 
						and s.fdoe = date_format(STR_TO_DATE('{$frm_date}', '%d/%m/%Y'),'%Y-%m-%d')
						AND IFNULL(cd.fpassmth,'') = '' AND cd.FPRESENT='P'  {$sectionvalue}
						AND IFNULL(cs.FRECPTDATE,'0000-00-00')<>'0000-00-00'  and cd.fhallno = '{$value['fhallno']}'
						and cs.fcntrcode = '{$collcode}'
						and ifnull(s.fqpcode,'') <> ''
						order by cd.fqpcode1,fregno) b, (SELECT @a:= '000') AS a) y
						set x.fslno = y.fslno 
						where x.fqpcode1 = y.fqpcode1
						and x.fhallno = y.fhallno
						and x.fregno = y.fregno";
					}
					
					
					$lobj_insert = $aobj_context->mobj_db->Execute($query);
				}
				//$query = "";
				//var_dump($query); and cd.fregno in(select distinct fregno from student where fcollcode = '{$this->collcode}' order by fregno)
				
			
				$x++;
				
			}

			$query = "delete from anscapt where fdoe = date_format(STR_TO_DATE('{$frm_date}', '%d/%m/%Y'),'%Y-%m-%d') and fcntrcode = '{$collcode}'
			and ifnull(fansbookno,'') = ''";
			
			$lobj_update = $aobj_context->mobj_db->Execute($query);	
			
			$query = "insert ignore into anscapt(fregno, fdegree, fqpcode, fpresent, fyear, fexamtype, fdoe, fsession, fcntrcode, froomno)
			select a.fregno, a.fdegree, s.fqpcode, a.fpresent, a.fyear, a.fexamtype, s.fdoe, s.fsession, b.fcntrcode, 
			a.fhallno from $canddet a inner join $candsum b on a.fcollcode = b.fcollcode 
			and a.fregno = b.fregno inner join subject s on a.fdegree = s.fdegree and a.fexamno = s.fexamno
			and a.fsubcode = s.fsubcode
			and INSTR(b.fhtenable,a.fexamno) >0
			where ifnull(b.frecptdate,'') <> '' and ifnull(a.fpresent,'') = 'P' and ifnull(fpassmth,'') = ''
			and fdoe = date_format(STR_TO_DATE('{$frm_date}', '%d/%m/%Y'),'%Y-%m-%d')
			and b.fcntrcode = '{$collcode}'";
			
			$lobj_update = $aobj_context->mobj_db->Execute($query);

			$insert = " insert ignore into room_allotment(FCOLLCODE,FQPCODE,FHALLNO,FCAPACITY,FLOGNAME,FLOGDATE,FDOE,FSESSION )
					select b.fcntrcode, s.fqpcode,a.fhallno, '26','-',now(),s.fdoe, s.fsession 
					from $canddet a inner join $candsum b on a.fcollcode = b.fcollcode 
					and a.fregno = b.fregno inner join subject s on a.fdegree = s.fdegree and a.fexamno = s.fexamno
					and a.fsubcode = s.fsubcode
					and INSTR(b.fhtenable,a.fexamno) >0
					where ifnull(b.frecptdate,'') <> '' and ifnull(a.fpresent,'') = 'P' and ifnull(fpassmth,'') = ''
					and fdoe = date_format(STR_TO_DATE('{$frm_date}', '%d/%m/%Y'),'%Y-%m-%d')
					and b.fcntrcode = '{$collcode}'";
			$lobj_insert = $aobj_context->mobj_db->Execute($insert);

		}	

		echo $aobj_context->mobj_output->ToJSONEnvelope($arr,0,"success");
}	
	
?>