Ejemplo n.º 1
0
Archivo: Sync.cs Proyecto: ljxu1/DWKit
        public static void CheckRecords(string viewName, List <dynamic> records, Dictionary <string, object> syncParams, List <string> excludeProperties = null)
        {
            if (records == null || records.Count == 0)
            {
                return;
            }

            var budgetProperties = new List <string>()
            {
                "BudgetVersionId", "BudgetId"
            };

            var d        = new DynamicEntityRepository();
            var metadata = d.GetEntityMetadataByViewName(viewName, VisibilitySettings.Empty);

            var replaceIds = new Dictionary <object, object>();

            foreach (dynamic record in records)
            {
                foreach (PlainAttributeDescription att in metadata.PlainAttributes)
                {
                    if ((excludeProperties != null && excludeProperties.Contains(att.PropertyName)) || budgetProperties.Contains(att.PropertyName))
                    {
                        continue;
                    }

                    if (string.IsNullOrWhiteSpace(att.ViewNameForSelect))
                    {
                        continue;
                    }

                    var joinedMd = d.GetEntityMetadataByViewName(att.ViewNameForSelect, VisibilitySettings.Empty);
                    if (!joinedMd.Attributes.Any(c => budgetProperties.Contains(c.PropertyName)))
                    {
                        continue;
                    }

                    var deRecord = (DynamicEntity)record;
                    var oldId    = deRecord[att.PropertyName];

                    if (oldId == null)
                    {
                        continue;
                    }

                    deRecord[att.PropertyName] = replaceIds.ContainsKey(oldId) ?
                                                 replaceIds[oldId] :
                                                 GetSyncRecordId(oldId, joinedMd, syncParams);

                    if (!replaceIds.ContainsKey(oldId))
                    {
                        replaceIds.Add(oldId, deRecord[att.PropertyName]);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public static void CheckRecords(string viewName, List<dynamic> records, Dictionary<string, object> syncParams,List<string> excludeProperties = null)
        {
            if (records == null || records.Count == 0)
                return;

            var budgetProperties = new List<string>() { "BudgetVersionId", "BudgetId" };

            var d = new DynamicEntityRepository();
            var metadata = d.GetEntityMetadataByViewName(viewName, VisibilitySettings.Empty);

            var replaceIds = new Dictionary<object, object>();

            foreach (dynamic record in records)
            {
                foreach (PlainAttributeDescription att in metadata.PlainAttributes)
                {
                    if ((excludeProperties != null && excludeProperties.Contains(att.PropertyName)) || budgetProperties.Contains(att.PropertyName))
                        continue;

                    if (string.IsNullOrWhiteSpace(att.ViewNameForSelect))
                        continue;

                    var joinedMd = d.GetEntityMetadataByViewName(att.ViewNameForSelect, VisibilitySettings.Empty);
                    if (!joinedMd.Attributes.Any(c => budgetProperties.Contains(c.PropertyName)))
                    {
                        continue;
                    }

                    var deRecord = (DynamicEntity)record;
                    var oldId = deRecord[att.PropertyName];

                    if (oldId == null)
                        continue;

                    deRecord[att.PropertyName] = replaceIds.ContainsKey(oldId) ?
                        replaceIds[oldId] :
                        GetSyncRecordId(oldId, joinedMd, syncParams);

                    if (!replaceIds.ContainsKey(oldId))
                        replaceIds.Add(oldId, deRecord[att.PropertyName]);
                }
            }
        }