| Viewing file:  grade-OLD.php (70.45 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
<?phpinclude("rg_controller.php");
 class grade extends Rg_controller {
 
 protected $sess_prsUsId;
 protected $sess_prsItId;
 
 function __construct() {
 parent::__construct();
 if(strpos($this->config->item('rg_wg_grade'), $this->session->userdata('UsWgID')) === false) {
 redirect("logout");
 }
 
 $personId = $this->session->userdata('UsPsCode');
 $this->sess_prsItId = 1;
 $this->sess_prsUsId = $personId;
 if(substr($personId, 0, 5)=='psout') {
 $this->sess_prsItId = 2;
 $this->sess_prsUsId = substr($personId, 5);
 }
 }
 
 //ส่งเกรด
 function showCrsSendGrd() {
 $this->load->model($this->config->item("rg_folder").'mo_rg_termconfig','tmc');
 $this->load->model($this->config->item("rg_folder").'mo_rg_term','tm');
 
 $acY = $this->session->userdata('acY');
 $tmId = $this->session->userdata('tmId');
 
 $this->contents['acY'] = $acY;
 $this->contents['tmId'] = $tmId;
 $this->contents['view'] = 's';
 if (!isset($this->contents['tc'])) {
 $this->contents['tc'] = '';
 }
 
 /* $grp_rs_tmc เก็บตัวแปร array ที่ใช้ในส่วนของ group by */
 $this->contents['rs_tmc'] = $this->tmc->get_optionsGroupAcY('');
 
 /* $ord_rs_tm เก็บตัวแปร array ที่ใช้ในส่วนของ order by */
 $ord_rs_tm = array('tmName'    => 'ASC');
 $this->contents['rs_tm'] = $this->tm->get_options('', $ord_rs_tm);
 
 $this->output($this->config->item("rg_folder")."v_showCourseSendGrade");
 }
 
 function tc_showCrsSendGrd() {
 $this->load->model($this->config->item("rg_folder").'mo_rg_person','prs');
 $this->load->model($this->config->item("rg_folder").'mo_rg_acadconfig','ac');
 $this->load->model($this->config->item("rg_folder").'mo_rg_schedule','sd');
 $this->load->model($this->config->item("rg_folder").'mo_rg_termconfig','tmc');
 $this->load->model($this->config->item("rg_folder").'mo_rg_term','tm');
 
 $personId = $this->session->userdata('UsPsCode');
 $acY_R = $this->session->userdata('acY_R');
 $tmId_R = $this->session->userdata('tmId_R');
 
 $con_qu_prs = array('prsUsId'     => $this->sess_prsUsId,
 'prsItId'     => $this->sess_prsItId);
 $qu_prs = $this->prs->qryPrs($con_qu_prs);
 
 if ($qu_prs->num_rows()) {
 $this->contents['tc'] = 'tc_';
 
 $qu_ac = $this->ac->qryAc();
 
 $qu_sd = $this->sd->qrySdByAcYTmIdSendGrDate($acY_R, $tmId_R, getNowDate());
 if (($qu_ac->row()->acNoLockT == 'T') || $qu_sd->num_rows()) {
 } else {
 $this->contents['err_msg'] = "ไม่สามารถดำเนินการส่งเกรดได้<br />เนื่องจากไม่อยู่ในช่วงส่งเกรด";
 }
 
 $this->showCrsSendGrd();
 } else {
 $msg = "ท่านไม่มีสิทธิ์ในเมนูนี้";
 $this->session->set_flashdata('msg', $msg);
 redirect($this->config->item("rg_folder")."msg/err_msg");
 }
 }
 
 function showCrs($acY, $tmId, $view) {
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 $this->load->model($this->config->item("rg_folder").'mo_rg_courseopen','co');
 $this->load->model($this->config->item("rg_folder").'mo_rg_course','crs');
 $this->load->model($this->config->item("rg_folder").'mo_rg_courseopenfor','cof');
 $this->load->model($this->config->item("rg_folder").'mo_rg_curriculum','cur');
 $this->load->model($this->config->item("rg_folder").'mo_rg_config','cfg');
 
 $data['tc'] = '';
 $data['flagSendGr'] = 1;
 $i = 0;
 $arr = array();
 if ($view == 's') {
 $rs_rd = $this->rd->qryRdByAcYTmIdGroupCurIdSyIdCrsId($acY, $tmId);
 } else {
 $rs_rd = $this->rd->qryRdByAcYTmIdGroupCoId($acY, $tmId);
 }
 
 foreach ($rs_rd->result() as $row_rd) {
 $clIdStr = '';
 $sumEnrollSeat = 0;
 $flagSomeSend = 0;
 $flagAllSend = 1;
 
 $this->co->coId = $row_rd->rdCoId;
 $qu_co = $this->co->get_by_key();
 $row_co1 = $qu_co->row();
 
 if ($view == 's') {
 $k = 0;
 $ord_rs_co = array('CAST(coSection AS SIGNED)'    => 'ASC');
 if (is_null($row_co1->coCurId)) {
 $con_rs_co = array('coCurId'    => 'NULL',
 'coAcY'    => $row_co1->coAcY,
 'coSyId'    => $row_co1->coSyId,
 'coTmId'    => $row_co1->coTmId,
 'coCrsId'    => $row_co1->coCrsId
 );
 $rs_co = $this->co->qryCo($con_rs_co, $ord_rs_co);
 } else {
 $con_rs_co = array('coCurId'    => $row_co1->coCurId,
 'coAcY'    => $row_co1->coAcY,
 'coSyId'    => $row_co1->coSyId,
 'coTmId'    => $row_co1->coTmId,
 'coCrsId'    => $row_co1->coCrsId
 );
 $rs_co = $this->co->qryCo($con_rs_co, $ord_rs_co);
 }
 foreach ($rs_co->result() as $row_co2) {
 if ($k == 0) {
 $clIdStr .= $row_co2->coId;
 } else {
 $clIdStr .= ','.$row_co2->coId;
 }
 
 $sumEnrollSeat += $row_co2->coNumSeatReg;
 
 if ($row_co2->coSendGradeStatus == 'Y') {
 $flagSomeSend = 1;
 } else {
 $flagAllSend = 0;
 }
 
 $k++;
 }
 } else {
 $clIdStr = $row_rd->rdCoId;
 }
 
 // หาหลักสูตรที่เรียนรายวิชานี้
 $pgNames = '';
 if (is_null($row_co1->coCurId)) {
 $k = 0;
 $con_rs_cof = array('cofCoId'    => $row_co1->coId);
 $rs_cof = $this->cof->qryCof($con_rs_cof);
 foreach ($rs_cof->result() as $row_cof) {
 $this->cur->curId = $row_cof->cofCurId;
 $qu_cur = $this->cur->get_by_key();
 
 if ($k == 0) {
 $pgNames = $qu_cur->row()->curName;
 } else {
 $pgNames .= '<br /> '.$qu_cur->row()->curName;
 }
 
 $k++;
 }
 } else {
 $this->cur->curId = $row_co1->coCurId;
 $qu_cur = $this->cur->get_by_key();
 
 $pgNames = $qu_cur->row()->curName;
 }
 
 $this->crs->crsId = $row_co1->coCrsId;
 
 $arr[$i]['view'] = $view;
 $arr[$i]['crs'] = $this->crs->get_by_key();
 $arr[$i]['co'] = $this->co->get_by_key();
 $arr[$i]['pgNames'] = $pgNames;
 $arr[$i]['clIdStr'] = $clIdStr;
 $arr[$i]['sumEnrollSeat'] = $sumEnrollSeat;
 $arr[$i]['flagSomeSend'] = $flagSomeSend;
 $arr[$i]['flagAllSend'] = $flagAllSend;
 
 $i++;
 }
 
 $data['rs'] = $arr;
 $data['qu_cfg'] = $this->cfg->qryCfg();
 
 echo $this->load->view($this->config->item("rg_folder")."v_showCourseSendGradeRow", $data, TRUE);
 }
 
 function tc_showCrs($acY, $tmId, $view) {
 $this->load->model($this->config->item("rg_folder").'mo_rg_acadconfig','ac');
 $this->load->model($this->config->item("rg_folder").'mo_rg_schedule','sd');
 $this->load->model($this->config->item("rg_folder").'mo_rg_person','prs');
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 $this->load->model($this->config->item("rg_folder").'mo_rg_courseopen','co');
 $this->load->model($this->config->item("rg_folder").'mo_rg_course','crs');
 $this->load->model($this->config->item("rg_folder").'mo_rg_courseopenfor','cof');
 $this->load->model($this->config->item("rg_folder").'mo_rg_curriculum','cur');
 $this->load->model($this->config->item("rg_folder").'mo_rg_config','cfg');
 
 $acY_R = $this->session->userdata('acY_R');
 $tmId_R = $this->session->userdata('tmId_R');
 $personId = $this->session->userdata('UsPsCode');
 
 $data['tc'] = 'tc_';
 
 $qu_ac = $this->ac->qryAc();
 
 $qu_sd = $this->sd->qrySdByAcYTmIdSendGrDate($acY_R, $tmId_R, getNowDate());
 if (($qu_ac->row()->acNoLockT == 'T') || $qu_sd->num_rows()) {
 $data['flagSendGr'] = 1;
 } else {
 $data['flagSendGr'] = 0;
 }
 
 $con_qu_prs = array('prsUsId'     => $this->sess_prsUsId,
 'prsItId'     => $this->sess_prsItId);
 $qu_prs = $this->prs->qryPrs($con_qu_prs);
 $row_prs = $qu_prs->row();
 
 $i = 0;
 $arr = array();
 if ($view == 's') {
 $rs_rd = $this->rd->qryRdByAcYTmIdGroupCurIdSyIdCrsId($acY, $tmId);
 } else {
 $rs_rd = $this->rd->qryRdByAcYTmIdGroupCoId($acY, $tmId);
 }
 
 foreach ($rs_rd->result() as $row_rd) {
 $clIdStr = '';
 $sumEnrollSeat = 0;
 $flagSomeSend = 0;
 $flagAllSend = 1;
 
 $this->co->coId = $row_rd->rdCoId;
 $qu_co = $this->co->get_by_key();
 $row_co1 = $qu_co->row();
 
 if ($view == 's') {
 $k = 0;
 $ord_rs_co = array('CAST(coSection AS SIGNED)'    => 'ASC');
 if (is_null($row_co1->coCurId)) {
 $con_rs_co = array('coCurId'    => 'NULL',
 'coAcY'    => $row_co1->coAcY,
 'coSyId'    => $row_co1->coSyId,
 'coTmId'    => $row_co1->coTmId,
 'coCrsId'    => $row_co1->coCrsId
 );
 $rs_co = $this->co->qryCo($con_rs_co, $ord_rs_co);
 } else {
 $con_rs_co = array('coCurId'    => $row_co1->coCurId,
 'coAcY'    => $row_co1->coAcY,
 'coSyId'    => $row_co1->coSyId,
 'coTmId'    => $row_co1->coTmId,
 'coCrsId'    => $row_co1->coCrsId
 );
 $rs_co = $this->co->qryCo($con_rs_co, $ord_rs_co);
 }
 
 foreach ($rs_co->result() as $row_co2) {
 if ($k == 0) {
 $clIdStr .= $row_co2->coId;
 } else {
 $clIdStr .= ','.$row_co2->coId;
 }
 
 $sumEnrollSeat += $row_co2->coNumSeatReg;
 
 if ($row_co2->coSendGradeStatus == 'Y') {
 $flagSomeSend = 1;
 } else {
 $flagAllSend = 0;
 }
 
 $k++;
 }
 } else {
 $clIdStr = $row_rd->rdCoId;
 }
 
 $flagIsNull = 0;
 $rs_co = $this->co->qryCoByClIdStrPrsIdIsNull($clIdStr);
 if ($rs_co->num_rows()) {
 $flagIsNull = 1;
 }
 
 $flagNotOfId = 0;
 $rs_co = $this->co->qryCoByClIdStrNotPrsId($clIdStr, $row_prs->prsId);
 if ($rs_co->num_rows()) {
 $flagNotOfId = 1;
 }
 
 if (!$flagIsNull && !$flagNotOfId) {
 // หาหลักสูตรที่เรียนรายวิชานี้
 if (is_null($row_co1->coCurId)) {
 $k = 0;
 $con_rs_cof = array('cofCoId'    => $row_co1->coId);
 $rs_cof = $this->cof->qryCof($con_rs_cof);
 foreach ($rs_cof->result() as $row_cof) {
 $this->cur->curId = $row_cof->cofCurId;
 $qu_cur = $this->cur->get_by_key();
 
 if ($k == 0) {
 $pgNames = $qu_cur->row()->curName;
 } else {
 $pgNames .= '<br /> '.$qu_cur->row()->curName;
 }
 
 $k++;
 }
 } else {
 $this->cur->curId = $row_co1->coCurId;
 $qu_cur = $this->cur->get_by_key();
 
 $pgNames = $qu_cur->row()->curName;
 }
 
 $this->crs->crsId = $row_co1->coCrsId;
 
 $arr[$i]['view'] = $view;
 $arr[$i]['crs'] = $this->crs->get_by_key();
 $arr[$i]['co'] = $this->co->get_by_key();
 $arr[$i]['pgNames'] = $pgNames;
 $arr[$i]['clIdStr'] = $clIdStr;
 $arr[$i]['sumEnrollSeat'] = $sumEnrollSeat;
 $arr[$i]['flagSomeSend'] = $flagSomeSend;
 $arr[$i]['flagAllSend'] = $flagAllSend;
 
 $i++;
 }
 }
 
 $data['rs'] = $arr;
 $data['qu_cfg'] = $this->cfg->qryCfg();
 
 echo $this->load->view($this->config->item("rg_folder")."v_showCourseSendGradeRow", $data, TRUE);
 }
 
 function addSendGrade($confirm=0) {
 $this->load->model($this->config->item("rg_folder").'mo_rg_person','prs');
 $this->load->model($this->config->item("rg_folder").'mo_rg_courseopen','co');
 $this->load->model($this->config->item("rg_folder").'mo_rg_timetable','tt');
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 $this->load->model($this->config->item("rg_folder").'mo_rg_student','std');
 $this->load->model($this->config->item("rg_folder").'mo_rg_allowsendgrade','asg');
 $this->load->model($this->config->item("rg_folder").'mo_rg_registfee','rf');
 $this->load->model($this->config->item("rg_folder").'mo_rg_grade','grd');
 
 $coId = $this->input->post('coId');
 $clIdStr = $this->input->post('clIdStr');
 $view = $this->input->post('view');
 $tc = $this->input->post('tc');
 
 $this->contents['coId'] = $coId;
 $this->contents['clIdStr'] = $clIdStr;
 $this->contents['view'] = $view;
 $this->contents['tc'] = $tc;
 
 if ($tc) {
 $personId = $this->session->userdata('UsPsCode');
 
 $con_qu_prs = array('prsUsId'     => $this->sess_prsUsId,
 'prsItId'     => $this->sess_prsItId);
 $qu_prs = $this->prs->qryPrs($con_qu_prs);
 $row_prs = $qu_prs->row();
 
 $flagIsNull = 0;
 $qu_co = $this->co->qryCoByClIdStrPrsIdIsNull($clIdStr);
 if ($qu_co->num_rows()) {
 $flagIsNull = 1;
 }
 
 $flagNotOfId = 0;
 $qu_co = $this->co->qryCoByClIdStrNotPrsId($clIdStr, $row_prs->prsId);
 if ($qu_co->num_rows()) {
 $flagNotOfId = 1;
 }
 
 if ($flagIsNull || $flagNotOfId) {
 $msg = "ไม่สามารถบันทึกเกรดนักศึกษาได้<br />เนื่องจากท่านไม่ใช่อาจารย์ผู้รับผิดชอบส่งเกรดรายวิชานี้";
 $this->session->set_flashdata('msg', $msg);
 redirect($this->config->item('rg_folder').'msg/err_msg');
 }
 }
 
 $con_qu_co = array('coId'    => $coId);
 $this->contents['qu_co'] = $this->co->qryCoJoinCrs($con_qu_co);
 
 $this->contents['qu_tt'] = $this->tt->qryTeacher($clIdStr);
 
 $this->co->coId = $coId;
 $qu_co = $this->co->get_by_key();
 $row_co = $qu_co->row();
 
 $i = 0;
 $arr = array();
 $rs_rd = $this->rd->qryRdByClIdStrAcYTmId($clIdStr, $row_co->coAcY, $row_co->coTmId);
 
 foreach ($rs_rd->result() as $row_rd) {
 $con_qu_std = array('stdCode'     => $row_rd->stdCode);
 $qu_std = $this->std->qryStdJoinPfCur($con_qu_std);
 
 $row_std = $qu_std->row();
 
 $this->asg->asgStdId = $row_std->stdId;
 $this->asg->asgTmId = $row_co->coTmId;
 $this->asg->asgAcY = $row_co->coAcY;
 $qu_asg = $this->asg->get_by_key();
 
 $con_qu_rf = array('rfStdId'    => $row_std->stdId,
 'rfAcY'    => $row_co->coAcY,
 'rfSyId'    => $row_std->stdSyId,
 'rfTmId'    => $row_co->coTmId
 );
 $qu_rf = $this->rf->getSumBalance($con_qu_rf);
 
 $clr = 0;
 if ($qu_rf && $qu_asg->num_rows()) {
 $clr = 1;
 }
 
 $disabled = "";
 if ($qu_rf && ($qu_asg->num_rows() == 0)) {
 $disabled = "disabled";
 }
 
 $arr[$i]['clr'] = $clr;
 $arr[$i]['disabled'] = $disabled;
 $arr[$i]['qu_rf'] = $qu_rf;
 $arr[$i]['qu_std'] = $this->std->qryStdJoinPf($con_qu_std);
 $arr[$i]['rdCoId'] = $row_rd->rdCoId;
 $arr[$i]['rdGrade'] = $row_rd->rdGrade;
 
 $con_rs_grd = array('grdGtpId'    => $row_std->curGtpId);
 $arr[$i]['rs_grd'] = $this->grd->get_options($con_rs_grd, "", "", 'y');
 
 $i++;
 }
 
 $cnt_grd = 0;
 $grd = array();
 if (isset($row_std)) {
 $rs_grd = $this->grd->qryGtpId($row_std->curGtpId);
 if($rs_grd->num_rows()) {
 foreach($rs_grd->result() as $row_grd) {
 $grd[$cnt_grd]['grade'] = $row_grd->grdGrade;
 $grd[$cnt_grd]['sum'] = $this->rd->getCountStdIdByGrade($clIdStr, $row_co->coAcY, $row_co->coTmId, $row_grd->grdGrade);
 $cnt_grd++;
 }
 }
 }
 
 $this->contents['grd'] = $grd;
 $this->contents['rs'] = $arr;
 
 if ($confirm) {
 $disabled_btnPrint = 1;
 $disabled_btnConfirm = 0;
 if ($confirm == 1) {
 $rs_rd = $this->rd->qryRdByClIdStrGradeIsEmpty($clIdStr);
 if ($rs_rd->num_rows()) {
 $disabled_btnConfirm = 1;
 }
 } else if ($confirm == 2) {
 $disabled_btnPrint = 0;
 $disabled_btnConfirm = 1;
 }
 $this->contents['disabled_btnPrint'] = $disabled_btnPrint;
 $this->contents['disabled_btnConfirm'] = $disabled_btnConfirm;
 
 $this->output($this->config->item("rg_folder")."v_showAfterSendGrade");
 } else {
 $this->output($this->config->item("rg_folder")."v_addSendGrade");
 }
 }
 
 function addGradeTextarea() {
 $this->load->model($this->config->item("rg_folder").'mo_rg_person','prs');
 $this->load->model($this->config->item("rg_folder").'mo_rg_courseopen','co');
 $this->load->model($this->config->item("rg_folder").'mo_rg_timetable','tt');
 $this->load->model($this->config->item("rg_folder").'mo_rg_grade','grd');
 
 $coId = $this->input->post('coId');
 $clIdStr = $this->input->post('clIdStr');
 $view = $this->input->post('view');
 $tc = $this->input->post('tc');
 
 $this->contents['coId'] = $coId;
 $this->contents['clIdStr'] = $clIdStr;
 $this->contents['view'] = $view;
 $this->contents['tc'] = $tc;
 
 if ($tc) {
 $personId = $this->session->userdata('UsPsCode');
 
 $con_qu_prs = array('prsUsId'     => $this->sess_prsUsId,
 'prsItId'     => $this->sess_prsItId);
 $qu_prs = $this->prs->qryPrs($con_qu_prs);
 $row_prs = $qu_prs->row();
 
 $flagIsNull = 0;
 $qu_co = $this->co->qryCoByClIdStrPrsIdIsNull($clIdStr);
 if ($qu_co->num_rows()) {
 $flagIsNull = 1;
 }
 
 $flagNotOfId = 0;
 $qu_co = $this->co->qryCoByClIdStrNotPrsId($clIdStr, $row_prs->prsId);
 if ($qu_co->num_rows()) {
 $flagNotOfId = 1;
 }
 
 if ($flagIsNull || $flagNotOfId) {
 $msg = "ไม่สามารถบันทึกเกรดนักศึกษาได้<br />เนื่องจากท่านไม่ใช่อาจารย์ผู้รับผิดชอบส่งเกรดรายวิชานี้";
 $this->session->set_flashdata('msg', $msg);
 redirect($this->config->item('rg_folder').'msg/err_msg');
 }
 }
 
 $con_qu_co = array('coId'    => $coId);
 $this->contents['qu_co'] = $this->co->qryCoJoinCrs($con_qu_co);
 
 $this->contents['qu_tt'] = $this->tt->qryTeacher($clIdStr);
 $this->contents['rs_grd'] = $this->grd->qryGrdJoinGtp();  // เลือกแสดงเกรดทั้งหมด
 
 $this->output($this->config->item("rg_folder")."v_addGradeTextarea");
 }
 
 function processSendGrade() {
 $rdGrade = $this->input->post('rdGrade');
 
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 
 $stdId = $this->input->post('stdId');
 $rdCoId = $this->input->post('rdCoId');
 
 for ($i = 0; $i < count($stdId); $i++) {
 if(isset($rdGrade[$i]) && $rdGrade[$i]!='') {
 $con_rs_rd = array('rdStdId'    => $stdId[$i],
 'rdCoId'    => $rdCoId[$i],
 'rdAcY'    => $this->input->post('rdAcY'),
 'rdTmId'    => $this->input->post('rdTmId')
 );
 $rs_rd = $this->rd->qryRd($con_rs_rd);
 $row_rd = $rs_rd->row();
 
 $this->rd->rdStdId = $row_rd->rdStdId;
 $this->rd->rdAcY = $row_rd->rdAcY;
 $this->rd->rdTmId = $row_rd->rdTmId;
 $this->rd->rdCoId = $row_rd->rdCoId;
 $this->rd->rdSeq = $row_rd->rdSeq;
 $this->rd->get_by_key(TRUE);
 
 $this->rd->rdGrade = $rdGrade[$i];
 $this->rd->rdUpdateUserId = $this->session->userdata('UsLogin');
 $this->rd->rdUpdateDate = date('Y-m-d H:i:s');
 $this->rd->update();
 }
 }
 
 $this->addSendGrade(1);
 }
 
 function processSendGradeTextarea() {
 $this->load->library('form_validation');
 $this->form_validation->set_error_delimiters('<div class="error">','</div>');
 $this->form_validation->set_rules('txt','','trim|xss_clean');
 
 if($this->form_validation->run() == true) {
 $this->load->model($this->config->item("rg_folder").'mo_rg_student','std');
 $this->load->model($this->config->item("rg_folder").'mo_rg_grade','grd');
 $this->load->model($this->config->item("rg_folder").'mo_rg_allowsendgrade','asg');
 $this->load->model($this->config->item("rg_folder").'mo_rg_registfee','rf');
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 
 $txt = $this->input->post('txt');
 $acY = $this->input->post('acY');
 $tmId = $this->input->post('tmId');
 $clIdStr = $this->input->post('clIdStr');
 
 //$lines = explode("\r\n", $txt);
 $lines = explode("\n", $txt);
 for ($i = 0; $i < count($lines); $i++) {
 if ($lines[$i]) {
 list($stdCode, $grdGrade) = preg_split("/ /", $lines[$i]);
 
 $con_qu_std = array('stdCode'     => $stdCode,
 'stdGenStatus'     => 'Y'
 );
 $qu_std = $this->std->qryStdJoinCur($con_qu_std);
 $row_std = $qu_std->row();
 
 $con_qu_grd = array('grdGrade'     => $grdGrade,
 'grdGtpId'    => $row_std->curGtpId
 );
 $qu_grd = $this->grd->qryGrd($con_qu_grd);
 
 if ($stdCode && $grdGrade && $qu_std->num_rows() && $qu_grd->num_rows()) {
 $this->asg->asgStdId = $row_std->stdId;
 $this->asg->asgTmId = $tmId;
 $this->asg->asgAcY = $acY;
 $qu_asg = $this->asg->get_by_key();
 
 $con_qu_rf = array('rfStdId'    => $row_std->stdId,
 'rfAcY'    => $acY,
 'rfSyId'    => $row_std->stdSyId,
 'rfTmId'    => $tmId
 );
 $qu_rf = $this->rf->getSumBalance($con_qu_rf);
 
 // edit 18/09/2556 นำเข้า excel ไม่ต้องดูว่าจ่ายเงินหรือยัง เพราะถ้ายังไม่จ่ายจะไม่เห้นเกรดอยู่แล้ว ต้องบันทึกได้
 //if (!$qu_rf || $qu_asg->num_rows()) {
 $qu_rd = $this->rd->qryRdByStdIdClIdStr($row_std->stdId, $clIdStr);
 if ($qu_rd->num_rows()) {
 $row_rd = $qu_rd->row();
 
 $this->rd->rdAcY = $row_rd->rdAcY;
 $this->rd->rdStdId = $row_rd->rdStdId;
 $this->rd->rdTmId = $row_rd->rdTmId;
 $this->rd->rdCoId = $row_rd->rdCoId;
 $this->rd->rdSeq = $row_rd->rdSeq;
 $this->rd->get_by_key(TRUE);
 
 $this->rd->rdGrade = $grdGrade;
 $this->rd->rdUpdateUserId = $this->session->userdata('UsLogin');
 $this->rd->rdUpdateDate = date('Y-m-d H:i:s');
 $this->rd->update();
 }
 //}
 }
 }
 }
 
 $this->addSendGrade(1);
 } else {
 $this->addGradeTextarea();
 }
 }
 
 // ##### start แก้เกรด
 function showCrsEditGrd() {
 $this->load->model($this->config->item("rg_folder").'mo_rg_termconfig','tmc');
 $this->load->model($this->config->item("rg_folder").'mo_rg_term','tm');
 
 $acY = $this->session->userdata('acY');
 $tmId = $this->session->userdata('tmId');
 
 $this->contents['acY'] = $acY;
 $this->contents['tmId'] = $tmId;
 
 $this->contents['rs_tmc'] = $this->tmc->get_optionsGroupAcY('');
 
 $ord_rs_tm = array('tmName'    => 'ASC');
 $this->contents['rs_tm'] = $this->tm->get_options('', $ord_rs_tm);
 
 $this->output($this->config->item("rg_folder")."v_showCourseEditGrade");
 }
 function showCrs_editGrd($acY, $tmId) {
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 $this->load->model($this->config->item("rg_folder").'mo_rg_courseopenfor','cof');
 $this->load->model($this->config->item("rg_folder").'mo_rg_courseopen','co');
 $this->load->model($this->config->item("rg_folder").'mo_rg_config','cfg');
 
 $con_rs_rd = array('rdAcY'    => $acY,
 'rdTmId'    => $tmId);
 $ord_rs_rd = array('coCurId'    => 'ASC',
 'crsCode'    => 'ASC',
 'crsName'    => 'ASC',
 'CAST(coSection AS SIGNED)'    => 'ASC');
 $grp_rs_rd = array('rdCoId'        => 'rdCoId');
 $rs_rd = $this->rd->qryRdJoinCoCrs($con_rs_rd,$ord_rs_rd,$grp_rs_rd);
 
 $arr = array();
 $i = 0;
 if($rs_rd->num_rows()) {
 foreach($rs_rd->result() as $row_rd) {
 
 $arr[$i]['rd'] = $row_rd;
 
 if(is_null($row_rd->coCurId)) {
 $con_rs_cof = array('cofCoId'    => $row_rd->coId);
 $rs_cof = $this->cof->qryCofJoinCur($con_rs_cof,'','');
 
 $arr[$i]['clIdStr'] = $row_rd->coId;
 $arr[$i]['cur'] = $rs_cof;
 
 } else {
 $con_rs_cur = array('coCurId'    => $row_rd->coCurId,
 'coId'        => $row_rd->coId);
 $ord_rs_cur = array('curName'    => 'ASC');
 $rs_cur = $this->co->qryCoJoinCur($con_rs_cur,$ord_rs_cur,'');
 
 $arr[$i]['clIdStr'] = $row_rd->coId;
 $arr[$i]['cur'] = $rs_cur;
 }
 
 $i++;
 }
 }
 
 $data['acY'] = $acY;
 $data['tmId'] = $tmId;
 $data['arr'] = $arr;
 $data['qu_cfg'] = $this->cfg->qryCfg();
 
 echo $this->load->view($this->config->item("rg_folder")."v_showCourseEditGradeRow", $data, TRUE);
 }
 function editGrd() {
 $this->load->model($this->config->item("rg_folder").'mo_rg_courseopen','co');
 $this->load->model($this->config->item("rg_folder").'mo_rg_term','tm');
 $this->load->model($this->config->item("rg_folder").'mo_rg_timetable','tt');
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 $this->load->model($this->config->item("rg_folder").'mo_rg_grade','grd');
 $this->load->model($this->config->item("rg_folder").'mo_rg_curriculum','cur');
 
 $coId = $this->input->post('coId');
 $tmId = $this->input->post('tmId');
 $acY = $this->input->post('acY');
 
 $con_rs_co = array('coId'    => $coId);
 $this->contents['qu_co'] = $this->co->qryCoJoinCrs($con_rs_co,'','');
 
 $this->tm->tmId = $tmId;
 $this->contents['qu_tm'] = $this->tm->get_by_key();
 
 $this->contents['qu_tt'] = $this->tt->qryTeacher($coId);
 
 $con1_rs_rd = array('rdCoId'    => $coId,
 'rdAcY'        => $acY,
 'rdTmId'    => $tmId,
 'stdSstId'    => 1);
 $con2_rs_rd = array('rdCoId'    => $coId,
 'rdAcY'        => $acY,
 'rdTmId'    => $tmId,
 'ssmSstId'    => 1);
 $rs_rd = $this->rd->qryRdJoinStdSsm($con1_rs_rd,$con2_rs_rd);
 
 $i = 0;
 $arr = array();
 if($rs_rd->num_rows()) {
 foreach($rs_rd->result() as $row_rd) {
 $this->cur->curId = $row_rd->stdCurId;
 $this->cur->get_by_key(TRUE);
 $con_rs_grd = array('grdGtpId'    => $this->cur->curGtpId);
 $rs_grd = $this->grd->get_options($con_rs_grd);
 
 $arr[$i]['rd'] = $row_rd;
 $arr[$i]['grd'] = $rs_grd;
 
 $i++;
 }
 }
 $this->contents['arr'] = $arr;
 
 $this->output($this->config->item("rg_folder")."v_editGrd");
 }
 function processEditGrd() {
 $this->load->library('form_validation');
 $this->form_validation->set_error_delimiters('<div class="error">','</div>');
 $this->form_validation->set_rules('docNo','เลขที่คำสั่ง','trim|required|xss_clean');
 
 if($this->form_validation->run() == true) {
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 
 $coId = $this->input->post('coId');
 $acY = $this->input->post('acY');
 $tmId = $this->input->post('tmId');
 $docNo = $this->input->post('docNo');
 $cnt = $this->input->post('cnt');
 
 $this->db->trans_begin();
 for($i=0; $i<$cnt; $i++) {
 if($this->input->post('chk'.$i)=='Y') {
 $con_qu_rd = array('rdStdId'    => $this->input->post('stdId'.$i),
 'rdCoId'        => $coId,
 'rdAcY'        => $acY,
 'rdTmId'        => $tmId);
 $qu_rd = $this->rd->qryRd($con_qu_rd,'','');
 if($qu_rd->num_rows()) {
 $this->rd->row2attribute($qu_rd->row());
 $this->rd->rdGrade = $this->input->post('grdId'.$i);
 $this->rd->rdDocNo = $docNo;
 $this->rd->rdUpdateDate = date('Y-m-d H:i:s');
 $this->rd->rdUpdateUserId = $this->session->userdata('UsLogin');
 $this->rd->update();
 }
 }
 }
 
 if($this->db->trans_status() === false)
 $this->db->trans_rollback();
 else
 $this->db->trans_commit();
 
 //$this->editGrd();
 redirect($this->config->item("rg_folder")."grade/showCrsEditGrd");
 } else {
 $this->editGrd();
 }
 }
 // ##### end แก้เกรด
 
 // ##### start ยืนยันการแสดงผลเกรด
 function confirmShowGrdStd() {
 $this->load->model($this->config->item("rg_folder").'mo_rg_termconfig','tmc');
 $this->load->model($this->config->item("rg_folder").'mo_rg_term','tm');
 
 $acY = $this->session->userdata('acY');
 $tmId = $this->session->userdata('tmId');
 
 $this->contents['acY'] = $acY;
 $this->contents['tmId'] = $tmId;
 
 $this->contents['rs_tmc'] = $this->tmc->get_optionsGroupAcY('');
 
 $ord_rs_tm = array('tmName'    => 'ASC');
 $this->contents['rs_tm'] = $this->tm->get_options('', $ord_rs_tm);
 
 $this->output($this->config->item("rg_folder")."v_confirmShowGradeStd");
 }
 function showCrs_confirmGrd($acY, $tmId) {
 $this->load->model($this->config->item("rg_folder").'mo_rg_config','cfg');
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 $this->load->model($this->config->item("rg_folder").'mo_rg_courseopenfor','cof');
 $this->load->model($this->config->item("rg_folder").'mo_rg_curriculum','cur');
 
 $con_rs_rd = array('rdAcY'                => $acY,
 'rdTmId'                => $tmId,
 'coSendGradeStatus'    => 'Y',
 'coDeclareStatus'    => 'N'
 );
 $ord_rs_rd = array('coCurId'    => 'ASC',
 'crsCode'    => 'ASC',
 'crsName'    => 'ASC',
 'CAST(coSection AS SIGNED)'    => 'ASC'
 );
 $grp_rs_rd = array('rdCoId'    => 'rdCoId');
 $rs_rd = $this->rd->qryRdJoinCoCrs($con_rs_rd,$ord_rs_rd,$grp_rs_rd);
 
 $i = 0;
 $arr = array();
 if($rs_rd->num_rows()) {
 foreach($rs_rd->result() as $row_rd) {
 
 $arr[$i]['rd'] = $row_rd;
 
 if(is_null($row_rd->coCurId)) {
 $con_rs_cof = array('cofCoId'    => $row_rd->coId);
 $rs_cof = $this->cof->qryCofJoinCur($con_rs_cof,'','');
 
 $arr[$i]['cur'] = $rs_cof;
 } else {
 $this->cur->curId = $row_rd->coCurId;
 $qu_cur = $this->cur->get_by_key();
 
 $arr[$i]['cur'] = $qu_cur;
 }
 
 $i++;
 }
 }
 $data['arr'] = $arr;
 $data['qu_cfg'] = $this->cfg->qryCfg();
 
 echo $this->load->view($this->config->item("rg_folder")."v_confirmShowGradeStdRow", $data, TRUE);
 }
 function processConfirmShowGrdStd() {
 $this->load->model($this->config->item("rg_folder").'mo_rg_courseopen','co');
 
 $cnt = $this->input->post('cnt');
 
 $this->db->trans_begin();
 for($i=0; $i<$cnt; $i++){
 if($this->input->post('chk'.$i)=='Y') {
 $this->co->coId = $this->input->post('coId'.$i);
 $this->co->get_by_key(TRUE);
 
 $this->co->coDeclareStatus = 'Y';
 $this->co->update();
 }
 }
 
 if($this->db->trans_status() === false) {
 $this->db->trans_rollback();
 $this->contents['flg'] = "ไม่สำเร็จ";
 } else {
 $this->db->trans_commit();
 $this->contents['flg'] = "สำเร็จ";
 }
 
 $this->output($this->config->item("rg_folder")."v_processConfirmShowGrdStd");
 }
 // ##### end ยืนยันการแสดงผลเกรด
 
 // ##### start ตรวจสอบรายวิชาที่ยังไม่ได้ส่งเกรด
 function checkNoSendGrdCrs() {
 $this->load->model($this->config->item("rg_folder").'mo_rg_termconfig','tmc');
 $this->load->model($this->config->item("rg_folder").'mo_rg_term','tm');
 
 $acY = $this->session->userdata('acY');
 $tmId = $this->session->userdata('tmId');
 
 $this->contents['acY'] = $acY;
 $this->contents['tmId'] = $tmId;
 
 $this->contents['rs_tmc'] = $this->tmc->get_optionsGroupAcY('');
 
 $ord_rs_tm = array('tmName'    => 'ASC');
 $this->contents['rs_tm'] = $this->tm->get_options('', $ord_rs_tm);
 
 $this->output($this->config->item("rg_folder")."v_checkNoSendGradeCourse");
 }
 function showCrs_noSendGrd($acY, $tmId) {
 $this->load->model($this->config->item("rg_folder").'mo_rg_config','cfg');
 $this->load->model($this->config->item("rg_folder").'mo_rg_curriculum','cur');
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 $this->load->model($this->config->item("rg_folder").'mo_rg_courseopen','co');
 
 $con_rs_cur = array('curStatus'    => 'Y');
 $ord_rs_cur = array('curName'    => 'ASC');
 $rs_cur = $this->cur->qryCur($con_rs_cur, $ord_rs_cur);
 
 $i = 0;
 $arr = array();
 if($rs_cur->num_rows()) {
 foreach($rs_cur->result() as $row_cur) {
 
 $arr[$i]['cur'] = $row_cur;
 
 // coCurId IS NOT NULL
 $con_rs_rd = array('rdAcY'        => $acY,
 'rdTmId'        => $tmId,
 'coCurId'    => $row_cur->curId);
 $rs_rd = $this->rd->qryRdCoIdJoinCoCrs($con_rs_rd,'');
 
 if($rs_rd->num_rows()) {
 foreach($rs_rd->result() as $row_rd) {
 $con_co = array('coId'                => $row_rd->rdCoId,
 'coSendGradeStatus'    => 'N');
 $ord_co = array('crsCode'    => 'ASC',
 'crsName'    => 'ASC',
 'CAST(coSection AS SIGNED)'    => 'ASC'
 );
 $co = $this->co->qryResponsibilityCo($con_co, $ord_co);
 $arr[$i]['co'][] = $co;
 }
 } else {
 $arr[$i]['co'][] = NULL;
 }
 
 // coCurId IS NULL
 $con_rs_rd = array('rdAcY'        => $acY,
 'rdTmId'        => $tmId,
 'coCurId'    => 'NULL',
 'cofCurId'    => $row_cur->curId);
 $rs_rd2 = $this->rd->qryRdJoinCoCrsCof($con_rs_rd,'');
 if($rs_rd2->num_rows()) {
 foreach($rs_rd2->result() as $row_rd2) {
 $con_co2 = array('coId'                    => $row_rd2->rdCoId,
 'coSendGradeStatus'    => 'N');
 $ord_co2 = array('crsCode'    => 'ASC',
 'crsName'    => 'ASC',
 'CAST(coSection AS SIGNED)'    => 'ASC'
 );
 $co2 = $this->co->qryResponsibilityCo($con_co2, $ord_co2);
 
 $arr[$i]['co2'][] = $co2;
 }
 } else {
 $arr[$i]['co2'] = NULL;
 }
 
 $i++;
 }
 }
 $data['arr'] = $arr;
 $data['qu_cfg'] = $this->cfg->qryCfg();
 
 echo $this->load->view($this->config->item("rg_folder")."v_checkNoSendGradeCourseRow", $data, TRUE);
 }
 // ##### end ตรวจสอบรายวิชาที่ยังไม่ได้ส่งเกรด
 
 // ##### start printSendGradePDF
 function printSendGradePDF($showGrade = 0) {
 $this->load->model($this->config->item("rg_folder").'mo_rg_courseopen','co');
 $this->load->model($this->config->item("rg_folder").'mo_rg_timetable','tt');
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 $this->load->model($this->config->item("rg_folder").'mo_rg_student','std');
 $this->load->model($this->config->item("rg_folder").'mo_rg_grade','grd');
 $this->load->model($this->config->item("rg_folder").'mo_rg_person','prs');
 $this->load->model($this->config->item("rg_folder").'mo_rg_studentsummary','ssm');
 $this->load->model($this->config->item("rg_folder").'mo_rg_registfee','rf');
 $coId = $this->input->post('coId');
 $clIdStr = $this->input->post('clIdStr');
 $view = $this->input->post('view');
 
 $this->contents['view'] = $view;
 
 $con_qu_co = array('coId'    => $coId);
 $qu_co = $this->co->qryCoJoinCrsCur($con_qu_co);
 $row_co = $qu_co->row();
 $this->contents['qu_co'] = $qu_co;
 
 //$qu_tt = $this->tt->qryTeacher($clIdStr);
 //$this->contents['prsNames'] = $qu_tt->row()->prsName;
 
 $this->contents['prsNames'] = array();
 $qu_tt = $this->tt->qryTeacher2($clIdStr);
 $i=0;
 foreach($qu_tt->result() as $row){
 $this->contents['prsNames'][$i] = $row->prefixName.$row->fName.' '.$row->lName.' ';
 $i++;
 }
 
 $arr = array();
 $i = 0;
 
 //$rs_rd = $this->rd->qryRdByClIdStrAcYTmId($clIdStr, $row_co->coAcY, $row_co->coTmId);
 // เดิม printPDF เฉพาะเด็ก sstId=1
 $rs_rd = $this->rd->qryRdJoinStdOrdStdCode($clIdStr, $row_co->coAcY, $row_co->coTmId);
 
 if($rs_rd->num_rows()) {
 foreach ($rs_rd->result() as $row_rd) {
 $con_qu_std = array('stdId'     => $row_rd->rdStdId);
 $qu_std = $this->std->qryStdJoinPfSst($con_qu_std);
 $arr[$i]['qu_std'] = $qu_std;
 
 $con_qu_ssm = array('ssmStdId'    => $row_rd->rdStdId,
 'ssmAcY'    => $row_co->coAcY,
 'ssmTmId'    => $row_co->coTmId);
 $qu_ssm = $this->ssm->qrySsmSst($con_qu_ssm);
 
 if ($row_co->coSendGradeStatus == 'Y' || $showGrade == 1) {
 if($row_rd->rdGrade) {
 $arr[$i]['rdGrade'] = $row_rd->rdGrade;
 } else {
 if($qu_ssm->num_rows()) {
 $arr[$i]['rdGrade'] = $qu_ssm->row()->sstName;
 } else {
 $arr[$i]['rdGrade'] = $qu_std->row()->sstName;
 }
 }
 } else {
 $arr[$i]['rdGrade'] = '';
 }
 // 11/4/2556 ถ้าค้างค่าใช้จ่าย ไม่แสดงเกรด ดูรายเทอม
 if($showGrade == 0 ){
 //                    $con_qu_rf = array('rfStdId'    => $row_rd->rdStdId);
 $con_qu_rf = array('rfStdId'    => $row_rd->rdStdId,
 'rfAcY'    => $row_co->coAcY,
 'rfTmId'    => $row_co->coTmId
 );
 $rfBalance = $this->rf->getSumBalance($con_qu_rf );
 if( $rfBalance > 0 ){
 $arr[$i]['rdGrade'] = '-';
 }
 }
 $i++;
 }
 }
 $this->contents['rs1'] = $arr;
 
 $arr = array();
 $i = 0;
 $con_rs_grd = array('grdGtpId'    => $row_co->curGtpId);
 $rs_grd = $this->grd->qryGrd($con_rs_grd);
 foreach ($rs_grd->result() as $row_grd) {
 $arr[$i]['grdGrade'] = $row_grd->grdGrade;
 $arr[$i]['cntStd'] = $this->rd->getCountStdIdByGrade($clIdStr, $row_co->coAcY, $row_co->coTmId, $row_grd->grdGrade);
 
 $i++;
 }
 $this->contents['rs2'] = $arr;
 
 $con_qu_prs = array('prsId'     => $row_co->coPrsId);
 $qu_prs = $this->prs->qryPrsJoinPPC($con_qu_prs);
 if ($qu_prs->num_rows()) {
 $this->contents['prsName'] = $qu_prs->row()->name;
 } else {
 $this->contents['prsName'] = '';
 }
 
 $this->output_pdf($this->config->item("rg_folder")."v_printSendGradePDF");
 }
 // ##### end printSendGradePDF
 
 // ##### start แก้เกรดนักศึกษาแยกตามรายวิชา
 function searchSendGrd() {
 $this->load->model($this->config->item("rg_folder").'mo_rg_term','tm');
 
 $this->contents['rs_tm'] = $this->tm->get_options('','','','y');
 $this->contents['acY'] = $this->session->userdata('acY');
 $this->contents['tmId'] = $this->session->userdata('tmId');
 
 $this->output($this->config->item("rg_folder")."v_searchSendGrade");
 }
 function beforeEditSendGrd() {
 $this->load->library('form_validation');
 $this->form_validation->set_error_delimiters('<div class="error">','</div>');
 $this->form_validation->set_rules('stdCode',' ','trim|required|integer|is_natural_no_zero|xss_clean');
 $this->form_validation->set_rules('acY',' ','callback_checkAdY');
 $this->form_validation->set_rules('tmId',' ','trim|required|xss_clean');
 
 if($this->form_validation->run() == true) {
 $this->editSendGrade();
 } else {
 $this->searchSendGrd();
 }
 }
 function editSendGrade($edit=0) {
 $this->load->model($this->config->item("rg_folder").'mo_rg_student','std');
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 $this->load->model($this->config->item("rg_folder").'mo_rg_grade','grd');
 
 $stdCode = $this->input->post('stdCode');
 $acY = $this->input->post('acY');
 $tmId = $this->input->post('tmId');
 $edit = $this->input->post('edit') ? $this->input->post('edit') : $edit;
 
 if($edit==1) {
 $coId = $this->input->post('coId');
 $stdId = $this->input->post('stdId');
 }
 
 $this->contents['acY'] = $acY;
 $this->contents['tmId'] = $tmId;
 
 $con_qu_std = array('stdCode'    => $stdCode);
 $qu_std = $this->std->qryStdJoinSdtPfCurSySstElv($con_qu_std);
 $this->contents['qu_std'] = $qu_std;
 
 if($qu_std->num_rows()) {
 $con_rs_rd = array('rdStdId'    => $qu_std->row()->stdId,
 'rdAcY'        => $acY,
 'rdTmId'        => $tmId);
 $ord_rs_rd = array('crsCode'    => 'ASC',
 'crsName'    => 'ASC'
 );
 $this->contents['rs_rd'] = $this->rd->qryRdJnCrsOpCrs($con_rs_rd, $ord_rs_rd);
 
 $con_rs_grd = array('grdGtpId'    => $qu_std->row()->curGtpId);
 $this->contents['rs_grd'] = $this->grd->get_options($con_rs_grd,'','','y');
 }
 
 if($edit==1) {
 $this->contents['flgShow'] = $coId;
 }
 
 $this->output($this->config->item("rg_folder")."v_beforeEditSendGrade");
 }
 function processEditSendGrade() {
 $this->load->library('form_validation');
 $this->form_validation->set_error_delimiters('<div class="error">','</div>');
 $this->form_validation->set_rules('rdGrade',' ','trim|required|xss_clean');
 $this->form_validation->set_rules('docNo',' ','trim|required|xss_clean');
 
 if($this->form_validation->run() == true) {
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 
 $stdCode = $this->input->post('stdCode');
 $stdId = $this->input->post('stdId');
 $acY = $this->input->post('acY');
 $tmId = $this->input->post('tmId');
 $coId = $this->input->post('coId');
 
 $con_qu_rd = array('rdStdId'    => $stdId,
 'rdCoId'        => $coId,
 'rdAcY'        => $acY,
 'rdTmId'        => $tmId);
 $qu_rd = $this->rd->qryRd($con_qu_rd,'','');
 if($qu_rd->num_rows()) {
 $this->rd->row2attribute($qu_rd->row());
 
 $this->rd->rdGrade = $this->input->post('rdGrade');
 $this->rd->rdDocNo = $this->input->post('docNo');
 $this->rd->rdUpdateDate = date('Y-m-d H:i:s');
 $this->rd->rdUpdateUserId = $this->session->userdata('UsLogin');
 $this->rd->update();
 }
 
 $this->editSendGrade();
 } else {
 $this->editSendGrade(1);
 }
 }
 // ##### end แก้เกรดนักศึกษาแยกตามรายวิชา
 
 function processConfirmSendGrade() {
 $this->load->model($this->config->item("rg_folder").'mo_rg_courseopen','co');
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 
 $clIdStr = $this->input->post('clIdStr');
 $rdAcY = $this->input->post('rdAcY');
 $rdTmId = $this->input->post('rdTmId');
 
 $clIdStrArr = explode(",", $clIdStr);
 for ($i = 0; $i < count($clIdStrArr); $i++) {
 $this->co->coId = $clIdStrArr[$i];
 $this->co->get_by_key(TRUE);
 
 $this->co->coSendGradeStatus = 'Y';
 $this->co->update();
 }
 
 $rs_rd = $this->rd->qryRdByClIdStrAcYTmId($clIdStr, $rdAcY, $rdTmId);
 foreach ($rs_rd->result() as $row_rd1) {
 $con_rs_rd = array('rdStdId'    => $row_rd1->rdStdId,
 'rdCoId'    => $row_rd1->rdCoId,
 'rdAcY'    => $rdAcY,
 'rdTmId'    => $rdTmId
 );
 $rs_rd = $this->rd->qryRd($con_rs_rd);
 $row_rd2 = $rs_rd->row();
 
 $this->rd->rdAcY = $row_rd2->rdAcY;
 $this->rd->rdStdId = $row_rd2->rdStdId;
 $this->rd->rdTmId = $row_rd2->rdTmId;
 $this->rd->rdCoId = $row_rd2->rdCoId;
 $this->rd->rdSeq = $row_rd2->rdSeq;
 $this->rd->get_by_key(TRUE);
 
 $this->rd->rdNoCalGPA = 'N';
 $this->rd->rdUpdateUserId = $this->session->userdata('UsLogin');
 $this->rd->rdUpdateDate = date('Y-m-d H:i:s');
 $this->rd->update();
 }
 
 $this->addSendGrade(2);
 }
 
 function calGradeCur () {
 $this->load->model($this->config->item("rg_folder").'mo_rg_term','tm');
 
 $this->contents['rs_tm'] = $this->tm->get_options('','','',FALSE);
 $this->contents['acY'] = $this->session->userdata('acY');
 
 $this->output($this->config->item("rg_folder")."v_calGradeCurriculum");
 }
 
 function processCalGradeCur() {
 $this->load->library('form_validation');
 $this->form_validation->set_error_delimiters('<div class="error">','</div>');
 $this->form_validation->set_rules('curName',' ','trim|required|xss_clean');
 $this->form_validation->set_rules('curId',' ','trim|required|xss_clean');
 $this->form_validation->set_rules('stdTmIdAdmit',' ','trim|required|xss_clean');
 $this->form_validation->set_rules('adY',' ','trim|required|nemeric|is_natural_no_zero|xss_clean');
 $this->form_validation->set_rules('acY',' ','trim|required|integer|is_natural_no_zero|callback_checkAcY');
 $this->form_validation->set_rules('tmId',' ','trim|required|xss_clean');
 $this->form_validation->set_rules('syId',' ','trim|integer|is_natural_no_zero|callback_checkSy|required|xss_clean');
 
 if($this->form_validation->run() == true) {
 $this->load->model($this->config->item("rg_folder").'mo_rg_student','std');
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 $this->load->model($this->config->item("rg_folder").'mo_rg_curriculum','cur');
 $this->load->model($this->config->item("rg_folder").'mo_rg_studyYear','sy');
 $this->load->model($this->config->item("rg_folder").'mo_rg_term','tm');
 
 $curId = $this->input->post('curId');
 $adY = $this->input->post('adY');
 $syId = $this->input->post('syId');
 $acY = $this->input->post('acY');
 $tmId = $this->input->post('tmId');
 
 $con_rs_std = array('stdCurId'    => $curId,
 'stdAdY'    => $adY,
 'stdSyId'    => $syId
 );
 $ord_rs_std = array('stdCode'    => 'ASC');
 
 $rs_std = $this->std->qryStd($con_rs_std, $ord_rs_std);
 foreach ($rs_std->result() as $row_std) {
 if (($acY < $this->session->userdata('acY_R')) || ($acY == $this->session->userdata('acY_R') && $tmId <= $this->session->userdata('tmId_R'))) {
 $rs_rd = $this->rd->qryRdByCurIdAdYSyIdAcYTmId($curId, $adY, $syId, $acY, $tmId);
 if ($rs_rd->num_rows()) {
 $this->calGradeByStdIdAcYTmId($row_std->stdId, $acY, $tmId);
 }
 }
 }
 
 // start ใช้ใน view
 $this->cur->curId = $curId;
 $this->contents['qu_cur'] = $this->cur->get_by_key();
 
 $this->contents['adY'] = $adY;
 
 $this->sy->syId = $syId;
 $this->contents['qu_sy'] = $this->sy->get_by_key();
 
 $this->contents['acY'] = $acY;
 
 $this->tm->tmId = $tmId;
 $this->contents['qu_tm'] = $this->tm->get_by_key();
 
 //            echo "<br />".$acY."===".$this->session->userdata('acY_R');
 //            echo "<br />".$acY."===".$this->session->userdata('acY_R');
 //            echo "<br />".$tmId."==".$this->session->userdata('tmId_R');
 
 if (($acY > $this->session->userdata('acY_R')) || ($acY == $this->session->userdata('acY_R') && $tmId > $this->session->userdata('tmId_R'))) {
 $this->contents['err_msg'] = "** ไม่สามารถประมวลผลเกรดนักศึกษาตามหลักสูตร ในภาคการศึกษา ".$tmId." ปีการศึกษา ".$acY." **";
 }
 
 $this->contents['rs_std'] = $this->std->qryStdByCurIdAndAdYAndSyIdJoinSsmPfSdtCurGen($acY,$tmId,$curId,$adY,$syId);
 
 $this->output($this->config->item("rg_folder")."v_processCalGradeCurriculum");
 } else {
 $this->calGradeCur();
 }
 }
 
 function calGradeByStdIdAcYTmId($stdId, $acY, $tmId) {
 $this->load->model($this->config->item("rg_folder").'mo_rg_acadconfig','ac');
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 $this->load->model($this->config->item("rg_folder").'mo_rg_student','std');
 $this->load->model($this->config->item("rg_folder").'mo_rg_studentsummary','ssm');
 
 $qu_ac = $this->ac->qryAc();
 $acCalGradeF = $qu_ac->row()->acCalGradeF;
 
 $divisor = 0;
 if ($acCalGradeF == 1) {
 $divisor = $this->rd->getAllFDivisorGPAX($stdId, $acY, $tmId);
 } else if ($acCalGradeF == 2) {
 $divisor = $this->rd->getOneFDivisorGPAX($stdId, $acY, $tmId);
 }
 
 $this->std->stdId = $stdId;
 $this->std->get_by_key(TRUE);
 
 $this->std->stdCreditAttempt = $this->rd->calCumCreditAttempt($stdId, $acY, $tmId);
 $this->std->stdCreditSatisfy = $this->rd->calCumCreditSatisfy($stdId, $acY, $tmId);
 $this->std->stdGPA = ($divisor) ? $this->rd->getDividendGPAX($stdId, $acY, $tmId) / $divisor : 0;
 $this->std->stdUpdateDate = date('Y-m-d H:i:s');
 $this->std->stdUpdateUsLogin = $this->session->userdata('UsLogin');
 if ($this->std->stdGPA < 1.75) {
 $this->std->stdSstIdTmp = 7;
 } else {
 $this->std->stdSstIdTmp = 1;
 }
 $this->std->update();
 
 $this->ssm->ssmStdId = $stdId;
 $this->ssm->ssmAcY = $acY;
 $this->ssm->ssmTmId = $tmId;
 $qu_ssm = $this->ssm->get_by_key();
 if ($qu_ssm->num_rows()) {
 $this->ssm->get_by_key(TRUE);
 
 $this->ssm->ssmGPA = ($this->rd->getAllFDivisorGPA($stdId, $acY, $tmId)) ? $this->rd->getDividendGPA($stdId, $acY, $tmId) / $this->rd->getAllFDivisorGPA($stdId, $acY, $tmId) : 0;
 $this->ssm->ssmCreditAttempt = $this->rd->getSumCrAtByStdIdAcYTmId($stdId, $acY, $tmId);
 $this->ssm->ssmCreditSatisfy = $this->rd->calCreditSatisfy($stdId, $acY, $tmId);
 $this->ssm->ssmCreditPoint = $this->rd->getAllFDivisorGPA($stdId, $acY, $tmId);
 $this->ssm->ssmGPAX = ($divisor) ? $this->rd->getDividendGPAX($stdId, $acY, $tmId) / $divisor : 0;
 $this->ssm->ssmSumCreditAttempt = $this->rd->calCumCreditAttempt($stdId, $acY, $tmId);
 $this->ssm->ssmSumCreditSatisfy = $this->rd->calCumCreditSatisfy($stdId, $acY, $tmId);
 $this->ssm->ssmSumCreditPoint = $divisor;
 $this->ssm->ssmUpdateDate = date('Y-m-d H:i:s');
 $this->ssm->ssmUpdateUserId = $this->session->userdata('UsLogin');
 $this->ssm->update();
 } else {
 $this->ssm->ssmStdId = $stdId;
 $this->ssm->ssmTmId = $tmId;
 $this->ssm->ssmAcY = $acY;
 $this->ssm->ssmGPA = ($this->rd->getAllFDivisorGPA($stdId, $acY, $tmId)) ? $this->rd->getDividendGPA($stdId, $acY, $tmId) / $this->rd->getAllFDivisorGPA($stdId, $acY, $tmId) : 0;
 $this->ssm->ssmCreditAttempt = $this->rd->getSumCrAtByStdIdAcYTmId($stdId, $acY, $tmId);
 $this->ssm->ssmCreditSatisfy = $this->rd->calCreditSatisfy($stdId, $acY, $tmId);
 $this->ssm->ssmCreditPoint = $this->rd->getAllFDivisorGPA($stdId, $acY, $tmId);
 $this->ssm->ssmGPAX = ($divisor) ? $this->rd->getDividendGPAX($stdId, $acY, $tmId) / $divisor : 0;
 $this->ssm->ssmSumCreditAttempt = $this->rd->calCumCreditAttempt($stdId, $acY, $tmId);
 $this->ssm->ssmSumCreditSatisfy = $this->rd->calCumCreditSatisfy($stdId, $acY, $tmId);
 $this->ssm->ssmSumCreditPoint = $divisor;
 $this->ssm->ssmApprover = "";
 $this->ssm->ssmRefNo = "";
 $this->ssm->ssmApproveDate = "";
 $this->ssm->ssmPassStatus = 0;
 $this->ssm->ssmSstId = $this->std->stdSstId;
 $this->ssm->ssmSstIdApproveSpe = NULL;
 $this->ssm->ssmSyId = $this->std->stdSyId;
 $this->ssm->ssmCreateDate = date('Y-m-d H:i:s');
 $this->ssm->ssmCreateUserId = $this->session->userdata('UsLogin');
 $this->ssm->ssmUpdateDate = date('Y-m-d H:i:s');
 $this->ssm->ssmUpdateUserId = $this->session->userdata('UsLogin');
 $this->ssm->insert();
 }
 }
 
 function searchCalGrade() {
 
 $this->output($this->config->item("rg_folder")."v_searchCalGrade");
 }
 
 function calGrade() {
 $this->load->library('form_validation');
 $this->form_validation->set_error_delimiters('<div class="error">','</div>');
 $this->form_validation->set_rules('stdCode',' ','trim|required|integer|xss_clean');
 
 if($this->form_validation->run() == true) {
 $this->load->model($this->config->item("rg_folder").'mo_rg_student','std');
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 
 $stdCode = $this->input->post('stdCode');
 
 $con_qu_std = array('stdCode'    => $stdCode,
 'stdSstId'    => 1,
 'stdGenStatus'    => 'Y'
 );
 
 $qu_std = $this->std->qryStd($con_qu_std, "", "");
 if ($qu_std->num_rows()) {
 $this->contents['qu_std'] = $this->std->qryStdJoinPfCurSySstElv($con_qu_std, "", "");
 
 $con_rs_rd = array('rdStdId'    => $this->contents['qu_std']->row()->stdId);
 $grp_rs_rd = array('rdAcY', 'rdTmId');
 $this->contents['rs_rd'] = $this->rd->qryRdJoinSsm($con_rs_rd, "", $grp_rs_rd);
 } else {
 $this->contents['err_msg'] = "** ไม่ปรากฏรหัสนักศึกษาดังกล่าวในฐานข้อมูล ";
 }
 
 $this->output($this->config->item("rg_folder")."v_calGrade.php");
 } else {
 $this->searchCalGrade();
 }
 }
 
 function processCalGrade() {
 $stdId = $this->input->post('stdId');
 $acY = $this->input->post('acY');
 $tmId = $this->input->post('tmId');
 
 $this->calGradeByStdIdAcYTmId($stdId, $acY, $tmId);
 
 $this->contents['success_msg'] = "กระบวนการประมวลผลเกรดสำเร็จ";
 
 $this->calGrade();
 }
 
 function showConfirmCalGrade() {
 $this->load->model($this->config->item("rg_folder").'mo_rg_term','tm');
 
 $this->contents['rs_tm'] = $this->tm->get_options('','','',FALSE);
 $this->contents['acY'] = $this->session->userdata('acY');
 
 $this->output($this->config->item("rg_folder")."v_showConfirmCalGrade");
 }
 
 function confirmCalGrade() {
 $this->load->library('form_validation');
 $this->form_validation->set_error_delimiters('<div class="error">','</div>');
 $this->form_validation->set_rules('curName',' ','trim|xss_clean');
 $this->form_validation->set_rules('curId',' ','trim|required|xss_clean');
 $this->form_validation->set_rules('stdTmIdAdmit',' ','trim|required|xss_clean');
 $this->form_validation->set_rules('adY',' ','trim|required|nemeric|is_natural_no_zero|xss_clean');
 $this->form_validation->set_rules('acY',' ','trim|required|integer|is_natural_no_zero|callback_checkAcY');
 $this->form_validation->set_rules('tmId',' ','trim|required|xss_clean');
 $this->form_validation->set_rules('syId',' ','trim|integer|callback_checkSy|required|xss_clean');
 
 if($this->form_validation->run() == true) {
 $this->load->model($this->config->item("rg_folder").'mo_rg_curriculum','cur');
 $this->load->model($this->config->item("rg_folder").'mo_rg_term','tm');
 $this->load->model($this->config->item("rg_folder").'mo_rg_studyyear','sy');
 $this->load->model($this->config->item("rg_folder").'mo_rg_student','std');
 
 $curId = $this->input->post('curId');
 $adY = $this->input->post('adY');
 $syId = $this->input->post('syId');
 
 $this->cur->curId = $curId;
 $this->contents['qu_cur'] = $this->cur->get_by_key();
 
 $this->contents['adY'] = $this->input->post('adY');
 $this->contents['stdTmIdAdmit'] = $this->input->post('stdTmIdAdmit');
 $this->contents['acY'] = $this->input->post('acY');
 
 $this->tm->tmId = $this->input->post('tmId');
 $this->contents['qu_tm'] = $this->tm->get_by_key();
 
 $this->sy->syId = $this->input->post('syId');
 $this->contents['qu_sy'] = $this->sy->get_by_key();
 
 $con_rs_std = array('stdCurId'    => $curId,
 'stdAdY'    => $adY,
 'stdSyId'    => $syId
 );
 $ord_rs_std = array('stdCode'     => 'ASC');
 //$this->contents['rs_std'] = $this->std->qryStdJoinPfCurSySstElv($con_rs_std, $ord_rs_std);
 $this->contents['rs_std'] = $this->std->qryStdJoinPfSstTmp($con_rs_std, $ord_rs_std);
 
 $this->output($this->config->item("rg_folder")."v_confirmCalGrade");
 } else {
 $this->showConfirmCalGrade();
 }
 }
 
 // ยืนยันการประมวลผลเกรดนักศึกษา คือ นศ. ติดโปร ทำได้ตั้งแต่ ปี 1 เทอม 2 เป็นต้นไป
 function processConfirmCalGrade() {
 $this->load->model($this->config->item("rg_folder").'mo_rg_student','std');
 $this->load->model($this->config->item("rg_folder").'mo_rg_studentsummary','ssm');
 
 $stdId = $this->input->post('stdId');
 $acY = $this->input->post('acY');
 $tmId = $this->input->post('tmId');
 
 for ($i = 0; $i < count($stdId); $i++) {
 $this->std->stdId = $stdId[$i];
 $this->std->get_by_key(TRUE);
 
 if (($stdId[$i] != '') && (($this->std->stdSyId == 1 && $tmId != 1) || ($this->std->stdSyId != 1))) {
 $this->std->stdSstId = $this->std->stdSstIdTmp;
 $this->std->updateUserId = $this->session->userdata('UsLogin');
 $this->std->updateDateTime = date('Y-m-d H:i:s');
 $this->std->update();
 
 $this->ssm->ssmStdId = $stdId[$i];
 $this->ssm->ssmTmId = $tmId;
 $this->ssm->ssmAcY = $acY;
 
 $qu_ssm = $this->ssm->get_by_key();
 if ($qu_ssm->num_rows()) {
 $this->ssm->get_by_key(TRUE);
 
 $this->ssm->ssmSstId = $this->std->stdSstId;
 $this->ssm->ssmUpdateDate = date('Y-m-d H:i:s');
 $this->ssm->ssmUpdateUserId = $this->session->userdata('UsLogin');
 $this->ssm->update();
 } else {
 $this->ssm->ssmStdId = $stdId[$i];
 $this->ssm->ssmTmId = $tmId;
 $this->ssm->ssmAcY = $acY;
 $this->ssm->ssmGPA = 0;
 $this->ssm->ssmCreditAttempt = 0;
 $this->ssm->ssmCreditSatisfy = 0;
 $this->ssm->ssmCreditPoint = 0;
 $this->ssm->ssmGPAX = 0;
 $this->ssm->ssmSumCreditAttempt = 0;
 $this->ssm->ssmSumCreditSatisfy = 0;
 $this->ssm->ssmSumCreditPoint = 0;
 $this->ssm->ssmApprover = "";
 $this->ssm->ssmRefNo = "";
 $this->ssm->ssmApproveDate = "";
 $this->ssm->ssmPassStatus = 0;
 $this->ssm->ssmSstId = $this->std->stdSstId;
 $this->ssm->ssmSstIdApproveSpe = NULL;
 $this->ssm->ssmSyId = $this->std->stdSyId;
 $this->ssm->ssmCreateDate = date('Y-m-d H:i:s');
 $this->ssm->ssmCreateUserId = $this->session->userdata('UsLogin');
 $this->ssm->ssmUpdateDate = date('Y-m-d H:i:s');
 $this->ssm->ssmUpdateUserId = $this->session->userdata('UsLogin');
 $this->ssm->insert();
 }
 }    // end if
 }    // end for
 
 $this->confirmCalGrade();
 }
 
 // ##### start ลงทะเบียนและส่งเกรดย้อนหลัง
 function showBackRegistAndSendGrade() {
 $this->load->model($this->config->item("rg_folder").'mo_rg_term','tm');
 
 $this->contents['acY'] = $this->session->userdata('acY');
 $this->contents['tmId'] = $this->session->userdata('tmId');
 $this->contents['rs_tm'] = $this->tm->get_options('','','','n');
 
 $this->output($this->config->item("rg_folder")."v_showBackRegistAndSendGrade");
 }
 function addBackRegistAndSendGrade() {
 $this->load->library('form_validation');
 $this->form_validation->set_error_delimiters('<div class="error">','</div>');
 $this->form_validation->set_rules('stdCode',' ','trim|required|integer|is_natural_no_zero|xss_clean');
 $this->form_validation->set_rules('acY',' ','trim|integer|callback_checkAdY|xss_clean');
 $this->form_validation->set_rules('tmId',' ','trim|required|xss_clean');
 $this->form_validation->set_rules('syId',' ','callback_checkSyId');
 
 if($this->form_validation->run() == true) {
 $this->backRegistAndSendGrade_input();
 } else {
 $this->showBackRegistAndSendGrade();
 }
 }
 function backRegistAndSendGrade_input() {
 $this->load->model($this->config->item("rg_folder").'mo_rg_student','std');
 $this->load->model($this->config->item("rg_folder").'mo_rg_studentsummary','ssm');
 $this->load->model($this->config->item("rg_folder").'mo_rg_studyyear','sy');
 $this->load->model($this->config->item("rg_folder").'mo_rg_term','tm');
 $this->load->model($this->config->item("rg_folder").'mo_rg_courseopen','co');
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 $this->load->model($this->config->item("rg_folder").'mo_rg_grade','grd');
 
 $stdCode = $this->input->post('stdCode');
 $acY = $this->input->post('acY');
 $tmId = $this->input->post('tmId');
 $syId = $this->input->post('syId');
 
 $this->sy->syId = $syId;
 $this->contents['qu_sy'] = $this->sy->get_by_key();
 
 $this->tm->tmId = $tmId;
 $this->contents['qu_tm'] = $this->tm->get_by_key();
 
 $this->contents['acY'] = $acY;
 
 $this->ssm->ssmStdId = $stdCode;
 $this->ssm->ssmTmId = $tmId;
 $this->ssm->ssmAcY = $acY;
 $this->contents['qu_ssm'] = $this->ssm->get_by_key();
 
 $con_qu_std = array('stdCode'        => $stdCode,
 'stdGenStatus'    => 'Y',
 'stdSstId'        => 1);
 $qu_std = $this->std->qryStdJoinCurPfSySsm($con_qu_std,'','');
 $i = 0;
 $arr = array();
 if($qu_std->num_rows()) {
 $this->contents['qu_std'] = $qu_std;
 $con_rs_grd = array('grdGtpId'    => $qu_std->row()->curGtpId);
 $this->contents['rs_grd'] = $this->grd->get_options($con_rs_grd,'','','y');
 
 // curId IS NOT NULL
 $con_rs_co = array('coCurId'    => $qu_std->row()->stdCurId,
 'coSyId'        => $syId,
 'coTmId'        => $tmId,
 'coAcY'        => $acY);
 $rs_co = $this->co->qryCoJoinCrs($con_rs_co,'');
 if($rs_co->num_rows()) {
 foreach($rs_co->result() as $row_co) {
 $con_qu_rd = array('rdCoId'        => $row_co->coId,
 'rdAcY'        => $acY,
 'rdTmId'        => $tmId,
 'rdStdId'    => $qu_std->row()->stdId);
 $qu_rd = $this->rd->qryRd($con_qu_rd,'','');
 
 $arr[$i]['co'] = $row_co;
 $arr[$i]['rd'] = $qu_rd;
 
 $i++;
 }
 }
 
 // curId IS NULl
 $con_rs_co2 = array('coCurId'    => 'NULL',
 'coAcY'        => $acY,
 'coTmId'    => $tmId,
 'cofCurId'    => $qu_std->row()->stdCurId);
 $rs_co2 = $this->co->qryCoJoinCofCrs($con_rs_co2,'');
 if($rs_co2->num_rows()) {
 foreach($rs_co2->result() as $row_co2) {
 $con_qu_rd = array('rdCoId'        => $row_co2->coId,
 'rdAcY'        => $acY,
 'rdTmId'        => $tmId,
 'rdStdId'    => $qu_std->row()->stdId);
 $qu_rd = $this->rd->qryRd($con_qu_rd,'','');
 
 $arr[$i]['co'] = $row_co2;
 $arr[$i]['rd'] = $qu_rd;
 
 $i++;
 }
 }
 
 $con_creditAttempt = array('rdStdId'    => $qu_std->row()->stdId,
 'rdAcY'        => $acY,
 'rdTmId'        => $tmId);
 $this->contents['creditAttempt'] = $this->rd->getCreditAttempt($con_creditAttempt);
 } else {
 $con_std = array('stdCode'    => $stdCode);
 $this->contents['std'] = $this->std->qryStdJoinPfSst($con_std,'','');
 }
 $this->contents['arr'] = $arr;
 
 $this->output($this->config->item("rg_folder")."v_addBackRegistAndSendGrade");
 }
 function processBackRegistAndSendGrade() {
 $this->load->library('form_validation');
 $this->form_validation->set_error_delimiters('<div class="error">','</div>');
 
 $cnt = $this->input->post('cnt');
 for($num=0; $num<$cnt; $num++) {
 //if($this->input->post('chk'.$num)=='Y') {
 $this->form_validation->set_rules('rdGrade'.$num,' ','trim|xss_clean');
 //}
 }
 
 if($this->form_validation->run() == true) {
 $this->load->model($this->config->item("rg_folder").'mo_rg_regist','rg');
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 $this->load->model($this->config->item("rg_folder").'mo_rg_courseopen','co');
 
 $stdId = $this->input->post('stdId');
 $stdCode = $this->input->post('stdCode');
 $curId = $this->input->post('curId');
 $syId = $this->input->post('syId');
 $acY = $this->input->post('acY');
 $tmId = $this->input->post('tmId');
 
 for($i=0; $i<$cnt; $i++) {
 if($this->input->post('chk'.$i)=='Y' && $this->input->post('rdGrade'.$i)!='') {
 
 // ทำการลงทะเบียน
 $this->rg->rgStdId = $stdId;
 $this->rg->rgTmId = $tmId;
 $this->rg->rgAcY = $acY;
 $this->rg->rgSeq = 1;
 $qu_rg = $this->rg->get_by_key();
 
 if($qu_rg->num_rows()==0) {
 $con_rgSeq = array('rgStdId'    => $stdId,
 'rgAcY'        => $acY,
 'rgTmId'        => $tmId);
 $this->rg->rgStdId = $stdId;
 $this->rg->rgTmId = $tmId;
 $this->rg->rgAcY = $acY;
 $this->rg->rgSeq = $this->rg->getNextSeq($con_rgSeq);
 $this->rg->rgSubmitType = 'B';
 $this->rg->rgStatus = 'N';
 $this->rg->rgCurId = $curId;
 $this->rg->rgSyId = $syId;
 $this->rg->rgCreateDate = date('Y-m-d H:i:s');
 $this->rg->rgCreateUserId = $this->session->userdata('UsLogin');
 $this->rg->rgUpdateDate = date('Y-m-d H:i:s');
 $this->rg->rgUpdateUserId = $this->session->userdata('UsLogin');
 $this->rg->insert();
 }
 
 $flg = 0;
 $this->rd->rdAcY = $acY;
 $this->rd->rdStdId = $stdId;
 $this->rd->rdTmId = $tmId;
 $this->rd->rdCoId = $this->input->post('coId'.$i);
 $this->rd->rdSeq = 1;
 $this->rd->get_by_key(TRUE);
 $qu_rd = $this->rd->get_by_key();
 
 // ทำการลงทะเบียนรายวิชา
 if($qu_rd->num_rows()==0) {
 $this->rd->rdAcY = $acY;
 $this->rd->rdStdId = $stdId;
 $this->rd->rdTmId = $tmId;
 $this->rd->rdCoId = $this->input->post('coId'.$i);
 $this->rd->rdSeq = $this->rg->rgSeq;
 $this->rd->rdCreditAttempt = $this->input->post('creditAttempt'.$i);
 $this->rd->rdSection = $this->input->post('coSection'.$i);
 $this->rd->rdGrade = $this->input->post('rdGrade'.$i);
 $this->rd->rdDocNo = '';
 $this->rd->rdCredit1 = $this->input->post('credit1'.$i);
 $this->rd->rdCredit2 = $this->input->post('credit2'.$i);
 $this->rd->rdNoCalGPA = 'N';
 $this->rd->rdAllowPr = 'N';
 $this->rd->rdCdId1 = $this->input->post('cdId1'.$i);
 $this->rd->rdCdId2 = $this->input->post('cdId2'.$i);
 $this->rd->rdUpdateDate = date('Y-m-d H:i:s');
 $this->rd->rdUpdateUserId = $this->session->userdata('UsLogin');
 $this->rd->insert();
 
 $flg = 1;
 } else {
 $this->rd->rdGrade = $this->input->post('rdGrade'.$i);
 $this->rd->rdUpdateDate = date('Y-m-d H:i:s');
 $this->rd->rdUpdateUserId = $this->session->userdata('UsLogin');
 $this->rd->update();
 }
 
 // อัพเดทที่นั่งของรายวิชาที่เปิดสอน
 $this->co->coId = $this->input->post('coId'.$i);
 $this->co->get_by_key(TRUE);
 
 if($flg) {
 $this->co->coNumSeatReg += 1;
 }
 $this->co->coSendGradeStatus = 'Y';
 $this->co->coDeclareStatus = 'Y';
 $this->co->update();
 } else {
 $this->rd->rdStdId = $stdId;
 $this->rd->rdAcY = $acY;
 $this->rd->rdTmId = $tmId;
 $this->rd->rdSeq = 1;
 $this->rd->rdCoId = $this->input->post('coId'.$i);
 $this->rd->get_by_key();
 $qu_rd = $this->rd->get_by_key();
 
 // ลบรายวิชาที่เคยลงทะเบียน
 if($qu_rd->num_rows()) {
 $this->rd->delete();
 
 // อัพเดทที่นั่งของรายวิชาที่เปิดสอน
 $this->co->coId = $this->input->post('coId'.$i);
 $this->co->get_by_key(TRUE);
 $this->co->coNumSeatReg -= 1;
 $this->co->update();
 }
 
 // ลบการลงทะเบียน เมื่อไม่มีรายวิชาลงทะเบียนเหลืออยู่
 $con_rd = array('rdStdId'    => $stdId,
 'rdAcY'        => $acY,
 'rdTmId'    => $tmId,
 'rdSeq'        => 1);
 $rs_rd = $this->rd->qryRd($con_rd);
 if($rs_rd->num_rows()==0) {
 $this->rg->rgStdId = $stdId;
 $this->rg->rgAcY = $acY;
 $this->rg->rgTmId = $tmId;
 $this->rg->rgSeq = 1;
 $this->rg->delete();
 }
 }
 }
 $this->backRegistAndSendGrade_input();
 } else {
 $this->backRegistAndSendGrade_input();
 }
 }
 // ##### end ลงทะเบียนและส่งเกรดย้อนหลัง
 
 /* ##### start จัดการกองทุนกู้ยืม */
 function showAllowSendGrade() {
 $this->load->model($this->config->item("rg_folder").'mo_rg_term','tm');
 
 $this->contents['rs_tm'] = $this->tm->get_options('','','','n');
 
 $this->contents['acY'] = $this->session->userdata('acY');
 $this->contents['tm'] = $this->session->userdata('tmId');
 
 $this->output($this->config->item("rg_folder")."v_showAllowSendGrade");
 }
 function addAllowSendGrade() {
 $this->load->library('form_validation');
 $this->form_validation->set_error_delimiters('<div class="error">','</div>');
 $this->form_validation->set_rules('curName',' ','trim|xss_clean');
 $this->form_validation->set_rules('curId',' ','trim|required|xss_clean');
 $this->form_validation->set_rules('stdTmIdAdmit',' ','trim|xss_clean');
 $this->form_validation->set_rules('adY',' ','trim|required|xss_clean');
 $this->form_validation->set_rules('acY',' ','callback_checkAcY2');
 $this->form_validation->set_rules('tmId',' ','trim|required|xss_clean');
 
 if($this->form_validation->run() == true) {
 $this->asg_input();
 } else {
 $this->showAllowSendGrade();
 }
 }
 function asg_input() {
 $this->load->model($this->config->item("rg_folder").'mo_rg_curriculum','cur');
 $this->load->model($this->config->item("rg_folder").'mo_rg_term','tm');
 $this->load->model($this->config->item("rg_folder").'mo_rg_student','std');
 
 $curId = $this->input->post('curId');
 $adY = $this->input->post('adY');
 $acY = $this->input->post('acY');
 $tmId = $this->input->post('tmId');
 
 $this->contents['acY'] = $acY;
 $this->contents['adY'] = $adY;
 
 $this->cur->curId = $curId;
 $this->contents['qu_cur'] = $this->cur->get_by_key();
 
 $this->tm->tmId = $tmId;
 $this->contents['qu_tm'] = $this->tm->get_by_key();
 
 $con_rs_std = array('stdCurId'    => $curId,
 'stdAdY'    => $adY);
 $ord_rs_std = array('stdCode'    => 'ASC');
 $this->contents['rs_std'] = $this->std->qryStdJoinPfAsg($con_rs_std, $ord_rs_std);
 
 $this->output($this->config->item("rg_folder")."v_addAllowSendGrade");
 }
 function asg_insert_update() {
 $this->load->model($this->config->item("rg_folder").'mo_rg_allowsendgrade','asg');
 
 $cnt = $this->input->post('cnt');
 $curId = $this->input->post('curId');
 $acY = $this->input->post('acY');
 $adY = $this->input->post('adY');
 $tmId = $this->input->post('tmId');
 
 $con_rs_asg = array('asgAcY'    => $acY,
 'asgTmId'    => $tmId);
 $rs_asg = $this->asg->qryAsg($con_rs_asg,'','');
 
 $this->db->trans_begin();
 if($rs_asg->num_rows()) {
 foreach($rs_asg->result() as $row_asg) {
 $this->asg->asgStdId = $row_asg->asgStdId;
 $this->asg->asgTmId = $tmId;
 $this->asg->asgAcY = $acY;
 $this->asg->delete();
 }
 }
 
 for($i=0; $i<$cnt; $i++) {
 if($this->input->post('chk'.$i)=='Y') {
 $this->asg->asgStdId = $this->input->post('stdId'.$i);
 $this->asg->asgAcY = $acY;
 $this->asg->asgTmId = $tmId;
 $this->asg->insert();
 }
 }
 
 if($this->db->trans_status() === false)
 $this->db->trans_rollback();
 else
 $this->db->trans_commit();
 
 $this->asg_input();
 }
 /* ##### end จัดการกองทุนกู้ยืม */
 
 function std_showResStudy() {
 $this->load->model($this->config->item("rg_folder").'mo_rg_student','std');
 $this->load->model($this->config->item("rg_folder").'mo_rg_studentsummary','ssm');
 $this->load->model($this->config->item("rg_folder").'mo_rg_registdetails','rd');
 $this->load->model($this->config->item("rg_folder").'mo_rg_regist','rg');
 
 $stdCode = $this->input->post('stdCode') ? $this->input->post('stdCode') : $this->session->userdata('UsPsCode');
 
 $con_qu_std = array('stdCode'     => $stdCode,
 'stdGenStatus'    => 'Y'
 );
 $qu_std = $this->std->qryStd($con_qu_std);
 if ($qu_std->num_rows()) {
 $forceAssess = $this->forceAssess();
 if ($forceAssess) {
 $row_std = $qu_std->row();
 
 $con_qu_std = array('stdId'     => $row_std->stdId);
 $this->contents['qu_std'] = $this->std->qryStdJoinSdtPfCurSySstElv($con_qu_std);
 
 $i = 0;
 $arr = array();
 $con_rs_ssm = array('ssmStdId'    => $row_std->stdId);
 $rs_ssm = $this->ssm->qrySsm($con_rs_ssm);
 foreach ($rs_ssm->result() as $row_ssm) {
 $con_rs_ssm = array('ssmStdId'    => $row_std->stdId
 , 'ssmTmId'    => $row_ssm->ssmTmId
 , 'ssmAcY'    => $row_ssm->ssmAcY
 );
 $arr[$i]['qu_ssm'] = $this->ssm->qrySsmJoinTm($con_rs_ssm);
 $con_rs_rd = array('rdStdId'    => $row_std->stdId,
 'rdAcY'    => $row_ssm->ssmAcY,
 'rdTmId'    => $row_ssm->ssmTmId
 );
 $arr[$i]['rs_rd'] = $this->rd->qryRdJoinCoCrs($con_rs_rd);
 $con_qu_rg = array('rgStdId'    => $row_std->stdId,
 'rgAcY'    => $row_ssm->ssmAcY,
 'rgTmId'    => $row_ssm->ssmTmId,
 'rgStatus'    => 'K'
 );
 $qu_rg = $this->rg->qryRg($con_qu_rg);
 if ($qu_rg->num_rows()) {
 $arr[$i]['kssFlag'] = "** รักษาสถานภาพการเป็นนักศึกษา **";
 }
 
 $arr[$i]['sumCrAt'] = $this->rd->getSumCrAtByStdIdAcYTmId($row_std->stdId, $row_ssm->ssmAcY, $row_ssm->ssmTmId);
 
 $i++;
 }
 $this->contents['rs'] = $arr;
 }
 } else {
 $this->contents['err_msg'] = "** ไม่ปรากฏรหัสนักศึกษาดังกล่าวในฐานข้อมูล **";
 }
 
 $this->output($this->config->item("rg_folder")."v_std_showResStudy");
 }
 
 /* ##### start callback function ##### */
 /*function checkAcY($str){
 if($str=='') {
 $this->form_validation->set_message('checkAcY','กรุณาป้อน%s');
 return false;
 } else if(strlen($str)!=4) {
 $this->form_validation->set_message('checkAcY','%sจะต้องเท่ากับ 4 หลัก');
 return false;
 } else if($str==0) {
 $this->form_validation->set_message('checkAcY','%sจะต้องมากกว่า 0');
 return false;
 } else {
 return true;
 }
 }
 function checkAdY($str) {
 if($str=='') {
 $this->form_validation->set_message('checkAdY','กรุณาป้อน%s');
 return false;
 } else if(strlen($str)!=4) {
 $this->form_validation->set_message('checkAdY','%sจะต้องเท่ากับ 4 หลัก');
 return false;
 } else if($str==0) {
 $this->form_validation->set_message('checkAdY','%sจะต้องมากกว่า 0');
 return false;
 } else {
 return true;
 }
 }
 function checkAcY2($str) {
 if($str=='') {
 $this->form_validation->set_message('checkAcY2','กรุณาป้อน%s');
 return false;
 } else if(strlen($str)!=4) {
 $this->form_validation->set_message('checkAcY2','%sจะต้องเท่ากับ 4 หลัก');
 return false;
 } else if($str==0) {
 $this->form_validation->set_message('checkAcY2','%sจะต้องมากกว่า 0');
 return false;
 }
 
 if($str >= $this->input->post('adY')) {
 return true;
 } else {
 $this->form_validation->set_message('checkAcY2','%sจะต้องมากกว่าหรือเท่ากับปีการศึกษาที่เข้า');
 return false;
 }
 }*/
 /* ##### end callback function ##### */
 }
 ?>
 |