From efb41130015a7a5b9f3cbb421a4b296bb88bf759 Mon Sep 17 00:00:00 2001 From: dongpd Date: Tue, 1 Dec 2020 16:47:43 +0700 Subject: [PATCH] update biface local --- assets/CaptureLogsAsset.php | 23 +++ controllers/ApiController.php | 35 ++++ controllers/CaptureLogsController.php | 76 ++++++-- controllers/ConfigController.php | 2 +- controllers/ListManagementController.php | 93 ++++++++++ db/app.db | Bin 106496 -> 106496 bytes helpers/CaptureLogsGrid.php | 35 +++- helpers/ListManagementGrid.php | 71 ++++++++ models/CaptureLogs.php | 60 ++++--- models/CaptureLogsSearch.php | 14 +- models/ListManagement.php | 82 +++++++++ models/ListManagementSearch.php | 72 ++++++++ nbproject/private/private.properties | 4 +- .../yiisoft/yii2-app/layouts/header.php | 10 ++ views/capture-logs/index.tpl | 134 +++++++++++++- views/list-management/index.tpl | 163 ++++++++++++++++++ web/css/site.css | 4 + web/index.php | 4 +- web/js/capture-logs.js | 48 ++++++ web/js/common.js | 8 + web/test.txt | 2 +- 21 files changed, 883 insertions(+), 57 deletions(-) create mode 100644 assets/CaptureLogsAsset.php create mode 100644 controllers/ListManagementController.php create mode 100644 helpers/ListManagementGrid.php create mode 100644 models/ListManagement.php create mode 100644 models/ListManagementSearch.php create mode 100644 views/list-management/index.tpl create mode 100644 web/js/capture-logs.js diff --git a/assets/CaptureLogsAsset.php b/assets/CaptureLogsAsset.php new file mode 100644 index 00000000..3a4f911b --- /dev/null +++ b/assets/CaptureLogsAsset.php @@ -0,0 +1,23 @@ +request->post()) { + $post = Yii::$app->request->bodyParams; + $time = date_format(date_create_from_format('Y-m-d H:i:s', $post['time']), 'U'); + $key = $this->generateRandomString(); + $RootFolder = Yii::getAlias('@webroot') . "/data/uploads"; + $targetPath = $RootFolder . "/face"; + $fileName = "face_" . $key . "_" . $time . ".png"; + FileHelper::createDirectory($targetPath, 0777); + file_put_contents($targetPath . "/" . $fileName, base64_decode($post['image'])); + + if ($post["id"] == 0) { + $model = new CaptureLogs(); + $model->create([ + "Time" => $time, + "Image" => $fileName + ]); + } + Yii::$app->response->format = "json"; + return ["status" => "success"]; + } + } + + public function generateRandomString($length = 10) { + $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + $charactersLength = strlen($characters); + $randomString = ''; + for ($i = 0; $i < $length; $i++) { + $randomString .= $characters[rand(0, $charactersLength - 1)]; + } + return $randomString; + } + } diff --git a/controllers/CaptureLogsController.php b/controllers/CaptureLogsController.php index eab57f64..f22cadf4 100644 --- a/controllers/CaptureLogsController.php +++ b/controllers/CaptureLogsController.php @@ -6,21 +6,14 @@ use Yii; use app\models\CaptureLogs; use app\models\CaptureLogsSearch; use yii\web\Controller; +use yii\web\NotFoundHttpException; use yii\filters\VerbFilter; -use yii\helpers\Url; /** - * ScriptController implements the CRUD actions for Script model. + * CaptureLogsController implements the CRUD actions for CaptureLogs model. */ class CaptureLogsController extends Controller { - public function init() { - parent::init(); - if (Yii::$app->user->isGuest) { - return $this->redirect(['/site/login']); - } - } - /** * {@inheritdoc} */ @@ -35,20 +28,71 @@ class CaptureLogsController extends Controller { ]; } - /** - * Lists all Script models. - * @return mixed - */ - public function actionIndex() { - $this->view->title = "Ảnh mẫu"; + public function actionIndex($from = "", $to = "") { + $f = date_format(date_create_from_format('H:i d/m/Y', "00:00 " . date("d/m/Y")), 'U'); + $t = date_format(date_create_from_format('H:i d/m/Y', "23:59 " . date("d/m/Y")), 'U'); + if ($from !== "" && $to !== "") { + $f = date_format(date_create_from_format('H:i d/m/Y', $from), 'U'); + $t = date_format(date_create_from_format('H:i d/m/Y', $to), 'U'); + } + + $this->view->title = "Capture Log"; $searchModel = new CaptureLogsSearch(); $dataProvider = $searchModel->search(Yii::$app->request->queryParams); + $dataProvider->query->andWhere(["BETWEEN", "time", $f, $t]); + $dataProvider->query->orderBy(["time" => SORT_DESC]); return $this->render('index', [ 'searchModel' => $searchModel, 'dataProvider' => $dataProvider, + 'statusArray' => CaptureLogs::$statusArray, + 'f' => $f, + 't' => $t ]); } - + public function actionView($id) { + return $this->render('view', [ + 'model' => $this->findModel($id), + ]); + } + + public function actionCreate() { + $model = new CaptureLogs(); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id]); + } + + return $this->render('create', [ + 'model' => $model, + ]); + } + + public function actionUpdate($id) { + $model = $this->findModel($id); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id]); + } + + return $this->render('update', [ + 'model' => $model, + ]); + } + + public function actionDelete($id) { + $this->findModel($id)->delete(); + + return $this->redirect(['index']); + } + + protected function findModel($id) { + if (($model = CaptureLogs::findOne($id)) !== null) { + return $model; + } + + throw new NotFoundHttpException('The requested page does not exist.'); + } + } diff --git a/controllers/ConfigController.php b/controllers/ConfigController.php index 2522dd6f..610aac90 100644 --- a/controllers/ConfigController.php +++ b/controllers/ConfigController.php @@ -170,7 +170,7 @@ class ConfigController extends Controller { ] ]; $ip = "192.168.0.42"; - $tempConfig = json_decode(file_get_contents("http://localhost:4004/ReadAPIConfig", false, stream_context_create($options)), true); + $tempConfig = json_decode(file_get_contents("http://192.168.1.241:4004/ReadAPIConfig", false, stream_context_create($options)), true); if ($tempConfig['status']) { $t = json_decode($tempConfig['data'], true); $temp = explode("/", $t['url']); diff --git a/controllers/ListManagementController.php b/controllers/ListManagementController.php new file mode 100644 index 00000000..0c66b873 --- /dev/null +++ b/controllers/ListManagementController.php @@ -0,0 +1,93 @@ + [ + 'class' => VerbFilter::className(), + 'actions' => [ + 'delete' => ['POST'], + ], + ], + ]; + } + + public function actionIndex($from = "", $to = "") { + $f = date_format(date_create_from_format('H:i d/m/Y', "00:00 " . date("d/m/Y")), 'U'); + $t = date_format(date_create_from_format('H:i d/m/Y', "23:59 " . date("d/m/Y")), 'U'); + if ($from !== "" && $to !== "") { + $f = date_format(date_create_from_format('H:i d/m/Y', $from), 'U'); + $t = date_format(date_create_from_format('H:i d/m/Y', $to), 'U'); + } + $this->view->title = "List management"; + $searchModel = new ListManagementSearch(); + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); + $dataProvider->query->andWhere(["BETWEEN", "time", $f, $t]); + $dataProvider->query->orderBy(["time" => SORT_DESC]); + return $this->render('index', [ + 'searchModel' => $searchModel, + 'dataProvider' => $dataProvider, + 'f' => $f, + 't' => $t, + 'typeArray' => ListManagement::$typeArray + ]); + } + + public function actionView($id) { + return $this->render('view', [ + 'model' => $this->findModel($id), + ]); + } + + public function actionCreate() { + $model = new ListManagement(); + if (Yii::$app->request->post()) { + $data = Yii::$app->request->post(); + $data['image'] = \app\models\CaptureLogs::findOne($data['id'])->image; + return $model->create($data); + } + } + + public function actionUpdate($id) { + $model = $this->findModel($id); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id]); + } + + return $this->render('update', [ + 'model' => $model, + ]); + } + + public function actionDelete($id) { + $this->findModel($id)->delete(); + + return $this->redirect(['index']); + } + + protected function findModel($id) { + if (($model = ListManagement::findOne($id)) !== null) { + return $model; + } + + throw new NotFoundHttpException('The requested page does not exist.'); + } + +} diff --git a/db/app.db b/db/app.db index aaf93d4116268f2eabcc95c3fe3c8ec7430be473..c5495dcc1abec3d77d3b917e186fb4a411a892cd 100644 GIT binary patch literal 106496 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

j>aN!vt}_vC>voI^0|sbxKg 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 + }; + } + + public static function image() { + return function($model) { + return Html::img("/BiFace/data/uploads/face/" . $model->image, [ + "class" => "img-thumbnail", + "style" => "width: 150px;height:150px;" + ]); + }; + } + + public static function status($statusArray) { + return function($model) use ($statusArray) { + return $statusArray[$model->status]; + }; + } + + public static function rows() { + return function($model, $index, $widget, $grid) { + return [ + "ondblclick" => "_form(this);", + "style" => "cursor: pointer;", + "data" => [ + "id" => $model->id, + "img" => "/BiFace/data/uploads/face/" . $model->image + ] + ]; + }; + } + } diff --git a/helpers/ListManagementGrid.php b/helpers/ListManagementGrid.php new file mode 100644 index 00000000..7e66248c --- /dev/null +++ b/helpers/ListManagementGrid.php @@ -0,0 +1,71 @@ +app->app_name; + }; + } + + public static function getLayout() { + return "{items}

{summary}
{pager}
"; + } + + public static function actionTemplate() { + return "{update} {delete}"; + } + + public static function time() { + return function($model) { + return date("H:i:s d/m/Y", $model->time); + }; + } + + public static function birthday() { + return function($model) { + return date("d/m/Y", $model->birthday); + }; + } + + public static function image() { + return function($model) { + return Html::img("/BiFace/data/uploads/face/" . $model->image, [ + "class" => "img-thumbnail", + "style" => "width: 150px;height:150px;" + ]); + }; + } + + public static function type($typeArray) { + return function($model) use ($typeArray) { + return $typeArray[$model->type]; + }; + } + + public static function rows() { + return function($model, $index, $widget, $grid) { + return [ + "ondblclick" => "_form(this);", + "style" => "cursor: pointer;", + "data" => [ + "id" => $model->id, + "img" => "/BiFace/data/uploads/face/" . $model->image + ] + ]; + }; + } + +} diff --git a/models/CaptureLogs.php b/models/CaptureLogs.php index 5a1aee14..e1478d33 100644 --- a/models/CaptureLogs.php +++ b/models/CaptureLogs.php @@ -7,44 +7,64 @@ use Yii; /** * This is the model class for table "capture_logs". * - * @property int $ID - * @property int $Time - * @property string $Image - * @property int $Status - * @property string $Remark + * @property int $id + * @property int $time + * @property string $image + * @property int $status + * @property string $remark */ -class CaptureLogs extends \yii\db\ActiveRecord -{ +class CaptureLogs extends \yii\db\ActiveRecord { + /** * {@inheritdoc} */ - public static function tableName() - { + public static function tableName() { return 'capture_logs'; } /** * {@inheritdoc} */ - public function rules() - { + public function rules() { return [ - [['Time', 'Status'], 'integer'], - [['Image', 'Remark'], 'string'], + [['time', 'status'], 'integer'], + [['image', 'remark'], 'string'], ]; } /** * {@inheritdoc} */ - public function attributeLabels() - { + public function attributeLabels() { return [ - 'ID' => 'ID', - 'Time' => 'Time', - 'Image' => 'Image', - 'Status' => 'Status', - 'Remark' => 'Remark', + 'id' => 'ID', + 'time' => 'Time', + 'image' => 'Image', + 'status' => 'Status', + 'remark' => 'Remark', ]; } + + public function create($data) { + $r = $this->load([ + 'time' => $data['Time'], + 'image' => $data["Image"], + 'status' => 0, + 'remark' => '' + ], ''); + if ($r) { + try { + $this->save(); + return $this->id; + } catch (\Exception $ex) { + return false; + } + } + } + + public static $statusArray = [ + 0 => "Unknown", + 1 => "List management" + ]; + } diff --git a/models/CaptureLogsSearch.php b/models/CaptureLogsSearch.php index 8c331ca7..91732989 100644 --- a/models/CaptureLogsSearch.php +++ b/models/CaptureLogsSearch.php @@ -18,8 +18,8 @@ class CaptureLogsSearch extends CaptureLogs public function rules() { return [ - [['ID', 'Time', 'Status'], 'integer'], - [['Image', 'Remark'], 'safe'], + [['id', 'time', 'status'], 'integer'], + [['image', 'remark'], 'safe'], ]; } @@ -59,13 +59,13 @@ class CaptureLogsSearch extends CaptureLogs // grid filtering conditions $query->andFilterWhere([ - 'ID' => $this->ID, - 'Time' => $this->Time, - 'Status' => $this->Status, + 'id' => $this->id, + 'time' => $this->time, + 'status' => $this->status, ]); - $query->andFilterWhere(['like', 'Image', $this->Image]) - ->andFilterWhere(['like', 'Remark', $this->Remark]); + $query->andFilterWhere(['like', 'image', $this->image]) + ->andFilterWhere(['like', 'remark', $this->remark]); return $dataProvider; } diff --git a/models/ListManagement.php b/models/ListManagement.php new file mode 100644 index 00000000..306c9fda --- /dev/null +++ b/models/ListManagement.php @@ -0,0 +1,82 @@ + 'ID', + 'type' => 'Type', + 'name' => 'Name', + 'image' => 'Registration Image', + 'gender' => 'Gender', + 'birthday' => 'Birthday', + 'telephone' => 'Telephone', + 'address' => 'Address', + 'time' => 'Registration time' + ]; + } + + public function create($data) { + $r = $this->load([ + 'type' => $data['type'], + 'name' => $data['name'], + 'image' => $data['image'], + 'gender' => $data['gender'], + 'birthday' => $data['birthday'] === "" ? 0 : date_format(date_create_from_format('d/m/Y', $data['birthday']), 'U'), + 'telephone' => $data['telephone'], + 'address' => $data['address'], + 'time' => time() + ], ''); + if ($r) { + try { + $this->save(); + return $this->id; + } catch (\Exception $ex) { + return false; + } + } + } + + public static $typeArray = [ + "wl" => "Whitelist", + "bl" => "Blacklist" + ]; + +} diff --git a/models/ListManagementSearch.php b/models/ListManagementSearch.php new file mode 100644 index 00000000..d806c3d2 --- /dev/null +++ b/models/ListManagementSearch.php @@ -0,0 +1,72 @@ + $query, + ]); + + $this->load($params); + + if (!$this->validate()) { + // uncomment the following line if you do not want to return any records when validation fails + // $query->where('0=1'); + return $dataProvider; + } + + // grid filtering conditions + $query->andFilterWhere([ + 'id' => $this->id, + 'birthday' => $this->birthday, + ]); + + $query->andFilterWhere(['like', 'type', $this->type]) + ->andFilterWhere(['like', 'name', $this->name]) + ->andFilterWhere(['like', 'gender', $this->gender]) + ->andFilterWhere(['like', 'telephone', $this->telephone]) + ->andFilterWhere(['like', 'address', $this->address]); + + return $dataProvider; + } + +} diff --git a/nbproject/private/private.properties b/nbproject/private/private.properties index d6d16d66..86275d35 100644 --- a/nbproject/private/private.properties +++ b/nbproject/private/private.properties @@ -1,8 +1,8 @@ copy.src.files=false copy.src.on.open=false copy.src.target= -remote.connection=bf_local-799e1d +remote.connection=missing-config remote.directory=/BiFace_Server_Lite remote.upload=ON_SAVE -run.as=REMOTE +run.as=LOCAL url=http://localhost/ diff --git a/vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app/layouts/header.php b/vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app/layouts/header.php index 21dda2c4..830e6c89 100644 --- a/vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app/layouts/header.php +++ b/vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app/layouts/header.php @@ -51,6 +51,16 @@ use yii\widgets\ActiveForm; Reset thiết bị +
  • + + List Management + +
  • +
  • + + Capture log + +