public async Task <IActionResult> CheckAccessAsync([FromQuery] CheckTagAccessRequestModel model) { var command = this.commandFactory.CreateCheckAccessCommand(); var commandResult = await command.CheckAccessAsync(model); if (commandResult.Success) { return(this.Ok()); } else if (commandResult.IsUnAuthorized) { return(this.Unauthorized()); } else { return(this.NotFound()); } }
public async Task <CommandResult> CheckAccessAsync(CheckTagAccessRequestModel model) { using (var connection = await this.sqlConnectionFactory.CreateConnectionAsync(true)) using (var transaction = connection.BeginTransaction()) { var tagAccessLevel = await this.database.GetAccessLevelForTagAsync(model.TagNumber); var accessPointLevel = await this.database.GetAccessLevelForAccessPointAsync(model.AccessPointSerialNumber); if (accessPointLevel == null) { await this.database.InsertOrUpdateUnknownAccessPointAsync(model.AccessPointSerialNumber, transaction); } if (tagAccessLevel == null) { await this.database.InsertOrUpdateUnknownTagAsync(model.TagNumber, transaction); } await this.database.InsertEventAsync(model.AccessPointSerialNumber, model.TagNumber, transaction); transaction.Commit(); if (accessPointLevel == null || tagAccessLevel == null) { return(CommandResult.NotFound()); } else if (accessPointLevel > tagAccessLevel) { return(CommandResult.UnAuthorized()); } else { return(CommandResult.Ok()); } } }