[ 'class' => VerbFilter::className(), 'actions' => [ 'delete' => ['post'], ], ], ]; } /** * Lists all InventoryItem models. * @param $id * @return mixed * @throws NotFoundHttpException * @throws \PHPExcel_Exception * @throws \PHPExcel_Reader_Exception * @throws \PHPExcel_Writer_Exception */ public function actionIndex($id) { $inventory = Inventory::findOne($id); if ( !isset($inventory)){ throw new NotFoundHttpException("Leltár nem található"); } $searchModel = new InventoryItemSearch(['inventory' => $inventory]); $dataProvider = $searchModel->search(Yii::$app->request->queryParams); $productOptions = Product::buildProductAndInventoryGroupList(); if ($searchModel->output == 'xls') { $this->downloadIndexXls($dataProvider); }else{ Url::remember(Url::current(),"inventory-item-index"); } return $this->render('index', [ 'model' => $inventory, 'searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'productOptions' =>$productOptions ]); } /** * @param $dataProvider * @throws \PHPExcel_Exception * @throws \PHPExcel_Reader_Exception * @throws \PHPExcel_Writer_Exception */ protected function downloadIndexXls($dataProvider){ $defs = [['item_created_at', 'Létrehozva'], ['item_name', 'Termék/Termék csoport'], ['user_username', 'Felhasználó'], ['item_count_prev', 'Előző leltár (db)'], ['item_count_sold', 'Eladott mennyiség (db)'], ['item_count_in', 'Beszerzett mennyiség (db)'], ['item_count', 'Leltározott mennyiség (db)'], ['item_difference', 'Különbség (db)'], ['item_count_system', 'Rendszer szerinti mennyiség (db)'], ]; $cols = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P']; $models = $dataProvider->getModels (); $objPHPExcel = new \PHPExcel (); $sheet = $objPHPExcel->setActiveSheetIndex ( 0 ); /** * Termék azonosító Termék neve Termék szám Termék vonalkód Termék raktáron Termék eladva */ $row = 1; $col = 0; foreach ( $defs as $def ) { $sheet->setCellValue ( $cols [$col] . $row, $def [1] ); $col ++; } foreach ( $models as $model ) { $row ++; $col = 0; foreach ( $defs as $def ) { $sheet->setCellValue ( $cols [$col] . $row, $model[$def [0]] ); $col ++; } } $styleArray = array ( 'font' => array ( 'bold' => true ) ); // 'color' => array('rgb' => 'FF0000'), // 'size' => 15, // 'name' => 'Verdana' foreach ( range ( 'A', 'I' ) as $columnID ) { $sheet->getColumnDimension ( $columnID )->setAutoSize ( true ); $sheet->getStyle ( $columnID . '1' )->applyFromArray ( $styleArray ); } // Redirect output to a client’s web browser (Excel5) header ( 'Content-Type: application/vnd.ms-excel' ); header ( 'Content-Disposition: attachment;filename="leltar.xls"' ); header ( 'Cache-Control: max-age=0' ); // If you're serving to IE 9, then the following may be needed header ( 'Cache-Control: max-age=1' ); // If you're serving to IE over SSL, then the following may be needed header ( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' ); // Date in the past header ( 'Last-Modified: ' . gmdate ( 'D, d M Y H:i:s' ) . ' GMT' ); // always modified header ( 'Cache-Control: cache, must-revalidate' ); // HTTP/1.1 header ( 'Pragma: public' ); // HTTP/1.0 $objWriter = \PHPExcel_IOFactory::createWriter ( $objPHPExcel, 'Excel5' ); $objWriter->save ( 'php://output' ); exit (); } /** * Displays a single InventoryItem model. * @param integer $id * @return mixed * @throws NotFoundHttpException */ public function actionView($id) { return $this->render('view', [ 'model' => $this->findModel($id), ]); } /** * Creates a new InventoryItem model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed * @throws \Exception */ public function actionCreate($id) { $model = new InventoryItemForm([ 'id_inventory' => $id ]); $model->read(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['inventory-item/index', 'id' => $model->inventory->id_inventory]); } else { return $this->render('create', [ 'model' => $model, ]); } } /** * Updates an existing InventoryItem 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); $inventory = Inventory::findOne($model->id_inventory); if ($model->load(Yii::$app->request->post()) && $model->save()) { $prev = Url::previous("inventory-item-index"); if ( isset($prev)){ return $this->redirect($prev); }else{ return $this->redirect([ 'index', 'id' => $inventory->id_inventory ]); } } else { return $this->render('update', [ 'model' => $model, 'inventory' => $inventory, ]); } } /** * Deletes an existing InventoryItem model. * If deletion is successful, the browser will be redirected to the 'index' page. * @param integer $id * @return mixed * @throws NotFoundHttpException * @throws \yii\db\StaleObjectException */ public function actionDelete($id) { $item = $this->findModel($id); $id_inventory = $item->id_inventory; $item->delete(); return $this->redirect(['index', 'id' => $id_inventory]); } /** * Finds the InventoryItem model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return InventoryItem the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = InventoryItem::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } } }