add contraint , that everybody expect admin is limited to 3 days, Add card package

This commit is contained in:
2016-02-13 17:23:43 +01:00
parent 556bdc3066
commit 70f43468af
37 changed files with 1418 additions and 19 deletions

View File

@@ -12,6 +12,7 @@ use yii\helpers\Json;
use backend\models\CardImportRfidForm;
use yii\web\UploadedFile;
use common\components\Helper;
use backend\models\CardInsertForm;
/**
* CardController implements the CRUD actions for Card model.
@@ -30,7 +31,8 @@ class CardController extends \backend\controllers\BackendController {
'view',
'update',
'list' ,
'import-rfid'
'import-rfid',
'insert'
],
'allow' => true,
'roles' => [
@@ -224,6 +226,7 @@ class CardController extends \backend\controllers\BackendController {
$failed = [];
$sqls = [];
$inserts = [];
foreach ($arr as $item ){
$card = Card::find()->andWhere(['number' => $item['number']])->one();
if ( $card != null ){
@@ -232,7 +235,17 @@ class CardController extends \backend\controllers\BackendController {
$sqls[] = $sql;
$i++;
}else{
$failed [] = $item;
// $failed [] = $item;
$sql = "insert into card (number,status,type,created_at,updated_at, rfid_key) values(";
$sql .= " '" .$item['number'] . "'" ;
$sql .= " ," . Card::STATUS_ACTIVE ;
$sql .= " ," . Card::TYPE_RFID;
$sql .= " ,'" . date("Y-m-d H:i:s") ."'" ;
$sql .= " ,'" . date("Y-m-d H:i:s") ."'" ;
$sql .=" ,'" .$item['key'] ."'";
$sql .= " );";
$inserts[] = $sql;
// rfid_key = '" . strtolower( $item['key'] )."' where id_card = " .$card->id_card .";";
}
}
@@ -241,6 +254,8 @@ class CardController extends \backend\controllers\BackendController {
$model->message .= "<br> failed: " . print_r($failed,true);
$model->message .= "<br>sql:";
$model->message .= "<br>". implode("<br>", $sqls);
$model->message .= "<br><br><br>Inserts<br><br><br>";
$model->message .= "<br>". implode("<br>", $inserts);
}
@@ -248,4 +263,90 @@ class CardController extends \backend\controllers\BackendController {
'model' => $model
] );
}
public function actionInsert() {
$model = new CardInsertForm();
$arr = [];
if (Yii::$app->request->isPost) {
$model->file = UploadedFile::getInstance($model, 'file');
// print_r($model->file);
// $model->message = "ok";
$file = $model->file->tempName;
$file = fopen ( $file , "r" );
$trans = null;
$i = 0;
$j = 0;
while ( ($data = fgetcsv ( $file, 0, "," )) != null ) {
// if ($i == 0) {
// $i ++;
// continue;
// }
$j++;
$number = $key = false;
if ( isset($data[0]) ){
$number = $data[0];
}
if ( isset($data[1]) ){
$key = $data[1];
}
if ( isset($number) && isset($key) && !strpos($key, "E+") && strlen($key) > 7 ){
$item = [];
$item['number'] = $number;
$item['key'] = Helper::fixAsciiChars( $key);
$arr[] = $item;
}
}
$failed = [];
$sqls = [];
$inserts = [];
foreach ($arr as $item ){
// $failed [] = $item;
$sql = "insert into card (number,status,type,created_at,updated_at, rfid_key) values(";
$sql .= " '" .$item['number'] . "'" ;
$sql .= " ," . Card::STATUS_ACTIVE ;
$sql .= " ," . Card::TYPE_RFID;
$sql .= " ,'" . date("Y-m-d H:i:s") ."'" ;
$sql .= " ,'" . date("Y-m-d H:i:s") ."'" ;
$sql .=" ,'" .$item['key'] ."'";
$sql .= " );";
$inserts[] = $sql;
}
$model->message = "rows read: " .$j ." / ". "updated cards: " .$i;
$model->message .= "<br> array size: " . count($arr);
$model->message .= "<br> failed: " . print_r($failed,true);
$model->message .= "<br>sql:";
$model->message .= "<br>". implode("<br>", $sqls);
$model->message .= "<br><br><br>Inserts<br><br><br>";
$model->message .= "<br>". implode("<br>", $inserts);
$inserts = implode("\n", $inserts);
header("Content-type:text/plain"); //for pdf file
//header('Content-Type:text/plain; charset=ISO-8859-15');
//if you want to read text file using text/plain header
header('Content-Disposition: attachment; filename="insert.sql"');
header('Content-Length: ' . strlen($inserts));
echo $inserts;
exit();
}
return $this->render ( 'insert.php', [
'model' => $model
] );
}
}