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', 'IT'=> 'IT', 'IVD'=>'IVD', 'PS'=>'Product Specialist');
$this->data['stats'] = array('O'=>'Open', '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');
// 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";
$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'];
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');
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 != ''){$filterquery .= " and ad.textvalue LIKE '%$detail_activity%' "; }
if($actbys != ''){$filterquery .= " and a.actby = '$actbys'";}
$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;
$sql = "SELECT s.sitename, pc.productname, v.vendorname ,u.firstname as username,uc.firstname as creator_name, 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 (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 )
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 edit($actid=null){
$db = \Config\Database::connect();
$data['controller'] = $this;
$data['actid'] = $actid;
$siteid = '';
$actby = '';
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'];
$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";
$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'),
'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) {
// 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);
}
} else {
// update edit
$activitiesModel = new ActivitiesModel();
$activitiesModel->update($actid,$data['new_value']);
// 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);
}
}
}
// actcon
$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;
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`
WHERE p.siteid=$siteid and productaliasid<>0 order by 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 .= "