fn_getconn(); //new PDO("mysql:host=localhost;dbname=dbhcm", "apphcm", "\$pp"); $q = $pdo->query($sql); $q->setFetchMode(PDO::FETCH_ASSOC); return $q; } public function executeSP($qry){ try { $rtn=false; $pdo = $this->fn_getconn(); $statement = $pdo->prepare($qry); if($statement->execute()){ $rtn=true; } return $rtn; } catch (PDOException $e) { return true; } } public function fn_getfieldvalue($fieldname,$qry){ $rs=$this->selectquerySP($qry); $rtn=""; if($rs){ // $rw=$rs->fetch(); // $rtn=$rw[$fieldname]; while($rw=$rs->fetch()){ $rtn=$rw[$fieldname]; } } return $rtn; } public function fn_getfieldsvalues($fieldname,$qry){ $rs=$this->selectquerySP($qry); $rtn=""; if($rs){ // $rw=$rs->fetch(); // $rtn=$rw[$fieldname]; while($rw=$rs->fetch()){ $d=explode(",",$fieldname); for($i=0;$iselectquerySP($qry); $rtn=false; if($rs){ // $rw=$rs->fetch(); // $rtn=$rw[$fieldname]; while($rw=$rs->fetch()){ $rtn=true; } } return $rtn; } public function index() { // $qry="select distinct * from vw_attendanceemployeesync // where cast(dates as date)=cast(now() as date) // order by idxemployee,datestimes,sorts asc"; $qry="select distinct * from vw_attendanceemployeesync where cast(idt as date)=cast(now() as date) order by idxemployee,datestimes,sorts asc"; #echo $qry; $qryduration=""; $rs=$this->selectquerySP($qry); if($rs){ echo "start time : ".date("Y-m-d H:i:s")."\n"; while($rw=$rs->fetch()){ $swhereshiftcode=""; if($rw['shiftcode']&&$rw['idxdept']==22){ $swhereshiftcode="and shiftcode='".$rw['shiftcode']."'"; } if($rw['idxdept']==30){ // === only call center department if($rw['attendancename']=='IN'){ $qry="insert into tbl_attendancelist set idxattendance='".$rw['_idx']."',idxemployee='".$rw['idxemployee']."',nik='".$rw['nik']."', employeename='".$rw['employeename']."',title='".$rw['title']."',levelname='".$rw['levelname']."', officename='".$rw['officename']."',idxdept='".$rw['idxdept']."',divisiname='".$rw['divisiname']."', serviconame='".$rw['serviconame']."',dates='".$rw['dates']."',checkin='".$rw['datestimes']."', islates='".$rw['islates']."',months='".$rw['months']."',years='".$rw['years']."', shiftcode='".$rw['shiftcode']."',lateperemployee='".$rw['lateperemployee']."',lateperemployeer2='".$rw['lateperemployeer2']."', deviceidcheckin='".$rw['deviceidcheckin']."', iby='svc',idt='".$rw['datestimes']."'"; $qrychk="select _idx from tbl_attendancelist where idxemployee='".$rw['idxemployee']."' and cast(dates as date)=cast('".date("Y-m-d",strtotime($rw['dates']))."' as date) $swhereshiftcode and isdeleted=0 order by _idx desc limit 1"; if($this->fn_rowisexists($qrychk)){ $qry=""; } } elseif($rw['attendancename']=='OUT'){ // $qrychk="select _idx from tbl_attendancelist // where idxemployee='".$rw['idxemployee']."' and cast(dates as date)=date_sub('".date("Y-m-d",strtotime($rw['dates']))."', INTERVAL 1 day) and isdeleted=0 order by _idx desc limit 1"; $qrychk="select _idx from tbl_attendancelist where idxemployee='".$rw['idxemployee']."' and cast(checkin as date)=cast('".date("Y-m-d",strtotime($rw['datestimes']))."' as date) $swhereshiftcode and (checkout is null) and isdeleted=0 order by _idx desc limit 1"; // echo $qrychk;//return false; $_idx=$this->fn_getfieldvalue("_idx",$qrychk); if($_idx){ $qry="update tbl_attendancelist set checkout='".$rw['datestimes']."',deviceidcheckout='".$rw['deviceidcheckout']."' where _idx='$_idx' and UNIX_TIMESTAMP('".date("Y-m-d H:i:s",strtotime($rw['datestimes']))."')>UNIX_TIMESTAMP(checkin)"; $qryduration="update tbl_attendancelist set duration=SEC_TO_TIME(TIMESTAMPDIFF(SECOND,checkin,checkout)) where _idx='$_idx'"; $qrychk="select _idx from tbl_attendancelist where cast(checkout as date)=cast('".date("Y-m-d",strtotime($rw['datestimes']))."' as date) $swhereshiftcode and idxemployee='".$rw['idxemployee']."' and isdeleted=0 order by _idx desc limit 1"; if($this->fn_rowisexists($qrychk)){ $qry="";$qryduration=""; } } else{ // $qrychk="select _idx from tbl_attendancelist // where idxemployee='".$rw['idxemployee']."' and cast(dates as date)=cast('".date("Y-m-d",strtotime($rw['dates']))."' as date) // and isdeleted=0 order by _idx desc limit 1"; $qrychk="select _idx from tbl_attendancelist where idxemployee='".$rw['idxemployee']."' and cast(checkin as date)=date_sub('".date("Y-m-d",strtotime($rw['datestimes']))."', INTERVAL 1 day) and checkout is null $swhereshiftcode and isdeleted=0 order by _idx desc limit 1"; // echo $qrychk;return false; $_idx=$this->fn_getfieldvalue("_idx",$qrychk); if($_idx){ $qry="update tbl_attendancelist set checkout='".$rw['datestimes']."',deviceidcheckout='".$rw['deviceidcheckout']."' where _idx='$_idx' and (UNIX_TIMESTAMP('".date("Y-m-d H:i:s",strtotime($rw['datestimes']))."')>UNIX_TIMESTAMP(checkin)) and checkout is null"; // $qry="update tbl_attendancelist set checkout='".$rw['datestimes']."' where _idx='$_idx'"; $qryduration="update tbl_attendancelist set duration=SEC_TO_TIME(TIMESTAMPDIFF(SECOND,checkin,checkout)) where _idx='$_idx'"; $qrychk="select _idx from tbl_attendancelist where cast(checkout as date)=cast('".date("Y-m-d",strtotime($rw['datestimes']))."' as date) $swhereshiftcode and idxemployee='".$rw['idxemployee']."' and isdeleted=0 order by _idx desc limit 1"; if($this->fn_rowisexists($qrychk)){ $qry="";$qryduration=""; } } } // echo $qry."\n"; } else{ $qry=""; } if($qry){ $this->executeSP($qry); if($qryduration){ // echo $qryduration."\n"; $this->executeSP($qryduration); } // if($rw['attendancename']=='OUT'){ // $qry="update tbl_attendancelist set duration='".$rw['datestimes']."' where _idx='$_idx'"; // } } } else{ // === Non call center dept if($rw['attendancename']=='IN'){$attfield="checkin='".$rw['datestimes']."',";} if($rw['attendancename']=='R1'){$attfield="R1='".$rw['datestimes']."',";} if($rw['attendancename']=='R2'){$attfield="R2='".$rw['datestimes']."',lateperemployeer2='".$rw['lateperemployeer2']."',";} if($rw['attendancename']=='OUT'){$attfield="checkout='".$rw['datestimes']."',";} $qry="insert into tbl_attendancelist set idxattendance='".$rw['_idx']."',idxemployee='".$rw['idxemployee']."',nik='".$rw['nik']."', employeename='".$rw['employeename']."',title='".$rw['title']."',levelname='".$rw['levelname']."', officename='".$rw['officename']."',idxdept='".$rw['idxdept']."',divisiname='".$rw['divisiname']."', serviconame='".$rw['serviconame']."',dates='".$rw['dates']."',".$attfield." islates='".$rw['islates']."',months='".$rw['months']."',years='".$rw['years']."', shiftcode='".$rw['shiftcode']."',lateperemployee='".$rw['lateperemployee']."',lateperemployeer2='".$rw['lateperemployeer2']."', deviceidcheckin='".$rw['deviceidcheckin']."', iby='svc',idt='".$rw['datestimes']."'"; $qrychk="select _idx,checkin,checkout,lateperemployee from tbl_attendancelist where idxemployee='".$rw['idxemployee']."' and cast(dates as date)=cast('".date("Y-m-d",strtotime($rw['dates']))."' as date) $swhereshiftcode and isdeleted=0 order by _idx desc limit 1"; if($this->fn_rowisexists($qrychk)){ // $_idx=$this->fn_getfieldvalue("_idx",$qrychk); $sp=$this->fn_getfieldsvalues("_idx,checkin,checkout,lateperemployee", $qrychk); $_idx=$sp[0];$checkin=$sp[1];$checkout=$sp[2];$lateperemployee=$sp[3]; $laterperemployeefield=""; // if(!$lateperemployee){ // $laterperemployeefield="lateperemployee='".$rw['lateperemployee']."',"; // } $qry="update tbl_attendancelist set ".$attfield.$laterperemployeefield."uby='svc',udt='".$rw['datestimes']."' where _idx='$_idx'"; if($rw['attendancename']=='IN'&&$checkin!=null){ $qry="update tbl_attendancelist set uby='svc',udt='".$rw['datestimes']."' where _idx='$_idx'"; } if($rw['attendancename']=='OUT'){ $qry="update tbl_attendancelist set ".$attfield."uby='svc',udt='".$rw['datestimes']."',deviceidcheckout='".$rw['deviceidcheckout']."' where _idx='$_idx' and UNIX_TIMESTAMP('".date("Y-m-d H:i:s",strtotime($rw['datestimes']))."')>UNIX_TIMESTAMP(checkin)"; $idxdept=$rw['idxdept']; if($idxdept==33||$idxdept==34||$idxdept==30||$idxdept==22){ $qryduration="update tbl_attendancelist set duration=SEC_TO_TIME(TIMESTAMPDIFF(SECOND,checkin,checkout)) where _idx='$_idx'"; } else{ $qryduration="update tbl_attendancelist set duration=SEC_TO_TIME(TIMESTAMPDIFF(SECOND,checkin,R1)+TIMESTAMPDIFF(SECOND,R2,checkout)) where _idx='$_idx'"; } } } if($qry){ $this->executeSP($qry); if($qryduration){ // echo $qryduration."\n"; $this->executeSP($qryduration); } } } } echo "end time : ".date("Y-m-d H:i:s")."\n"; } } } $cl = new LogController(); $rtn =$cl->index(); #if(isset($_REQUEST['isgetdata'])){ # echo "indx"; # $rtn = $cl->index(); #} #else{ # $rtn = $cl->fn_curl(); #} echo $rtn;