diff --git a/controllers/ApiController.php b/controllers/ApiController.php index 5dc5db8b..d5238506 100644 --- a/controllers/ApiController.php +++ b/controllers/ApiController.php @@ -8,6 +8,7 @@ use yii\filters\VerbFilter; use yii\helpers\FileHelper; use app\models\CaptureLogs; use app\models\ListManagement; +use app\models\common; /** * CardController implements the CRUD actions for Card model. @@ -58,7 +59,7 @@ class ApiController extends Controller { if (Yii::$app->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(); + $key = common::generateRandomString(); $RootFolder = Yii::getAlias('@webroot') . "/data/uploads"; $targetPath = $RootFolder . "/face"; $fileName = "face_" . $key . "_" . $time . ".png"; @@ -95,14 +96,4 @@ class ApiController extends Controller { return $allFeatures; } - 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/ListManagementController.php b/controllers/ListManagementController.php index be926383..ee9ee86b 100644 --- a/controllers/ListManagementController.php +++ b/controllers/ListManagementController.php @@ -10,6 +10,7 @@ use yii\web\NotFoundHttpException; use yii\filters\VerbFilter; use app\models\CaptureLogs; use app\models\common; +use yii\helpers\FileHelper; /** * ListMamagementController implements the CRUD actions for ListMamagement model. @@ -33,14 +34,14 @@ class ListManagementController extends Controller { public function actionIndex($from = "", $to = "", $name = "", $type = "all", $gender = "all") { $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]); + 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'); + $dataProvider->query->andWhere(["BETWEEN", "time", $f, $t]); + } if ($name !== "") $dataProvider->query->andWhere(["LIKE", "name", $name]); if ($type !== "all") @@ -58,10 +59,23 @@ class ListManagementController extends Controller { ]); } - public function actionView($id) { - return $this->render('view', [ - 'model' => $this->findModel($id), - ]); + public function actionAdd() { + $model = new ListManagement(); + Yii::$app->response->format = "json"; + if (Yii::$app->request->post()) { + $data = Yii::$app->request->post(); + $features = json_decode(common::requestToEngine("/get-feature", [ + "image_paths" => [ + ["url" => "/var/www/html/BiFace_Server_Lite/web/data/uploads/face/" . $data['image'], "type" => "raw"] + ] + ]), true); + $data['image'] = json_encode([ + ["url" => $data['image'], "features" => $features['results'][0]['feature']] + ]); + $model->create($data); + file_get_contents("http://localhost:2305/update-feature"); + return ["status" => true]; + } } public function actionCreate() { @@ -129,6 +143,16 @@ class ListManagementController extends Controller { if (Yii::$app->request->post()) { $data = Yii::$app->request->post(); $model = $this->findModel($data['id']); + if ($data['image'] !== "") { + $features = json_decode(common::requestToEngine("/get-feature", [ + "image_paths" => [ + ["url" => "/var/www/html/BiFace_Server_Lite/web/data/uploads/face/" . $data['image'], "type" => "raw"] + ] + ]), true); + $images = json_decode($model->image, true); + $images[] = ["url" => $data['image'], "features" => $features['results'][0]['feature']]; + $model->image = json_encode($images); + } $model->type = $data['type']; $model->name = $data['name']; $model->gender = $data['gender']; @@ -188,10 +212,24 @@ class ListManagementController extends Controller { if (Yii::$app->request->post()) { $model = new common(); Yii::$app->response->format = "json"; - return [ - "dataPath" => "BiFace/", - "url" => $model->UploadFile("AnhNhanVien", ["PNG", "JPG", "JPEG", "GIF"], "temp") - ]; + $url = $model->UploadFile("AnhNhanVien", ["PNG", "JPG", "JPEG", "GIF"], "temp"); + $features = json_decode(common::requestToEngine("/get-feature", [ + "image_paths" => [ + ["url" => "/var/www/html/BiFace_Server_Lite/web/" . $url, "type" => "crop"] + ] + ]), true); + unlink("/var/www/html/BiFace_Server_Lite/web/" . $url); + if ($features['results'][0]['crop'] === "") { + return ["status" => false]; + } else { + $key = common::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($features['results'][0]['crop'])); + return ["status" => true, "url" => $fileName, "dataPath" => "data/uploads/face/"]; + } } } diff --git a/models/common.php b/models/common.php index 19f6f055..1147de0b 100644 --- a/models/common.php +++ b/models/common.php @@ -181,4 +181,14 @@ class common extends \yii\db\ActiveRecord { ])); } + public static 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/views/list-management/index.tpl b/views/list-management/index.tpl index 5111d4b5..cd84e01a 100644 --- a/views/list-management/index.tpl +++ b/views/list-management/index.tpl @@ -26,6 +26,8 @@ color: #fff; } + +