public CRMRetrieveMultiple CRMRetrieveMultiple(CRMRetrieveMultiple crmRetrieveMultiple)
 {
     CRMFunctions function = new CRMFunctions(crmRetrieveMultiple.Config);
     return function.CRMRetrieveMultiple(crmRetrieveMultiple);
 }
        public CRMRetrieveMultiple CRMRetrieveMultiple(CRMRetrieveMultiple retrieveMultiple)
        {
            List<CRMRetrieveMultipleReturn> results = new List<CRMRetrieveMultipleReturn>();

            OrganizationServiceProxy _serviceProxy;
            using (_serviceProxy = GetCRMConnection())
            {
                QueryExpression query;
                if (!string.IsNullOrEmpty(retrieveMultiple.ConditionAttributeName.Trim()))
                {
                    //Create Query Expression.
                    query = new QueryExpression()
                    {
                        EntityName = retrieveMultiple.LinkFromEntityName.ToLower(),
                        ColumnSet = new ColumnSet(true),
                        LinkEntities = 
                    {
                        new LinkEntity
                        {
                            LinkFromEntityName = retrieveMultiple.LinkFromEntityName.ToLower(),
                            LinkFromAttributeName = retrieveMultiple.LinkFromAttributeName,
                            LinkToEntityName = retrieveMultiple.LinkToEntityName,
                            LinkToAttributeName = retrieveMultiple.LinkToAttributeName,
                            LinkCriteria = new FilterExpression
                            {
                                FilterOperator = LogicalOperator.And,
                                Conditions = 
                                {
                                    new ConditionExpression
                                    {
                                        AttributeName = retrieveMultiple.ConditionAttributeName,
                                        Operator = GetConditionOperator(retrieveMultiple.ConditionOperator),
                                        Values = { retrieveMultiple.ConditionValue }
                                    }
                                }
                            }
                        }
                    }
                    };
                }
                else
                {
                    //Create Query Expression.
                    query = new QueryExpression()
                    {
                        EntityName = retrieveMultiple.LinkFromEntityName.ToLower(),
                        ColumnSet = new ColumnSet(true),
                        LinkEntities = 
                    {
                        new LinkEntity
                        {
                            LinkFromEntityName = retrieveMultiple.LinkFromEntityName.ToLower(),
                            LinkFromAttributeName = retrieveMultiple.LinkFromAttributeName,
                            LinkToEntityName = retrieveMultiple.LinkToEntityName,
                            LinkToAttributeName = retrieveMultiple.LinkToAttributeName,
                        }
                    }
                    };
                }
                EntityCollection ec = _serviceProxy.RetrieveMultiple(query);

                foreach (Entity e in ec.Entities)
                {
                    CRMRetrieveMultipleReturn res = new CRMRetrieveMultipleReturn();
                    res.EntityId = e.Id.ToString();

                    string[] Columns = retrieveMultiple.ReturnAttributes.Split('|');
                    for (int i = 0; i < Columns.Length; i++)
                    {
                        if (e.Attributes.Contains(Columns[i].Trim()))
                        {
                            switch (i.ToString())
                            {
                                case "0":
                                    res.ReturnAttribute0 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                    break;
                                case "1":
                                    res.ReturnAttribute1 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                    break;
                                case "2":
                                    res.ReturnAttribute2 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                    break;
                                case "3":
                                    res.ReturnAttribute3 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                    break;
                                case "4":
                                    res.ReturnAttribute4 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                    break;
                                case "5":
                                    res.ReturnAttribute5 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                    break;
                                case "6":
                                    res.ReturnAttribute6 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                    break;
                                case "7":
                                    res.ReturnAttribute7 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                    break;
                                case "8":
                                    res.ReturnAttribute8 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                    break;
                                case "9":
                                    res.ReturnAttribute9 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                    break;
                            }
                        }
                    }
                    results.Add(res);
                }
                retrieveMultiple.Results = results;
            }
            return retrieveMultiple;
        }
        private Property SetRetrieveMultipleProperties(Property prop, CRMRetrieveMultiple task)
        {
            if (task != null)
            {
                switch (prop.Name.ToLower())
                {
                    case "linkfromentityname":
                        prop.Value = task.LinkFromEntityName;
                        break;
                    case "linkfromfromattributename":
                        prop.Value = task.LinkFromAttributeName;
                        break;
                    case "linktoattributename":
                        prop.Value = task.LinkToAttributeName;
                        break;
                    case "linktoentityname":
                        prop.Value = task.LinkToEntityName;
                        break;
                    case "conditionattributename":
                        prop.Value = task.ConditionAttributeName;
                        break;
                    case "conditionoperator":
                        prop.Value = task.ConditionOperator;
                        break;
                    case "conditionvalue":
                        prop.Value = task.ConditionValue;
                        break;
                    case "returnattributes":
                        prop.Value = task.ReturnAttributes;
                        break;
                }
            }

            return prop;
        }
예제 #4
0
        public CRMRetrieveMultiple CRMRetrieveMultiple(CRMRetrieveMultiple retrieveMultiple)
        {
            List <CRMRetrieveMultipleReturn> results = new List <CRMRetrieveMultipleReturn>();

            OrganizationServiceProxy _serviceProxy;

            using (_serviceProxy = GetCRMConnection())
            {
                QueryExpression query;
                if (!string.IsNullOrEmpty(retrieveMultiple.ConditionAttributeName.Trim()))
                {
                    //Create Query Expression.
                    query = new QueryExpression()
                    {
                        EntityName   = retrieveMultiple.LinkFromEntityName.ToLower(),
                        ColumnSet    = new ColumnSet(true),
                        LinkEntities =
                        {
                            new LinkEntity
                            {
                                LinkFromEntityName    = retrieveMultiple.LinkFromEntityName.ToLower(),
                                LinkFromAttributeName = retrieveMultiple.LinkFromAttributeName,
                                LinkToEntityName      = retrieveMultiple.LinkToEntityName,
                                LinkToAttributeName   = retrieveMultiple.LinkToAttributeName,
                                LinkCriteria          = new FilterExpression
                                {
                                    FilterOperator = LogicalOperator.And,
                                    Conditions     =
                                    {
                                        new ConditionExpression
                                        {
                                            AttributeName = retrieveMultiple.ConditionAttributeName,
                                            Operator      = GetConditionOperator(retrieveMultiple.ConditionOperator),
                                            Values        = { retrieveMultiple.ConditionValue }
                                        }
                                    }
                                }
                            }
                        }
                    };
                }
                else
                {
                    //Create Query Expression.
                    query = new QueryExpression()
                    {
                        EntityName   = retrieveMultiple.LinkFromEntityName.ToLower(),
                        ColumnSet    = new ColumnSet(true),
                        LinkEntities =
                        {
                            new LinkEntity
                            {
                                LinkFromEntityName    = retrieveMultiple.LinkFromEntityName.ToLower(),
                                LinkFromAttributeName = retrieveMultiple.LinkFromAttributeName,
                                LinkToEntityName      = retrieveMultiple.LinkToEntityName,
                                LinkToAttributeName   = retrieveMultiple.LinkToAttributeName,
                            }
                        }
                    };
                }
                EntityCollection ec = _serviceProxy.RetrieveMultiple(query);

                foreach (Entity e in ec.Entities)
                {
                    CRMRetrieveMultipleReturn res = new CRMRetrieveMultipleReturn();
                    res.EntityId = e.Id.ToString();

                    string[] Columns = retrieveMultiple.ReturnAttributes.Split('|');
                    for (int i = 0; i < Columns.Length; i++)
                    {
                        if (e.Attributes.Contains(Columns[i].Trim()))
                        {
                            switch (i.ToString())
                            {
                            case "0":
                                res.ReturnAttribute0 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                break;

                            case "1":
                                res.ReturnAttribute1 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                break;

                            case "2":
                                res.ReturnAttribute2 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                break;

                            case "3":
                                res.ReturnAttribute3 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                break;

                            case "4":
                                res.ReturnAttribute4 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                break;

                            case "5":
                                res.ReturnAttribute5 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                break;

                            case "6":
                                res.ReturnAttribute6 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                break;

                            case "7":
                                res.ReturnAttribute7 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                break;

                            case "8":
                                res.ReturnAttribute8 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                break;

                            case "9":
                                res.ReturnAttribute9 = CRMTypeMapping(e.Attributes[Columns[i].Trim()].ToString());
                                break;
                            }
                        }
                    }
                    results.Add(res);
                }
                retrieveMultiple.Results = results;
            }
            return(retrieveMultiple);
        }
        private void RetrieveMultiple(ref ServiceObject so)
        {
            SourceCode.SmartObjects.Services.ServiceSDK.Objects.Method meth = so.Methods[0];
            
            CRMRetrieveMultiple multiple = new CRMRetrieveMultiple();
            multiple.Config = crmconfig;

            try
            {
                multiple.LinkFromEntityName = NotNull(so.Properties["LinkFromEntityName"].Value);
                multiple.LinkFromAttributeName = NotNull(so.Properties["LinkFromAttributeName"].Value);
                multiple.LinkToEntityName = NotNull(so.Properties["LinkToEntityName"].Value);
                multiple.LinkToAttributeName = NotNull(so.Properties["LinkToAttributeName"].Value);
                multiple.ConditionAttributeName = NotNull(so.Properties["ConditionAttributeName"].Value);
                multiple.ConditionOperator = NotNull(so.Properties["ConditionOperator"].Value);
                multiple.ConditionValue = NotNull(so.Properties["ConditionValue"].Value);
                multiple.ReturnAttributes = NotNull(so.Properties["ReturnAttributes"].Value);

                CRMRetrieveMultiple response = CRMFunctions.CRMRetrieveMultiple(multiple);

                so.Properties.InitResultTable();

                foreach (CRMRetrieveMultipleReturn ret in response.Results)
                { 
                    for (int c = 0; c < meth.ReturnProperties.Count; c += 1)
                    {
                        Property prop = so.Properties[meth.ReturnProperties[c]];
                        prop = SetRetrieveMultipleProperties(prop, response);
                        prop = SetRetrieveMultipleReturnProperties(prop, ret);
                    }
                    so.Properties.BindPropertiesToResultTable();
                }
                

            }
            catch (Exception ex)
            {
                throw;
            }
        }