implement registration

This commit is contained in:
Roland Schneider
2018-12-26 16:50:17 +01:00
parent b6e590f196
commit b2bb210cee
18 changed files with 496 additions and 51 deletions

View File

@@ -24,7 +24,7 @@ use common\components\Helper;
*/
class Card extends \common\models\BaseFitnessActiveRecord
{
const STATUS_DELETED = 0;
const STATUS_ACTIVE = 10;
const STATUS_INACTIVE = 20;
@@ -34,8 +34,8 @@ class Card extends \common\models\BaseFitnessActiveRecord
const TYPE_BARCODE = 30;
const TYPE_OLD = 40;
const TYPE_EMPLOYEE = 50;
public static $FLAG_TICKET = 0; //has valid ticket
public static $FLAG_DOOR = 1; //door in/out order
public static $FLAG_KEY = 2; //key status
@@ -121,8 +121,8 @@ class Card extends \common\models\BaseFitnessActiveRecord
'updated_at' => Yii::t('common/card', 'Updated At'),
];
}
public function validateAscii($attribute, /** @noinspection PhpUnusedParameterInspection */
$params){
if ( !$this->hasErrors($this->$attribute)){
@@ -131,7 +131,7 @@ class Card extends \common\models\BaseFitnessActiveRecord
Yii::info(" $attribute converted to: " . $this->$attribute);
}
}
static function statuses() {
/** @noinspection PhpUndefinedClassInspection */
return [
@@ -140,7 +140,7 @@ class Card extends \common\models\BaseFitnessActiveRecord
self::STATUS_INACTIVE => 'Inaktív',
];
}
public function getStatusHuman(){
$result = null;
$s = self::statuses();
@@ -155,7 +155,7 @@ class Card extends \common\models\BaseFitnessActiveRecord
public static function toTypeName($type , $def = ""){
return Helper::getArrayValue(self::types(), $type, $def);
}
static function types() {
/** @noinspection PhpUndefinedClassInspection */
return [
@@ -166,7 +166,7 @@ class Card extends \common\models\BaseFitnessActiveRecord
self::TYPE_EMPLOYEE => Yii::t('common/card', 'Munkatárs'),
];
}
public function getTypeHuman(){
$result = null;
$s = self::types();
@@ -175,20 +175,24 @@ class Card extends \common\models\BaseFitnessActiveRecord
}
return $result;
}
public function isInactive(){
return $this->status == self::STATUS_DELETED;
}
/**
* Load card from the DB , where the number equals with card number or RFID number
* @param number|string $number the card number or the RFID number
* @param null|boolean $free optional. if set, append free or not free condition.
* @return \common\models\Card|null the card or null, if not found with given conditions
*/
public static function readCard($number,$free = null){
$card = null;
$query = Card::find()
->leftJoin(Customer::tableName(), 'card.id_card = customer.id_customer_card ' );
// ->andWhere(['number'=>$number ]);
Card::addCardNumberCondition($query, $number);
if ( isset($free) ){
if ( $free == true){
$query->andWhere('customer.id_customer is null');
@@ -196,20 +200,20 @@ class Card extends \common\models\BaseFitnessActiveRecord
$query->andWhere('customer.id_customer is not null');
}
}
$cards = $query->all();
if ( count($cards) == 1){
$card = $cards[0];
}
return $card;
}
public function getCustomer(){
return $this->hasOne(Customer::className(), ['id_customer_card' => 'id_card']);
}
public function getCustomerName(){
$name = null;
if ( $this->customer != null){
@@ -232,7 +236,7 @@ class Card extends \common\models\BaseFitnessActiveRecord
['and', ['in',$field_rfid_key ,[ $number ] ],"trim(coalesce(card.rfid_key, '')) <>'' "],
]);
}
public static function updateCardFlagTicket($id){
if ( !isset($id)){
return ;
@@ -255,7 +259,7 @@ class Card extends \common\models\BaseFitnessActiveRecord
}
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)){
$this->flag = Helper::setBit( $this->flag , Card::$FLAG_STATUS, ( $this->status != Card::STATUS_ACTIVE ) );
@@ -263,8 +267,8 @@ class Card extends \common\models\BaseFitnessActiveRecord
}
return false;
}
public function getFlagText(){
return Helper::getArrayValue(DoorLog::getCardFlagTexts(), $this->validity, "Ismeretlen");
}
@@ -317,4 +321,12 @@ class Card extends \common\models\BaseFitnessActiveRecord
\Yii::$app->db->createCommand(self::$SQL_UPDATE_FLAG_STATUS_ACTIVE)->execute();
}
public function isFree(){
return !isset($this->customer);
}
public function getActiveTickets(){
return Ticket::readActive($this);
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace common\models;
use common\components\Helper;
/**
* Created by IntelliJ IDEA.
* User: rocho
* Date: 2018.12.17.
* Time: 6:14
*/
class CardEventRegistrationForm extends \yii\base\Model
{
public $card_number;
public $event_id;
public $registration;
public function rules()
{
return [
[['card_number'], 'validateFormat' ]
];
}
public function validateFormat(){
$this->card_number = Helper::fixAsciiChars( $this->card_number );
}
public function getIsNewRecord(){
return true;
}
}

View File

@@ -9,14 +9,16 @@ use yii\helpers\ArrayHelper;
/**
* This is the model class for table "event".
*
// * @property integer $id
* @property integer $id
* @property integer $start
* @property integer $end
* @property integer $id_room
* @property integer $id_trainer
* @property integer $id_event_type
* @property integer $seat_count
* @property string $created_at
* @property string $updated_at
* @property \common\models\EventType eventType
*/
class Event extends \yii\db\ActiveRecord
{
@@ -73,6 +75,9 @@ class Event extends \yii\db\ActiveRecord
];
}
/**
* @throws \Exception
*/
public function afterFind()
{
parent::afterFind(); // TODO: Change the autogenerated stub
@@ -104,8 +109,31 @@ class Event extends \yii\db\ActiveRecord
return $this->hasOne(Trainer::className(),['id' => 'id_trainer']);
}
public function getRoom(){
/**
* @return Room|\yii\db\ActiveQuery
*/
public function getRoom() {
return $this->hasOne(Room::className(),['id' => 'id_room']);
}
/**
* @return \common\models\EventRegistration[]|\yii\db\ActiveQuery
*/
public function getEventRegistrations(){
return $this->hasMany(EventRegistration::className(),['id_event' => 'id']);
}
/**
* @return \common\models\EventRegistration[]|\yii\db\ActiveQuery
*/
public function getEventRegistrationCount(){
return sizeof($this->getEventRegistrations());
}
public function hasFreeSeats(){
$registrationCount = $this->getEventRegistrations() ;
return $registrationCount < $this->seat_count ;
}
}

View File

@@ -10,6 +10,8 @@ use Yii;
* @property integer $id
* @property integer $id_event
* @property integer $id_customer
* @property integer $id_card
* @property integer $id_ticket
* @property string $created_at
* @property string $updated_at
* @property string $canceled_at
@@ -25,14 +27,12 @@ class EventRegistration extends \yii\db\ActiveRecord
}
/**
* @inheritdoc
* @inheritdocd
*/
public function rules()
{
return [
[['id_event', 'id_customer'], 'integer'],
[['created_at', 'updated_at', 'canceled_at'], 'required'],
[['created_at', 'updated_at', 'canceled_at'], 'safe']
];
}

View File

@@ -76,4 +76,20 @@ class EventType extends \yii\db\ActiveRecord
}
return ArrayHelper::merge($extra,$items);
}
/**
* Find the first ticket, which allows this event type
* @param \common\models\Ticket[] $tickets the list of active tickets
* @return Ticket|null
*/
public function findTicketAllowingEventType($tickets){
if (!isset($tickets)){
return null;
}
if ( sizeof($tickets) == 0 ){
return null;
}
// TODO: implement bossiness logic to select ticket
return $tickets[0];
}
}