private List VerifyControlProperty()

in Tools/Core/Microsoft.PowerApps.Tools.AppChangeManager/ChangeManager.cs [74:143]


        private List<ExtendedScript> VerifyControlProperty(Entity child)
        {
            //var controlEntities = defaultEntities.Where(e => e.Type == "ControlInfo" && e.Template != null && e.Template.Name != "screen" && e.Template.Name != "appinfo").ToList();

            var controlEntities = defaultEntities.FirstOrDefault(e => e.Template != null && e.Template.Name == "screen").Children;

            var defaultSetting = controlEntities.Find(r => r.Template?.Name == child.Template?.Name);
            var result = new List<ExtendedScript>();

            if (defaultSetting == null)
                return result;

            var serializedDefaultSetting = JsonConvert.SerializeObject(defaultSetting);
            serializedDefaultSetting = serializedDefaultSetting.Replace("{ControlName}.", $"{child.Name}.");
            defaultSetting = JsonConvert.DeserializeObject<Entity>(serializedDefaultSetting);

            var designProperty = child.Rules?
                .Where(r => r.Category == Constants.PropertyCategory.Design
                && !ExecludedControlProperty.Contains(r.Property))
                .Select(r => r);

            var behaviorProperty = child.Rules?
                .Where(r => r.Category == Constants.PropertyCategory.Behavior)
                .Select(r => r);

            var dataProperty = child.Rules?
                .Where(r => r.Category == Constants.PropertyCategory.Data)
                .Select(r => r);

            foreach (var property in designProperty)
            {
                var propValue = defaultSetting.Rules.ToList().Find(r => r.Property == property.Property);
                if (!property.InvariantScript.Trim().ToUpper()
                    .Equals(propValue?.InvariantScript.Trim().ToUpper()))
                {
                    result.Add(new ExtendedScript
                    {
                        Property = property.Property,
                        InvariantScript = property.InvariantScript,
                        DefaultSetting = propValue?.InvariantScript
                    });
                }
            }

            foreach (var property in behaviorProperty)
            {
                if (!string.IsNullOrWhiteSpace(property.InvariantScript))
                {
                    result.Add(new ExtendedScript
                    {
                        Property = property.Property,
                        InvariantScript = property.InvariantScript
                    });
                }
            }

            foreach (var property in dataProperty)
            {
                if (!string.IsNullOrWhiteSpace(property.InvariantScript))
                {
                    result.Add(new ExtendedScript
                    {
                        Property = property.Property,
                        InvariantScript = property.InvariantScript
                    });
                }
            }

            return result;
        }