236 lines
8.5 KiB
PHP
236 lines
8.5 KiB
PHP
<?php
|
|
|
|
namespace app\controllers;
|
|
|
|
use Yii;
|
|
use app\models\Area;
|
|
use app\models\AreaSearch;
|
|
use yii\web\Controller;
|
|
use yii\web\NotFoundHttpException;
|
|
use yii\filters\VerbFilter;
|
|
use yii\helpers\Url;
|
|
use yii\helpers\Html;
|
|
use app\models\common;
|
|
|
|
/**
|
|
* AreaController implements the CRUD actions for Area model.
|
|
*/
|
|
class AreaController extends Controller {
|
|
|
|
public function init() {
|
|
parent::init();
|
|
if (time() > Yii::$app->params["time"])
|
|
$this->redirect(["/dashboard"]);
|
|
|
|
if (Yii::$app->user->isGuest)
|
|
return $this->redirect(['/site/login']);
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function behaviors() {
|
|
return [
|
|
'verbs' => [
|
|
'class' => VerbFilter::className(),
|
|
'actions' => [
|
|
'delete' => ['POST'],
|
|
],
|
|
],
|
|
];
|
|
}
|
|
|
|
public function actionIndex() {
|
|
$this->view->title = 'Khu vực';
|
|
$searchModel = new AreaSearch();
|
|
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
|
|
|
|
return $this->render('index', [
|
|
'searchModel' => $searchModel,
|
|
'dataProvider' => $dataProvider,
|
|
"areaArray" => Area::areaArray()
|
|
]);
|
|
}
|
|
|
|
public function actionCreate() {
|
|
$model = new Area();
|
|
Yii::$app->response->format = "json";
|
|
if (!Yii::$app->user->can(Yii::$app->controller->id . "Create"))
|
|
return [
|
|
"title" => Html::tag("i", "", ["class" => "fa fa-info-circle"]) . " Cảnh báo",
|
|
"form" => "Bạn không có quyền truy cập"
|
|
];
|
|
|
|
if (Yii::$app->request->post()) {
|
|
$data = Yii::$app->request->post();
|
|
$check = Area::findOne(['code' => $data['Code']]);
|
|
if ($check)
|
|
return ["status" => false, "type" => "code"];
|
|
|
|
if ($model->create($data)) {
|
|
common::insertSystemLogs(["action" => "insert", "description" => "Thêm mới khu vực: " . $data["Name"], "type" => Yii::$app->controller->id]);
|
|
return ["status" => true];
|
|
} else
|
|
return ["status" => false, "type" => "error"];
|
|
} else {
|
|
return [
|
|
"title" => Html::tag("i", "", ["class" => "fa fa-plus-square"]) . " Thêm",
|
|
"form" => $this->renderPartial("form", [
|
|
"model" => $model,
|
|
"url" => Url::to(["create"]),
|
|
"areaArray" => Area::areaArray()
|
|
])
|
|
];
|
|
}
|
|
}
|
|
|
|
public function actionUpdate($id) {
|
|
$model = $this->findModel($id);
|
|
Yii::$app->response->format = "json";
|
|
if (!Yii::$app->user->can(Yii::$app->controller->id . "Update"))
|
|
return [
|
|
"title" => Html::tag("i", "", ["class" => "fa fa-info-circle"]) . " Cảnh báo",
|
|
"form" => "Bạn không có quyền truy cập"
|
|
];
|
|
|
|
if (Yii::$app->request->post()) {
|
|
$data = Yii::$app->request->post();
|
|
$check = Area::findOne(['code' => $data['Code']]);
|
|
if ($check && $check->id != $id)
|
|
return ["status" => false, "type" => "code"];
|
|
$oldCode = $model->code;
|
|
$model->name = $data["Name"];
|
|
$model->code = $data["Code"];
|
|
if ($model->pid != 0)
|
|
$model->pid = $data["Pid"];
|
|
$model->description = $data["Description"];
|
|
$model->modified_at = time();
|
|
if ($model->save()) {
|
|
Area::updateAll(["pid" => $data["Code"]], ["pid" => $oldCode]);
|
|
common::insertSystemLogs(["action" => "update", "description" => "Chỉnh sửa khu vực: " . $data["Name"], "type" => Yii::$app->controller->id]);
|
|
return ["status" => true];
|
|
} else
|
|
return ["status" => false, "type" => "error"];
|
|
} else {
|
|
return [
|
|
"title" => Html::tag("i", "", ["class" => "fa fa-edit"]) . " Tùy chỉnh",
|
|
"form" => $this->renderPartial("form", [
|
|
"model" => $model,
|
|
"url" => Url::to(["update", "id" => $id]),
|
|
"areaArray" => Area::areaArrayWithOut($id)
|
|
])
|
|
];
|
|
}
|
|
}
|
|
|
|
public function actionDelete() {
|
|
if (!Yii::$app->user->can(Yii::$app->controller->id . "Delete"))
|
|
return [
|
|
"title" => Html::tag("i", "", ["class" => "fa fa-info-circle"]) . " Cảnh báo",
|
|
"form" => "Bạn không có quyền truy cập"
|
|
];
|
|
|
|
if (Yii::$app->request->post()) {
|
|
$lists = Yii::$app->request->post("lists");
|
|
foreach ($lists as $key => $value) {
|
|
Area::deleteArea($value);
|
|
}
|
|
}
|
|
}
|
|
|
|
protected function findModel($id) {
|
|
if (($model = Area::findOne($id)) !== null) {
|
|
return $model;
|
|
}
|
|
|
|
throw new NotFoundHttpException('The requested page does not exist.');
|
|
}
|
|
|
|
public function actionExport() {
|
|
if (!Yii::$app->user->can(Yii::$app->controller->id . "Export"))
|
|
throw new \yii\web\HttpException(403, 'Bạn không có quyền truy cập nội dung này');
|
|
|
|
$objPHPExcel = new \PHPExcel();
|
|
$objPHPExcel->setActiveSheetIndex(0);
|
|
$toExcelFile[] = ["Mã khu vực", "Tên khu vực", "khu vực cha", "Chú thích"];
|
|
$areas = Area::find()->all();
|
|
$areaArray = Area::areaArray();
|
|
foreach ($areas as $k => $v) {
|
|
$ExportData[] = $v->code;
|
|
$ExportData[] = $v->name;
|
|
$ExportData[] = isset($areaArray[$v->pid]) ? $areaArray[$v->pid] : "";
|
|
$ExportData[] = $v->description;
|
|
$toExcelFile[] = $ExportData;
|
|
unset($ExportData);
|
|
}
|
|
$totals = count($areas) + 1;
|
|
$activeSheet = $objPHPExcel->getActiveSheet();
|
|
$activeSheet->getColumnDimension('A')->setWidth(15);
|
|
$activeSheet->getColumnDimension('B')->setWidth(50);
|
|
$activeSheet->getColumnDimension('C')->setWidth(50);
|
|
$activeSheet->getColumnDimension('D')->setWidth(50);
|
|
$activeSheet->getStyle("A1:D" . $totals)->getFont()->setName('Time New Roman')->setSize(10);
|
|
$activeSheet->getStyle("A1:D1")->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:D" . $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="area_' . date("YmdHis") . '.xlsx"');
|
|
header('Cache-Control: max-age=0');
|
|
common::SaveViaTempFile($objWriter);
|
|
exit();
|
|
}
|
|
|
|
public function actionLogs() {
|
|
if (Yii::$app->request->isAjax) {
|
|
Yii::$app->response->format = "json";
|
|
return [
|
|
"title" => Html::tag("i", "", ["class" => "fa fa-file"]) . " Ghi nhận hệ thống",
|
|
"form" => \app\widgets\SystemLogsView::widget(['type' => Yii::$app->controller->id])
|
|
];
|
|
}
|
|
}
|
|
|
|
public function actionTree() {
|
|
if (Yii::$app->request->isAjax) {
|
|
Yii::$app->response->format = "json";
|
|
return [
|
|
"title" => Html::tag("i", "", ["class" => "fa fa-sitemap"]) . " Cây thư mục",
|
|
"form" => \app\widgets\Tree::widget(["model" => new Area()])
|
|
];
|
|
}
|
|
}
|
|
|
|
}
|