134 lines
3.5 KiB
PHP
134 lines
3.5 KiB
PHP
<?php
|
|
|
|
namespace common\manager;
|
|
|
|
use common\models\Card;
|
|
use common\models\CardEventRegistrationForm;
|
|
use common\models\Customer;
|
|
use common\models\Event;
|
|
use common\models\EventRegistration;
|
|
use common\models\MobileDevice;
|
|
use common\models\Ticket;
|
|
use customerapi\models\available\EventInterval;
|
|
use customerapi\models\registrations\EventRegistrationAvailable;
|
|
use customerapi\models\details\EventRegistrationView;
|
|
use Exception;
|
|
use Yii;
|
|
use yii\base\BaseObject;
|
|
use yii\db\ActiveRecord;
|
|
use yii\db\Query;
|
|
use yii\web\BadRequestHttpException;
|
|
use yii\web\NotFoundHttpException;
|
|
use yii\web\ServerErrorHttpException;
|
|
|
|
/**
|
|
* Created by IntelliJ IDEA.
|
|
* User: rocho
|
|
* Date: 2018.12.17.
|
|
* Time: 6:12
|
|
*/
|
|
class MobileDeviceManager extends BaseObject
|
|
{
|
|
|
|
public function login($cardNumber, $deviceIdentifier)
|
|
{
|
|
|
|
$card = Card::find()->andWhere(
|
|
['number' => $cardNumber]
|
|
)->one();
|
|
|
|
if ( $card == null ){
|
|
throw new NotFoundHttpException();
|
|
}
|
|
|
|
$device = MobileDevice::find()
|
|
->andWhere(
|
|
[
|
|
'id_card' => $card->id_card,
|
|
'device_identifier' => $deviceIdentifier
|
|
]
|
|
)->one();
|
|
|
|
if ( $device === null ){
|
|
throw new NotFoundHttpException();
|
|
}
|
|
|
|
if (
|
|
in_array($device->status, [MobileDevice::STATUS_ACTIVE, MobileDevice::STATUS_INACTIVE], true) === false ){
|
|
throw new NotFoundHttpException();
|
|
}
|
|
|
|
return $device;
|
|
|
|
}
|
|
|
|
public function create($cardNumber, $deviceIdentifier, $deviceName)
|
|
{
|
|
$card = Card::find()->andWhere(
|
|
['number' => $cardNumber]
|
|
)->one();
|
|
|
|
if ( $card == null ){
|
|
throw new NotFoundHttpException();
|
|
}
|
|
|
|
// do not allow registering cards without customer
|
|
$customer = Customer::find()->andWhere(['id_customer_card' => $card->id_card])->one();
|
|
if ( $customer == null ){
|
|
throw new NotFoundHttpException();
|
|
}
|
|
|
|
$device = MobileDevice::find()
|
|
->andWhere(
|
|
[
|
|
'id_card' => $card->id_card,
|
|
'device_identifier' => $deviceIdentifier
|
|
]
|
|
)->one();
|
|
|
|
if ( $device ){
|
|
throw new BadRequestHttpException("Device already exists, can't create");
|
|
}
|
|
|
|
|
|
$device = new MobileDevice();
|
|
$device->device_identifier = $deviceIdentifier;
|
|
$device->id_card = $card->id_card;
|
|
$device->status = MobileDevice::STATUS_INACTIVE;
|
|
$device->device_name = $deviceName;
|
|
$device->save(false);
|
|
|
|
return $device;
|
|
}
|
|
|
|
/**
|
|
* @param $cardNumber
|
|
* @param $deviceIdentifier
|
|
* @return array|MobileDevice|ActiveRecord
|
|
* @throws BadRequestHttpException
|
|
* @throws NotFoundHttpException
|
|
*/
|
|
public function loginOrCreate($cardNumber, $deviceIdentifier, $deviceName)
|
|
{
|
|
try {
|
|
|
|
return $this->login($cardNumber, $deviceIdentifier);
|
|
} catch (\Exception $e) {
|
|
return $this->create($cardNumber, $deviceIdentifier, $deviceName);
|
|
}
|
|
|
|
}
|
|
|
|
public function isMobileDeviceActivatedByIdCard($idCard){
|
|
if ( !isset($idCard)){
|
|
return false;
|
|
}
|
|
$device = MobileDevice::find()->andWhere(['id_card' => $idCard])->one();
|
|
if ( !isset($device)){
|
|
return false;
|
|
}
|
|
return isset($device->activated_at);
|
|
}
|
|
|
|
}
|