You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					150 lines
				
				3.0 KiB
			
		
		
			
		
	
	
					150 lines
				
				3.0 KiB
			| 
											7 years ago
										 | <?php
 | ||
|  | /**
 | ||
|  |  * Created by Error202
 | ||
|  |  * Date: 04.06.2018
 | ||
|  |  */
 | ||
|  | 
 | ||
| 
											7 years ago
										 | namespace backend\controllers\settings;
 | ||
| 
											7 years ago
										 | 
 | ||
|  | 
 | ||
|  | use backend\forms\SettingsSearch;
 | ||
|  | use core\entities\Settings;
 | ||
|  | use core\forms\SettingsForm;
 | ||
|  | use core\services\SettingsService;
 | ||
|  | use yii\filters\AccessControl;
 | ||
|  | use yii\filters\VerbFilter;
 | ||
|  | use yii\web\Controller;
 | ||
|  | use backend\components\ToggleAction;
 | ||
|  | use Yii;
 | ||
|  | use yii\web\NotFoundHttpException;
 | ||
|  | 
 | ||
| 
											7 years ago
										 | class ListController extends Controller
 | ||
| 
											7 years ago
										 | {
 | ||
|  | 	private $service;
 | ||
|  | 
 | ||
|  | 	public function __construct( string $id, $module, SettingsService $service, array $config = [] ) {
 | ||
|  | 		parent::__construct( $id, $module, $config );
 | ||
|  | 		$this->service = $service;
 | ||
|  | 	}
 | ||
|  | 
 | ||
|  | 	public function behaviors()
 | ||
|  | 	{
 | ||
|  | 		return [
 | ||
|  | 			'verbs' => [
 | ||
| 
											7 years ago
										 | 				'class' => VerbFilter::class,
 | ||
| 
											7 years ago
										 | 				'actions' => [
 | ||
|  | 					'delete' => ['POST'],
 | ||
|  | 				],
 | ||
|  | 			],
 | ||
|  | 			'access' => [
 | ||
| 
											7 years ago
										 | 				'class' => AccessControl::class,
 | ||
| 
											7 years ago
										 | 				'rules' => [
 | ||
|  | 					[
 | ||
|  | 						'actions' => ['create','view','index', 'update', 'delete', 'toggle'],
 | ||
|  | 						'allow' => true,
 | ||
|  | 						'roles' => ['SettingsManagement'],
 | ||
|  | 					],
 | ||
|  | 					[    // all the action are accessible to admin
 | ||
|  | 						'allow' => true,
 | ||
|  | 						'roles' => ['admin'],
 | ||
|  | 					],
 | ||
|  | 				],
 | ||
|  | 			],
 | ||
|  | 		];
 | ||
|  | 	}
 | ||
|  | 
 | ||
|  | 	public function actions()
 | ||
|  | 	{
 | ||
|  | 		return [
 | ||
|  | 			'toggle' => [
 | ||
| 
											7 years ago
										 | 				'class' => ToggleAction::class,
 | ||
| 
											7 years ago
										 | 				'modelClass' => Settings::class,
 | ||
|  | 				//'setFlash' => true,
 | ||
|  | 			]
 | ||
|  | 		];
 | ||
|  | 	}
 | ||
|  | 
 | ||
|  | 	public function actionIndex()
 | ||
|  | 	{
 | ||
|  | 		$searchModel = new SettingsSearch();
 | ||
|  | 		$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
 | ||
|  | 		return $this->render(
 | ||
|  | 			'index',
 | ||
|  | 			[
 | ||
|  | 				'searchModel' => $searchModel,
 | ||
|  | 				'dataProvider' => $dataProvider,
 | ||
|  | 			]
 | ||
|  | 		);
 | ||
|  | 	}
 | ||
|  | 
 | ||
|  | 	public function actionView($id)
 | ||
|  | 	{
 | ||
|  | 		return $this->render(
 | ||
|  | 			'view',
 | ||
|  | 			[
 | ||
|  | 				'model' => $this->findModel($id),
 | ||
|  | 			]
 | ||
|  | 		);
 | ||
|  | 	}
 | ||
|  | 
 | ||
|  | 	public function actionCreate()
 | ||
|  | 	{
 | ||
|  | 		$form = new SettingsForm();
 | ||
|  | 		if ($form->load(Yii::$app->request->post()) && $form->validate()) {
 | ||
|  | 			try {
 | ||
|  | 				$settings = $this->service->create($form);
 | ||
|  | 				return $this->redirect(['view', 'id' => $settings->id]);
 | ||
|  | 			} catch (\DomainException $e) {
 | ||
|  | 				Yii::$app->errorHandler->logException($e);
 | ||
|  | 				Yii::$app->session->setFlash('error', $e->getMessage());
 | ||
|  | 			}
 | ||
|  | 		}
 | ||
|  | 		else {
 | ||
|  | 			$form->active = 1;
 | ||
|  | 		}
 | ||
|  | 		return $this->render(
 | ||
|  | 			'create',
 | ||
|  | 			[
 | ||
|  | 				'model' => $form,
 | ||
|  | 			]
 | ||
|  | 		);
 | ||
|  | 	}
 | ||
|  | 
 | ||
|  | 	public function actionUpdate($id)
 | ||
|  | 	{
 | ||
|  | 		$settings = $this->findModel($id);
 | ||
|  | 
 | ||
|  | 		$form = new SettingsForm($settings);
 | ||
|  | 		if ($form->load(Yii::$app->request->post()) && $form->validate()) {
 | ||
|  | 			try {
 | ||
|  | 				$this->service->edit($settings->id, $form);
 | ||
|  | 				return $this->redirect(['view', 'id' => $settings->id]);
 | ||
|  | 			} catch (\DomainException $e) {
 | ||
|  | 				Yii::$app->errorHandler->logException($e);
 | ||
|  | 				Yii::$app->session->setFlash('error', $e->getMessage());
 | ||
|  | 			}
 | ||
|  | 		}
 | ||
|  | 		return $this->render(
 | ||
|  | 			'update',
 | ||
|  | 			[
 | ||
|  | 				'model' => $form,
 | ||
|  | 				'settings' => $settings,
 | ||
|  | 			]
 | ||
|  | 		);
 | ||
|  | 	}
 | ||
|  | 
 | ||
|  | 	public function actionDelete($id)
 | ||
|  | 	{
 | ||
|  | 		$this->service->remove($id);
 | ||
|  | 		return $this->redirect(['index']);
 | ||
|  | 	}
 | ||
|  | 
 | ||
|  | 	protected function findModel($id)
 | ||
|  | 	{
 | ||
|  | 		if (($model = Settings::findOne($id)) !== null) {
 | ||
|  | 			return $model;
 | ||
|  | 		} else {
 | ||
|  | 			throw new NotFoundHttpException('The requested page does not exist.');
 | ||
|  | 		}
 | ||
|  | 	}
 | ||
|  | }
 |