update data to device

This commit is contained in:
2020-10-14 17:21:26 +07:00
parent fd27169e00
commit 37ab48f055
7 changed files with 321 additions and 55 deletions

View File

@@ -8,6 +8,8 @@ use app\models\DeviceSearch;
use app\models\Area;
use app\models\common;
use app\models\Door;
use app\models\Staff;
use app\models\Schedule;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
@@ -322,4 +324,114 @@ class DeviceController extends Controller {
}
}
public function actionSync() {
if (Yii::$app->request->post()) {
Yii::$app->response->format = "json";
return [
"title" => Html::tag("i", "", ["class" => "fa fa-exchange"]) . " Đồng bộ dữ liệu đến thiết bị",
"form" => $this->renderPartial("sync"),
"lists" => Yii::$app->request->post("lists")
];
}
}
public function actionGetDataSync() {
if (Yii::$app->request->post()) {
Yii::$app->response->format = "json";
$device_id = Yii::$app->request->post("data");
$doors = Door::find()->andWhere(["device_id" => $device_id])->all();
$filter = ["OR"];
foreach ($doors as $key => $value) {
$filter[] = ["LIKE", "door_access", '"' . $value->id . '"'];
}
$staffs = Staff::find()->andWhere($filter)->all();
$schedule = [];
foreach ($staffs as $key => $value) {
$schedule[] = $value->schedule_id;
}
$schedule = array_unique($schedule);
return [
"IP" => $this->findModel($device_id)->ip_address,
"staffs" => $staffs,
"schedule" => $schedule
];
}
}
public function actionSyncSchedule() {
if (Yii::$app->request->post()) {
Yii::$app->response->format = "json";
$post = Yii::$app->request->post();
$schedule_lists = $post["data"];
$TimeZoneInfos = [];
foreach ($schedule_lists as $key => $value) {
$schedule = Schedule::findOne($value);
$TimeZoneInfos[] = [
"TimezoneId" => $schedule->id,
"SunTime1" => Schedule::convertTimeAttr($schedule->SunTime1), "SunTime2" => Schedule::convertTimeAttr($schedule->SunTime2), "SunTime3" => Schedule::convertTimeAttr($schedule->SunTime3),
"MonTime1" => Schedule::convertTimeAttr($schedule->MonTime1), "MonTime2" => Schedule::convertTimeAttr($schedule->MonTime2), "MonTime3" => Schedule::convertTimeAttr($schedule->MonTime3),
"TueTime1" => Schedule::convertTimeAttr($schedule->TueTime1), "TueTime2" => Schedule::convertTimeAttr($schedule->TueTime2), "TueTime3" => Schedule::convertTimeAttr($schedule->TueTime3),
"WedTime1" => Schedule::convertTimeAttr($schedule->WedTime1), "WedTime2" => Schedule::convertTimeAttr($schedule->WedTime2), "WedTime3" => Schedule::convertTimeAttr($schedule->WedTime3),
"ThuTime1" => Schedule::convertTimeAttr($schedule->ThuTime1), "ThuTime2" => Schedule::convertTimeAttr($schedule->ThuTime2), "ThuTime3" => Schedule::convertTimeAttr($schedule->ThuTime3),
"FriTime1" => Schedule::convertTimeAttr($schedule->FriTime1), "FriTime2" => Schedule::convertTimeAttr($schedule->FriTime2), "FriTime3" => Schedule::convertTimeAttr($schedule->FriTime3),
"SatTime1" => Schedule::convertTimeAttr($schedule->SatTime1), "SatTime2" => Schedule::convertTimeAttr($schedule->SatTime2), "SatTime3" => Schedule::convertTimeAttr($schedule->SatTime3),
"Hol1Time1" => 0, "Hol1Time2" => 0, "Hol1Time3" => 0,
"Hol2Time1" => 0, "Hol2Time2" => 0, "Hol2Time3" => 0,
"Hol3Time1" => 0, "Hol3Time2" => 0, "Hol3Time3" => 0
];
}
$res = json_decode(common::requestToCardService("/SetDeviceData/TimeZone", [
"DeviceIP" => $post["ip"],
"TimeZoneInfos" => $TimeZoneInfos
]), true);
return [
"res" => $res,
"IP" => $post["ip"]
];
}
}
public function actionSyncStaffs() {
if (Yii::$app->request->post()) {
Yii::$app->response->format = "json";
$post = Yii::$app->request->post();
$staff_lists = $post["data"];
$UserInfos = [];
$UserAuthorizeInfos = [];
foreach ($staff_lists as $key => $value) {
$UserInfos[] = [
"CardNo" => $value["card_number"],
"Pin" => $value["id"],
"Password" => "",
"Group" => "",
"StartTime" => "",
"EndTime" => ""
];
$doors = json_decode($value["door_access"], true);
foreach ($doors as $k => $v) {
$doorInfo = Door::findOne($v);
$UserAuthorizeInfos[] = [
"Pin" => $value["id"],
"AuthorizeTimezoneId" => $value["schedule_id"],
"AuthorizeDoorId" => $doorInfo->code
];
}
}
$resUser = json_decode(common::requestToCardService("/SetDeviceData/User", [
"DeviceIP" => $post["ip"],
"UserInfos" => $UserInfos
]), true);
common::requestToCardService("/SetDeviceData/UserAuthorize", [
"DeviceIP" => $post["ip"],
"UserAuthorizeInfos" => $UserAuthorizeInfos
]);
return [
"resUser" => $resUser,
"IP" => $post["ip"]
];
}
}
}