fix mobileapi login
This commit is contained in:
114
common/manager/MobileDeviceManager.php
Normal file
114
common/manager/MobileDeviceManager.php
Normal file
@@ -0,0 +1,114 @@
|
||||
<?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)
|
||||
{
|
||||
$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 ){
|
||||
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->save(false);
|
||||
|
||||
return $device;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $cardNumber
|
||||
* @param $deviceIdentifier
|
||||
* @return array|MobileDevice|ActiveRecord
|
||||
* @throws BadRequestHttpException
|
||||
* @throws NotFoundHttpException
|
||||
*/
|
||||
public function loginOrCreate($cardNumber, $deviceIdentifier)
|
||||
{
|
||||
try {
|
||||
|
||||
return $this->login($cardNumber, $deviceIdentifier);
|
||||
} catch (\Exception $e) {
|
||||
return $this->create($cardNumber, $deviceIdentifier);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user