update thống kê
This commit is contained in:
@@ -8,6 +8,10 @@ use app\models\LogsSearch;
|
||||
use yii\web\Controller;
|
||||
use yii\web\NotFoundHttpException;
|
||||
use yii\filters\VerbFilter;
|
||||
use app\models\Device;
|
||||
use app\models\EventType;
|
||||
use app\models\Department;
|
||||
use app\models\common;
|
||||
|
||||
/**
|
||||
* LogsController implements the CRUD actions for Logs model.
|
||||
@@ -34,17 +38,132 @@ class LogsController extends Controller {
|
||||
];
|
||||
}
|
||||
|
||||
public function actionIndex() {
|
||||
$this->view->title = 'Sự kiện hôm nay';
|
||||
public function actionIndex($type = "today", $from = "", $to = "") {
|
||||
$f = $t = 0;
|
||||
$this->view->title = 'Tất cả sự kiện';
|
||||
if ($type === "today" && $from === "" && $to === "") {
|
||||
$f = date_format(date_create_from_format('H:i:s d/m/Y', "00:00:00 " . date("d/m/Y")), 'U');
|
||||
$t = date_format(date_create_from_format('H:i:s d/m/Y', "23:59:59 " . date("d/m/Y")), 'U');
|
||||
$this->view->title = 'Sự kiện hôm nay';
|
||||
}
|
||||
if ($type === "3days" && $from === "" && $to === "") {
|
||||
$f = date_format(date_create_from_format('H:i:s d/m/Y', "00:00:00 " . date("d/m/Y")), 'U');
|
||||
$f = $f - 60 * 60 * 24 * 2;
|
||||
$t = date_format(date_create_from_format('H:i:s d/m/Y', "23:59:59 " . date("d/m/Y")), 'U');
|
||||
$this->view->title = 'Sự kiện 3 ngày gần đây';
|
||||
}
|
||||
if ($type === "thisWeek" && $from === "" && $to === "") {
|
||||
$dayOfWeek = date("w");
|
||||
$f = date_format(date_create_from_format('H:i:s d/m/Y', "00:00:00 " . date("d/m/Y")), 'U');
|
||||
$f = $f - 60 * 60 * 24 * ($dayOfWeek - 1);
|
||||
$t = date_format(date_create_from_format('H:i:s d/m/Y', "23:59:59 " . date("d/m/Y")), 'U');
|
||||
$t = $t + 60 * 60 * 24 * (7 - $dayOfWeek);
|
||||
$this->view->title = 'Sự kiện tuần này';
|
||||
}
|
||||
if ($type === "lastWeek" && $from === "" && $to === "") {
|
||||
$dayOfWeek = date("w");
|
||||
$f = date_format(date_create_from_format('H:i:s d/m/Y', "00:00:00 " . date("d/m/Y")), 'U');
|
||||
$f = $f - 60 * 60 * 24 * ($dayOfWeek - 1) - 60 * 60 * 24 * 7;
|
||||
$t = date_format(date_create_from_format('H:i:s d/m/Y', "23:59:59 " . date("d/m/Y")), 'U');
|
||||
$t = $t + 60 * 60 * 24 * (7 - $dayOfWeek) - 60 * 60 * 24 * 7;
|
||||
$this->view->title = 'Sự kiện tuần trước';
|
||||
}
|
||||
if ($from !== "" && $to !== "") {
|
||||
$f = date_format(date_create_from_format('H:i:s d/m/Y', $from), 'U');
|
||||
$t = date_format(date_create_from_format('H:i:s d/m/Y', $to), 'U');
|
||||
}
|
||||
$searchModel = new LogsSearch();
|
||||
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
|
||||
if ($f != 0 && $t != 0) {
|
||||
$dataProvider->query->andWhere(["BETWEEN", 'time', $f, $t]);
|
||||
}
|
||||
$dataProvider->query->orderBy(["time" => SORT_DESC]);
|
||||
|
||||
return $this->render('index', [
|
||||
'searchModel' => $searchModel,
|
||||
'dataProvider' => $dataProvider,
|
||||
'deviceArray' => Device::deviceArray(),
|
||||
'stateArray' => Logs::$stateArray,
|
||||
'eventTypeArray' => EventType::eventTypeArray(),
|
||||
'departmentArray' => Department::departmentArray(),
|
||||
'f' => $f,
|
||||
't' => $t
|
||||
]);
|
||||
}
|
||||
|
||||
public function actionExport($from = "", $to = "") {
|
||||
$f = date_format(date_create_from_format('H:i:s d/m/Y', $from), 'U');
|
||||
$t = date_format(date_create_from_format('H:i:s d/m/Y', $to), 'U');
|
||||
$objPHPExcel = new \PHPExcel();
|
||||
$objPHPExcel->setActiveSheetIndex(0);
|
||||
$toExcelFile[] = ["Thời gian", "Mã nhân viên", "Tên nhân viên", "Phòng ban", "Mã thẻ", "Thiết bị", "Cửa", "Trạng thái vào/ra", "Mô tả sự kiện"];
|
||||
$query = Logs::find();
|
||||
$query->andWhere(["BETWEEN", 'time', $f, $t]);
|
||||
$query->orderBy(["time" => SORT_DESC]);
|
||||
$logs = $query->all();
|
||||
$departmentArray = Department::departmentArray();
|
||||
$deviceArray = Device::deviceArray();
|
||||
$stateArray = Logs::$stateArray;
|
||||
$eventTypeArray = EventType::eventTypeArray();
|
||||
foreach ($logs as $k => $v) {
|
||||
$staff = $v->staff;
|
||||
$ExportData[] = date("H:i:s d/m/Y", $v->time);
|
||||
$ExportData[] = $staff ? $staff->code : "";
|
||||
$ExportData[] = $staff ? $staff->name : "";
|
||||
$ExportData[] = $staff && isset($departmentArray[$staff->department_id]) ? $departmentArray[$staff->department_id] : "";
|
||||
$ExportData[] = $v->card_number;
|
||||
$ExportData[] = isset($deviceArray[$v->device_id]) ? $deviceArray[$v->device_id] : "";
|
||||
$ExportData[] = isset($deviceArray[$v->device_id]) ? $deviceArray[$v->device_id] . "-" . $v->door_id : "";
|
||||
$ExportData[] = isset($stateArray[$v->in_out_state]) ? $stateArray[$v->in_out_state] : "";
|
||||
$ExportData[] = isset($eventTypeArray[$v->event_type]) ? $eventTypeArray[$v->event_type] : "";
|
||||
$toExcelFile[] = $ExportData;
|
||||
unset($ExportData);
|
||||
}
|
||||
$totals = count($logs) + 1;
|
||||
$activeSheet = $objPHPExcel->getActiveSheet();
|
||||
$activeSheet->getStyle("A1:I" . $totals)->getFont()->setName('Time New Roman')->setSize(10);
|
||||
$activeSheet->getStyle("A1:I1")->applyFromArray([
|
||||
'fill' => array(
|
||||
'type' => \PHPExcel_Style_Fill::FILL_SOLID,
|
||||
'color' => array('rgb' => '7ac3ec')
|
||||
)
|
||||
]);
|
||||
$rowCount = 1;
|
||||
for ($i = 0; $i < count($toExcelFile); $i++) {
|
||||
$column = 'A';
|
||||
$row = $toExcelFile[$i];
|
||||
for ($j = 0; $j < count($row); $j++) {
|
||||
if (!isset($row[$j]))
|
||||
$value = NULL;
|
||||
elseif ($row[$j] != "")
|
||||
$value = strip_tags($row[$j]);
|
||||
else
|
||||
$value = "";
|
||||
$activeSheet->setCellValue($column . $rowCount, $value);
|
||||
$column = chr(ord($column) + 1);
|
||||
}
|
||||
$rowCount++;
|
||||
}
|
||||
$activeSheet->getStyle("A1:I" . $totals)->applyFromArray([
|
||||
'alignment' => [
|
||||
'vertical' => \PHPExcel_Style_Alignment::VERTICAL_CENTER,
|
||||
],
|
||||
'borders' => [
|
||||
'allborders' => [
|
||||
'style' => \PHPExcel_Style_Border::BORDER_THIN
|
||||
]
|
||||
]
|
||||
]);
|
||||
|
||||
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
|
||||
ob_end_clean();
|
||||
header('Content-type: application/vnd.ms-excel');
|
||||
header('Content-Disposition: attachment; filename="logs_' . date("YmdHis") . '.xlsx"');
|
||||
header('Cache-Control: max-age=0');
|
||||
common::SaveViaTempFile($objWriter);
|
||||
exit();
|
||||
}
|
||||
|
||||
protected function findModel($id) {
|
||||
if (($model = Logs::findOne($id)) !== null) {
|
||||
return $model;
|
||||
|
||||
Reference in New Issue
Block a user