public async Task <TableStorageResponse <LocationRule> > DeleteLocationRuleAsync(LocationRule ruleToDelete)
        {
            LocationRuleTableEntity incomingEntity = BuildTableEntityFromRule(ruleToDelete);

            TableStorageResponse <LocationRule> result =
                await _azureTableStorageClient.DoDeleteAsync <LocationRule, LocationRuleTableEntity>(incomingEntity, BuildRuleFromTableEntity);

            if (result.Status == TableStorageResponseStatus.Successful)
            {
                // Build up a new blob to push up for ASA job ref data
                List <LocationRuleBlobEntity> blobList = await BuildBlobEntityListFromTableRows();
                await PersistRulesToBlobStorageAsync(blobList);
            }

            return(result);
        }
        private LocationRuleTableEntity BuildTableEntityFromRule(LocationRule incomingRule)
        {
            LocationRuleTableEntity tableEntity =
                new LocationRuleTableEntity(incomingRule.RegionId, incomingRule.RuleId)
            {
                Enabled           = incomingRule.EnabledState,
                Region            = incomingRule.Region,
                RegionLatitude    = incomingRule.RegionLatitude,
                RegionLongitude   = incomingRule.RegionLongitude,
                VerticalThreshold = incomingRule.VerticalThreshold,
                LateralThreshold  = incomingRule.LateralThreshold,
                ForwardThreshold  = incomingRule.ForwardThreshold,
                RuleOutput        = incomingRule.RuleOutput
            };

            if (!string.IsNullOrWhiteSpace(incomingRule.Etag))
            {
                tableEntity.ETag = incomingRule.Etag;
            }

            return(tableEntity);
        }
        private LocationRule BuildRuleFromTableEntity(LocationRuleTableEntity tableEntity)
        {
            if (tableEntity == null)
            {
                return(null);
            }

            var updatedRule = new LocationRule(tableEntity.RuleId)
            {
                RegionId          = tableEntity.RegionId,
                Region            = tableEntity.Region,
                EnabledState      = tableEntity.Enabled,
                RegionLatitude    = tableEntity.RegionLatitude,
                RegionLongitude   = tableEntity.RegionLongitude,
                VerticalThreshold = tableEntity.VerticalThreshold,
                LateralThreshold  = tableEntity.LateralThreshold,
                ForwardThreshold  = tableEntity.ForwardThreshold,
                RuleOutput        = tableEntity.RuleOutput,
                Etag = tableEntity.ETag
            };

            return(updatedRule);
        }