Пример #1
0
        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());
            }
        }
Пример #2
0
        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());
                    }
                }
        }