Exemplo n.º 1
0
        /// <summary>
        /// Save a rule to the data store. This method should be used for new rules as well as updating existing rules
        /// </summary>
        /// <param name="updatedRule"></param>
        /// <returns></returns>
        public async Task <TableStorageResponse <DeviceRule> > SaveDeviceRuleAsync(DeviceRule updatedRule)
        {
            //Enforce single instance of a rule for a data field for a given device
            List <DeviceRule> foundForDevice = await _deviceRulesRepository.GetAllRulesForDeviceAsync(updatedRule.DeviceID);

            foreach (DeviceRule rule in foundForDevice)
            {
                if (rule.DataField == updatedRule.DataField && rule.RuleId != updatedRule.RuleId)
                {
                    var response = new TableStorageResponse <DeviceRule>();
                    response.Entity = rule;
                    response.Status = TableStorageResponseStatus.DuplicateInsert;
                    return(response);
                }
            }

            return(await _deviceRulesRepository.SaveDeviceRuleAsync(updatedRule));
        }