示例#1
0
        public void ProcessResult(DataCollection <Entity> result, SourceTypes sourceType)
        {
            foreach (var en in result)
            {
                var id = en.Id;

                var entityName  = en.GetAttributeValue <string>("north52_sourceentityname");
                var formulaName = en.GetAttributeValue <string>("north52_name");

                var formula = new CrmFormula()
                {
                    Id   = id,
                    Name = formulaName,
                    //Type = new Option()
                    //{
                    //    Value = en.GetAttributeValue<OptionSetValue>("north52_formulatype").Value,
                    //    Name = en.FormattedValues["north52_formulatype"]
                    //},
                    Type                 = CrmHelper.GetOption(en, "north52_formulatype"),
                    StatusCode           = CrmHelper.GetOption(en, "statuscode"),
                    StateCode            = CrmHelper.GetOption(en, "statecode"),
                    SourceEntityName     = en.GetAttributeValue <string>("north52_sourceentityname"),
                    SourceEntityProperty = en.GetAttributeValue <string>("north52_sourceentityproperty"),
                    TargetEntityName     = en.GetAttributeValue <string>("north52_targetentityname"),
                    TargetEntityproperty = en.GetAttributeValue <string>("north52_targetentityproperty"),
                    Description          = en.GetAttributeValue <string>("north52_formuladescription"),
                };


                var dr = FormulaDiffRecords.Where(x => x.Name == formulaName && x.EntityName == entityName).FirstOrDefault();

                if (dr == null)
                {
                    dr = new FormulaDiffRecord()
                    {
                        Name       = formulaName,
                        EntityName = entityName,
                    };

                    FormulaDiffRecords.Add(dr);
                }

                if (sourceType == SourceTypes.Left)
                {
                    dr.LFormula = formula;
                }
                else
                {
                    dr.RFormula = formula;
                }

                CrmFormulaEntity crmEntity = FormulaEntities.Where(x => x.LogicalName == entityName).FirstOrDefault();

                if (crmEntity == null)
                {
                    crmEntity = new CrmFormulaEntity()
                    {
                        LogicalName = entityName
                    };

                    FormulaEntities.Add(crmEntity);
                }

                var fdr = crmEntity.FormulaDiffRecords.Where(x => x.Name == formulaName).FirstOrDefault();

                if (fdr == null)
                {
                    fdr = dr;
                    crmEntity.FormulaDiffRecords.Add(fdr);
                }
            }
        }