Finish flagout

This commit is contained in:
Roland Schneider 2016-10-01 18:49:51 +02:00
commit 7975d6ffc9
21 changed files with 450 additions and 32 deletions

View File

@ -389,10 +389,18 @@ class CardController extends \backend\controllers\BackendController {
$command = $connection->createCommand( Ticket::$SQL_UPDATE );
$result = $command->execute();
\Yii::info("Tickets updated: " . $result );
\Yii::$app->session->setFlash('success', 'Módosított bérletek száma: ' . $result);
$command = $connection->createCommand( Card::$SQL_CLEARS_STATUS_DOOR );
$result = $command->execute();
\Yii::info("Door flag cleared: " . $result );
$command = $connection->createCommand( Card::$SQL_FIX_KEY_STATUS );
$result = $command->execute();
\Yii::info("Key flag fixed: " . $result );
}
return $this->render("recalculate");

View File

@ -144,6 +144,10 @@ class ContractController extends Controller {
*
* @param integer $id
* @return mixed
* @throws Exception
* @throws NotFoundHttpException
* @throws \Exception
* @throws \yii\db\Exception
*/
public function actionDelete($id) {
$model = $this->findModel ( $id );

View File

@ -63,7 +63,7 @@ class CardSearch extends Card
'customer.name as customer_name' ,
'customer.id_customer as customer_id_customer',
'key.number as key_number',
'card.flag as card_flag',
'card.validity as card_validity',
]);
@ -107,7 +107,7 @@ class CardSearch extends Card
'asc' => ['key.number' => SORT_ASC ],
'desc' => ['key.number' => SORT_DESC],
],
'card_flag' => [
'card_validity' => [
'asc' => ['card.flag' => SORT_ASC ],
'desc' => ['card.flag' => SORT_DESC],
],

View File

@ -69,10 +69,10 @@ $this->params['breadcrumbs'][] = $this->title;
'label' => 'Kulcs száma'
],
[
'attribute' => 'card_flag',
'attribute' => 'card_validity',
'label' => 'Info',
'value' => function ($model, $key, $index, $column){
return Helper::getArrayValue(DoorLog::getCardFlagTexts(), $model['card_flag'], "Ismeretlen ok");
return Helper::getArrayValue(DoorLog::getCardFlagTexts(), $model['card_validity'], "Ismeretlen ok");
}
],

View File

@ -397,6 +397,12 @@ class Helper {
return $flag;
}
public static function isBitOn($flag,$n){
$result = +$flag & (1 << +$n) ;
$result = $result > 0;
return $result ;
}
public static function generateRandomString($length = 6,$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWX' ) {
$charactersLength = strlen($characters);

View File

@ -15,6 +15,7 @@ use common\components\Helper;
* @property integer $flag
* @property string $created_at
* @property string $updated_at
* @property int flag_out
*/
class Card extends \common\models\BaseFitnessActiveRecord
{
@ -30,7 +31,32 @@ class Card extends \common\models\BaseFitnessActiveRecord
public static $FLAG_TICKET = 0;
public static $FLAG_STATUS = 1;
public static $FLAG_DOOR = 1;
public static $FLAG_KEY = 2;
public static $FLAG_STATUS = 3;
/**
* This script is used in daily scripts, to clear the flag door log status
*
* @var string
*/
public static $SQL_CLEARS_STATUS_DOOR = "
UPDATE card set flag = ( flag & ~(1 << 1 ) ), flag_out= ( flag_out & ~(1 << 1 ) ) where card.type <> 50
";
public static $SQL_FIX_KEY_STATUS = "
update card as c1
left join card_key_assignment k
on k.id_card = c1.id_card
set flag = CASE WHEN k.id_key is null then (c1.flag | 1 << 2) else ( c1.flag & ~(1 << 2 ) ) end,
flag_out = CASE WHEN k.id_key is null then ( c1.flag_out & ~(1 << 2 )) else (c1.flag_out | 1 << 2 ) end
WHERE c1.type <> 50
";
public static $SQL_CLEARS_STATUS_DOOR_IN = "
UPDATE card set flag = ( flag & ~(1 << 1 ) ) WHERE card.type <> 50 and card.id_card = :id
";
/**
* @inheritdoc
*/
@ -175,13 +201,17 @@ class Card extends \common\models\BaseFitnessActiveRecord
return ;
}
$db = \Yii::$app->db;
$command = $db->createCommand(Ticket::$SQL_UPDATE_CARD,[':id' => $id]);
$command->execute();
$command = $db->createCommand(Card::$SQL_CLEARS_STATUS_DOOR_IN,[':id' => $id]);
$command->execute();
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)){
$this->flag = Helper::setBit($this->flag, Card::$FLAG_STATUS, ( $this->status != Card::STATUS_ACTIVE));
$this->flag = Helper::setBit( $this->flag , Card::$FLAG_STATUS, ( $this->status != Card::STATUS_ACTIVE ) );
return true;
}
return false;
@ -189,7 +219,42 @@ class Card extends \common\models\BaseFitnessActiveRecord
public function getFlagText(){
return Helper::getArrayValue(DoorLog::getCardFlagTexts(), $this->flag, "Ismeretlen");
return Helper::getArrayValue(DoorLog::getCardFlagTexts(), $this->validity, "Ismeretlen");
}
public function setFlagsHasKey($hasKey){
$pos = Card::$FLAG_KEY;
$this->flag = $hasKey ? ( $this->flag & ~(1 << $pos) ) : ( $this->flag | 1 << $pos );
$this->flag_out = $hasKey ? ( $this->flag_out | 1 << $pos ) : ( $this->flag_out & ~(1 << $pos) );
\Yii::info("flag has key: ".$this->flag .";".$this->flag_out);
}
public function isFlagValidity(){
return Helper::isBitOn($this->flag,Card::$FLAG_TICKET);
}
public function isFlagDoor(){
return Helper::isBitOn($this->flag,Card::$FLAG_DOOR);
}
public function isFlagKey(){
return Helper::isBitOn($this->flag,Card::$FLAG_KEY);
}
public function isFlagStatus(){
return Helper::isBitOn($this->flag,Card::$FLAG_STATUS);
}
public function isFlagOutDoor(){
return Helper::isBitOn($this->flag_out,Card::$FLAG_DOOR);
}
public function isFlagOutKey(){
return Helper::isBitOn($this->flag_out,Card::$FLAG_KEY);
}
}

View File

@ -188,7 +188,7 @@ class DoorLog extends \yii\db\ActiveRecord
$dlog->id_account = Account::readDefault();
if ( $dlog->direction == 0){
$dlog->card_flag = $card->flag;
$dlog->card_flag = $card->validity;
}else{
$dlog->card_flag = -1;
}

View File

@ -47,7 +47,8 @@ class Ticket extends \common\models\BaseFitnessActiveRecord
order by id_card desc
) as t
on t.id_card = c1.id_card
SET c1.flag = case when t.id_card is null then ( c1.flag | 1 << 0 ) else ( c1.flag & ~(1 << 0) ) end
SET c1.validity = case when t.id_card is null then ( c1.validity | 1 << 0 ) else ( c1.validity & ~(1 << 0) ) end
, c1.flag = case when t.id_card is null then ( c1.flag | 1 << 0 ) else ( c1.flag & ~(1 << 0) ) end
, c1.id_ticket_current = case when t.id_ticket is null then null else t.id_ticket end
WHERE c1.type <> 50";
@ -63,7 +64,8 @@ class Ticket extends \common\models\BaseFitnessActiveRecord
order by id_card desc
) as t
on t.id_card = c1.id_card
SET c1.flag = case when t.id_card is null then ( c1.flag | 1 << 0 ) else ( c1.flag & ~(1 << 0) ) end
SET c1.validity = case when t.id_card is null then ( c1.validity | 1 << 0 ) else ( c1.validity & ~(1 << 0) ) end
,c1.flag = case when t.id_card is null then ( c1.flag | 1 << 0 ) else ( c1.flag & ~(1 << 0) ) end
, c1.id_ticket_current = case when t.id_ticket is null then null else t.id_ticket end
WHERE c1.type <> 50 and c1.id_card = :id";

View File

@ -75,7 +75,7 @@ class DoorlogController extends Controller{
$card = $subject->card;
echo "in:" . $subject->usage_count. " | out:" . $subject->count_move_out . " | max: " .$subject->max_usage_count. " | card flag: " . $card->flag ."\n";
echo "in:" . $subject->usage_count. " | out:" . $subject->count_move_out . " | max: " .$subject->max_usage_count. " | card validity: " . $card->validity ."\n";
}

View File

@ -0,0 +1,25 @@
<?php
namespace console\controllers;
use Yii;
use common\models;
use yii\console\Controller;
use common\models\Ticket;
use common\models\DoorLog;
use yii\helpers\VarDumper;
use common\models\Customer;
use common\models\Log;
class ProductConsoleController extends Controller{
public function actionIndex( )
{
\Yii::info("product console command");
}
}

View File

@ -2,6 +2,7 @@
namespace console\controllers;
use common\models\Card;
use Yii;
use yii\console\Controller;
use common\models\Ticket;
@ -16,12 +17,21 @@ use yii\helpers\Html;
use common\models\Subscriber;
class TicketController extends Controller {
public function actionIndex() {
$connection = \Yii::$app->db;
$command = $connection->createCommand ( Card::$SQL_CLEARS_STATUS_DOOR );
$result = $command->execute ();
\Yii::info ( "Tickets updated flag door: " . $result );
$command = $connection->createCommand ( Ticket::$SQL_UPDATE );
$result = $command->execute ();
\Yii::info ( "Tickets updated: " . $result );
echo "Tickets updated: " . $result;
$command = $connection->createCommand ( Card::$SQL_FIX_KEY_STATUS );
$result = $command->execute ();
}
/**

View File

@ -0,0 +1,30 @@
<?php
use yii\db\Schema;
use yii\db\Migration;
class m160919_061627_alter__table__card__add__column__validity extends Migration
{
public function up()
{
$this->addColumn("card", "validity", "int default 0");
}
public function down()
{
echo "m160919_061627_alter__table__card__add__column__validity cannot be reverted.\n";
return false;
}
/*
// Use safeUp/safeDown to run migration code within a transaction
public function safeUp()
{
}
public function safeDown()
{
}
*/
}

View File

@ -1,3 +1,4 @@
#!/usr/bin/env bash
php /var/www/virtual/fitnessadmin.hu/htdocs/cutler/yii ticket/index
php /var/www/virtual/fitnessadmin.hu/htdocs/cutler/yii ticket/daily

View File

@ -91,6 +91,14 @@ class CardController extends Controller
]);
}
public function actionInfo($id_card){
$card = $this->findModel($id_card);
return $this->render("info",['card' => $card]);
}
}

View File

@ -143,11 +143,13 @@ class CustomerController extends Controller
}
}
/**
/**
* Updates an existing Customer model.
* If update is successful, the browser will be redirected to the 'view' page.
* @param integer $id
* @param null $number
* @return mixed
* @throws NotFoundHttpException
* @internal param int $id
*/
public function actionUpdate($number = null)
{

View File

@ -15,6 +15,9 @@ use common\models\Card;
/**
* ContactForm is the model behind the contact form.
*
* @property \common\models\Card $card
* @property \common\models\Key $key
*
*/
class KeyToggleForm extends Model
{
@ -97,6 +100,9 @@ class KeyToggleForm extends Model
$assignment->save(false);
\Yii::$app->session->setFlash ( 'success', 'Kulcs kiadva!' );
$this->card->setFlagsHasKey(true);
$this->card->save(false);
Log::log([
'type' =>Log::$TYPE_KEY_ASSIGN,
'message' => 'Kulcs kiadás - Kártya/Kulcs/Vendég:' .$this->card->number ."/" .$this->keyModel->number . "/".$this->customer->name,
@ -113,6 +119,8 @@ class KeyToggleForm extends Model
public function unassign(){
CardKeyAssignment::deleteAll(['id_key' => $this->keyModel->id_key]);
$this->card->setFlagsHasKey(false);
$this->card->save(false);
\Yii::$app->session->setFlash ( 'success', 'Kulcs visszaadva!' );
}

View File

@ -117,7 +117,7 @@ class ReceptionForm extends Model
$dlog->id_account = Account::readDefault();
$dlog->card_flag = $this->card->flag;
$dlog->card_flag = $this->card->validity;
$dlog->created_at = date('Y-m-d H:i:s');
$dlog->save(false);

View File

@ -0,0 +1,69 @@
<?php
use yii\helpers\Html;
use frontend\components\CustomerTabWidget;
/* @var $this yii\web\View */
/* @var $card \common\models\Card */
/* @var $dataProvider yii\data\ActiveDataProvider */
$this->title = "Kártya info";
$this->params['breadcrumbs'][] = $this->title;
?>
<?php echo CustomerTabWidget::widget(['card' => $card]) ?>
<h2>Belépés jelző</h2>
<ul>
<li>Bérlet:
<?php if ($card->isFlagValidity()) {
echo Html::tag("span", "Nincs (Bérletet kell venni) - Nem OK", ['class' => 'text-danger']);
} else {
echo Html::tag("span", "Van - OK", ['class' => 'text-success']);
} ?>
</li>
<li>Vendég tartózkodás jelző
<?php if ($card->isFlagDoor()) {
echo Html::tag("span", "Nem léphet be (már bennt van, vagy a bérlet típus nem enged több belépést)", ['class' => 'text-danger']);
} else {
echo Html::tag("span", "Beléphet - OK", ['class' => 'text-success']);
} ?>
<p class="small">Ez az adat jelzi, hogy a vendég az adott napon már belépett -e a terembe vagy sem. <br>
Ha a vendégnek pl 10 alkalmas bérlete van, akkor egy nap többször is beléphet.
Viszont ha korlátlan belépési számú bérlete van (pl: havi bérlet ), akkor naponta csak egyszer léphet be.
</p>
</li>
<li>Kulcs feltétel:
<?php if ($card->isFlagKey()) {
echo Html::tag("span", "Nincs kulcs ( Kulcsot kell kérni)", ['class' => 'text-danger']);
} else {
echo Html::tag("span", "Van kulcs - OK", ['class' => 'text-success']);
} ?>
</li>
<li>Kártya státusza:
<?php if ($card->isFlagStatus()) {
echo Html::tag("span", "Kártya tiltva - Nem OK", ['class' => 'text-danger']);
} else {
echo Html::tag("span", "Kártya nincs tiltva - OK", ['class' => 'text-success']);
} ?>
</li>
</ul>
<h2>Kilépés jelző</h2>
<ul>
<li>Vendég tartózkodás jelző:
<?php if ($card->isFlagOutDoor()) {
echo Html::tag("span", "Nem léphet ki (rendszer szerint nincs a teremben) - Nem OK", ['class' => 'text-danger']);
} else {
echo Html::tag("span", "Kiléphet - OK", ['class' => 'text-success']);
} ?>
</li>
<li>Kulcs jelző:
<?php if ($card->isFlagOutKey()) {
echo Html::tag("span", "Van kulcs (le kell adni) - Nem OK", ['class' => 'text-danger']);
} else {
echo Html::tag("span", "Nincs kulcs - OK", ['class' => 'text-success']);
} ?>
</li>
</ul>

View File

@ -21,6 +21,7 @@ $items = [
[ 'Kulcsok', ['key/index', 'id_card' => $card->id_card] ],
[ 'Szerződések', ['contract/index', 'id_card' => $card->id_card ]],
[ 'Kosár', ['transfer/customer-cart', 'id_card' => $card->id_card ]],
[ 'Kártya', ['card/info', 'id_card' => $card->id_card ]],
];

View File

@ -1,7 +1,7 @@
<?php
use yii\base\Object;
use common\models\Ticket;
use frontend\model\ReceptionForm;
use \frontend\models\ReceptionForm;
use yii\helpers\Html;
use yii\helpers\Url;
use common\models\Contract;
@ -10,7 +10,7 @@ use common\models\Card;
use common\models\DoorLog;
/* @var $this yii\web\View */
/* @var $model frontend\model\ReceptionForm */
/* @var $model \frontend\models\ReceptionForm */
?>
<style>
</style>
@ -22,7 +22,7 @@ if ( count($model->tickets) > 0 ){
if ( isset($model->card)){
if ( isset($model->customer)){
if ( $model->card->flag == 0 ){
if ( $model->card->validity == 0 ){
if ( isset($ticket)){
echo Html::beginTag("div",['class'=>"alert alert-success" , "role"=>"alert"]);
echo Html::beginTag("strong",[ ]);
@ -53,7 +53,7 @@ if ( isset($model->card)){
echo "Kártya korlátozás:";
echo "<br>";
echo Html::beginTag("strong",[ ]);
echo Helper::getArrayValue(DoorLog::getCardFlagTexts(), $model->card->flag, "Ismeretlen ok") ;
echo Helper::getArrayValue(DoorLog::getCardFlagTexts(), $model->card->validity, "Ismeretlen ok") ;
echo Html::endTag("strong");
echo Html::endTag("div");
}

View File

@ -0,0 +1,179 @@
DROP TRIGGER IF EXISTS trigger_inc_ticket_usage_count;
DELIMITER $$
CREATE TRIGGER trigger_inc_ticket_usage_count
AFTER INSERT ON `door_log` FOR EACH ROW
begin
/*DECLARE p_usage_count Integer;*/
DECLARE p_count_all Integer;
DECLARE p_count_all_2 Integer;
DECLARE p_from DATETIME;
DECLARE p_usage_count Integer;
DECLARE p_max_usage_count Integer;
DECLARE p_mo_ticket_id Integer; -- ticket id at moving out
DECLARE p_mo_ticket_max_usage_count Integer; -- ticket max usage count at moving out
DECLARE p_allow_multiple_enter boolean; -- flag, if we allow multiple enter per day
DECLARE p_allow_enter boolean;
-- fejlesztői log törlése
delete from devlog;
/*van vendég és kártya*/
IF NEW.id_customer is not null and NEW.id_card is not null
THEN
-- BEMOZÁG folyamatban - érvényes bérlettel
IF (NEW.direction = 7 or New.direction = 3 ) and NEW.id_ticket_current is not null
then
INSERT INTO devlog ( msg) values('belepes feldoglozas indit');
/*Mai belépések számának betöltése */
select count(*) into @p_count_all from door_log where created_at >= CURDATE() and id_ticket_current = New.id_ticket_current and ( direction = 7 or direction = 3);
INSERT INTO devlog ( msg) values( concat( 'count all' ,@p_count_all ) );
/*Ha a main napon ez az első belépés*/
IF @p_count_all = 1
THEN
/*Beolvasás usage_count és max_usage_count */
select usage_count, max_usage_count into @p_usage_count ,@p_max_usage_count from ticket where id_ticket = NEW.id_ticket_current;
/*Növeljük a usage count-ot a bérleten*/
update ticket set usage_count = usage_count +1 where id_ticket = NEW.id_ticket_current;
/*Log írása*/
INSERT INTO log (type,message, app, id_ticket, id_door_log,created_at, updated_at)
values(
30, concat('Bérlet használat (elotte: ',@p_usage_count, ' > utana: ' , @p_usage_count +1 , ' max: ', @p_max_usage_count, ')' ), ' trigger_inc_ticket',New.id_ticket_current, New.id_door_log,now(),now());
else
/*
Innentől kezdve biztos, hogy nem ez az első belépés az aktuális napon.
Ki kell számolnunk hányadik 3 órás intervallumban vagyunk az első belépéstől számítva.
Pl. ha 06:00 kor volt az első belépés, akkor 07: 30 még nem von le újabb használatot,
de a 09:00 már igen
( HOUR( TIMEDIFF( min(created_at) , now() ) ) /3 ) -> napi első b
*/
select min(created_at) + INTERVAL (3 * FLOOR( ( ( HOUR( TIMEDIFF( min(created_at) , now() ) ) /3 ) ) ) ) hour as last_date
into @p_from
from door_log
where created_at > CURDATE() and id_customer is not null and id_ticket_current = NEW.id_ticket_current and ( direction = 7 or direction = 3);
-- Belépések számának betöltése az aktuális 3 órás intervalumban
select count(*) into @p_count_all_2 from door_log where created_at >= @p_from and id_ticket_current = New.id_ticket_current and ( direction = 7 or direction = 3);
INSERT INTO devlog ( msg) values(CONCAT( 'Belépések száma az aktuális 3 órás intervalumban: ', @p_count_all_2) );
-- Ha az első belépéstől számítot aktuális 3 órás intervallumban ez az elős belépés, akkor növeljük a használatot
IF @p_count_all_2 = 1
THEN
INSERT INTO devlog ( msg) values( 'Az aktuális intervallumban ez az első belépés, usage_count növelése' );
-- A bérlet usage_count és max_usage_count betöltése
select usage_count, max_usage_count into @p_usage_count ,@p_max_usage_count from ticket where id_ticket = NEW.id_ticket_current;
-- A bérlet usage_count növelése
update ticket set usage_count = usage_count +1 where id_ticket = New.id_ticket_current;
-- log írása
INSERT INTO log (type,message, app, id_ticket, id_door_log,created_at, updated_at)
values(
40, concat('Bérlet használat/egy nap tobbszori (elotte: ',@p_usage_count, ' > utana: ' , @p_usage_count +1 , ' max: ', @p_max_usage_count, ')' ), ' trigger_inc_ticket',New.id_ticket_current, New.id_door_log,now(),now());
END IF; -- end @p_count_all_2 = 1
END IF; -- @p_count_all > 1
End IF; -- vége bemozgás érvényes bérlettel end type == 7 or 3 ( move in )
-- KILÉPÉS -- count_move_out beállítása usage_count-ra
IF NEW.direction = 5 or New.direction = 1 -- type move out
then
INSERT INTO devlog ( msg) values('Kilépés van folyamatban, kilépések számának beállítása');
update ticket set count_move_out = usage_count where id_ticket = NEW.id_ticket_current;
END IF; -- end type move out
INSERT INTO devlog ( msg) values( 'Kártya validáció módosítása' );
-- KÁRTYA VALIDÁCIÓ - validity [0|1] , flag | 1 << [0|1]
UPDATE card as c1
left JOIN ( select ticket.id_card as id_card , max(ticket.id_ticket) as id_ticket
from ticket
where ticket.start <= CURDATE()
and ticket.end >= curdate()
and ticket.status = 10
and ticket.count_move_out < ticket.max_usage_count
and ticket.id_card = New.id_card
group by id_card
order by id_card desc ) as t
on t.id_card = c1.id_card
SET c1.validity = case when t.id_card is null then ( c1.validity | 1 << 0 ) else ( c1.validity & ~(1 << 0) ) end
, c1.flag = case when t.id_card is null then ( c1.flag | 1 << 0 ) else ( c1.flag & ~(1 << 0) ) end
, c1.id_ticket_current = case when t.id_ticket is null then null else t.id_ticket end
WHERE c1.type <> 50 and c1.id_card = New.id_card;
-- KILÉPÉS van folyamatban - kilépés flag_out kikapcsolása, belépés flag bekapcsolása , ha van érvényes bérlet
IF NEW.direction = 5 or New.direction = 1 -- type move out
then
-- AKTUÁLIS ÉRVÉNYES BÉRLET AZONOSÍTÓ BETÖLTÉSE
-- meg kell néznünk, hogy engedélyezett -e a napi többszöri belépés
-- ezt a aktuális bérlet max_usage_count mezője állapítja meg
select max(ticket.id_ticket) into @p_mo_ticket_id
from ticket
where ticket.start <= CURDATE()
and ticket.end >= curdate()
and ticket.status = 10
and ticket.count_move_out < ticket.max_usage_count
and ticket.id_card = New.id_card
group by id_card
order by id_card desc;
-- alapertelmezesben a belépés engedélyezve van
set @p_allow_enter = true;
/*
-- NAPI TÖBSZÖRI BELÉPÉS FIGYELÉSE ITT - CSAK MÉSGEM KELLETT
set @p_allow_multiple_enter = true;
set @p_count_all = 0;
set @p_mo_ticket_max_usage_count = 9999;
IF @p_mo_ticket_id IS NOT NULL
THEN
select max_usage_count into @p_mo_ticket_max_usage_count from ticket where id_ticket = @p_mo_ticket_id;
select coalesce(count(*),0) into @p_count_all from door_log where created_at >= CURDATE() and id_ticket_current = @p_mo_ticket_id and ( direction = 7 or direction = 3);
IF @p_mo_ticket_max_usage_count > 30 THEN
set @p_allow_multiple_enter = false;
END IF; -- end allow mulitple enter
else
set @p_allow_multiple_enter = true;
END IF; -- END TICKET IS THERE
-- Ha nincs engedélyezve a napi többszöri belépés, és már egyszer beléptünk
-- akkor további belépés nem lesz lehetséges
IF @p_allow_multiple_enter = false AND @p_count_all >= 1
THEN
set @p_allow_enter = false;
END IF;
*/
INSERT INTO devlog ( msg) values( concat( 'Kilépés: Aktuális bérlet/belépések száma/többszire belépés on/belépés on: '
, coalesce(@p_mo_ticket_id,''),'/', coalesce(@p_count_all,'') , '/', coalesce(@p_allow_multiple_enter,''),'/', coalesce(@p_allow_enter,'' ) ) );
update card set
flag_out = ( flag_out | 1 << 1 ) , -- nem léphet ki ( 1. bit beállíátsa 1-re )
flag = case when @p_allow_enter then ( flag & ~(1 << 1) ) else ( flag | 1 << 1 ) end
WHERE type <> 50 and id_card = New.id_card;
END IF;
-- BELÉPÉS van folyamatban - kilépés flag_out bekapcsolása, belépés flag kikapcsolása
IF (NEW.direction = 7 or New.direction = 3 ) and NEW.id_ticket_current is not null
THEN
INSERT INTO devlog ( msg) values( 'kilépés flag_out bekapcsolása, belépés flag kikapcsolása' );
update card set
flag_out = ( flag_out & ~(1 << 1 ) ) , -- kilpés engedélyezése ( 1. bit beállítása 0-ra )
flag = ( flag | 1 << 1 ) -- belépés nem lehetséges ( 1.bit beállítsa 1-re )
WHERE type <> 50 and id_card = New.id_card;
END IF; -- END - BELÉPÉS - KILÉPÉS KAPCSOLÓ BEKPACSOLÁSA
END IF; -- VAN VENDÉG , VAN KÁRTYA
END;
$$
DELIMITER ;