File: /var/www/html/inventory.breadsecret.com/class/Controller/unit.php
<?php
namespace Controller;
use Responses\Message, Responses\Action, Responses\Data;
use Database\Sql, Database\Listable;
use Pages\Page, Pages\ListPage, Pages\FormPage;
use Routing\Route;
use Utility\WebSystem, Utility\Excel, Utility\Email;
use Controller\promoCode, Controller\documentHelper, Controller\formLayout, Controller\template, Controller\payment;
class unit implements Listable {
private $stmStatus = null;
public static function find($id, $fetchMode=\PDO::FETCH_OBJ) {
$sql = Sql::select("unit")->where(['id', '=', $id]);
$stm = $sql->prepare();
$stm->execute();
$obj = $stm->fetch($fetchMode);
if ($obj === false) return null;
return $obj;
}
public function extraProcess($listObj) {
if (is_null($this->stmStatus))
$this->stmStatus = Sql::select('status')->where(['id', '=', "?"])->prepare();
$this->stmStatus->execute([$listObj->status]);
$objStatus = $this->stmStatus->fetch();
$listObj->statusName = $objStatus['name'];
return $listObj;
}
public function list($request) {
if (!user::checklogin()) return new Action('redirect', WebSystem::path(Route::getRouteByName('page.login')->path(), false, false));
$obj = null;
return new FormPage('unit/list', $obj);
}
public function delete($request) {
if (!user::checklogin())
return new Data(['success'=>false, 'message'=>L('login.signInMessage'), 'note'=>'signIn']);
if (!isset($request->get->id) || empty($request->get->id))
return new Data(['success'=>false, 'message'=>L('error.unitEmptyID')]);
$sql = Sql::delete('unit')->where(['id', '=', $request->get->id]);
if ($sql->prepare()->execute()) {
return new Data(['success'=>true, 'message'=>L('info.unitDeleted')]);
} else {
return new Data(['success'=>false, 'message'=>L('error.unitDeleteFailed')]);
}
}
public function unitForm($request) {
if (!user::checklogin()) return new Data(['success'=>false, 'message'=>L('login.signInMessage'), 'note'=>'signIn']);
$currentUserObj = unserialize($_SESSION['user']);
$obj = null;
if (isset($request->get->id))
$obj = self::find($request->get->id, \PDO::FETCH_NAMED);
$formName = "form-addUnit";
$viewMode = isset($request->get->view);
if(!is_null($obj)) {
if(isset($request->get->view)){
$formName = "form-viewUnit";
}
else{
$formName = "form-editUnit";
}
}
$content = "<form id='".$formName."' class='' autocomplete='off'>";
$content .= "<div class='row'><p class='col-md-12 col-lg-12 text-primary' id='notice'>".L('info.unitAddHelperMessage')."</p></div>";
$content .= formLayout::rowInputNew(L('unit.name'),'name', 'name', 'text', 12, [], [$viewMode ? 'disabled' : 'required'], is_null($obj)?'':$obj['name']);
if(!is_null($obj)) {
$option = [];
$stm = Sql::select('status')->prepare();
$stm->execute();
foreach ($stm as $opt) {
$option[$opt['id']] = L($opt['name']);
}
$content .= formLayout::rowSelectNew(L('Status'), 'status', 'status', $option, 12, [], [$viewMode ? 'disabled' : 'required'], is_null($obj)?'':$obj['status']);
}
$content .= "</form>";
return new Data(['success'=>true, 'message'=>$content]);
}
public function add($request) {
if (!user::checklogin())
return new Data(['success'=>false, 'message'=>L('login.signInMessage'), 'note'=>'signIn']);
$currentUserObj = unserialize($_SESSION['user']);
// form check
if (!isset($request->post->name) || empty($request->post->name))
return new Data(['success'=>false, 'message'=>L('error.unitEmptyName'), 'field'=>'name']);
// insert database
$sql = Sql::insert('unit')->setFieldValue([
'name' => "?"
]);
if ($sql->prepare()->execute([
strip_tags($request->post->name),
])) {
$id = db()->lastInsertId();
return new Data(['success'=>true, 'message'=>L('info.saved'), 'id'=>$id, 'name'=>$request->post->name]);
} else {
return new Data(['success'=>false, 'message'=>L('error.unableInsert'), 'field'=>'notice']);
}
}
public function edit($request) {
if (!user::checklogin())
return new Data(['success'=>false, 'message'=>L('login.signInMessage'), 'note'=>'signIn']);
$currentUserObj = unserialize($_SESSION['user']);
if (!isset($request->get->id) || empty($request->get->id))
return new Data(['success'=>false, 'message'=>L('error.unitEmptyID'), 'field'=>'notice']);
$unitObj = self::find($request->get->id);
if(is_null($unitObj))
return new Data(['success'=>false, 'message'=>L('error.unitNotFound'), 'field'=>'notice']);
// form check
if (!isset($request->post->name) || empty($request->post->name))
return new Data(['success'=>false, 'message'=>L('error.unitEmptyName'), 'field'=>'name']);
$editFields = [];
$editValues = [];
if (isset($request->post->name) && !empty($request->post->name)) {
$editFields['name'] = "?";
$editValues[] = $request->post->name;
}
if (isset($request->post->status) && !empty($request->post->status)) {
$editFields['status'] = "?";
$editValues[] = $request->post->status;
}
/*
if (count($editFields)) {
$editFields['modifyDate'] = "NOW()";
$editFields['modifyBy'] = $currentUserObj->id;
}
*/
if (count($editFields) == 0) return new Data(['success'=>false, 'message'=>L('error.nothingEdit'), 'field'=>'notice']);
$sql = Sql::update('unit')->setFieldValue($editFields)->where(['id', '=', $request->get->id]);
if ($sql->prepare()->execute($editValues)) {
return new Data(['success'=>true, 'message'=>L('info.updated')]);
} else {
return new Data(['success'=>false, 'message'=>L('error.unableUpdate'), 'field'=>'notice']);
}
}
public static function genTableHeader() {
$htmlContent = "";
$htmlContent .= "<thead class='thead-dark'>";
$htmlContent .= "<tr>";
$htmlContent .= "<th>".L('ID')."</th>";
$htmlContent .= "<th>".L('unit.name')."</th>";
$htmlContent .= "<th>".L('Status')."</th>";
$htmlContent .= "<th>".L('Actions')."</th>";
$htmlContent .= "</tr>";
$htmlContent .= "</thead>";
return $htmlContent;
}
public static function genTableFooter() {
$htmlContent = "";
$htmlContent .= "<tfoot>";
$htmlContent .= "<tr>";
$htmlContent .= "<th>".L('ID')."</th>";
$htmlContent .= "<th>".L('unit.name')."</th>";
$htmlContent .= "<th>".L('Status')."</th>";
$htmlContent .= "<th></th>";
$htmlContent .= "</tr>";
$htmlContent .= "</tfoot>";
return $htmlContent;
}
public static function genTableContentData() {
$sql = Sql::select(['unit', 'unit'])->leftJoin(['status', 'status'], "unit.status = status.id");
$sql->setFieldValue('
unit.id id,
unit.name name,
status.name statusName
');
$stm = $sql->prepare();
$stm->execute();
return $stm;
}
public static function genTableBodyRow($listObj) {
$htmlContent = "";
$htmlContent .= "<tr>";
$htmlContent .= "<td>".$listObj['id']."</td>";
$htmlContent .= "<td>".$listObj['name']."</td>";
$htmlContent .= "<td>".L($listObj['statusName'])."</td>";
$htmlContent .= "<td>";
$htmlContent .= "<div class='btn-group' role='group' aria-label=''>";
$htmlContent .= "<button class='btn btn-sm btn-success btnEdit' type='button' data-bs-toggle='tooltip' data-bs-placement='top' title='".L('Edit')."' data-id='".$listObj['id']."'><i class='fas fa-sm fa-edit'></i></button>";
$htmlContent .= "<button class='btn btn-sm btn-danger btnDel' type='button' data-bs-toggle='tooltip' data-bs-placement='top' title='".L('Delete')."' data-id='".$listObj['id']."'><i class='fas fa-sm fa-trash-alt'></i></button>";
$htmlContent .= "</div>";
$htmlContent .= "</td>";
$htmlContent .= "</tr>";
return $htmlContent;
}
}