2025-08-15 09:45:16 +07:00

187 lines
6.0 KiB
PHP

<?php
namespace App\Controllers;
class ProdInst extends BaseController {
private function getProductList() {
$curl = curl_init();
curl_setopt_array($curl, array(
//CURLOPT_URL => 'http://summitcrm.local/api/getProductList',
CURLOPT_URL => 'https://services-summit.my.id/api/getProductList',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
return $data;
}
public function index() {
$db = \Config\Database::connect();
$sql = "SELECT * FROM prodinst";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['prodinsts'] = $results;
return view('prodinst_index.php', $data);
}
public function detail($prodinstid) {
$db = \Config\Database::connect();
$sql = "SELECT * FROM prodinst where prodinstid='$prodinstid'";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['prodinst'] = $results;
$sql = "SELECT COUNT(*) as testcount FROM patres WHERE prodinstid='$prodinstid'";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['testcount'] = $results[0]['testcount'];
$sql = "SELECT DATEDIFF(MAX(resultdate), MIN(resultdate)) as days, min(resultdate) as firstdate, max(resultdate) as lastdate FROM patres WHERE prodinstid='$prodinstid';";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['days'] = $results[0]['days'];
$data['firstdate'] = $results[0]['firstdate'];
$data['lastdate'] = $results[0]['lastdate'];
$sql = "SELECT MONTH(resultdate) AS month, COUNT(*) AS count
FROM patres
GROUP BY MONTH(resultdate) limit 8";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['counts'] = $results;
return view('prodinst_detail.php', $data);
}
public function edit($prodinstid) {
$data = array();
$db = \Config\Database::connect();
if ($prodinstid != 0) {
$sql = "SELECT * FROM prodinst where prodinstid='$prodinstid'";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['prodinsts'] = $results;
}
$sql = "SELECT * FROM dict_insts";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['insts'] = $results;
if ($this->request->getMethod() === 'post') {
$rules = [ 'prodinstcode' => 'required' ];
$productid = $this->request->getPost('productid');
$instid = $this->request->getPost('instid');
$prodinstname = $this->request->getPost('prodinstname');
$prodinstcode = $this->request->getPost('prodinstcode');
$prodinstkey= $this->request->getPost('prodinstkey');
if($this->validate($rules)){
if($prodinstid == 0 ) {
$sql = "insert into prodinst(productid, instid, prodinstname, prodinstcode, prodinstkey, createdate) values ('$productid', '$instid', '$prodinstname', '$prodinstcode', '$prodinstkey', NOW())";
$query = $db->query($sql);
return redirect()->to('/prodinst');
} else {
$sql = "update prodinst set productid='$productid', instid='$instid', prodinstname='$prodinstname', prodinstcode='$prodinstcode', prodinstkey='$prodinstkey' where prodinstid='$prodinstid'";
$query = $db->query($sql);
return redirect()->to('/prodinst');
}
} else {
$data['validation'] = $this->validator;
$data['products'] = $this->getProductList();
return view('prodinst_editor',$data);
}
} else {
$data['products'] = $this->getProductList();
return view('prodinst_editor', $data);
}
}
public function prodinsttest_edit($prodinstid) {
$data = array();
$data['prodinstid'] = $prodinstid;
$db = \Config\Database::connect();
$sql = "SELECT * FROM prodinst where prodinstid='$prodinstid'";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['prodinsts'] = $results;
$sql = "SELECT * FROM prodinst_test where prodinstid='$prodinstid'";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['prodinsttests'] = $results;
$sql = "SELECT * FROM dict_tests";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['tests'] = $results;
return view('prodinst_test_editor', $data);
}
public function prodinsttest_update() {
$db = \Config\Database::connect();
$prodinstid = $this->request->getPost('prodinstid');
$testids = $this->request->getPost('testid');
$prodinsttestcodes = $this->request->getPost('prodinsttestcode');
$deleteid = $this->request->getPost('deleteid');
// from form
$test = array();
foreach($testids as $key => $testid) {
if($testid != '') { $test[$testid] = $prodinsttestcodes[$key]; }
}
$sql = "SELECT * FROM prodinst_test where prodinstid='$prodinstid'";
$query = $db->query($sql);
$results = $query->getResultArray();
$data = $results;
$qtest = array();
foreach($data as $qdata) {
$qtest[$qdata['testid']] = $qdata['prodinsttestcode'];
}
echo "<pre>";
print_r($test);
print_r($qtest);
echo "</pre>";
$sqlinsert = "";
foreach($test as $qtestid => $qtestcode) {
if( !isset($qtest[$qtestid]) ) { //if none insert
$sqlinsert .= "('$prodinstid', '$qtestid', '$qtestcode'),";
} else if( $qtest[$qtestid]!= $qtestcode ) {
$sqlupdate = "update prodinst_test set prodinsttestcode='$qtestcode' where prodinstid='$prodinstid' and testid='$qtestid'";
echo "<br/> $sqlupdate";
$db->query($sqlupdate);
}
}
$sqlinsert = rtrim($sqlinsert,',');
if($sqlinsert != '') {
$sqlinsert = "INSERT INTO prodinst_test(prodinstid, testid, prodinsttestcode) values $sqlinsert ";
echo "<br/> $sqlinsert";
$db->query($sqlinsert);
}
$sqldelete = "";
foreach($qtest as $qtestid => $qtestcode) {
if( !isset($test[$qtestid]) ) { //if none delete
$sqldelete.= "'$qtestid',";
}
}
if($sqldelete != '') {
$sqldelete = rtrim($sqldelete,',');
$sqldelete = "delete from prodinst_test where prodinstid='$prodinstid' and testid in ($sqldelete)";
echo "<br/> $sqldelete";
$db->query($sqldelete);
}
}
}