data['medias'] = array('WA'=>'Whatsapp', 'PH'=> 'Phone', 'VB' => 'Verbal', 'LT'=>'Letter', 'CRM'=>'Direct CRM', 'SKP'=>'Skype'); $this->data['actions'] = array('r'=>'Remote', 'p'=> 'Phone', 'o'=>'On site'); $this -> data['userpos'] = array( '' => 'ALL', 'TSO' => 'ALL - TSO', 'IT' => 'IT', 'IVD' => 'IVD', 'IVDT' => 'IVD - Barat', 'IVDH' => 'IVD - Tengah', 'IVDR' => 'IVD - Timur', 'MT' => 'Marketing', 'PS' => 'Product Specialist', ); $this->data['stats'] = array('O'=>'Open', 'R'=>'Refer', 'A'=>'Accepted', 'P'=>'Pending', 'C'=>'Close', // 'S'=>'Suspend', 'D'=>'Disable' ); $this->data['actbys'] = array( 'P'=>'Product ( Equipment / System )' , 'V'=> 'Vendor', 'C'=>'Consumables / Reagent', 'O'=>'Other'); $this->data['exports'] = array('P'=>'PDF', 'E'=> 'Excel'); $this->data['acttypes'] = array(1=>'Incident Report', 2=> 'Change Request', 3=>'Project', 4=>'Support', 5=>'Maintenance', 6=>'Training', 7=>'Refurbish', 9=>'Training Customer/TSO'); // invtrans $this->data['itx_apprtypes'] = array('W'=>'Warranty', 'U'=> 'User'); $this->data['itx_conditions'] = array('N'=>'New', 'U'=> 'Used', 'R'=>'Refurbished'); $this->data['itx_purposes'] = array( 'TB' => 'Retrieve - broken', 'TR' => 'Retrieve - repair', 'TU' => 'Retrieve - usage', 'TF' => 'Retrieve - FSCA', 'PR' => 'Replace - Repair', 'PB' => 'Replace - broken', 'PU' => 'Replace - usage', 'PF' => 'Replace - FSCA', 'B' => 'Borrow', 'R' => 'Return' ); } public function index() { $data = array(); $db = \Config\Database::connect(); $sql = "SELECT * FROM sites WHERE enddate IS NULL"; $query = $db->query($sql); $results = $query->getResultArray(); $data['sites'] = $results; $sql = "SELECT * FROM users order by firstname"; $query = $db->query($sql); $results = $query->getResultArray(); $data['users'] = $results; $sql = "SELECT * FROM productalias"; $query = $db->query($sql); $results = $query->getResultArray(); $data['productalias'] = $results; $sql = "SElECT * FROM areas"; $query = $db->query($sql); $results = $query->getResultArray(); $data['areas'] = $results; $data['actbys'] = $this->data['actbys']; $data['stats'] = $this->data['stats']; $data['acttypes'] = $this->data['acttypes']; $data['actions'] = $this->data['actions']; if( $this->request->getPost('opendate') == '' ){ $opendate = date("Y-m-01"); } else { $opendate = $this->request->getPost('opendate'); } if( $this->request->getPost('closedate') == ''){ $closedate = date("Y-m-d"); } else { $closedate = $this->request->getPost('closedate'); } $filterquery = ''; $siteid = $this->request->getPost('siteid'); $productid = $this->request->getPost('productid'); $areaid = $this->request->getPost('areaid'); $sub = $this->request->getPost('sub'); $detail_activity = $this->request->getPost('detail_activity'); $productaliasid = $this->request->getPost('productaliasid'); $actbys = $this->request->getPost('actbys'); $acttypes = $this->request->getPost('acttypes'); $actions = $this->request->getPost('actions'); if($siteid != '') { $sql = "SELECT p.*, pc.`productname`, p.`productnumber` FROM products p LEFT JOIN productcatalog pc ON pc.`catalogid`=p.`catalogid` WHERE p.siteid=$siteid and productaliasid<>0 order by pc.productname"; $query = $db->query($sql); $results = $query->getResultArray(); $data['products'] = $results; } if( $this->request->getPost('userid') != '' ) { $userid = $this->request->getPost('userid'); } else { $userid = $_SESSION['userid']; } $status = $this->request->getPost('status'); if($siteid != ''){ $filterquery .= " and a.siteid = '$siteid' "; } if($productid != '') { $filterquery .= " and a.productid = '$productid' "; } if($productaliasid != ''){ $filterquery .= " and pa.productaliasid = '$productaliasid' "; } if($userid != 0 ){ $filterquery .= " and ( u.userid = '$userid' or a.userid_owner=0) "; } if($status != ''){ $filterquery .= " and activitystatus = '$status' "; } if($sub == 'IT'){ $filterquery .= " and up.userposid in (3,5) "; } if($sub == 'IVD'){ $filterquery .= " and up.userposid in (2,4) "; } if($sub == 'PS'){ $filterquery .= " and up.userposid in (6,14) "; } if($detail_activity != '') { $column_detail_activity = ", ad.*"; $join_detail_activity = " left join actdetail ad on a.actid=ad.actid "; $filterquery .= " and ad.textvalue LIKE '%$detail_activity%' "; } else { $column_detail_activity = ""; $join_detail_activity = ""; } if($actbys != ''){$filterquery .= " and a.actby = '$actbys'";} if($acttypes != ''){$filterquery .= " and a.acttypeid = $acttypes";} if($actions != ''){$filterquery .= " and a.action = '$actions'";} $areaquery = ''; if($areaid != ''){ $areaquery .= " and a.siteid in ( select siteid from v_siteaccount where areaid='$areaid' ) "; } if( isset($_GET['reportdate']) ) { $reportdate = $_GET['reportdate']; if($reportdate < $opendate) { $opendate = $reportdate; } } else { $reportdate = $opendate; } $data['opendate'] = $opendate; $data['closedate'] = $closedate; $data['siteid'] = $siteid; $data['productid'] = $productid; $data['productaliasid'] = $productaliasid; $data['userid'] = $userid; $data['status'] = $status; $data['sub'] = $sub; $data['areaid'] = $areaid; $data['detail_activity'] = $detail_activity; $data['actby'] = $actbys; $data['acttype'] = $acttypes; $data['action'] = $actions; $sql = "SELECT s.sitename, pc.productname, v.vendorname ,u.firstname as username,uc.firstname as creator_name, up.userposid, at.fulltext, a.* $column_detail_activity FROM `activities` a $join_detail_activity left join sites s on s.siteid=a.siteid left join products p on a.productid=p.productid left join productcatalog pc on pc.catalogid=p.catalogid left join vendors v on v.vendorid=a.vendorid left join productalias pa on pa.productaliasid=pc.productaliasid left join users u on u.userid=a.userid_owner left join (select userid, firstname from users) as uc on uc.userid=a.userid_creator left join userposition up on up.userposid = u.userposid left join acttype at on at.acttypeid=a.acttypeid where ( a.closedate between '$opendate 00:00:00' and '$closedate 23:59:59' $filterquery $areaquery ) -- OR ( a.reportdate between '$reportdate 00:00:00' and '$closedate 23:59:59' $filterquery $areaquery ) OR ( a.activitystatus='O' $filterquery $areaquery ) OR ( a.activitystatus='P' $filterquery ) -- OR ( a.activitystatus='R' ) Dinonaktifkan Dulu GROUP BY a.actid -- order by field(a.activitystatus,'O','R','C'), a.closedate desc, a.reportdate desc Dinonaktifkan Dulu order by field(a.activitystatus,'O','C'), a.closedate desc, a.reportdate desc" ; // $sql = "SELECT s.sitename, pc.productname, v.vendorname, u.firstname AS username, up.userposid, at.fulltext, a.* // -- ,ad.* // FROM // activities a // -- LEFT JOIN actdetail ad ON a.actid = ad.actid // LEFT JOIN sites s ON s.siteid = a.siteid // LEFT JOIN products p ON a.productid = p.productid // LEFT JOIN productcatalog pc ON pc.catalogid = p.catalogid // LEFT JOIN vendors v ON v.vendorid = a.vendorid // LEFT JOIN productalias pa ON pa.productaliasid = pc.productaliasid // LEFT JOIN users u ON u.userid = a.userid_owner // LEFT JOIN userposition up ON up.userposid = u.userposid // LEFT JOIN acttype at ON at.acttypeid = a.acttypeid // WHERE ( // a.closedate BETWEEN '$opendate 00:00:00' AND '$closedate 23:59:59' // $filterquery $areaquery // OR ( a.activitystatus in ('O','P') $filterquery $areaquery ) // ) // GROUP BY a.actid // ORDER BY // FIELD(a.activitystatus, 'O', 'C', 'R'), // a.closedate DESC, // a.reportdate DESC;"; //echo "$sql"; $query = $db->query($sql); $result = $query->getResultArray(); $data['sql'] = $sql; $data['tampildata'] = $result; return view('activities_index', $data); } // public function index_getproduct($siteid=null){ // $db = \Config\Database::connect(); // $sql = "SELECT p.*, pc.`productname`, p.`productnumber` // FROM products p // LEFT JOIN productcatalog pc ON pc.`catalogid`=p.`catalogid` // WHERE p.siteid=$siteid and productaliasid<>0 order by pc.productname"; // $query = $db->query($sql); // $results = $query->getResultArray(); // $option = ""; // foreach ($results as $data) { // $qproductid = $data['productid']; // $qproductname = $data['productname']; // $qproductnumber = $data['productnumber']; // $qproductlocationenddate = $data['locationenddate']; // if($qproductlocationenddate == NULL){ // $option .= "\r\n"; // //$option .= "$qproductid $qproductname $qproductnumber
"; // } // } // //echo "$option"; // return $option; // } public function index_getproduct($siteid, $productaliasid){ $db = \Config\Database::connect(); // Kondisi untuk tiap form if ($siteid == 'none' && $productaliasid != 'none') { $query = "WHERE pa.productaliasid=$productaliasid"; } else if ($siteid != 'none' && $productaliasid == 'none') { $query = "WHERE p.siteid=$siteid"; } else { $query = "WHERE pa.productaliasid=$productaliasid and p.siteid=$siteid"; } $sql = "SELECT p.*, pc.productname FROM productalias pa LEFT JOIN productcatalog pc ON pa.productaliasid = pc.productaliasid LEFT JOIN products p ON pc.catalogid = p.catalogid LEFT JOIN sites s ON p.siteid = s.siteid $query ORDER BY pc.productname"; // Kondisi apabila kedua form kosong if ($siteid == 'none' && $productaliasid == 'none') { return ""; } $query = $db->query($sql); $results = $query->getResultArray(); $option = ""; foreach ($results as $data) { $qproductid = $data['productid']; $qproductname = $data['productname']; $qproductnumber = $data['productnumber']; $qproductlocationenddate = $data['locationenddate']; if($qproductlocationenddate == NULL){ $option .= "\r\n"; //$option .= "$qproductid $qproductname $qproductnumber
"; } } //echo "$option"; return $option; } public function edit($actid=null){ $db = \Config\Database::connect(); $data['controller'] = $this; $data['actid'] = $actid; $siteid = ''; $actby = ''; $data['actid_ref_status'] = 'disabled'; // Khusus untuk refer create $data['reff'] = []; //Reff if($actid != 0) { $sql = "select * from activities where actid=$actid"; $query = $db->query($sql); $results = $query->getResultArray(); $data['activities'] = $results; $siteid = $results[0]['siteid']; $actby = $results[0]['actby']; // Khusus Untuk Refer Edit if ($results[0]['actid_ref'] > 0 ) { $act_reff = $results[0]['actid_ref']; $data['actid_ref_status'] = ''; $sql = "SELECT a.actid, a.subject, CONCAT(u.firstname,' ',u.lastname) as fullname, s.sitename FROM activities a LEFT JOIN sites s ON a.`siteid`=s.`siteid` LEFT JOIN users u ON a.`userid_owner`=u.`userid` WHERE a.actid=$act_reff"; // -- AND a.actid = $actid $query = $db->query($sql); $results = $query->getResultArray(); $data['reff'] = $results; } // Untuk Sertifikat $certificatesArray = []; $certificateModel = new CertificateModel(); $results = $certificateModel->select('cert_type') ->where('actid', $actid) ->findAll(); if (!empty($results)) { foreach ($results as $row) { $certificatesArray[] = $row['cert_type']; } $data['activities'][0]['cert_types'] = $certificatesArray; } $sql = "select actdetailid, acttextid, textvalue from actdetail where actid=$actid order by acttextid, createdate desc"; $query = $db->query($sql); $results = $query->getResultArray(); foreach( $results as $result ) { $qactdetailid = $result['actdetailid']; $data['activities'][0]['actdetailid'][] = $result['actdetailid']; $data['activities'][0]['acttextid'][] = $result['acttextid']; $data['activities'][0]['textvalue'][] = $result['textvalue']; } $sql = "select * from invtrans where actid='$actid'"; $query = $db->query($sql); $results = $query->getResultArray(); $data['invtrans'] = $results; } $sql = "select userid, firstname, lastname from users where enddate is null order by firstname"; $query = $db->query($sql); $results = $query->getResultArray(); $data['users'] = $results; $sql = "select siteid, enddate, sitename from sites where enddate is null order by siteid"; $query = $db->query($sql); $results = $query->getResultArray(); $data['sites'] = $results; $sql = "select * from acttype"; $query = $db->query($sql); $results = $query->getResultArray(); $data['acttype'] = $results; $sql = "select * from acttext"; $query = $db->query($sql); $results = $query->getResultArray(); $data['acttext'] = $results; $data['medias'] = $this->data['medias']; $data['actions'] = $this->data['actions']; $data['stats'] = $this->data['stats']; $data['actbys'] = $this->data['actbys']; // invtrans $data['purposes'] = $this->data['itx_purposes']; $data['conditions'] = $this->data['itx_conditions']; $sql = " SELECT u.*, c.`productname`, c.catalognumber FROM unitgroup u LEFT JOIN productcatalog c ON u.`catalogid`=c.`catalogid` WHERE c.productaliasid<>0 AND u.`enddate` IS NULL"; $query = $db->query($sql); $results = $query->getResultArray(); $data['unitgroup'] = $results; $sql = "SELECT p.productid, s.sitename, pc.productname, p.productnumber FROM products p LEFT JOIN productcatalog pc ON p.`catalogid`=pc.`catalogid` LEFT JOIN sites s ON s.`siteid`=p.`siteid`"; $query = $db->query($sql); $results = $query->getResultArray(); $data['products'] = $results; $sql = "SELECT * FROM invcounters"; $query = $db->query($sql); $results = $query->getResultArray(); $data['invcounters'] = $results; $sql = "SELECT * FROM vendors"; $query = $db->query($sql); $results = $query->getResultArray(); $data['vendors'] = $results; if( $this->request->getVar('siteid') != '' ) { $siteid = $this->request->getVar('siteid'); } if ($this->request->getMethod() === 'POST') { // $allPostData = $this->request->getPost(); $rules = [ 'subject' => 'required', 'siteid' => 'required', 'userid_creator' => 'required', 'reportdate' => 'required', 'activitystatus' => 'required', 'actdetailid' => 'required' ]; $data['new_value'] = [ 'actid_ref' => (int) $this->request->getVar('actid_ref'), 'actby' => $this->request->getVar('actby'), 'siteid' => $this->request->getVar('siteid'), 'acttypeid' => $this->request->getVar('acttypeid'), 'userid_owner' => $this->request->getVar('userid_owner'), 'userid_creator' => $this->request->getVar('userid_creator'), 'activitystatus' => $this->request->getVar('activitystatus'), // 'referid' => $this->request->getVar('referid'), 'reportfrom' => $this->request->getVar('reportfrom'), 'reportdate' => $this->request->getVar('reportdate'), 'opendate' => $this->request->getVar('opendate'), 'closedate' => $this->request->getVar('closedate'), 'media' => $this->request->getVar('media'), 'action' => $this->request->getVar('action'), 'subject' => $this->request->getVar('subject'), 'attachment' => $this->request->getVar('attachment'), 'actdetailid' => $this->request->getVar('actdetailid'), 'acttextid' => $this->request->getVar('acttextid'), 'textvalue' => $this->request->getVar('textvalue') ]; $actby = $this->request->getVar('actby'); if($actby == 'P') { $data['new_value']['productid'] = $this->request->getVar('productid'); $data['new_value']['swversion'] = $this->request->getVar('swversion'); $data['new_value']['vendorid'] = null; } elseif($actby == 'V') { $data['new_value']['vendorid'] = $this->request->getVar('vendorid'); $data['new_value']['productid'] = null; $data['new_value']['swversion'] = null; } else { $data['new_value']['vendorid'] = null; $data['new_value']['productid'] = null; $data['new_value']['swversion'] = null; } if ($this->validate($rules)) { $db = \Config\Database::connect(); if($actid == 0) { // Cek apakah ada duplikasi data $exists = $db->table('activities') ->where('subject', $data['new_value']['subject']) ->where('siteid', $data['new_value']['siteid']) ->where('reportdate', $data['new_value']['reportdate']) ->where('opendate', $data['new_value']['opendate']) ->where('closedate', $data['new_value']['closedate']) ->where('userid_creator', $data['new_value']['userid_creator']) ->get()->getRow(); if ($exists) { // Jika ada maka Redirect return redirect()->to('/activities'); } // Create Activities $activitiesModel = new ActivitiesModel(); $activitiesModel->set('createdate', 'NOW()', FALSE); $activitiesModel->insert($data['new_value']); // Create Activities Status Log $actid = $activitiesModel->getInsertID(); $actstatus = $data['new_value']['activitystatus']; $userid = $data['new_value']['userid_creator']; $sql = "INSERT INTO actstatus_log (activityid, activitystatus, userid, logdate) VALUES ($actid,'$actstatus', $userid, NOW())"; $query = $db->query($sql); $acttextid = $data['new_value']['acttextid']; $textvalue = $data['new_value']['textvalue']; foreach($data['new_value']['acttextid'] as $qindex => $qacttextid) { $qtextvalue = $db->escapeString($textvalue[$qindex]); $sql = "insert into actdetail (actid, acttextid, textvalue, createdate) values ('$actid','$qacttextid', '$qtextvalue', NOW())"; $query = $db->query($sql); } // UNTUK CERTIFICATES if ($this->request->getVar('maintenance')) { // Jika Maintenance Dicentang $issuedDate = $data['new_value']['closedate'] ?? null; $userid_owner = $data['new_value']['userid_owner']; $this->createCertificateMaintenance($actid, $issuedDate, $userid_owner); } } else { // update edit $activitiesModel = new ActivitiesModel(); $activitiesModel->update($actid,$data['new_value']); // REFF UPDATE if ($data['new_value']['activitystatus'] == 'C' && $data['new_value']['actid_ref'] > 0 ) { // Update field 'activitystatus' menjadi 'C' untuk actid yang REF $activitiesModel->update($data['new_value']['actid_ref'], ['activitystatus' => 'C']); } // clear other act by if($actby == 'P') { // product $sql = "update activities set vendorid=null where actid='$actid'"; $query = $db->query($sql); $sql = "delete from actconsumables where actid='$actid'"; $query = $db->query($sql); } elseif($actby == 'V') { // vendor $sql = "update activities set productid=null where actid='$actid'"; $query = $db->query($sql); $sql = "delete from actconsumables where actid='$actid'"; $query = $db->query($sql); } elseif($actby == 'C') { // consumables $sql = "update activities set productid=null where actid='$actid'"; $query = $db->query($sql); $sql = "update activities set vendorid=null where actid='$actid'"; $query = $db->query($sql); } else { // other $sql = "update activities set productid=null where actid='$actid'"; $query = $db->query($sql); $sql = "update activities set vendorid=null where actid='$actid'"; $query = $db->query($sql); $sql = "delete from actconsumables where actid='$actid'"; $query = $db->query($sql); } // Apabila Act Status Diubah Maka Kondisi berikut dijalankan $tb_actstatus_log = $db->table('actstatus_log'); $actstatus_old = $tb_actstatus_log->select('activitystatus')->where('activityid', $actid)->orderBy('logdate', 'DESC')->get()->getRowArray(); $actstatus_new = $data['new_value']['activitystatus']; $actstatus_old = !empty($actstatus_old) ? $actstatus_old['activitystatus'] : NULL; $userid = $data['new_value']['userid_creator']; if( $actstatus_old != $actstatus_new ) { // Create Activities Status Log $sql = "INSERT INTO actstatus_log (activityid, activitystatus, userid, logdate) VALUES ($actid,'$actstatus_new', $userid, NOW())"; $query = $db->query($sql); } $acttextid = $data['new_value']['acttextid']; $textvalue = $data['new_value']['textvalue']; //del actdetailid $actdetailid_delete = $this->request->getVar('actdetailid_delete'); if($actdetailid_delete !='') { $actdetailid_del = explode(' ',$actdetailid_delete); foreach($actdetailid_del as $actdetailid) { $sql = "delete from actdetail where actdetailid='$actdetailid'"; $query = $db->query($sql); } } foreach($data['new_value']['actdetailid'] as $qkey => $qactdetailid) { $qacttextid = $acttextid[$qkey]; $qtextvalue = $db->escapeString($textvalue[$qkey]); if( $qactdetailid == 0 ) { $sql = "insert into actdetail (actid, acttextid, textvalue, createdate) values ('$actid','$qacttextid', '$qtextvalue', NOW())"; $query = $db->query($sql); } else { $sql = "insert into actdetail (actdetailid, actid, acttextid, textvalue, createdate) values ('$qactdetailid','$actid','$qacttextid', '$qtextvalue', NOW()) ON DUPLICATE KEY UPDATE acttextid='$qacttextid', textvalue='$qtextvalue'"; $query = $db->query($sql); } } // UNTUK CERTIFICATES if ($this->request->getVar('maintenance')) { // Maintenance // Maintenance sertifikat create or update $issuedDate = $data['new_value']['closedate'] ?? null; $userid_owner = $data['new_value']['userid_owner']; $this->updateCertificateMaintenance($actid, $issuedDate, $userid_owner); } else { // Hapus softdelete sertifikat $this->deleteCertificateMaintenance($actid); } } // act by consumables $actconid_delete = $this->request->getVar('actconid_delete'); if($actconid_delete != '') { $actconid_del = explode(' ',$actconid_delete); foreach($actconid_del as $actconid) { $sql = "delete from actconsumables where actconid='$actconid'"; $query = $db->query($sql); } } $catalogid = $this->request->getVar('catalogid'); if(isset($catalogid)) { $lotnumber = $this->request->getVar('lotnumber'); $sql = "INSERT INTO actconsumables ( actid, catalogid, lotnumber ) VALUES "; foreach($catalogid as $qid => $qvalue) { $sql .= "( '$actid' , '". $catalogid[$qid]."', '". $lotnumber[$qid]."' ),"; } $sql = rtrim($sql, ','); $query = $db->query($sql); } // invtrans $itxid_delete = $this->request->getVar('itxid_delete'); if($itxid_delete!='') { $itxid_del =explode(' ',$itxid_delete); foreach($itxid_del as $itxid) { $sql = "delete from invtrans where itxid='$itxid'"; $query = $db->query($sql); } } $dests = $this->request->getVar('dests'); $origins = $this->request->getVar('origins'); if(isset($dests)) { foreach($dests as $qdata) { $qdata = explode("|",$qdata); $desttype[] = $qdata[0]; $destid[] = $qdata[1]; } foreach($origins as $qdata) { $qdata = explode("|",$qdata); $origtype[] = $qdata[0]; $origid[] = $qdata[1]; } $unitgroupid = $this->request->getVar('unitgroupid'); $lotnumber = $this->request->getVar('lotnumber'); $qty = $this->request->getVar('qty'); $conditions = $this->request->getVar('conditions'); $itxdate = $this->request->getVar('itxdate'); $purpose = $this->request->getVar('purpose'); $sql = "INSERT INTO invtrans ( actid, desttype, destid, origtype, origid, unitgroupid, lotnumber, qty, conditions, purpose, itxdate ) VALUES "; foreach($origid as $qid => $qorigid) { $sql .= "( '$actid', '".$desttype[$qid]."', '".$destid[$qid]."', '".$origtype[$qid]."', '".$qorigid."', '". $unitgroupid[$qid]."', '".$lotnumber[$qid]."', '".$qty[$qid]."', '".$conditions[$qid]."', '".$purpose[$qid]."', '".$itxdate[$qid]."' ),"; } $sql = rtrim($sql, ','); //echo "$sql"; $query = $db->query($sql); } $reportdate = substr($data['new_value']['reportdate'],0,10); return redirect()->to('activities/?reportdate='.$reportdate); } else { $data['validation'] = $this->validator; return view('activities_editor',$data); } } $data['actid'] = $actid; $data['refer_page'] = false; // Khusus untuk controller refer return view('activities_editor',$data); } public function createrefer($actid) { $db = \Config\Database::connect(); // Digunakan Untuk Get Reff ID saja $sql = "SELECT a.actid, a.subject, CONCAT(u.firstname,' ',u.lastname) as fullname, s.sitename, a.userid_owner FROM activities a LEFT JOIN sites s ON a.`siteid`=s.`siteid` LEFT JOIN users u ON a.`userid_owner`=u.`userid` WHERE a.activitystatus='R' and a.actid=$actid"; // -- AND a.actid = $actid $query = $db->query($sql); $results = $query->getResultArray(); if (empty($results)) {// Jika KOSONG ALIAS TIDAK ADA REFF ID return redirect()->to('/activities'); } if (session()->get('userid') == $results[0]['userid_owner']) {// Agar User tidak bisa buat reff id pada dirinya sendiri return redirect()->to('/activities'); } $data['reff'] = $results; // Hilangkan Reff ID unset($this->data['stats']['R']); unset($this->data['stats']['A']); unset($this->data['stats']['P']); $data['controller'] = $this; // $data['actid'] = $actid; $siteid = ''; $actby = ''; $sql = "select * from activities where actid=$actid"; $query = $db->query($sql); $results = $query->getResultArray(); $data['activities'] = $results; $data['activities'][0]['reportdate'] = date("Y-m-d H:i:s"); $data['activities'][0]['opendate'] = date("Y-m-d H:i:s"); $data['activities'][0]['closedate'] = null; $data['activities'][0]['reportfrom'] = null; $data['activities'][0]['subject'] = null; $data['activities'][0]['activitystatus'] = 'O'; $data['activities'][0]['action'] = null; $data['activities'][0]['userid_owner'] = $_SESSION['userid']; $data['activities'][0]['userid_creator'] = $_SESSION['userid']; $data['activities'][0]['attachment'] = null; $data['actid_ref'] = $actid; $siteid = $results[0]['siteid']; $actby = $results[0]['actby']; $sql = "select userid, firstname, lastname from users where enddate is null order by firstname"; $query = $db->query($sql); $results = $query->getResultArray(); $data['users'] = $results; $sql = "select siteid, enddate, sitename from sites where enddate is null order by siteid"; $query = $db->query($sql); $results = $query->getResultArray(); $data['sites'] = $results; $sql = "select * from acttype"; $query = $db->query($sql); $results = $query->getResultArray(); $data['acttype'] = $results; $sql = "select * from acttext"; $query = $db->query($sql); $results = $query->getResultArray(); $data['acttext'] = $results; $data['medias'] = $this->data['medias']; $data['actions'] = $this->data['actions']; $data['stats'] = $this->data['stats']; $data['actbys'] = $this->data['actbys']; // invtrans $data['purposes'] = $this->data['itx_purposes']; $data['conditions'] = $this->data['itx_conditions']; $sql = " SELECT u.*, c.`productname`, c.catalognumber FROM unitgroup u LEFT JOIN productcatalog c ON u.`catalogid`=c.`catalogid` WHERE c.productaliasid<>0 AND u.`enddate` IS NULL"; $query = $db->query($sql); $results = $query->getResultArray(); $data['unitgroup'] = $results; $sql = "SELECT p.productid, s.sitename, pc.productname, p.productnumber FROM products p LEFT JOIN productcatalog pc ON p.`catalogid`=pc.`catalogid` LEFT JOIN sites s ON s.`siteid`=p.`siteid`"; $query = $db->query($sql); $results = $query->getResultArray(); $data['products'] = $results; $sql = "SELECT * FROM invcounters"; $query = $db->query($sql); $results = $query->getResultArray(); $data['invcounters'] = $results; $sql = "SELECT * FROM vendors"; $query = $db->query($sql); $results = $query->getResultArray(); $data['vendors'] = $results; if( $this->request->getVar('siteid') != '' ) { $siteid = $this->request->getVar('siteid'); } if ($this->request->getMethod() === 'POST') { $rules = [ 'subject' => 'required', 'siteid' => 'required', 'userid_creator' => 'required', 'reportdate' => 'required', 'activitystatus' => 'required', 'actdetailid' => 'required' ]; $data['new_value'] = [ 'actid_ref' => $this->request->getVar('actid_ref'), 'actby' => $this->request->getVar('actby'), 'siteid' => $this->request->getVar('siteid'), 'acttypeid' => $this->request->getVar('acttypeid'), 'userid_owner' => $this->request->getVar('userid_owner'), 'userid_creator' => $this->request->getVar('userid_creator'), 'activitystatus' => $this->request->getVar('activitystatus'), 'reportfrom' => $this->request->getVar('reportfrom'), 'reportdate' => $this->request->getVar('reportdate'), 'opendate' => $this->request->getVar('opendate'), 'closedate' => $this->request->getVar('closedate'), 'media' => $this->request->getVar('media'), 'action' => $this->request->getVar('action'), 'subject' => $this->request->getVar('subject'), 'attachment' => $this->request->getVar('attachment'), 'actdetailid' => $this->request->getVar('actdetailid'), 'acttextid' => $this->request->getVar('acttextid'), 'textvalue' => $this->request->getVar('textvalue') ]; $actby = $this->request->getVar('actby'); if($actby == 'P') { $data['new_value']['productid'] = $this->request->getVar('productid'); $data['new_value']['swversion'] = $this->request->getVar('swversion'); $data['new_value']['vendorid'] = null; } elseif($actby == 'V') { $data['new_value']['vendorid'] = $this->request->getVar('vendorid'); $data['new_value']['productid'] = null; $data['new_value']['swversion'] = null; } else { $data['new_value']['vendorid'] = null; $data['new_value']['productid'] = null; $data['new_value']['swversion'] = null; } if($this->validate($rules)) { // Cek apakah ada duplikasi data $exists = $db->table('activities') ->where('subject', $data['new_value']['subject']) ->where('siteid', $data['new_value']['siteid']) ->where('reportdate', $data['new_value']['reportdate']) ->where('opendate', $data['new_value']['opendate']) ->where('closedate', $data['new_value']['closedate']) ->where('userid_creator', $data['new_value']['userid_creator']) ->get()->getRow(); if ($exists) { // Jika ada maka Redirect return redirect()->to('/activities'); } // Create Activities $activitiesModel = new ActivitiesModel(); $activitiesModel->set('createdate', 'NOW()', FALSE); $activitiesModel->insert($data['new_value']); // REFF UPDATE if ($data['new_value']['activitystatus'] == 'C') { // Update field 'activitystatus' menjadi 'C' untuk actid yang REF $activitiesModel->update($actid, ['activitystatus' => 'C']); } // Create Activities Status Log $actid = $activitiesModel->getInsertID(); $actstatus = $data['new_value']['activitystatus']; $userid = $data['new_value']['userid_creator']; $sql = "INSERT INTO actstatus_log (activityid, activitystatus, userid, logdate) VALUES ($actid,'$actstatus', $userid, NOW())"; $query = $db->query($sql); $acttextid = $data['new_value']['acttextid']; $textvalue = $data['new_value']['textvalue']; foreach($data['new_value']['acttextid'] as $qindex => $qacttextid) { $qtextvalue = $db->escapeString($textvalue[$qindex]); $sql = "insert into actdetail (actid, acttextid, textvalue, createdate) values ('$actid','$qacttextid', '$qtextvalue', NOW())"; $query = $db->query($sql); } // act by consumables $actconid_delete = $this->request->getVar('actconid_delete'); if($actconid_delete != '') { $actconid_del = explode(' ',$actconid_delete); foreach($actconid_del as $actconid) { $sql = "delete from actconsumables where actconid='$actconid'"; $query = $db->query($sql); } } $catalogid = $this->request->getVar('catalogid'); if(isset($catalogid)) { $lotnumber = $this->request->getVar('lotnumber'); $sql = "INSERT INTO actconsumables ( actid, catalogid, lotnumber ) VALUES "; foreach($catalogid as $qid => $qvalue) { $sql .= "( '$actid' , '". $catalogid[$qid]."', '". $lotnumber[$qid]."' ),"; } $sql = rtrim($sql, ','); $query = $db->query($sql); } // invtrans $itxid_delete = $this->request->getVar('itxid_delete'); if($itxid_delete!='') { $itxid_del =explode(' ',$itxid_delete); foreach($itxid_del as $itxid) { $sql = "delete from invtrans where itxid='$itxid'"; $query = $db->query($sql); } } $dests = $this->request->getVar('dests'); $origins = $this->request->getVar('origins'); if(isset($dests)) { foreach($dests as $qdata) { $qdata = explode("|",$qdata); $desttype[] = $qdata[0]; $destid[] = $qdata[1]; } foreach($origins as $qdata) { $qdata = explode("|",$qdata); $origtype[] = $qdata[0]; $origid[] = $qdata[1]; } $unitgroupid = $this->request->getVar('unitgroupid'); $lotnumber = $this->request->getVar('lotnumber'); $qty = $this->request->getVar('qty'); $conditions = $this->request->getVar('conditions'); $itxdate = $this->request->getVar('itxdate'); $purpose = $this->request->getVar('purpose'); $sql = "INSERT INTO invtrans ( actid, desttype, destid, origtype, origid, unitgroupid, lotnumber, qty, conditions, purpose, itxdate ) VALUES "; foreach($origid as $qid => $qorigid) { $sql .= "( '$actid', '".$desttype[$qid]."', '".$destid[$qid]."', '".$origtype[$qid]."', '".$qorigid."', '". $unitgroupid[$qid]."', '".$lotnumber[$qid]."', '".$qty[$qid]."', '".$conditions[$qid]."', '".$purpose[$qid]."', '".$itxdate[$qid]."' ),"; } $sql = rtrim($sql, ','); //echo "$sql"; $query = $db->query($sql); } $reportdate = substr($data['new_value']['reportdate'],0,10); return redirect()->to('activities/?reportdate='.$reportdate); } else { $data['validation'] = $this->validator; return view('activities_editor',$data); } } $data['actid'] = $actid; $data['actid_ref_status'] = ''; // Khusus untuk refer $data['refer_page'] = true; // Khusus untuk controller refer return view('activities_editor',$data); } public function newtextarea($textareaid=null) { $db = \Config\Database::connect(); $sql = "select * from acttext"; $query = $db->query($sql); $results = $query->getResultArray(); $data['acttext'] = $results; $data['textareaid'] = $textareaid; return view('activities_newtextarea', $data); //return $datas; } public function getproduct($siteid=null, $productid=null, $swversion=null){ $db = \Config\Database::connect(); $sql = "SELECT p.*, pc.`productname`, p.`productnumber` FROM products p LEFT JOIN productcatalog pc ON pc.`catalogid`=p.`catalogid` LEFT JOIN producttype pt ON pt.`producttypeid`= pc.`producttypeid` WHERE p.siteid=$siteid and productaliasid<>0 ORDER BY FIELD(pt.producttypeid, 20, 19, 21, 12, 10, 14, 11, 13, 4, 3) DESC, pc.productname"; $query = $db->query($sql); $results = $query->getResultArray(); $data['products'] = $results; $data['productid'] = $productid; $data['swversion'] = $swversion; return view('activities_getproduct', $data); //return $datas; } public function getvendor($vendorid=null){ $db = \Config\Database::connect(); $sql = "SELECT vendorid, vendorname from vendors"; $query = $db->query($sql); $results = $query->getResultArray(); $data['vendors'] = $results; $data['vendorid'] = $vendorid; return view('activities_getvendor', $data); } public function getconsumable($actid=null){ $db = \Config\Database::connect(); $sql = "SELECT c.catalogid, c.catalognumber, c.productname, v.`vendorname` FROM productcatalog c LEFT JOIN vendors v ON v.`vendorid`=c.`vendorid` WHERE c.producttypeid IN (6,7) AND c.productaliasid > 0"; $query = $db->query($sql); $results = $query->getResultArray(); $data['consumables'] = $results; if($actid > 0) { $sql = "SELECT ac.actconid, ac.catalogid, ac.lotnumber FROM actconsumables ac where ac.actid='$actid'"; $query = $db->query($sql); $results = $query->getResultArray(); $data['actcons'] = $results; } return view('activities_getconsumable', $data); //return $datas; } public function getcontact($siteid=null){ $db = \Config\Database::connect(); $sql = "SELECT c.firstname, c.lastname from contacts c left join sitecontact sc on sc.contactid=c.contactid where sc.siteid=$siteid"; $query = $db->query($sql); $results = $query->getResultArray(); $datas = ''; foreach ($results as $data) { $qfirstname = $data['firstname']; $qlastname = $data['lastname']; $datas .= "