[ 'class' => \yii\filters\AccessControl::className (), 'rules' => [ // allow authenticated users [ 'actions' => [ ], 'allow' => true, 'roles' => [ 'admin', 'employee', 'reception' ] ] ] // everything else is denied ] ]; } /** * Lists all Contract models. * * @return mixed */ public function actionIndex() { $searchModel = new ContractSearch (); $dataProvider = $searchModel->search ( Yii::$app->request->queryParams ); return $this->render ( 'index', [ 'searchModel' => $searchModel, 'dataProvider' => $dataProvider ] ); } /** * Lists all Contract models. * * @param $id * @return mixed * @throws NotFoundHttpException */ public function actionIndexCustomer($id) { $model = Customer::findOne ( $id ); if (! isset ( $model )) { throw new NotFoundHttpException ( 'The requested page does not exist.' ); } $searchModel = new ContractCustomerSearch ( [ 'customer' => $model ] ); $dataProvider = $searchModel->search ( Yii::$app->request->queryParams ); return $this->render ( 'index-customer', [ 'searchModel' => $searchModel, 'dataProvider' => $dataProvider ] ); } /** * Displays a single Contract model. * * @param integer $id * @return mixed * @throws NotFoundHttpException */ public function actionView($id) { return $this->render ( 'view', [ 'model' => $this->findModel ( $id ) ] ); } /** * Creates a new Contract model. * If creation is successful, the browser will be redirected to the 'view' page. * * @return mixed */ public function actionCreate() { $model = new Contract (); if ($model->load ( Yii::$app->request->post () ) && $model->save ()) { return $this->redirect ( [ 'view', 'id' => $model->id_contract ] ); } else { return $this->render ( 'create', [ 'model' => $model ] ); } } /** * Updates an existing Contract model. * If update is successful, the browser will be redirected to the 'view' page. * * @param integer $id * @return mixed * @throws NotFoundHttpException */ public function actionUpdate($id) { $model = $this->findModel ( $id ); if ($model->load ( Yii::$app->request->post () ) && $model->save ()) { return $this->redirect ( [ 'view', 'id' => $model->id_contract ] ); } else { return $this->render ( 'update', [ 'model' => $model ] ); } } /** * Deletes an existing Contract model. * If deletion is successful, the browser will be redirected to the 'index' page. * * @param integer $id * @return mixed * @throws Exception * @throws NotFoundHttpException * @throws \Exception * @throws \yii\db\Exception */ public function actionDelete($id) { $model = $this->findModel ( $id ); if ( !RoleDefinition::isAdmin() ){ throw new Exception ( "A szerződés nem törölhető" ); } if ($model->flag != Contract::$FLAG_ACTIVE) { throw new Exception ( "A szerződés nem törölhető" ); } $parts = TicketInstallmentRequest::find ()->andWhere ( [ 'not in', 'status', [ TicketInstallmentRequest::$STATUS_CANCELED, TicketInstallmentRequest::$STATUS_PENDING ] ] )->andWhere([ 'id_contract' => $model->id_contract ]) ->all (); if (count ( $parts ) > 0) { throw new Exception ( "Már van feldolgozott részlet, nem lehet törölni" ); } $tx = \Yii::$app->db->beginTransaction (); try { Contract::updateAll ( [ 'flag' => Contract::$FLAG_DELETED ], [ 'id_contract' => $model->id_contract ] ); TicketInstallmentRequest::updateAll ( [ 'status' => TicketInstallmentRequest::$STATUS_CANCELED ], [ 'id_contract' => $model->id_contract ] ); /** @var \common\models\Ticket $ticket */ $ticket = Ticket::find ()->andWhere ( [ 'id_contract' => $model->id_contract ] )->one (); /** @var \common\models\Transfer $transfer */ $transfer = Transfer::find ()->andWhere ( [ 'type' => Transfer::TYPE_TICKET ] )->andWhere ( [ 'id_object' => $ticket->id_ticket ] )->one (); $transfer->storno(); $tx->commit (); // $tx->rollBack(); } catch ( \Exception $e ) { $tx->rollBack (); echo $e->getMessage (); throw $e; } return $this->redirect ( [ 'index' ] ); } /** * @param $id * @return string * @throws NotFoundHttpException */ public function actionDetails($id) { $contract = Contract::findOne ( $id ); // ticket_installment_request if (! isset ( $contract )) { throw new NotFoundHttpException ( 'The requested page does not exist.' ); } $searchModel = new ContractRequestSearch ( [ 'contract' => $contract ] ); $dataProvider = $searchModel->search ( Yii::$app->request->queryParams ); return $this->render ( 'details', [ 'model' => $contract, 'searchModel' => $searchModel, 'dataProvider' => $dataProvider ] ); } /** * @param $id * @throws NotFoundHttpException * @throws \Throwable */ public function actionRequestToCart($id){ $contractManager = new ContractManager(); $contractManager->openRequestAndPutItItoCart($id); } /** * Finds the Contract model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * * @param integer $id * @return Contract the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Contract::findOne ( $id )) !== null) { return $model; } else { throw new NotFoundHttpException ( 'The requested page does not exist.' ); } } }