add door manager logs

This commit is contained in:
Schneider Roland
2023-02-20 18:45:00 +01:00
parent b40d0ccf05
commit 7c610b50ab
5 changed files with 230 additions and 20 deletions

View File

@@ -11,6 +11,7 @@ use common\models\Card;
use common\models\CardKeyAssignment;
use common\models\DoorLog;
use common\models\DoorLogForTest;
use common\models\DoorManagerLog;
use common\models\Key;
use common\models\Log;
use common\models\Ticket;
@@ -138,6 +139,10 @@ class DoorManager extends BaseObject
$context->virtualKey = $virtualKey;
$context->card = $card;
$keyAssignment = CardKeyAssignment::findOne(['id_card' =>$card->id_card]);
if ( isset($keyAssignment)){
$context->key = Key::findOne($keyAssignment->id_key);
}
$context->cardNumber = $cardNumber;
\Yii::info("$requestId: Card number " . $card->number);
@@ -181,36 +186,67 @@ class DoorManager extends BaseObject
function logContext($ctx){
try{
$result = [
'requestId' => $ctx->requestId,
//datetime $updated_at --
//datetime $created_at --
//string $ticket_usage
//string $request_id
'request_id' => $ctx->requestId,
//string $identifier
'identifier' => $ctx->identifier,
'verifyOnly' => $ctx->verifyOnly,
//bool $verify_only
'verify_only' => $ctx->verifyOnly,
//string $device
'device' => $ctx->device,
//string $direction
'direction' => $ctx->direction,
'originalDirection' => $ctx->originalDirection,
'idCard' => isset($ctx->card)? $ctx->card->id_card : null,
'cardNumber' => isset($ctx->card) ? $ctx->card->number : null,
'idTicket' => isset($ctx->ticket) ? $ctx->ticket->id_ticket : null,
'ticketType' => isset($ctx->ticket) ? $ctx->ticket->ticketType->name : null,
'ticketUsageCount' => isset($ctx->ticket) ? $ctx->ticket->usage_count : null,
'idCustomer' => isset($ctx->customer) ? $ctx->customer->id_customer : null,
'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->id : null,
'kind' => $ctx->kind,
'actions' => implode(",",$ctx->actions),
//string $original_direction
'original_direction' => $ctx->originalDirection,
//integer $card_id_card
'card_id_card' => isset($ctx->card)? $ctx->card->id_card : null,
//string $card_number
'card_number' => isset($ctx->card) ? $ctx->card->number : null,
//string $ticket_id_ticket
'ticket_id_ticket' => isset($ctx->ticket) ? $ctx->ticket->id_ticket : null,
//string $ticket_type_name
'ticket_type_name' => isset($ctx->ticket) ? $ctx->ticket->ticketType->name : null,
//string $ticket_usage_count
'ticket_usage_count' => isset($ctx->ticket) ? $ctx->ticket->usage_count : null,
//string $customer_id_customer
'customer_id_customer' => isset($ctx->customer) ? $ctx->customer->id_customer : null,
//string $customer_name
'customer_name' => isset($ctx->customer) ? $ctx->customer->name : null,
//string $customer_email
'customer_email' => isset($ctx->customer) ? $ctx->customer->email : null,
//integer $key_id_key
'key_id_key' => isset($ctx->key) ? $ctx->key->id_key : null,
//string $key_number
'key_number' => isset($ctx->key) ? $ctx->key->number : null,
//integer $virtual_key_id
'virtual_key_id' => isset($ctx->virtualKey) ? $ctx->virtualKey->id : null,
//string $validation_kind
'validation_kind' => $ctx->kind,
//bool $error
'error' => $ctx->error,
'errorCode' => $ctx->errorCode,
'ticketUsage' => 1,
//string $error_code
'error_code' => $ctx->errorCode,
'ticket_usage' => $ctx->increasedTicketUsageCount,
// 'actions' => implode(",",$ctx->actions),
];
if ( $ctx->error === true ){
if ( isset($ctx->exception )){
$result['errorMessage'] = substr( $ctx->exception->getMessage(),0,100);
// string $error_message
$result['error_message'] = substr( $ctx->exception->getMessage(),0,100);
}
}
\Yii::info("door log: " . implode(";", $result));
\Yii::info("door log: " . implode(";", $result));
\Yii::$app->db->beginTransaction();
$log = new DoorManagerLog($result);
$log->save(false);
\Yii::$app->db->transaction->commit();
}catch (\Exception $e){
\Yii::error("Failed to log door context:". $e->getMessage());
@@ -444,6 +480,7 @@ class DoorManager extends BaseObject
if ($countDoorLogsForTicketSince == 1) {
// increase the ticket usage count with 1
$usageCount = $ticket->usage_count;
$ctx->increasedTicketUsageCount = true;
$ticket->usage_count += 1;
$ticket->save(false);
\Yii::info("$ctx->requestId: First ticket usage today, increasing usage count for card: " . $ctx->card->id_card);
@@ -515,6 +552,7 @@ class DoorManager extends BaseObject
$logCountInActiveInterval = count($activeInterval['logs']);
if ($logCountInActiveInterval == 1) {
$ctx->increasedTicketUsageCount = true;
$ticket->usage_count = $ticket->usage_count + 1;
$ticket->save(false);
\Yii::info("$ctx->requestId: Ticket usage count increased after first IN after first door_log in interval in sec " . $stopWatch->split());
@@ -558,6 +596,8 @@ class DoorManager extends BaseObject
);
}
if (isset($ctx->virtualKey)) {
\Yii::info("Move OUT: Virtual key set");
if (!isset($ctx->virtualKey->direction_in_at)) {