init Area full CRUD

This commit is contained in:
2020-10-09 14:19:15 +07:00
parent 5538d74b1b
commit 70db83d3ab
15 changed files with 318 additions and 144 deletions

View File

@@ -8,6 +8,9 @@ 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.
@@ -42,43 +45,75 @@ class AreaController extends Controller {
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
public function actionView($id) {
return $this->render('view', [
'model' => $this->findModel($id),
"areaArray" => Area::areaArray()
]);
}
public function actionCreate() {
$model = new Area();
Yii::$app->response->format = "json";
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->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
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()
])
];
}
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]);
Yii::$app->response->format = "json";
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"];
$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)
])
];
}
return $this->render('update', [
'model' => $model,
]);
}
public function actionDelete($id) {
$this->findModel($id)->delete();
return $this->redirect(['index']);
public function actionDelete() {
if (Yii::$app->request->post()) {
$lists = Yii::$app->request->post("lists");
foreach ($lists as $key => $value) {
Area::deleteArea($value);
}
}
}
protected function findModel($id) {
@@ -89,4 +124,87 @@ class AreaController extends Controller {
throw new NotFoundHttpException('The requested page does not exist.');
}
public function actionExport() {
$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()])
];
}
}
}

View File

@@ -5,7 +5,6 @@ namespace app\controllers;
use Yii;
use app\models\Department;
use app\models\DepartmentSearch;
use app\models\SystemLogs;
use app\models\common;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
@@ -225,10 +224,7 @@ class DepartmentController extends Controller {
Yii::$app->response->format = "json";
return [
"title" => Html::tag("i", "", ["class" => "fa fa-file"]) . " Ghi nhận hệ thống",
"form" => $this->renderPartial("logs", [
"logs" => SystemLogs::find()->andWhere(["type" => Yii::$app->controller->id])->orderBy(['time' => SORT_DESC])->limit(30)->all(),
"userArray" => \app\models\User::userArray()
])
"form" => \app\widgets\SystemLogsView::widget(['type' => Yii::$app->controller->id])
];
}
}
@@ -238,9 +234,7 @@ class DepartmentController extends Controller {
Yii::$app->response->format = "json";
return [
"title" => Html::tag("i", "", ["class" => "fa fa-sitemap"]) . " Cây thư mục",
"form" => $this->renderPartial("tree", [
"root" => Department::findOne(1)
])
"form" => \app\widgets\Tree::widget(["model" => new Department()])
];
}
}