doormanager fixes after refactoring
This commit is contained in:
@@ -44,8 +44,8 @@ class DoorManager extends BaseObject
|
||||
{
|
||||
$requestId = uniqid("", false);
|
||||
$context = new DoorMoveContext([
|
||||
'id' => $requestId,
|
||||
'$identifier' => $identifier,
|
||||
'requestId' => $requestId,
|
||||
'identifier' => $identifier,
|
||||
'device' => $device,
|
||||
'direction' => $direction,
|
||||
'originalDirection' => $direction,
|
||||
@@ -70,7 +70,7 @@ class DoorManager extends BaseObject
|
||||
$createdAt = DateUtil::utcDateTime();
|
||||
}
|
||||
|
||||
$context->created_at = $createdAt;
|
||||
$context->createdAt = $createdAt;
|
||||
|
||||
if (isset($date)) {
|
||||
$date = DateUtil::parseDateTime($date);
|
||||
@@ -153,14 +153,25 @@ class DoorManager extends BaseObject
|
||||
$context->error = true;
|
||||
$context->exception = $e->originalException;
|
||||
$context->errorCode = $e->errorCode;
|
||||
|
||||
if ( $e->type == FitnessException::TYPE_BAD_REQUEST){
|
||||
throw new BadRequestHttpException($e->getMessage());
|
||||
} else {
|
||||
throw new ServerErrorHttpException($e->getMessage());
|
||||
}
|
||||
|
||||
// throw $e->originalException;
|
||||
// throw new BadRequestHttpException();
|
||||
} catch (\Exception $e) {
|
||||
$context->error = true;
|
||||
$context->exception = $e;
|
||||
$context->errorCode = "UNKNOWN";
|
||||
throw $e;
|
||||
} finally {
|
||||
// do logging
|
||||
$this->logContext($context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -170,7 +181,7 @@ class DoorManager extends BaseObject
|
||||
function logContext($ctx){
|
||||
try{
|
||||
$result = [
|
||||
'requestId' => $ctx->id,
|
||||
'requestId' => $ctx->requestId,
|
||||
'identifier' => $ctx->identifier,
|
||||
'verifyOnly' => $ctx->verifyOnly,
|
||||
'device' => $ctx->device,
|
||||
@@ -185,7 +196,7 @@ class DoorManager extends BaseObject
|
||||
'customerName' => isset($ctx->customer) ? $ctx->customer->name : null,
|
||||
'customerEmail' => isset($ctx->customer) ? $ctx->customer->email : null,
|
||||
'key' => isset($ctx->key) ? $ctx->key->name : null,
|
||||
'idVirtualKey' => isset($ctx->virtualKey) ? $ctx->virtualKey->idVirtualKey : null,
|
||||
'idVirtualKey' => isset($ctx->virtualKey) ? $ctx->virtualKey->id : null,
|
||||
'kind' => $ctx->kind,
|
||||
'actions' => implode(",",$ctx->actions),
|
||||
'error' => $ctx->error,
|
||||
@@ -195,14 +206,14 @@ class DoorManager extends BaseObject
|
||||
|
||||
if ( $ctx->error === true ){
|
||||
if ( isset($ctx->exception )){
|
||||
$result['errorMessage'] = substr( $ctx->exception->message,0,100);
|
||||
$result['errorMessage'] = substr( $ctx->exception->getMessage(),0,100);
|
||||
}
|
||||
}
|
||||
|
||||
\Yii::info("door log: " . implode(";", $result));
|
||||
|
||||
}catch (\Exception $e){
|
||||
\Yii::error("Failed to log door context");
|
||||
\Yii::error("Failed to log door context:". $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -547,9 +558,9 @@ class DoorManager extends BaseObject
|
||||
);
|
||||
}
|
||||
|
||||
if (isset($virtualKey)) {
|
||||
|
||||
if (!isset($virtualKey->direction_in_at)) {
|
||||
if (isset($ctx->virtualKey)) {
|
||||
\Yii::info("Move OUT: Virtual key set");
|
||||
if (!isset($ctx->virtualKey->direction_in_at)) {
|
||||
throw new FitnessException(
|
||||
"$ctx->requestId: Virtual key: move out without move in",
|
||||
FitnessException::TYPE_BAD_REQUEST,
|
||||
@@ -558,7 +569,7 @@ class DoorManager extends BaseObject
|
||||
);
|
||||
}
|
||||
|
||||
if (isset($virtualKey->direction_out_at)) {
|
||||
if (isset($ctx->virtualKey->direction_out_at)) {
|
||||
throw new FitnessException(
|
||||
"$ctx->requestId: Virtual key: already move out",
|
||||
FitnessException::TYPE_BAD_REQUEST,
|
||||
@@ -567,10 +578,10 @@ class DoorManager extends BaseObject
|
||||
);
|
||||
}
|
||||
|
||||
$virtualKey->direction_out_at = Helper::getDateTimeString();
|
||||
$ctx->virtualKey->direction_out_at = Helper::getDateTimeString();
|
||||
|
||||
if (!$ctx->verifyOnly) {
|
||||
$virtualKey->save(false);
|
||||
$ctx->virtualKey->save(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -606,11 +617,11 @@ class DoorManager extends BaseObject
|
||||
\Yii::$app->db->transaction->commit();
|
||||
\Yii::info("$ctx->requestId: Commited");
|
||||
} catch (FitnessException $fe) {
|
||||
\Yii::$app->db->transaction->rollBack();
|
||||
$this->doRollback();
|
||||
\Yii::info("$ctx->requestId: rollbacked");
|
||||
throw $fe;
|
||||
} catch (\Exception $e) {
|
||||
\Yii::$app->db->transaction->rollBack();
|
||||
$this->doRollback();
|
||||
\Yii::info("$ctx->requestId: rollbacked");
|
||||
throw new FitnessException(
|
||||
"UNKNOWN_ERROR",
|
||||
@@ -623,6 +634,12 @@ class DoorManager extends BaseObject
|
||||
}
|
||||
}
|
||||
|
||||
function doRollback(){
|
||||
if ( isset(\Yii::$app->db->transaction ) && \Yii::$app->db->transaction->isActive ){
|
||||
\Yii::$app->db->transaction->rollBack();
|
||||
}
|
||||
}
|
||||
|
||||
function getActiveInterval($intervals, $date)
|
||||
{
|
||||
foreach ($intervals as $interval) {
|
||||
|
||||
Reference in New Issue
Block a user