Ejemplo n.º 1
2
        /// <summary>
        /// Pre-Validation method will default the values of contact preference fields
        /// </summary>
        private static void PreValidateContactCreate(IPluginExecutionContext context, IOrganizationService service)
        {
            Entity contactEntity = (Entity)context.InputParameters["Target"];
            OptionSetValue doNotAllow = new OptionSetValue(1);

            contactEntity.SetAttribute("donotemail", doNotAllow);
            contactEntity.SetAttribute("donotpostalmail", doNotAllow);
            contactEntity.SetAttribute("donotbulkemail", doNotAllow);
            contactEntity.SetAttribute("donotfax", doNotAllow);

            // Get a count of child phone call entities associated with this Contact
            QueryExpression query = new QueryExpression();
            query.EntityName = "phonecall";
            query.ColumnSet = new ColumnSet(allColumns: true);
            query.Criteria = new FilterExpression();
            query.Criteria.AddCondition(new ConditionExpression("regardingobjectid", ConditionOperator.Equal, context.PrimaryEntityId));

            RetrieveMultipleRequest request = new RetrieveMultipleRequest();
            request.Query = query;
            IEnumerable<Entity> results = ((RetrieveMultipleResponse)service.Execute(request)).EntityCollection.Entities;
            if (results.Any())
            {
                // Do not default contact preference for phone if there are already some associated phone calls
                // Why? Because! Testing!
                contactEntity.SetAttribute("donotphone", doNotAllow);
            }
        }
Ejemplo n.º 2
1
        public void When_executing_a_query_expression_with_2_filters_combined_with_an_or_filter_right_result_is_returned()
        {
            var context = new XrmFakedContext();
            var contact1 = new Entity("contact") { Id = Guid.NewGuid() }; contact1["fullname"] = "Contact 1"; contact1["firstname"] = "First 1";
            var contact2 = new Entity("contact") { Id = Guid.NewGuid() }; contact2["fullname"] = "Contact 2"; contact2["firstname"] = "First 2";

            context.Initialize(new List<Entity>() { contact1, contact2 });

            var qe = new QueryExpression() { EntityName = "contact" };
            qe.ColumnSet = new ColumnSet(true);
            

            var filter1 = new FilterExpression();
            filter1.AddCondition(new ConditionExpression("fullname", ConditionOperator.Equal, "Contact 1"));

            var filter2 = new FilterExpression();
            filter2.AddCondition(new ConditionExpression("fullname", ConditionOperator.Equal, "Contact 2"));

            qe.Criteria = new FilterExpression(LogicalOperator.Or);
            qe.Criteria.AddFilter(filter1);
            qe.Criteria.AddFilter(filter2);

            var result = XrmFakedContext.TranslateQueryExpressionToLinq(context, qe).ToList();

            Assert.True(result.Count == 2);
        }
Ejemplo n.º 3
1
        private static Guid FindPluginAssembly(OrganizationService service, string assemblyName)
        {
            var query = new QueryExpression
            {
                EntityName = "pluginassembly",
                ColumnSet = null,
                Criteria = new FilterExpression()
            };
            query.Criteria.AddCondition("name", ConditionOperator.Equal, assemblyName);

            var request = new RetrieveMultipleRequest
            {
                Query = query
            };

            var response = (RetrieveMultipleResponse)service.Execute(request);

            if (response.EntityCollection.Entities.Count == 1)
            {
                var id = response.EntityCollection[0].GetAttributeValue<Guid>("pluginassemblyid");
                _logger.Log(LogLevel.Debug, () => string.Format("Found id {0} for assembly", id));

                return id;
            }

            return Guid.Empty;
        }
        private void AssignAdminRole(IOrganizationService service, Guid id)
        {
            string adminRoleName = "System Administrator";
            try
            {
                QueryExpression query = new QueryExpression
                {
                    EntityName = "role",
                    ColumnSet = new ColumnSet("name"),
                    Criteria = new FilterExpression
                {
                    Conditions =
                    {
                        new ConditionExpression
                        {
                                AttributeName = "name",
                                Operator = ConditionOperator.Equal,
                                Values = {adminRoleName}
                        }
                    }
                }
                };
                EntityCollection roles = service.RetrieveMultiple(query);
                EntityReferenceCollection entityRefCln = new EntityReferenceCollection();
                foreach (Entity entity in roles.Entities)
                {
                        entityRefCln.Add(entity.ToEntityReference());
                }
                service.Associate("team", id, new Relationship("teamroles_association"), entityRefCln);
            }
            catch (Exception ex)
            {

            }
        }
Ejemplo n.º 5
1
        /// <summary>
        /// This method first connects to the Organization service. Afterwards, it
        /// retrieves roles.
        /// </summary>
        /// <param name="serverConfig">Contains server connection information.</param>
        /// <param name="promptforDelete">When True, the user is prompted to delete all
        /// created entities.</param>
        public void Run(ServerConnection.Configuration serverConfig, bool promptforDelete)
        {
            try
            {
                //<snippetRetrieveRolesForOrg1>
                // Connect to the Organization service. 
                // The using statement assures that the service proxy is properly disposed.
                using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri,serverConfig.Credentials, serverConfig.DeviceCredentials))
                {
                    QueryExpression query = new QueryExpression
                    {
                        EntityName = Role.EntityLogicalName,
                        ColumnSet = new ColumnSet("name", "roleid")

                    };

                    EntityCollection entities = _serviceProxy.RetrieveMultiple(query);
                    // Write the name and ID of each role to the console.
                    foreach (Entity item in entities.Entities)
                    {
                        Role role = item.ToEntity<Role>();
                        Console.WriteLine("Name: {0}. Id: {1}", role.Name, role.Id);
                    }
                    
                }
                //</snippetRetrieveRolesForOrg1>
            }
            // Catch any service fault exceptions that Microsoft Dynamics CRM throws.
            catch (FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault>)
            {
                // You can handle an exception here or pass it back to the calling method.
                throw;
            }
        }
Ejemplo n.º 6
0
        public void FindGuidForObject(IOrganizationService myCRMWebservice)
        {
            var myQuery = new QueryExpression
            {
                EntityName = this.sCrmEntityName,
                ColumnSet = new ColumnSet(this.sCrmEntityGuidFieldName),
                Criteria = new FilterExpression
                {
                    Conditions =
                    {
                        new ConditionExpression
                        {
                          AttributeName  =  this.sCrmFilterAttributeName,
                          Operator = ConditionOperator.Equal,
                          Values = {this.sCrmFilterAttributeValue}
                        }
                    }
                }

            };

            DataCollection<Entity> accountResult = myCRMWebservice.RetrieveMultiple(myQuery).Entities;
            if (accountResult.Count > 0)
                this.crmGuidId = (Guid)accountResult[0][this.sCrmEntityGuidFieldName];
        }
Ejemplo n.º 7
0
        public List<SecureFieldInfo> LoadSecureFields()
        {
            var query = new QueryExpression("fieldpermission")
            {
                ColumnSet = new ColumnSet(true)
            };

            var fields = service.RetrieveMultiple(query).Entities.ToList();

            var fieldsInfos = new List<SecureFieldInfo>();

            foreach (var field in fields)
            {
                var fieldInfo =
                    fieldsInfos.FirstOrDefault(fi => fi.Entity == field.GetAttributeValue<string>("entityname")
                                                     && fi.Attribute ==
                                                     field.GetAttributeValue<string>("attributelogicalname"));

                if (fieldInfo == null)
                {
                    fieldInfo = new SecureFieldInfo
                    {
                        Attribute = field.GetAttributeValue<string>("attributelogicalname"),
                        Entity = field.GetAttributeValue<string>("entityname"),
                    };

                    fieldsInfos.Add(fieldInfo);
                }

                fieldInfo.Fields.Add(field);
            }

            return fieldsInfos;
        }
Ejemplo n.º 8
0
        private EntityCollection RetrieveSolutions()
        {
            try
            {
                QueryExpression qe = new QueryExpression("solution");
                qe.Distinct = true;
                qe.ColumnSet = new ColumnSet(true);
                qe.Criteria = new FilterExpression();
                qe.Criteria.AddCondition(new ConditionExpression("ismanaged", ConditionOperator.Equal, false));
                qe.Criteria.AddCondition(new ConditionExpression("isvisible", ConditionOperator.Equal, true));
                qe.Criteria.AddCondition(new ConditionExpression("uniquename", ConditionOperator.NotEqual, "Default"));

                return innerService.RetrieveMultiple(qe);
            }
            catch (Exception error)
            {
                if (error.InnerException != null && error.InnerException is FaultException)
                {
                    throw new Exception("Error while retrieving solutions: " + (error.InnerException).Message);
                }
                else
                {
                    throw new Exception("Error while retrieving solutions: " + error.Message);
                }
            }
        }
        private EntityCollection GetYelpAccounts()
        {
            CrmConnection connection = CrmConnection.Parse(_connection);
            using (_orgService = new OrganizationService(connection))
            {
                var query = new QueryExpression
                {
                    EntityName = "account",
                    ColumnSet = new ColumnSet("test9_yelpid"),
                    Criteria = new FilterExpression
                    {
                        Conditions =
                        {
                            new ConditionExpression
                            {
                                AttributeName = "test9_yelpid",
                                Operator = ConditionOperator.NotNull
                            }
                        }
                    }
                };

                return _orgService.RetrieveMultiple(query);
            }
        }
Ejemplo n.º 10
0
        public async Task<bool> IsAuthenticated(PortalUser user)
        {
            string Url = ConfigurationManager.AppSettings["URL"].ToString();
            string CrmConnectionString = string.Format("Url={0}; Username={1}; Password={2}",
                                                              Url, user.Username, user.Password);
          
            ClientCredentials credential = new ClientCredentials();          
            
            credential.UserName.UserName = user.Username;
            credential.UserName.Password = user.Password;


            CrmConnection crmConnection = CrmConnection.Parse(CrmConnectionString);
            crmConnection.ClientCredentials = credential;
            OrganizationService service = new OrganizationService(crmConnection);

            QueryExpression qe = new QueryExpression("systemuser");
            qe.ColumnSet = new ColumnSet();
            qe.ColumnSet.AddColumn("systemuserid");
            qe.ColumnSet.AddColumn("fullname");
            qe.Criteria = new FilterExpression();
            qe.Criteria.AddCondition("domainname", ConditionOperator.Equal, user.Username);

            EntityCollection collection = service.RetrieveMultiple(qe);

            if (collection.Entities.Count == 0)
            {
                return false;   
            }
            return true;
        }
Ejemplo n.º 11
0
        public List<Entity> GetAllFormsByTypeCode(int objectTypeCode)
        {
            var qe = new QueryExpression("systemform")
            {
                ColumnSet = new ColumnSet(new[] { "name", "formxml" }),
                Criteria = new FilterExpression
                {
                    Conditions =
                    {
                        new ConditionExpression("objecttypecode", ConditionOperator.Equal, objectTypeCode),
                        new ConditionExpression("type", ConditionOperator.In, new[] {2,7}),
                        new ConditionExpression("iscustomizable", ConditionOperator.Equal, true),
                        new ConditionExpression("formactivationstate", ConditionOperator.Equal, 1),
                    }
                }
            };

            try
            {
                return Service.RetrieveMultiple(qe).Entities.ToList();
            }
            catch
            {
                qe.Criteria.Conditions.RemoveAt(qe.Criteria.Conditions.Count - 1);
                return Service.RetrieveMultiple(qe).Entities.ToList();
            }
        }
Ejemplo n.º 12
0
        public void getSecurityRoleGuidBySecurityRoleName(IOrganizationService securityRoleCrmWebservice)
        {
            var myQuery = new QueryExpression
            {
                EntityName = "role",
                ColumnSet = new ColumnSet("roleid"),
                Criteria = new FilterExpression
                {
                    Conditions =
                    {
                        new ConditionExpression
                        {
                          AttributeName  =  "name",
                          Operator = ConditionOperator.Equal,
                          Values = {"roleName"}
                        }
                    }
                }
            };

            //DataCollection<Entity> securityRoleResult = CrmWebservice.RetrieveMultiple(myQuery).Entities;
            DataCollection<Entity> securityRoleResult = securityRoleCrmWebservice.RetrieveMultiple(myQuery).Entities;
            if (securityRoleResult.Count > 0)
                this.guidSecurityRoleId = (Guid)securityRoleResult[0]["roleid"];
        }
        public static EntityReference GetCompanyClassificationReferenceByName(this IOrganizationService service, string companyClassification)
        {
            Guard.ArgumentNotNullOrEmpty(companyClassification, "companyClassification");

            if (companyClassification == "Uncategorized")
            {
                return null;
            }

            var productTypeNameCondition = ConditionExpressionHelper.CreateEqualsCondition("xv_name", companyClassification);
            var filter = new FilterExpression();
            filter.Conditions.Add(productTypeNameCondition);

            var query = new QueryExpression(xv_firmenklassifizierung.EntityLogicalName);
            query.Criteria.AddFilter(filter);

            var productTypeEntity = service.RetrieveMultiple(query)
                .Entities
                .FirstOrDefault();

            if (productTypeEntity == null)
            {
                throw new CrmEntityNotFoundException(string.Format("Company classification '{0}' was not found.", companyClassification));
            }

            return productTypeEntity.ToEntityReference();
        }
        public static EntityReference GetCompanyReferenceById(this IOrganizationService service, string companyName)
        {
            var compayNameCondition = ConditionExpressionHelper.CreateCompanyNameCondition(companyName);
            var filter = new FilterExpression();
            filter.Conditions.Add(compayNameCondition);

            var query = new QueryExpression(Account.EntityLogicalName)
            {
                ColumnSet = new ColumnSet(true)
            };

            query.Criteria.AddFilter(filter);

            var companies = service.RetrieveMultiple(query)
                .Entities.ToList();

            if (!companies.Any())
            {
                throw new CrmEntityNotFoundException(string.Format("Company '{0}' was not found.", companyName));
            }

            if (companies.Count > 1)
            {
                throw new CrmAmbiguousMatchException(string.Format("{0} companies found with name '{1}'.", companies.Count, companyName));
            }

            return companies.Single().ToEntityReference();
        }
		bool IsDegenerateQuery(QueryExpression query)
		{
			if (query == null)
				return false;
			var lastClause = query.Clauses.LastOrDefault();
			return !(lastClause is QuerySelectClause || lastClause is QueryGroupClause);
		}
        public static EntityReference GetAccountReferenceByNameFuzzy(this IOrganizationService service, string companyName)
        {
            var name = CompanyNameHelper.RemoveCommonCompanySuffixes(companyName);
            var nameCondition = ConditionExpressionHelper.CreatePublisherNameBeginsWithCondition(name);

            var filter = new FilterExpression();
            filter.Conditions.Add(nameCondition);

            var query = new QueryExpression(Account.EntityLogicalName);
            query.Criteria.AddFilter(filter);

            var accounts = service.RetrieveMultiple(query).Entities;

            if (accounts.Count() > 1)
            {
                throw new CrmAmbiguousMatchException(
                    string.Format("Found multiple fuzzy matches when searching for {0}.  Fuzzy match search: {1}", companyName, name));
            }

            var account = accounts.FirstOrDefault();
            if (account == null)
            {
                throw new CrmEntityNotFoundException("Account not found with name: " + companyName);
            }

            return new EntityReference(Account.EntityLogicalName, account.Id);
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Retrieves main forms for the specified entity
        /// </summary>
        /// <param name="logicalName">Entity logical name</param>
        /// <param name="oService">Crm organization service</param>
        /// <returns>Document containing all forms definition</returns>
        public static IEnumerable<Entity> RetrieveEntityFormList(string logicalName, IOrganizationService oService)
        {
            var qe = new QueryExpression("systemform")
            {
                ColumnSet = new ColumnSet(true),
                Criteria = new FilterExpression
                {
                    Conditions =
                    {
                        new ConditionExpression("objecttypecode", ConditionOperator.Equal, logicalName),
                        new ConditionExpression("type", ConditionOperator.In, new[] {2,7}),
                    }
                }
            };

            try
            {
                return oService.RetrieveMultiple(qe).Entities;
            }
            catch
            {
                qe.Criteria.Conditions.RemoveAt(qe.Criteria.Conditions.Count - 1);
                return oService.RetrieveMultiple(qe).Entities;
            }
        }
Ejemplo n.º 18
0
        public void When_ordering_by_money_fields_descending_expected_result_is_returned()
        {
            List<Entity> contactList = new List<Entity>();

            Entity contact1 = new Entity("contact");
            contact1.Id = Guid.NewGuid();
            contact1.Attributes["firstname"] = "Fred";
            contact1.Attributes["lastname"] = "Bloggs";
            contact1.Attributes["new_somefield"] = new Money(12345); // (decimal)678910 

            Entity contact2 = new Entity("contact");
            contact2.Id = Guid.NewGuid();
            contact2.Attributes["firstname"] = "Jo";
            contact2.Attributes["lastname"] = "Bloggs";
            contact2.Attributes["new_somefield"] = new Money(678910); // (decimal)678910 


            contactList.Add(contact2);
            contactList.Add(contact1);

            var context = new XrmFakedContext();
            context.Initialize(contactList);
            var service = context.GetFakedOrganizationService();

            QueryExpression qry = new QueryExpression("contact");
            qry.ColumnSet = new ColumnSet(true);
            qry.AddOrder("new_somefield", OrderType.Descending);
            var results = service.RetrieveMultiple(qry);

            var firstResultValue = results.Entities[0]["new_somefield"] as Money;

            Assert.Equal(678910M, firstResultValue.Value);
        }
Ejemplo n.º 19
0
        /// <summary>
        /// Получаем набор неуправляемых решений для организации
        /// </summary>
        /// <param name="service">сервис</param>
        /// <returns></returns>
        public static EntityCollection GetSolutions(IOrganizationService service)
        {
            var solutions = new EntityCollection();

            QueryExpression q = new QueryExpression("solution");
            //Берем только неуправляемые решения
            q.Criteria.AddCondition(new ConditionExpression("ismanaged", ConditionOperator.Equal, false));
            //не берем специальные CRMные солюшены
            q.Criteria.AddCondition(new ConditionExpression("friendlyname", ConditionOperator.NotEqual, "Active Solution"));
            q.Criteria.AddCondition(new ConditionExpression("friendlyname", ConditionOperator.NotEqual, "Default Solution"));
            q.Criteria.AddCondition(new ConditionExpression("friendlyname", ConditionOperator.NotEqual, "Basic Solution"));
            q.Orders.Add(new OrderExpression("createdon", OrderType.Descending));
            q.ColumnSet = new ColumnSet("friendlyname", "uniquename", "version", "installedon");
            q.PageInfo = new PagingInfo()
            {
                Count = 200,
                PageNumber = 1
            };

            EntityCollection ec;
            do
            {
                ec = service.RetrieveMultiple(q);
                solutions.Entities.AddRange(ec.Entities);
                q.PageInfo.PageNumber++;
                q.PageInfo.PagingCookie = ec.PagingCookie;
            } while (ec.MoreRecords);

            return solutions;
        }
Ejemplo n.º 20
0
        public void Execute(IServiceProvider serviceProvider)
        {
            System.Diagnostics.Debugger.Launch();
            var localContext = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            var organizationContext = (IOrganizationService)serviceProvider.GetService(typeof(IOrganizationService));

            var cases = string.Empty;

            var query = new QueryExpression() { EntityName = "oltv_insurance" };
            query.ColumnSet = new ColumnSet("oltv_insuranceid", "oltv_name", "oltv_policy");
            query.Criteria.AddCondition("ownerid", ConditionOperator.Equal, new EntityReference("user", localContext.UserId));

            var insurances = organizationContext.RetrieveMultiple(query);
            
            query = new QueryExpression() { EntityName = "case" };

            foreach (var item in insurances.Entities)
            {
                query.Criteria = new FilterExpression();
                query.Criteria.AddCondition("oltv_insurance",
                                            ConditionOperator.Equal,
                                            new EntityReference("oltv_insurance", (Guid) item["oltv_insuranceid"]));

                cases = String.Concat(
                                cases,
                                organizationContext.RetrieveMultiple(query).TotalRecordCount,
                                ";");
            }

            localContext.OutputParameters["Insurances"] = insurances;
            localContext.OutputParameters["Cases"] = cases;
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Runs the given query against the OdataLib's uri translator and compares the results against an inmemorycontext
        /// </summary>
        /// <param name="expression">The query expression to run against the Uri parser</param>
        public void Verify(QueryExpression expression)
        {

            // 1. test : take the expression and construct the OData URI
            // /Customers?$top=1
            string queryFragment = null;
            queryFragment = this.UriQueryVisitor.ComputeUri(expression);

            Uri serviceBaseUri = new Uri("http://localhost:9000/");

            // http://localhost:9000/Customers?$top=1
            Uri queryUri = new Uri(serviceBaseUri, queryFragment);

            this.Logger.WriteLine(LogLevel.Info, "Running Uri :{0}", queryUri.OriginalString);

            EntityModelSchema schema = Workspace.ConceptualModel;

            // Generate an EDM model based on the EntityModelSchema to use in the UriParser
            IEdmModel model = this.DataServiceProviderFactory.CreateMetadataProvider(schema);

            // Generate an IDSQP based on the EntityModelSchema to use in the Expression Translator
            var queryResolver = this.DataServiceProviderFactory.CreateQueryProvider(schema);

            // 2. product : take the URI , run it through the parser and get the Linq expression
            ODataUriParser parser = new ODataUriParser(model, serviceBaseUri, queryUri);
            var query = parser.ParseUri();
            var result = query.Path;

            // Get the expected Results
            QueryValue expectedResults = null;
            expectedResults = this.Evaluator.Evaluate(expression);
        }
Ejemplo n.º 22
0
        public Boolean generateRiskFactorsForTemplate(EntityReference riskTemplate, Guid fundingCaseRiskAssessmentId)
        {
            try
            {
                //
                QueryExpression qe = new QueryExpression("gcbase_risktemplateriskfactor");
                qe.Criteria.AddCondition("gcbase_risktemplate", ConditionOperator.Equal, riskTemplate.Id);
                qe.ColumnSet.AddColumns("gcbase_name", "gcbase_riskfactor", "gcbase_risktemplate");
                var riskFactors = _service.RetrieveMultiple(qe).Entities;

                foreach (var item in riskFactors)
                {
                    Entity riskFactorValue = new Entity("gcbase_riskfactorvalue");
                    riskFactorValue["gcbase_name"] = item.GetAttributeValue<EntityReference>("gcbase_riskfactor").Name;
                    riskFactorValue["gcbase_riskfactor"] = new EntityReference("gcbase_riskfactor", item.GetAttributeValue<EntityReference>("gcbase_riskfactor").Id);
                    riskFactorValue["gcbase_risktemplateriskfactor"] = new EntityReference("gcbase_risktemplateriskfactor", item.Id);
                    riskFactorValue["gcbase_fundingcaseriskassessment"] = new EntityReference("gcbase_fundingcaseriskassessment", fundingCaseRiskAssessmentId);
                    _service.Create(riskFactorValue);
                }

                return true;
            }
            catch
            {
                return false;
            }
        }
        private void LoadCT1()
        {
            cmbCT1.Items.Clear();
            try
            {
                QueryExpression _query = new QueryExpression("helpdesk_ticketsubjectlevel1");
                _query.ColumnSet = new ColumnSet("helpdesk_name", "helpdesk_ticketsubjectlevel1id");
                EntityCollection _CT1List = crmService.RetrieveMultiple(_query);
                if (_CT1List != null && _CT1List.Entities.Count > 0)
                {
                    for (int i = 0; i < _CT1List.Entities.Count; i++)
                    {
                        ListItem _item = new ListItem(_CT1List.Entities[i]["helpdesk_name"].ToString(), _CT1List.Entities[i]["helpdesk_ticketsubjectlevel1id"].ToString());
                        cmbCT1.Items.Add(_item);
                    }
                }
            }
            catch (FaultException<OrganizationServiceFault> ex)
            {
                string strError = ex.Message.Replace("'", "");
                string scriptstring = "alert('" + strError + "');";
                ScriptManager.RegisterStartupScript(this, this.GetType(), "alertscript", scriptstring, true);

                //MessageBox.Show(ex.Message);
            }
            catch (Exception ex)
            {
                string strError = ex.Message.Replace("'", "");
                string scriptstring = "alert('" + strError + "');";
                ScriptManager.RegisterStartupScript(this, this.GetType(), "alertscript", scriptstring, true);

                //MessageBox.Show(ex.Message);
            }
        }
Ejemplo n.º 24
0
        public void When_ordering_by_datetime_fields_expected_result_is_returned()
        {
            List<Entity> contactList = new List<Entity>();

            var now = DateTime.UtcNow;
            Entity contact1 = new Entity("contact");
            contact1.Id = Guid.NewGuid();
            contact1.Attributes["firstname"] = "Fred";
            contact1.Attributes["new_orderbyfield"] = now;

            Entity contact2 = new Entity("contact");
            contact2.Id = Guid.NewGuid();
            contact2.Attributes["firstname"] = "Jo";
            contact2.Attributes["new_orderbyfield"] = now.AddDays(1);

            contactList.Add(contact2);
            contactList.Add(contact1);

            var context = new XrmFakedContext();
            context.Initialize(contactList);
            var service = context.GetFakedOrganizationService();

            QueryExpression qry = new QueryExpression("contact");
            qry.ColumnSet = new ColumnSet(true);
            qry.AddOrder("new_orderbyfield", OrderType.Ascending);
            var results = service.RetrieveMultiple(qry);

            var firstResultValue = (DateTime)results.Entities[0]["new_orderbyfield"];

            Assert.Equal(now, firstResultValue);
        }
Ejemplo n.º 25
0
        /// <summary>
        /// Verifies the query generated by the PHPCodeGenerator
        /// </summary>
        /// <param name="expression">The expression used to verify the query</param>
        public void Verify(QueryExpression expression)
        {
            ExceptionUtilities.CheckArgumentNotNull(expression, "expression");
            ExceptionUtilities.CheckAllRequiredDependencies(this);

            if (this.DataServicePhpFileName == null)
            {
                this.DataServicePhpFileName = this.PhpWorkingDirectory + "\\" + this.Service.ConceptualModel.EntityContainers.First().Name + ".php";
            }

            if (!File.Exists(this.DataServicePhpFileName))
            {
                string commandToGenerateConatinerClass = string.Format(CultureInfo.InvariantCulture, "{0}{1} /ups=no", "PHPDataSvcUtil.php /uri=", this.Service.ServiceUri.AbsoluteUri);
                this.CodeExecutor.ExecuteCode(commandToGenerateConatinerClass);
            }
            
            var fileName = string.Format(CultureInfo.InvariantCulture, "{0}{1}.php", DateTime.Now.Day.ToString(CultureInfo.InvariantCulture), DateTime.Now.TimeOfDay.ToString().Replace(':', '.'));
            string phpCode = this.CodeGenerator.GenerateCode(expression);
#if !SILVERLIGHT
            File.WriteAllText(string.Format(CultureInfo.InvariantCulture, "{0}\\{1}", this.PhpWorkingDirectory, fileName), phpCode);
#endif
            string result = this.CodeExecutor.ExecuteCode(fileName);
            if (!result.Equals("Passed"))
            {
                Logger.WriteLine(LogLevel.Verbose, CultureInfo.InvariantCulture, "Execution of the Php query failed");
                throw new DataComparisonException(string.Format(CultureInfo.InvariantCulture, "The Php query failed\n Generated Php Code :\n{0}\n Error : {1}", phpCode, result));
            }
        }
        public static string GetCSharpQueryExpression(QueryExpression QEx)
        {
            varList.Clear();
            var code = new StringBuilder();
            var qename = GetVarName("QE" + QEx.EntityName);
            code.AppendLine("// Instantiate QueryExpression " + qename);
            code.AppendLine("var " + qename + " = new QueryExpression(\"" + QEx.EntityName + "\");");
            if (QEx.NoLock)
            {
                code.AppendLine(qename + ".NoLock = true;");
            }
            if (QEx.Distinct)
            {
                code.AppendLine(qename + ".Distinct = true;");
            }
            if (QEx.TopCount != null)
            {
                code.AppendLine(qename + ".TopCount = " + QEx.TopCount.ToString() + ";");
            }
            code.Append(GetColumns(QEx.ColumnSet, qename + ".ColumnSet"));
            foreach (var order in QEx.Orders)
            {
                code.AppendLine(qename + ".AddOrder(\"" + order.AttributeName + "\", OrderType." + order.OrderType.ToString() + ");");
            }
            code.Append(GetFilter(QEx.Criteria, qename + ".Criteria"));
            foreach (var link in QEx.LinkEntities)
            {
                code.Append(GetLinkEntity(link, qename));
            }

            return code.ToString();
        }
Ejemplo n.º 27
0
        /// <summary>
        /// This method first connects to the Organization service. Afterwards,
        /// it creates a system user account with a given active directory account.
        /// Note: Creating a user is only supported in an on-premises/active directory environment.
        /// </summary>
        /// <param name="serverConfig">Contains server connection information.</param>
        /// <param name="promptforDelete">When True, the user will be prompted to delete all
        /// created entities.</param>
        public void Run(ServerConnection.Configuration serverConfig, bool promptforDelete)
        {
            try
            {
                //<snippetCreateAUser1>
                // Connect to the Organization service. 
                // The using statement assures that the service proxy is properly disposed.
                using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri,
                                                                     serverConfig.Credentials, serverConfig.DeviceCredentials))
                {
                    _serviceProxy.EnableProxyTypes();

                    CreateRequiredRecords();

                    // Retrieve the default business unit needed to create the user.
                    QueryExpression businessUnitQuery = new QueryExpression
                    {
                        EntityName = BusinessUnit.EntityLogicalName,
                        ColumnSet = new ColumnSet("businessunitid"),
                        Criteria =
                        {
                            Conditions =
                    {
                        new ConditionExpression("parentbusinessunitid", 
                            ConditionOperator.Null)
                    }
                        }
                    };

                    BusinessUnit defaultBusinessUnit = _serviceProxy.RetrieveMultiple(
                        businessUnitQuery).Entities[0].ToEntity<BusinessUnit>();

                    //Create a new system user.
                    SystemUser user = new SystemUser
                    {
                        DomainName = _domain + _userName,
                        FirstName = _firstName,
                        LastName = _lastName,
                        BusinessUnitId = new EntityReference
                        {
                            LogicalName = BusinessUnit.EntityLogicalName,
                            Name = BusinessUnit.EntityLogicalName,
                            Id = defaultBusinessUnit.Id
                        }
                    };

                    Guid userId = _serviceProxy.Create(user);

                    Console.WriteLine("Created a system user {0} for '{1}, {2}'", userId, _lastName, _firstName); 
                }
                //</snippetCreateAUser1>
            }
            // Catch any service fault exceptions that Microsoft Dynamics CRM throws.
            catch (FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault>)
            {
                // You can handle an exception here or pass it back to the calling method.
                throw;
            }
        }
Ejemplo n.º 28
0
        private void InitData(Order order)
        {


            
            if (this.orderEntity.OrderStatus == EntityAdapter.EditStatus.New)
            {
                string typeName = orderEntity.OrderTypeName;
                this.orderEntity = new OrderEntity(orderEntity.OrderType);
                this.orderEntity.OrderTypeName = typeName;


                EmplyeerData itemOwner = DataCore.CurrentUser.CurrentPostInfo.Copy();
                this.orderEntity.ReferencedData.Dictionary = order.ReferenceDataInfoList.Dictionary;
                this.orderEntity.ReferencedData["Entity.OWNERID"] = itemOwner;
                this.orderEntity.ReferencedData["Entity.OWNERDEPARTMENTID"] = itemOwner.DepartMent;
                this.orderEntity.ReferencedData["Entity.OWNERCOMPANYID"] = itemOwner.Company;


                this.orderEntity.SetValue("Entity.CREATEUSERID", DataCore.CurrentUser.UserID);
                this.orderEntity.SetValue("Entity.UPDATEUSERID", DataCore.CurrentUser.UserID);
                this.orderEntity.SetValue("Entity.CREATEDATE", DateTime.Now);
                this.orderEntity.SetValue("Entity.CREATEDEPARTMENTID", DataCore.CurrentUser.CurrentPostInfo.DepartMent.Value);
                this.orderEntity.SetValue("Entity.CREATECOMPANYID", DataCore.CurrentUser.CurrentPostInfo.Company.Value);

                this.orderEntity.SetValue("Entity.CREATEDEPARTMENTNAME", DataCore.CurrentUser.CurrentPostInfo.DepartMent.Text);
                this.orderEntity.SetValue("Entity.CREATECOMPANYNAME", DataCore.CurrentUser.CurrentPostInfo.Company.Text);

                //暂时
                this.orderEntity.SetValue("Entity.OWNERPOSTID", DataCore.CurrentUser.CurrentPostInfo.Post.Value);
                this.orderEntity.SetValue("Entity.CREATEPOSTID", DataCore.CurrentUser.CurrentPostInfo.Post.Value);

                this.orderEntity.SetValue("Entity.CREATEPOSTNAME", DataCore.CurrentUser.CurrentPostInfo.Post.Text);
                this.orderEntity.SetValue("Entity.OWNERPOSTNAME", DataCore.CurrentUser.CurrentPostInfo.Post.Text);

            }
            else if (this.orderEntity.OrderStatus == EntityAdapter.EditStatus.Edit)
            {
                QueryExpression q = new QueryExpression();
                q.PropertyName = orderEntity.Entity.EntityKey.EntityContainerName;
                q.PropertyValue = orderEntity.OrderID;
                q.Operation = QueryExpression.Operations.Equal;
                //orderEntity.Entity.EntityKey.EntityContainerName
                this.orderEntity = OrderSource.GetOrder(q)[0];

                ObjectList<ReferencedDataInfo> list = order.ReferenceDataInfoList;
                for (int i = 0; i < order.ReferenceDataInfoList.Count; i++)
                {
                    object key = this.orderEntity.GetValue(list[i].PropertyName);
                    ITextValueItem item = null;
                    if (key != null)
                    {
                        item = DataCore.FindRefData(list[i].ReferencedType, key.ToString());
                    }
                    orderEntity.ReferencedData.Add(list[i].PropertyName, item);
                }

            }
        }
Ejemplo n.º 29
0
		public static CrmQuery Select( ColumnSet in_columns ) {
#endif
			QueryExpression query = new QueryExpression();
			query.ColumnSet = in_columns;
			CrmQuery dsl = new CrmQuery();
			dsl.m_query = query;
			return dsl;
		}
Ejemplo n.º 30
0
        public FilterSpec(QueryExpression queryExpression , FilterSpec parentFilter = null)
            : this(parentFilter)
        {
            if (queryExpression == null)
                return;

            Expressions.Add(queryExpression);
        }
Ejemplo n.º 31
0
        /// <summary>
        /// Create, Retrieve, Update and Delete an e-mail attachment.
        /// <param name="serverConfig">Contains server connection information.</param>
        /// <param name="promptforDelete">When True, the user will be prompted to delete all
        /// created entities.</param>
        /// </summary>
        public void Run(ServerConnection.Configuration serverConfig, bool promptForDelete)
        {
            try
            {
                // Connect to the Organization service.
                // The using statement assures that the service proxy will be properly disposed.
                using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri, serverConfig.Credentials, serverConfig.DeviceCredentials))
                {
                    // This statement is required to enable early-bound type support.
                    _serviceProxy.EnableProxyTypes();

                    CreateRequiredRecords();

                    //<snippetCRUDEmailAttachments1>

                    // Create three e-mail attachments
                    for (int i = 0; i < 3; i++)
                    {
                        ActivityMimeAttachment _sampleAttachment = new ActivityMimeAttachment
                        {
                            ObjectId       = new EntityReference(Email.EntityLogicalName, _emailId),
                            ObjectTypeCode = Email.EntityLogicalName,
                            Subject        = String.Format("Sample Attachment {0}", i),
                            Body           = System.Convert.ToBase64String(
                                new ASCIIEncoding().GetBytes("Example Attachment")),
                            FileName = String.Format("ExampleAttachment{0}.txt", i)
                        };

                        _emailAttachmentId[i] = _serviceProxy.Create(_sampleAttachment);
                    }

                    Console.WriteLine("Created three e-mail attachments for the e-mail activity.");

                    // Retrieve an attachment including its id, subject, filename and body.
                    ActivityMimeAttachment _singleAttachment =
                        (ActivityMimeAttachment)_serviceProxy.Retrieve(
                            ActivityMimeAttachment.EntityLogicalName,
                            _emailAttachmentId[0],
                            new ColumnSet("activitymimeattachmentid",
                                          "subject",
                                          "filename",
                                          "body"));

                    Console.WriteLine("Retrieved an email attachment, {0}.", _singleAttachment.FileName);

                    // Update attachment
                    _singleAttachment.FileName = "ExampleAttachmentUpdated.txt";
                    _serviceProxy.Update(_singleAttachment);

                    Console.WriteLine("Updated the retrieved e-mail attachment to {0}.", _singleAttachment.FileName);

                    // Retrieve all attachments associated with the email activity.
                    QueryExpression _attachmentQuery = new QueryExpression
                    {
                        EntityName = ActivityMimeAttachment.EntityLogicalName,
                        ColumnSet  = new ColumnSet("activitymimeattachmentid"),
                        Criteria   = new FilterExpression
                        {
                            Conditions =
                            {
                                new ConditionExpression
                                {
                                    AttributeName = "objectid",
                                    Operator      = ConditionOperator.Equal,
                                    Values        = { _emailId }
                                },
                                new ConditionExpression
                                {
                                    AttributeName = "objecttypecode",
                                    Operator      = ConditionOperator.Equal,
                                    Values        = { Email.EntityLogicalName }
                                }
                            }
                        }
                    };

                    EntityCollection results = _serviceProxy.RetrieveMultiple(
                        _attachmentQuery);

                    Console.WriteLine("Retrieved all the e-mail attachments.");

                    //</snippetCRUDEmailAttachments1>

                    DeleteRequiredRecords(promptForDelete);
                }
            }

            // Catch any service fault exceptions that Microsoft Dynamics CRM throws.
            catch (FaultException <Microsoft.Xrm.Sdk.OrganizationServiceFault> )
            {
                // You can handle an exception here or pass it back to the calling method.
                throw;
            }
        }
Ejemplo n.º 32
0
 public static LinkEntity AddLink <TFrom, TTo>(this QueryExpression query,
                                               Expression <Func <TFrom, object> > fromAttribute,
                                               Expression <Func <TTo, object> > toAttribute)
     where TFrom : Entity
     where TTo : Entity =>
 query.AddLink(Name <TTo>(), Name(fromAttribute), Name(toAttribute));
        protected override void Execute(CodeActivityContext context)
        {
            try
            {
                // Get the context service.
                IWorkflowContext            Icontext       = context.GetExtension <IWorkflowContext>();
                IOrganizationServiceFactory serviceFactory = context.GetExtension <IOrganizationServiceFactory>();

                // Use the context service to create an instance of IOrganizationService.
                IOrganizationService service = serviceFactory.CreateOrganizationService(Icontext.InitiatingUserId);

                //get input fields
                var birthDate = Birthdate.Get(context) == new DateTime(0001, 01, 01) ? new DateTime(1753, 01, 01) : Birthdate.Get(context);
                var firstName = Firstname.Get(context);
                var lastName  = Lastname.Get(context);
                var userName  = Username.Get(context) == null ? "" : Username.Get(context);

                // made in fetchXML builder
                // Instantiate QueryExpression QEcontact
                var QEcontact = new QueryExpression("contact");

                // Add columns to QEcontact.ColumnSet
                QEcontact.ColumnSet.AddColumns("fullname", "firstname", "lastname", "birthdate", "sdu_brugernavn", "sdu_domne", "emailaddress1", "address1_city", "jobtitle", "sdu_crmomkostningssted", "sdu_brugernavn", "address1_line1");

                // Define filter QEcontact.Criteria // all must match birthdate + sdu_crmudlb + opdateret fra fim
                var QEcontact_Criteria = new FilterExpression();
                QEcontact.Criteria.AddFilter(QEcontact_Criteria);

                // Define filter QEcontact_Criteria // either match on username, or firstname + lastname
                QEcontact_Criteria.FilterOperator = LogicalOperator.Or;
                QEcontact_Criteria.AddCondition("sdu_brugernavn", ConditionOperator.Equal, userName);

                var QEcontact_Criteria_name = new FilterExpression();
                QEcontact_Criteria.AddFilter(QEcontact_Criteria_name);

                // Define filter QEcontact_Criteria_name_birthdate
                QEcontact_Criteria_name.AddCondition("firstname", ConditionOperator.Like, "%" + firstName + "%");
                QEcontact_Criteria_name.AddCondition("lastname", ConditionOperator.Like, "%" + lastName + "%");
                QEcontact_Criteria_name.AddCondition("birthdate", ConditionOperator.On, birthDate);

                var QEcontact_Criteria_state = new FilterExpression();
                QEcontact.Criteria.AddFilter(QEcontact_Criteria_state);

                // define filter QEcontact_Criteria_dates
                QEcontact_Criteria_state.AddCondition("statecode", ConditionOperator.Equal, RecordStatus.Get(context) == false ? 1 : 0);                            // kontoen er inaktiv
                QEcontact_Criteria_state.AddCondition("sdu_crmudlb", ConditionOperator.OnOrAfter, DateTime.Today.AddMonths(ExpirationDateLimit.Get(context) * -1)); // CRM udløb er maksimalt 13 måneder gammelt
                QEcontact_Criteria_state.AddCondition("sdu_crmudlb", ConditionOperator.OnOrBefore, DateTime.Today.AddDays(-1));                                     // CRM er igår eller før
                QEcontact_Criteria_state.AddCondition("jobtitle", ConditionOperator.NotLike, "%Studentermedhjælp%");

                //find records
                var queryResult = service.RetrieveMultiple(QEcontact);

                if (queryResult.Entities.Count == 1)
                {
                    foreach (var record in queryResult.Entities)
                    {
                        // fullname
                        FullnameOutput.Set(context, record.GetAttributeValue <string>("fullname"));

                        // contactid
                        ContactID.Set(context, record.GetAttributeValue <Guid>("contactid").ToString());

                        // omkostningssted
                        var omkStedIdLocal = SearchForRecord(service, "sdu_brugeradmomksted",
                                                             new KeyValuePair <string, string>("sdu_omksted", record.GetAttributeValue <EntityReference>("sdu_crmomkostningssted").Id.ToString()),
                                                             new KeyValuePair <string, string>("", ""),
                                                             "sdu_brugeradmomkstedid");

                        OmkStedId.Set(context, omkStedIdLocal);

                        // domæne
                        String[] seperator_domaene = { "_" };

                        if (omkStedIdLocal != "")
                        {
                            Domaene.Set(context, SearchForRecord(service,
                                                                 "sdu_domner",
                                                                 new KeyValuePair <string, string>("sdu_brugeradmomksted", omkStedIdLocal.Split(seperator_domaene, StringSplitOptions.RemoveEmptyEntries).GetValue(0).ToString()),
                                                                 new KeyValuePair <string, string>("sdu_name", record.GetAttributeValue <string>("sdu_domne")),
                                                                 "sdu_domnerid"));

                            // email domæne
                            String[] seperator_emailDomaene = { "@" };
                            var      emailDomainFromContact = "@" + record.GetAttributeValue <string>("emailaddress1").Split(seperator_emailDomaene, StringSplitOptions.RemoveEmptyEntries).GetValue(1).ToString();

                            EmailDomaene.Set(context, SearchForRecord(service,
                                                                      "sdu_emaildomne",
                                                                      new KeyValuePair <string, string>("sdu_brugeradmomksted", omkStedIdLocal.Split(seperator_domaene, StringSplitOptions.RemoveEmptyEntries).GetValue(0).ToString()),
                                                                      new KeyValuePair <string, string>("sdu_name", emailDomainFromContact.Replace(" ", "")), // remove whitespaces
                                                                      "sdu_emaildomneid"));
                        }
                        else
                        {
                            // set output parameters to empty strings, if no omk sted
                            Domaene.Set(context, "");
                            EmailDomaene.Set(context, "");
                        }

                        // lokation + arbejdsadresse
                        var LokationOptionSetValue = "";

                        switch (record.GetAttributeValue <string>("address1_city"))
                        {
                        case "Odense":
                            LokationOptionSetValue = "100000000";
                            break;

                        case "Odense M":
                            LokationOptionSetValue = "100000000";
                            break;

                        case "Odense C":
                            LokationOptionSetValue = "100000000";
                            break;

                        case "Sønderborg":
                            LokationOptionSetValue = "100000001";
                            break;

                        case "Esbjerg":
                            LokationOptionSetValue = "100000002";
                            break;

                        case "Slagelse":
                            LokationOptionSetValue = "100000003";
                            break;

                        case "Kolding":
                            LokationOptionSetValue = "100000004";
                            break;

                        default:
                            break;
                        }

                        var workAddress = record.GetAttributeValue <string>("address1_line1") == null ? "" : record.GetAttributeValue <string>("address1_line1");

                        if (workAddress.Contains("Campusvej"))
                        {
                            LokationOptionSetValue = LokationOptionSetValue + "_" + "100000000";
                        }
                        else if (workAddress.Contains("J.B. Winsløws Vej"))
                        {
                            LokationOptionSetValue = LokationOptionSetValue + "_" + "100000001";
                        }

                        Lokation.Set(context, LokationOptionSetValue);


                        // stillingsbetegnelse
                        StillingsBetegnelse.Set(context, SearchForRecord(service,
                                                                         "sdu_stikogruppe",
                                                                         new KeyValuePair <string, string>("sdu_name", record.GetAttributeValue <string>("jobtitle") == null ? "" : record.GetAttributeValue <string>("jobtitle")),
                                                                         new KeyValuePair <string, string>("", ""),
                                                                         "sdu_stikogruppeid"));


                        // fødselsdato
                        BirthDateOutput.Set(context, record.GetAttributeValue <DateTime>("birthdate") < new DateTime(1900, 01, 01) ? DateTime.Now : record.GetAttributeValue <DateTime>("birthdate"));

                        // brugernavn
                        UsernameOutput.Set(context, record.GetAttributeValue <string>("sdu_brugernavn"));
                    }
                }
                else
                {
                    FullnameOutput.Set(context, "");
                    ContactID.Set(context, "");
                    OmkStedId.Set(context, "");
                    Domaene.Set(context, "");
                    EmailDomaene.Set(context, "");
                    Lokation.Set(context, "");
                    StillingsBetegnelse.Set(context, "");
                    BirthDateOutput.Set(context, DateTime.Now);
                    UsernameOutput.Set(context, "");
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }
Ejemplo n.º 34
0
 public RedILNode VisitQueryExpression(QueryExpression queryExpression, State data)
 {
     throw new System.NotImplementedException();
 }
Ejemplo n.º 35
0
        /*   public async Task<List<DiagnosticCode>> getDiagnosticCodes(string diagnosticCodeId, string diagnosticCodeName, string practiceId)
         * {
         *     List<DiagnosticCode> DCode = new List<DiagnosticCode>();
         *     QueryExpression query = new QueryExpression(xrm.mzk_concept.EntityLogicalName);
         *     FilterExpression filter = query.Criteria.AddFilter(LogicalOperator.And);
         *     if (!string.IsNullOrEmpty(diagnosticCodeId))
         *     {
         *         filter.AddCondition("mzk_conceptid", ConditionOperator.Equal, diagnosticCodeId);
         *     }
         *     if (!string.IsNullOrEmpty(diagnosticCodeName))
         *     {
         *         filter.AddCondition("mzk_conceptname", ConditionOperator.Equal, diagnosticCodeName);
         *     }
         *     query.ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("mzk_conceptid", "mzk_conceptname");
         *     SoapEntityRepository entityRepository = SoapEntityRepository.GetService();
         *     EntityCollection entitycollection = entityRepository.GetEntityCollection(query);
         *
         *     foreach (Entity entity in entitycollection.Entities)
         *     {
         *         DiagnosticCode code = new DiagnosticCode();
         *         if (entity.Attributes.Contains("mzk_conceptid"))
         *         {
         *             code.codeId = entity["mzk_conceptid"].ToString();
         *         }
         *         if (entity.Attributes.Contains("mzk_conceptname"))
         *         {
         *             code.codeName = entity["mzk_conceptname"].ToString();
         *         }
         *         DCode.Add(code);
         *     }
         *
         *     return DCode;
         *
         * }*/
        public async Task <List <Physician> > getPhysicians(string practiceId)
        {
            List <Physician> Physicians = new List <Physician>();
            //Physician model = new Physician();
            //Physician model = new Physician();
            QueryExpression query = new QueryExpression(xrm.mzk_clinicphysician.EntityLogicalName);

            query.Criteria.AddCondition("mzk_clinic", ConditionOperator.Equal, new Guid(practiceId));
            //query.ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet(false);
            LinkEntity link1 = new LinkEntity(xrm.mzk_clinicphysician.EntityLogicalName, xrm.BookableResource.EntityLogicalName, "mzk_physician", "bookableresourceid", JoinOperator.Inner)
            {
                Columns     = new Microsoft.Xrm.Sdk.Query.ColumnSet("bookableresourceid", "name", "mzk_npinumber", "msdyn_primaryemail", "mzk_phone"),
                EntityAlias = "ContactBook",
            };

            query.LinkEntities.Add(link1);

            /* LinkEntity Link1 = new LinkEntity(xrm.Account.EntityLogicalName, xrm.mzk_clinicphysician.EntityLogicalName, "territoryid", "mzk_clinicphysicianid", JoinOperator.Inner)
             * {
             *
             * };*/

            //query.ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("bookableresourceid", "name", "mzk_npinumber", "msdyn_primaryemail", "mzk_phone");
            SoapEntityRepository entityRepository = SoapEntityRepository.GetService();
            EntityCollection     entitycollection = entityRepository.GetEntityCollection(query);

            foreach (Entity entity in entitycollection.Entities)
            {
                Physician model = new Physician();
                if (entity.Attributes.Contains("ContactBook.bookableresourceid"))
                {
                    model.physicianId = ((AliasedValue)entity["ContactBook.bookableresourceid"]).Value.ToString();
                }
                if (entity.Attributes.Contains("ContactBook.name"))
                {
                    string[] splitname = (((AliasedValue)entity["ContactBook.name"]).Value.ToString()).Split(new char[0]);
                    if (splitname.Length >= 3)
                    {
                        for (int i = 3; i < splitname.Length; i++)
                        {
                            splitname[2] += " " + splitname[i];
                        }
                        char[] middleinitial = splitname[1].ToCharArray();
                        model.firstName     = splitname[0];                //((AliasedValue)entity["ContactBook.name"]).Value.ToString(); //
                        model.middleInitial = middleinitial[0].ToString(); //entity["name"].ToString();
                        model.lastName      = splitname[2];
                    }
                    else if (splitname.Length == 2)
                    {
                        model.firstName = splitname[0];
                        model.lastName  = splitname[1];
                    }
                    else
                    {
                        model.firstName = ((AliasedValue)entity["ContactBook.name"]).Value.ToString();
                    }
                }

                if (entity.Attributes.Contains("ContactBook.mzk_npinumber"))
                {
                    model.NPI = ((AliasedValue)entity["ContactBook.mzk_npinumber"]).Value.ToString();
                }
                if (entity.Attributes.Contains("ContactBook.msdyn_primaryemail"))
                {
                    model.email = ((AliasedValue)entity["ContactBook.msdyn_primaryemail"]).Value.ToString();
                }
                if (entity.Attributes.Contains("ContactBook.mzk_phone"))
                {
                    model.phone = ((AliasedValue)entity["ContactBook.mzk_phone"]).Value.ToString();
                }

                Physicians.Add(model);
            }


            return(Physicians);

            /*List<Physician> Physicians = new List<Physician>();
             * Physician physician = new Physician();
             * List<PhysicianType> pTypes = new List<PhysicianType>();
             * PhysicianType pType = new PhysicianType();
             * pTypes.Add(pType);
             * physician.physicianTypes = pTypes;
             * Physicians.Add(physician);
             * return Physicians;*/
        }
Ejemplo n.º 36
0
        /// <summary>
        /// This method creates any entity records that this sample requires.
        /// Creates the dashboard.
        /// </summary>
        public void CreateRequiredRecords()
        {
            //Grab the default public view for opportunities.
            QueryExpression mySavedQuery = new QueryExpression
            {
                ColumnSet  = new ColumnSet("savedqueryid"),
                EntityName = SavedQuery.EntityLogicalName,
                Criteria   = new FilterExpression
                {
                    Conditions =
                    {
                        new ConditionExpression
                        {
                            AttributeName = "isdefault",
                            Operator      = ConditionOperator.Equal,
                            Values        = { true   }
                        },
                        new ConditionExpression
                        {
                            AttributeName = "querytype",
                            Operator      = ConditionOperator.Equal,
                            Values        = {      0 }
                        },
                        new ConditionExpression
                        {
                            AttributeName = "returnedtypecode",
                            Operator      = ConditionOperator.Equal,
                            Values        = { Opportunity.EntityTypeCode }
                        }
                    }
                }
            };

            //This query should return one and only one result.
            SavedQuery defaultOpportunityQuery = _serviceProxy.RetrieveMultiple(mySavedQuery)
                                                 .Entities.Select(x => (SavedQuery)x).FirstOrDefault();

            // Retrieve visualizations out of the system.
            // This sample assumes that you have the "Top Opportunities"
            // visualization that is installed with Microsoft Dynamics CRM.
            QueryByAttribute visualizationQuery = new QueryByAttribute
            {
                EntityName = SavedQueryVisualization.EntityLogicalName,
                ColumnSet  = new ColumnSet("savedqueryvisualizationid"),
                Attributes = { "name" },
                //If you do not have this visualization, you will need to change
                //this line.
                Values = { "Top Opportunities" }
            };


            SavedQueryVisualization visualization = _serviceProxy.RetrieveMultiple(visualizationQuery).
                                                    Entities.Select(x => (SavedQueryVisualization)x).FirstOrDefault();

            //This is the language code for U.S. English. If you are running this code
            //in a different locale, you will need to modify this value.
            int languageCode = 1033;

            //We set up our dashboard and specify the FormXml. Refer to the
            //FormXml schema in the Microsoft Dynamics CRM SDK for more information.
            UserForm dashboard = new UserForm
            {
                Name        = "Sample User Dashboard",
                Description = "Sample user-owned dashboard.",
                FormXml     = String.Format(@"<form>
                                <tabs>
                                    <tab name='Test Dashboard' verticallayout='true'>
                                        <labels>
                                            <label description='Sample User Dashboard' languagecode='{0}' />
                                        </labels>
                                        <columns>
                                            <column width='100%'>
                                                <sections>
                                                    <section name='Information Section'
                                                        showlabel='false' showbar='false'
                                                        columns='111'>
                                                        <labels>
                                                            <label description='Information Section'
                                                                languagecode='{0}' />
                                                        </labels>
                                                        <rows>
                                                            <row>
                                                                <cell colspan='1' rowspan='10' 
                                                                    showlabel='false'>
                                                                    <labels>
                                                                        <label description='Top Opportunities - 1'
                                                                        languagecode='{0}' />
                                                                    </labels>
                                                                    <control id='Top10Opportunities'
                                                                        classid='{{E7A81278-8635-4d9e-8D4D-59480B391C5B}}'>
                                                                        <parameters>
                                                                            <ViewId>{1}</ViewId>
                                                                            <IsUserView>false</IsUserView>
                                                                            <RelationshipName />
                                                                            <TargetEntityType>opportunity</TargetEntityType>
                                                                            <AutoExpand>Fixed</AutoExpand>
                                                                            <EnableQuickFind>false</EnableQuickFind>
                                                                            <EnableViewPicker>false</EnableViewPicker>
                                                                            <EnableJumpBar>false</EnableJumpBar>
                                                                            <ChartGridMode>Chart</ChartGridMode>
                                                                            <VisualizationId>{2}</VisualizationId>
                                                                            <EnableChartPicker>false</EnableChartPicker>
                                                                            <RecordsPerPage>10</RecordsPerPage>
                                                                        </parameters>
                                                                    </control>
                                                                </cell>
                                                                <cell colspan='1' rowspan='10' 
                                                                    showlabel='false'>
                                                                    <labels>
                                                                        <label description='Top Opportunities - 2'
                                                                        languagecode='{0}' />
                                                                    </labels>
                                                                    <control id='Top10Opportunities2'
                                                                        classid='{{E7A81278-8635-4d9e-8D4D-59480B391C5B}}'>
                                                                        <parameters>
                                                                            <ViewId>{1}</ViewId>
                                                                            <IsUserView>false</IsUserView>
                                                                            <RelationshipName />
                                                                            <TargetEntityType>opportunity</TargetEntityType>
                                                                            <AutoExpand>Fixed</AutoExpand>
                                                                            <EnableQuickFind>false</EnableQuickFind>
                                                                            <EnableViewPicker>false</EnableViewPicker>
                                                                            <EnableJumpBar>false</EnableJumpBar>
                                                                            <ChartGridMode>Grid</ChartGridMode>
                                                                            <VisualizationId>{2}</VisualizationId>
                                                                            <EnableChartPicker>false</EnableChartPicker>
                                                                            <RecordsPerPage>10</RecordsPerPage>
                                                                        </parameters>
                                                                    </control>
                                                                </cell>
                                                            </row>
                                                            <row />
                                                            <row />
                                                            <row />
                                                            <row />
                                                            <row />
                                                            <row />
                                                            <row />
                                                            <row />
                                                            <row />
                                                        </rows>
                                                    </section>
                                                </sections>
                                            </column>
                                        </columns>
                                    </tab>
                                </tabs>
                            </form>",
                                            languageCode,
                                            defaultOpportunityQuery.SavedQueryId.Value.ToString("B"),
                                            visualization.SavedQueryVisualizationId.Value.ToString("B"))
            };

            _userDashboardId = _serviceProxy.Create(dashboard);

            Console.WriteLine("Created {0}.", dashboard.Name);

            // Create another user to whom the dashboard will be assigned.
            _otherUserId = SystemUserProvider.RetrieveSalesManager(_serviceProxy);
        }
Ejemplo n.º 37
0
 /// <summary>
 /// Executa uma query
 /// </summary>
 /// <param name="query"></param>
 /// <returns></returns>
 public EntityCollection RetrieveMultiple(QueryExpression query)
 {
     return(Repositorio.RepositorioEntity.Instancia.RetrieveMultiple(query));
 }
Ejemplo n.º 38
0
 public static IQueryState VisitQueryExpression(QueryExpression queryExpression)
 {
     return(queryExpression.Accept(_reducer));
 }
Ejemplo n.º 39
0
        [STAThread] // Added to support UX
        static void Main(string[] args)
        {
            CrmServiceClient service = null;

            try
            {
                service = SampleHelpers.Connect("Connect");
                if (service.IsReady)
                {
                    #region Sample Code
                    //////////////////////////////////////////////
                    #region Set up
                    SetUpSample(service);
                    #endregion Set up
                    #region Demonstrate

                    // Create three e-mail attachments
                    for (int i = 0; i < 3; i++)
                    {
                        ActivityMimeAttachment _sampleAttachment = new ActivityMimeAttachment
                        {
                            ObjectId       = new EntityReference(Email.EntityLogicalName, emailId),
                            ObjectTypeCode = Email.EntityLogicalName,
                            Subject        = String.Format("Sample Attachment {0}", i),
                            Body           = System.Convert.ToBase64String(
                                new ASCIIEncoding().GetBytes("Example Attachment")),
                            FileName = String.Format("ExampleAttachment{0}.txt", i)
                        };

                        emailAttachmentId[i] = service.Create(_sampleAttachment);
                    }

                    Console.WriteLine("Created three e-mail attachments for the e-mail activity.");

                    // Retrieve an attachment including its id, subject, filename and body.
                    ActivityMimeAttachment _singleAttachment =
                        (ActivityMimeAttachment)service.Retrieve(
                            ActivityMimeAttachment.EntityLogicalName,
                            emailAttachmentId[0],
                            new ColumnSet("activitymimeattachmentid",
                                          "subject",
                                          "filename",
                                          "body"));

                    Console.WriteLine("Retrieved an email attachment, {0}.", _singleAttachment.FileName);

                    // Update attachment
                    _singleAttachment.FileName = "ExampleAttachmentUpdated.txt";
                    service.Update(_singleAttachment);

                    Console.WriteLine("Updated the retrieved e-mail attachment to {0}.", _singleAttachment.FileName);

                    // Retrieve all attachments associated with the email activity.
                    QueryExpression _attachmentQuery = new QueryExpression
                    {
                        EntityName = ActivityMimeAttachment.EntityLogicalName,
                        ColumnSet  = new ColumnSet("activitymimeattachmentid"),
                        Criteria   = new FilterExpression
                        {
                            Conditions =
                            {
                                new ConditionExpression
                                {
                                    AttributeName = "objectid",
                                    Operator      = ConditionOperator.Equal,
                                    Values        = { emailId }
                                },
                                new ConditionExpression
                                {
                                    AttributeName = "objecttypecode",
                                    Operator      = ConditionOperator.Equal,
                                    Values        = { Email.EntityLogicalName }
                                }
                            }
                        }
                    };

                    EntityCollection results = service.RetrieveMultiple(
                        _attachmentQuery);

                    Console.WriteLine("Retrieved all the e-mail attachments.");

                    #region Clean up
                    CleanUpSample(service);
                    #endregion Clean up
                }
                #endregion Demonstrate
                #endregion Sample Code
                else
                {
                    const string UNABLE_TO_LOGIN_ERROR = "Unable to Login to Common Data Service";
                    if (service.LastCrmError.Equals(UNABLE_TO_LOGIN_ERROR))
                    {
                        Console.WriteLine("Check the connection string values in cds/App.config.");
                        throw new Exception(service.LastCrmError);
                    }
                    else
                    {
                        throw service.LastCrmException;
                    }
                }
            }
            catch (Exception ex)
            {
                SampleHelpers.HandleException(ex);
            }

            finally
            {
                if (service != null)
                {
                    service.Dispose();
                }

                Console.WriteLine("Press <Enter> to exit.");
                Console.ReadLine();
            }
        }
Ejemplo n.º 40
0
        public async Task <bool> postPhysicianToPractice(string practiceId, string Choice, Physician physician, string userCreatedBy, string userModifiedBy)
        {
            SoapEntityRepository entityRepository = SoapEntityRepository.GetService();

            if (Choice.Equals("add"))
            {
                //WarnType warning = new WarnType();
                //warning = await verifyNPI(physician.NPI);
                //bool result = await verifyNPI(physician.NPI);
                Entity contact = new Entity("contact");
                contact["mzk_usercreatedby"]  = userCreatedBy;
                contact["mzk_usermodifiedby"] = userCreatedBy;
                if (!string.IsNullOrEmpty(physician.firstName))
                {
                    contact["firstname"] = physician.firstName;
                }
                if (!string.IsNullOrEmpty(physician.lastName))
                {
                    contact["lastname"] = physician.lastName;
                }
                if ((!string.IsNullOrEmpty(physician.firstName)) && (!string.IsNullOrEmpty(physician.lastName)))
                {
                    contact["fullname"] = physician.firstName + " " + physician.lastName;
                }
                Guid contactguid = new Guid();
                contactguid = entityRepository.CreateEntity(contact);

                //EntityReference link = new EntityReference();
                //link.Id = contactguid;

                Entity physician_new = new Entity("bookableresource");
                // physician_new.FormattedValues["resourcetype"] = "Contact";
                physician_new["mzk_usercreatedby"]  = userCreatedBy;
                physician_new["mzk_usermodifiedby"] = userCreatedBy;
                physician_new["resourcetype"]       = new OptionSetValue(2);
                physician_new["contactid"]          = new EntityReference("contact", contactguid);
                //if(!.string.IsNullOrEmpty(physician.))
                if (!string.IsNullOrEmpty(physician.firstName))
                {
                    physician_new["name"] = physician.firstName;
                    if (!string.IsNullOrEmpty(physician.middleInitial))
                    {
                        physician_new["name"] += physician.middleInitial;
                        if (!string.IsNullOrEmpty(physician.lastName))
                        {
                            physician_new["name"] += physician.lastName;
                        }
                    }
                }
                else if (!string.IsNullOrEmpty(physician.middleInitial))
                {
                    physician_new["name"] = physician.middleInitial;
                    if (!string.IsNullOrEmpty(physician.lastName))
                    {
                        physician_new["name"] += physician.lastName;
                    }
                }
                else if (!string.IsNullOrEmpty(physician.lastName))
                {
                    physician_new["name"] = physician.lastName;
                }
                //physician_new["name"] = physician.firstName + " " + physician.middleInitial + " " + physician.lastName;
                if (!string.IsNullOrEmpty(physician.NPI))
                {
                    WarnType warning = new WarnType();
                    warning = await verifyNPI(physician.NPI);

                    if (warning.verified.Equals(false))
                    {
                        HttpContext.Current.Items["warningmessage"] = warning.message;
                    }
                    else
                    {
                        // HttpContext.Current.Items["warningmessage"] = warning.message;
                    }
                    physician_new["mzk_npinumber"] = physician.NPI;
                }
                if (!string.IsNullOrEmpty(physician.email))
                {
                    physician_new["msdyn_primaryemail"] = physician.email;
                }
                if (!string.IsNullOrEmpty(physician.phone))
                {
                    physician_new["mzk_phone"] = physician.phone;
                }

                physician_new["timezone"] = 25;

                Guid id_phy = new Guid();
                id_phy = entityRepository.CreateEntity(physician_new);
                //  EntityReference lookup = new EntityReference();
                // entityRepository.CreateEntity(physician_new); //= new EntityReference("bookableresourceid", id_phy);
                //id_phy = (EntityReference)entityRepository.CreateEntity(physician_new);


                /*  QueryExpression query = new QueryExpression("account");
                 * query.Criteria.AddCondition("accountid", ConditionOperator.Equal, new Guid(practiceId));
                 * //LinkEntity link1 = new LinkEntity("")*/

                Entity relation = new Entity(mzk_clinicphysician.EntityLogicalName);
                relation["mzk_usercreatedby"]  = userCreatedBy;
                relation["mzk_usermodifiedby"] = userModifiedBy;
                relation["mzk_physician"]      = new EntityReference("bookableresource", id_phy);
                relation["mzk_clinic"]         = new EntityReference("account", new Guid(practiceId));
                entityRepository.CreateEntity(relation);


                //Create Association
                return(true);
            }
            else if (Choice.Equals("delete"))
            {
                QueryExpression  query       = new QueryExpression(mzk_clinicphysician.EntityLogicalName);
                FilterExpression childFilter = query.Criteria.AddFilter(LogicalOperator.And);
                childFilter.AddCondition("mzk_clinic", ConditionOperator.Equal, new Guid(practiceId));
                childFilter.AddCondition("mzk_physician", ConditionOperator.Equal, new Guid(physician.physicianId));

                EntityCollection entity = entityRepository.GetEntityCollection(query);

                Guid guid = entity.Entities[0].Id;

                entityRepository.DeleteEntity(mzk_clinicphysician.EntityLogicalName, guid);
                return(true);
            }
            else if (Choice.Equals("modify"))
            {
                QueryExpression  queryb      = new QueryExpression(BookableResource.EntityLogicalName);
                FilterExpression childFilter = queryb.Criteria.AddFilter(LogicalOperator.And);
                childFilter.AddCondition("bookableresourceid", ConditionOperator.Equal, new Guid(physician.physicianId));
                queryb.ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("bookableresourceid", "contactid", "name", "mzk_npinumber", "msdyn_primaryemail", "mzk_phone");
                EntityCollection entitycollection = entityRepository.GetEntityCollection(queryb);
                foreach (Entity entity in entitycollection.Entities)
                {
                    if (!string.IsNullOrEmpty(physician.firstName))
                    {
                        entity["name"] = physician.firstName;
                    }
                    if (!string.IsNullOrEmpty(physician.middleInitial))
                    {
                        entity["name"] += " " + physician.middleInitial;
                    }
                    if (!string.IsNullOrEmpty(physician.lastName))
                    {
                        entity["name"] += " " + physician.lastName;
                    }
                    if (!string.IsNullOrEmpty(physician.NPI))
                    {
                        entity["mzk_npinumber"] = physician.NPI;
                    }
                    if (!string.IsNullOrEmpty(physician.email))
                    {
                        entity["msdyn_primaryemail"] = physician.email;
                    }
                    if (!string.IsNullOrEmpty(physician.phone))
                    {
                        entity["mzk_phone"] = physician.phone;
                    }



                    if (entity.Attributes.Contains("contactid"))
                    {
                        EntityReference  refer       = (EntityReference)entity["contactid"];
                        QueryExpression  queryc      = new QueryExpression(xrm.Contact.EntityLogicalName);
                        FilterExpression childfilter = queryc.Criteria.AddFilter(LogicalOperator.And);
                        childfilter.AddCondition("contactid", ConditionOperator.Equal, refer.Id);
                        queryc.ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("fullname", "address1_composite", "emailaddress1", "telephone2");
                        EntityCollection ecollection = entityRepository.GetEntityCollection(queryc);
                        foreach (Entity c_entity in ecollection.Entities)
                        {
                            if (!string.IsNullOrEmpty(physician.firstName))
                            {
                                c_entity.Attributes["fullname"] = physician.firstName;
                            }
                            if (!string.IsNullOrEmpty(physician.middleInitial))
                            {
                                c_entity.Attributes["fullname"] += " " + physician.middleInitial;
                            }
                            if (!string.IsNullOrEmpty(physician.lastName))
                            {
                                c_entity.Attributes["fullname"] += " " + physician.lastName;
                            }
                            if (!string.IsNullOrEmpty(physician.location))

                            {
                                c_entity.Attributes["address1_composite"] = physician.location;
                            }
                            if (!string.IsNullOrEmpty(physician.email))
                            {
                                c_entity.Attributes["emailaddress1"] = physician.email;
                            }
                            if (!string.IsNullOrEmpty(physician.phone))
                            {
                                c_entity.Attributes["telephone2"] = physician.phone;
                            }
                            try
                            {
                                entityRepository.UpdateEntity(c_entity);
                            }
                            catch (Exception ex)
                            {
                                throw ex;
                            }
                        }
                    }
                    try
                    {
                        entityRepository.UpdateEntity(entity);
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }

                return(true);
            }
            else
            {
                return(false);
            }
        }
Ejemplo n.º 41
0
 public CRMLargeQuery(IOrganizationService incomingService, QueryExpression incomingQuery)
 {
     service = incomingService;
     query   = incomingQuery;
 }
Ejemplo n.º 42
0
        [STAThread] // Added to support UX
        static void Main(string[] args)
        {
            CrmServiceClient service = null;

            try
            {
                service = SampleHelpers.Connect("Connect");
                if (service.IsReady)
                {
                    #region Sample Code
                    #region Set up
                    SetUpSample(service);
                    #endregion Set up
                    #region Demonstrate

                    // Enable auditing on the organization and for user access by editing the
                    // organization's settings.
                    // First, get the organization's ID from the system user record.

                    var  whoAmIReq = new WhoAmIRequest();
                    var  whoAmIRes = (WhoAmIResponse)service.Execute(whoAmIReq);
                    Guid orgId     = whoAmIRes.OrganizationId;
                    _systemUserId = whoAmIRes.UserId;

                    // Next, retrieve the organization's record.
                    var org = (Organization)service.Retrieve(
                        Organization.EntityLogicalName, orgId,
                        new ColumnSet("organizationid", "isauditenabled", "isuseraccessauditenabled", "useraccessauditinginterval"));

                    // Finally, enable auditing on the organization, including auditing for
                    // user access.
                    bool organizationAuditingFlag = org.IsAuditEnabled.Value;
                    bool userAccessAuditingFlag   = org.IsUserAccessAuditEnabled.Value;
                    if (!organizationAuditingFlag || !userAccessAuditingFlag)
                    {
                        org.IsAuditEnabled           = true;
                        org.IsUserAccessAuditEnabled = true;
                        service.Update(org);
                        Console.WriteLine("Enabled auditing for the organization and for user access.");
                        Console.WriteLine("Auditing interval is set to {0} hours.", org.UserAccessAuditingInterval);
                    }
                    else
                    {
                        Console.WriteLine("Auditing was enabled before the sample began, so no auditing settings were changed.");
                    }

                    // Enable auditing on the account entity, since no audits will be created
                    // when we create/update an account entity, otherwise.
                    var oldAccountAuditing = EnableEntityAuditing(service, Account.EntityLogicalName, true);

                    // Make an update request to the Account entity to be tracked by auditing.
                    var newAccount = new Account();
                    newAccount.AccountId           = _newAccountId;
                    newAccount.AccountNumber       = "1-A";
                    newAccount.AccountCategoryCode = new OptionSetValue(
                        (int)AccountAccountCategoryCode.PreferredCustomer);
                    newAccount.Telephone1 = "555-555-5555";

                    service.Update(newAccount);
                    Console.WriteLine("Created an account and made updates which should be captured by auditing.");

                    // Set the organization and account auditing flags back to the old values
                    if (!organizationAuditingFlag || !userAccessAuditingFlag)
                    {
                        // Only revert them if they were actually changed to begin with.
                        org.IsAuditEnabled           = organizationAuditingFlag;
                        org.IsUserAccessAuditEnabled = userAccessAuditingFlag;
                        service.Update(org);
                        Console.WriteLine("Reverted organization and user access auditing to their previous values.");
                    }
                    else
                    {
                        Console.WriteLine("Auditing was enabled before the sample began, so no auditing settings were reverted.");
                    }

                    // Revert the account entity auditing.
                    EnableEntityAuditing(service, Account.EntityLogicalName, oldAccountAuditing);

                    #endregion Revert auditing

                    #region Show Audited Records

                    // Select all columns for convenience.
                    var query = new QueryExpression(Audit.EntityLogicalName)
                    {
                        ColumnSet = new ColumnSet(true),
                        Criteria  = new FilterExpression(LogicalOperator.And)
                    };

                    // Only retrieve audit records that track user access.
                    query.Criteria.AddCondition("action", ConditionOperator.In,
                                                (int)AuditAction.UserAccessAuditStarted,
                                                (int)AuditAction.UserAccessAuditStopped,
                                                (int)AuditAction.UserAccessviaWebServices,
                                                (int)AuditAction.UserAccessviaWeb);

                    // Change this to false in order to retrieve audit records for all users
                    // when running the sample.
                    var filterAuditsRetrievedByUser = true;
                    if (filterAuditsRetrievedByUser)
                    {
                        // Only retrieve audit records for the current user or the "SYSTEM"
                        // user.
                        var userFilter = new FilterExpression(LogicalOperator.Or);
                        userFilter.AddCondition(
                            "userid", ConditionOperator.Equal, _systemUserId);
                        userFilter.AddCondition(
                            "useridname", ConditionOperator.Equal, "SYSTEM");
                    }
                    // Only retrieve records for this sample run, so that we don't get too
                    // many results if auditing was enabled previously.
                    query.Criteria.AddCondition(
                        "createdon", ConditionOperator.GreaterEqual, DateTime.UtcNow);

                    var results = service.RetrieveMultiple(query);
                    Console.WriteLine("Retrieved audit records:");
                    foreach (Audit audit in results.Entities)
                    {
                        Console.Write("\r\n  Action: {0},  User: {1},"
                                      + "\r\n    Created On: {2}, Operation: {3}",
                                      (AuditAction)audit.Action.Value,
                                      audit.UserId.Name,
                                      audit.CreatedOn.Value.ToLocalTime(),
                                      (AuditOperation)audit.Operation.Value);

                        // Display the name of the related object (which will be the user
                        // for audit records with Action UserAccessviaWebServices.
                        if (!String.IsNullOrEmpty(audit.ObjectId.Name))
                        {
                            Console.WriteLine(
                                ",\r\n    Related Record: {0}", audit.ObjectId.Name);
                        }
                        else
                        {
                            Console.WriteLine();
                        }
                    }

                    #endregion Show Audited Records

                    #region Clean up
                    CleanUpSample(service);
                    #endregion Clean up
                }
                #endregion Demonstrate


                else
                {
                    const string UNABLE_TO_LOGIN_ERROR = "Unable to Login to Common Data Service";
                    if (service.LastCrmError.Equals(UNABLE_TO_LOGIN_ERROR))
                    {
                        Console.WriteLine("Check the connection string values in cds/App.config.");
                        throw new Exception(service.LastCrmError);
                    }
                    else
                    {
                        throw service.LastCrmException;
                    }
                }
            }

            catch (Exception ex)
            {
                SampleHelpers.HandleException(ex);
            }

            finally
            {
                if (service != null)
                {
                    service.Dispose();
                }

                Console.WriteLine("Press <Enter> to exit.");
                Console.ReadLine();
            }
        }
Ejemplo n.º 43
0
 public static void AddOrder <T>(this QueryExpression query, Expression <Func <T, object> > attribute,
                                 OrderType orderType)
     where T : Entity => query.AddOrder(Name(attribute), orderType);
Ejemplo n.º 44
0
 internal QueryCastExpression(QueryExpression source, QueryType typeToCastTo)
     : base(source, typeToCastTo, typeToCastTo)
 {
 }
Ejemplo n.º 45
0
        public void TestRetrieveRelatedEntities()
        {
            using (var context = new Xrm(orgAdminUIService))
            {
                var accountName = "Litware, Inc.";
                var _accountId  = orgAdminUIService.Create(
                    new Account
                {
                    Name = accountName,
                    Address1_StateOrProvince = "Colorado"
                });

                // Create the two contacts.
                orgAdminUIService.Create(
                    new Contact()
                {
                    FirstName                = "Ben",
                    LastName                 = "Andrews",
                    EMailAddress1            = "*****@*****.**",
                    Address1_City            = "Redmond",
                    Address1_StateOrProvince = "WA",
                    Address1_Telephone1      = "(206)555-5555",
                    ParentCustomerId         = new EntityReference
                    {
                        Id          = _accountId,
                        LogicalName = Account.EntityLogicalName
                    }
                });


                orgAdminUIService.Create(
                    new Contact()
                {
                    FirstName                = "Alan",
                    LastName                 = "Wilcox",
                    EMailAddress1            = "*****@*****.**",
                    Address1_City            = "Bellevue",
                    Address1_StateOrProvince = "WA",
                    Address1_Telephone1      = "(425)555-5555",
                    ParentCustomerId         = new EntityReference
                    {
                        Id          = _accountId,
                        LogicalName = Account.EntityLogicalName
                    }
                });


                //create the query expression object
                QueryExpression query = new QueryExpression
                {
                    EntityName = "contact",
                    ColumnSet  = new ColumnSet(true)
                };

                //create the relationship object
                Relationship relationship = new Relationship();

                //add the condition where you can retrieve only the account related active contacts
                query.Criteria = new FilterExpression();
                query.Criteria.AddCondition(new ConditionExpression("address1_city", ConditionOperator.Equal, "Bellevue"));

                // name of relationship between account & contact
                relationship.SchemaName = "contact_customer_accounts";

                //create relationshipQueryCollection Object
                RelationshipQueryCollection relatedEntity = new RelationshipQueryCollection
                {
                    { relationship, query }
                };

                //create the retrieve request object
                RetrieveRequest request = new RetrieveRequest
                {
                    RelatedEntitiesQuery = relatedEntity,
                    ColumnSet            = new ColumnSet("accountid"),
                    Target = new EntityReference {
                        Id = _accountId, LogicalName = "account"
                    }
                };

                //execute the request
                RetrieveResponse response = (RetrieveResponse)orgAdminUIService.Execute(request);

                Assert.AreEqual(1, response.Entity.RelatedEntities.Count);
                var collection = response.Entity.RelatedEntities.Values.First();
                Assert.AreEqual(1, collection.Entities.Count);
                var entity = collection.Entities.First();
                Assert.IsTrue(entity.Attributes.ContainsKey("firstname"));
                Assert.AreEqual("Alan", entity.Attributes["firstname"]);
            }
        }
Ejemplo n.º 46
0
 public ScopeExpression(QueryExpression expression)
     : base(expression)
 {
 }
Ejemplo n.º 47
0
        public void GetEntityRecord(IOrganizationService service)
        {
            ConditionExpression condition1 = new ConditionExpression();

            condition1.AttributeName = "lastname";
            condition1.Operator      = ConditionOperator.Equal;
            condition1.Values.Add("Fry");

            ConditionExpression condition2 = new ConditionExpression();

            condition2.AttributeName = "firstname";
            condition2.Operator      = ConditionOperator.Equal;
            condition2.Values.Add("Alexis");

            FilterExpression filter1 = new FilterExpression();

            filter1.Conditions.Add(condition1);
            filter1.Conditions.Add(condition2);

            QueryExpression query = new QueryExpression("contact");

            query.ColumnSet.AddColumns("firstname", "lastname");
            query.Criteria.AddFilter(filter1);
            EntityCollection result1 = service.RetrieveMultiple(query);

            if (result1.Entities.Count > 0) //Check for EntityCollection count
            {
                string output = string.Empty;
                foreach (var item in result1.Entities)
                {
                    //String
                    if (item.Attributes.Contains("fullname")) //Check for fullname value exists or not in Entity Collection
                    {
                        output += "Full Name : " + item.Attributes["fullname"] + "\n";
                    }

                    //Lookup
                    if (item.Attributes.Contains("parentcustomerid")) //Check for parentcustomerid exists or not in Entity Collection
                    {
                        output += "Company : " + ((EntityReference)item.Attributes["parentcustomerid"]).Name + "\n";
                    }

                    //OptionSet
                    if (item.Attributes.Contains("gendercode")) //Check for gendercode exists or not in Entity Collection
                    {
                        output += "Gender : Name - " + item.FormattedValues["gendercode"] + ", Value - " + ((OptionSetValue)item.Attributes["gendercode"]).Value + "\n";
                    }

                    //Date
                    if (item.Attributes.Contains("birthdate")) //Check for birthdate exists or not in Entity Collection
                    {
                        output += "Birthday : " + ((DateTime)item.Attributes["birthdate"]).ToLocalTime().ToShortDateString().ToString() + "\n";
                    }

                    //Currency
                    if (item.Attributes.Contains("creditlimit")) //Check for creditlimit exists or not in Entity Collection
                    {
                        output += "Credit Limit : " + ((Money)item.Attributes["creditlimit"]).Value + "\n";
                    }

                    //Two Options
                    if (item.Attributes.Contains("donotsendmm")) //Check for donotsendmm exists or not in Entity Collection
                    {
                        output += "Send Marketing Materials : Name - " + item.FormattedValues["donotsendmm"] + ", Value - " + ((Boolean)item.Attributes["donotsendmm"]).ToString();
                    }
                }
                Console.WriteLine(output);
                Console.ReadKey();
            }
        }
Ejemplo n.º 48
0
        public void QueryExpressionpaginatequery(IOrganizationService service, string accountid)
        {
            // Query using the paging cookie.
            // Define the paging attributes.
            // The number of records per page to retrieve.
            int queryCount = 3;

            // Initialize the page number.
            int pageNumber = 1;

            // Initialize the number of records.
            int recordCount = 0;

            // Define the condition expression for retrieving records.
            ConditionExpression pagecondition = new ConditionExpression();

            pagecondition.AttributeName = "parentaccountid";
            pagecondition.Operator      = ConditionOperator.Equal;
            pagecondition.Values.Add(accountid);

            // Define the order expression to retrieve the records.
            OrderExpression order = new OrderExpression();

            order.AttributeName = "name";
            order.OrderType     = OrderType.Ascending;

            // Create the query expression and add condition.
            QueryExpression pagequery = new QueryExpression();

            pagequery.EntityName = "account";
            pagequery.Criteria.AddCondition(pagecondition);
            pagequery.Orders.Add(order);
            pagequery.ColumnSet.AddColumns("name", "emailaddress1");

            // Assign the pageinfo properties to the query expression.
            pagequery.PageInfo            = new PagingInfo();
            pagequery.PageInfo.Count      = queryCount;
            pagequery.PageInfo.PageNumber = pageNumber;

            // The current paging cookie. When retrieving the first page,
            // pagingCookie should be null.
            pagequery.PageInfo.PagingCookie = null;
            Console.WriteLine("Retrieving sample account records in pages...\n");
            Console.WriteLine("#\tAccount Name\t\tEmail Address");

            while (true)
            {
                // Retrieve the page.
                EntityCollection results = service.RetrieveMultiple(pagequery);
                if (results.Entities != null)
                {
                    // Retrieve all records from the result set.
                    foreach (var acct in results.Entities)
                    {
                        Console.WriteLine("{0}.\t{1}\t{2}", ++recordCount, acct["Name"],
                                          acct["EMailAddress1"]);
                    }
                }

                // Check for more records, if it returns true.
                if (results.MoreRecords)
                {
                    Console.WriteLine("\n****************\nPage number {0}\n****************", pagequery.PageInfo.PageNumber);
                    Console.WriteLine("#\tAccount Name\t\tEmail Address");

                    // Increment the page number to retrieve the next page.
                    pagequery.PageInfo.PageNumber++;

                    // Set the paging cookie to the paging cookie returned from current results.
                    pagequery.PageInfo.PagingCookie = results.PagingCookie;
                }
                else
                {
                    // If no more records are in the result nodes, exit the loop.
                    break;
                }
            }
        }
 private EntityCollection RetrieveMultipleInternal(QueryExpression qe)
 {
     return((EntityCollection)InvokeStaticGenericMethod(qe.EntityName, "ReadEntities", this, qe));
 }
Ejemplo n.º 50
0
        internal Dictionary <Guid, SecurityRole> GetSecurityRoles(Guid rootBUId)
        {
            // Queries
            var privQuery = new QueryExpression(PRIVILEGE)
            {
                ColumnSet = new ColumnSet("privilegeid", "accessright", "canbeglobal", "canbedeep", "canbelocal", "canbebasic")
            };
            var privileges = QueryPaging(privQuery);

            var privOTCQuery = new QueryExpression(PRIVILEGE_OTC)
            {
                ColumnSet = new ColumnSet("privilegeid", "objecttypecode")
            };
            var privilegeOTCs = QueryPaging(privOTCQuery);

            var rolePrivQuery = new QueryExpression(ROLEPRIVILEGES)
            {
                ColumnSet = new ColumnSet("privilegeid", "roleid", "privilegedepthmask")
            };
            var rolePrivileges = QueryPaging(rolePrivQuery);

            var roleQuery = new QueryExpression(ROLE)
            {
                ColumnSet = new ColumnSet("parentrootroleid", "name", "roleid", "roletemplateid", "businessunitid")
            };
            var rolelist = QueryPaging(roleQuery);
            // Joins
            // rpr <- roleprivileges left outer join roles
            var roleprivilegeLOJrole =
                from roleprivilege in rolePrivileges
                join role in rolelist on((Guid)roleprivilege["roleid"]) equals((EntityReference)role["parentrootroleid"]).Id into res
                from role in res.DefaultIfEmpty()
                    where ((EntityReference)role["businessunitid"]).Id.Equals(rootBUId) &&
                (int)roleprivilege["privilegedepthmask"] != 0
                select new { roleprivilege, role };

            // pp <- privileges left outer join privilegeOTCs
            var privilegesLOJprivilegeOTCs =
                from privilege in privileges
                join privilegeOTC in privilegeOTCs on((Guid)privilege["privilegeid"]) equals((EntityReference)privilegeOTC["privilegeid"]).Id into res
                from privilegeOTC in res.DefaultIfEmpty()
                select new { privilege, privilegeOTC };

            // entities <- pp left outer join rpr
            var entities =
                from pp in privilegesLOJprivilegeOTCs
                join rpr in roleprivilegeLOJrole on((Guid)pp.privilege["privilegeid"]) equals((Guid)rpr.roleprivilege["privilegeid"]) into res
                from rpr in res.DefaultIfEmpty()
                select new { pp, rpr };

            // Role generation
            var roles = new Dictionary <Guid, SecurityRole>();

            var validSecurityRoles = entities.Where(e =>
                                                    e.pp?.privilege != null &&
                                                    (e.pp?.privilegeOTC?.Contains("objecttypecode")).GetValueOrDefault() &&
                                                    (e.rpr?.roleprivilege?.Contains("roleid")).GetValueOrDefault() &&
                                                    (e.rpr?.role?.Contains("name")).GetValueOrDefault());

            foreach (var e in validSecurityRoles)
            {
                var entityName = (string)e.pp.privilegeOTC["objecttypecode"];
                if (entityName == "none")
                {
                    continue;
                }

                var rp = ToRolePrivilege(e.pp.privilege, e.rpr.roleprivilege);
                if (rp.AccessRight == AccessRights.None)
                {
                    continue;
                }
                var roleId = (Guid)e.rpr.roleprivilege["roleid"];
                if (!roles.ContainsKey(roleId))
                {
                    roles[roleId] = new SecurityRole()
                    {
                        Name   = (string)e.rpr.role["name"],
                        RoleId = roleId
                    };

                    if (e.rpr.role.Attributes.ContainsKey("roletemplateid"))
                    {
                        roles[roleId].RoleTemplateId = ((EntityReference)e.rpr.role["roletemplateid"]).Id;
                    }

                    roles[roleId].Privileges = new Dictionary <string, Dictionary <AccessRights, RolePrivilege> >();
                }

                if (!roles[roleId].Privileges.ContainsKey(entityName))
                {
                    roles[roleId].Privileges.Add(entityName, new Dictionary <AccessRights, RolePrivilege>());
                }

                roles[roleId].Privileges[entityName].Add(rp.AccessRight, rp);
            }
            return(roles);
        }
Ejemplo n.º 51
0
        /// <summary>
        /// подсчёт оплаченной суммы в объекте договор при обовлении и создании счета со статусом оплачено
        /// </summary>
        /// <param name="image"></param>
        public void CalcSum(Entity image)
        {
            Entity order = image;

            // guid текущего счета
            Guid orderId = order.Id;

            _TracingService.Trace("PostOrderCreate: Get order object values");

            // var orderValues = _service.Retrieve(order.LogicalName, orderId, new ColumnSet(new string[] { "al_fact", "al_summa", "al_dogovorid" }));

            _TracingService.Trace("PostOrderCreate: Check if order is paid");
            var isPaid = order.GetAttributeValue <bool>("al_facted");

            // проверка статуса оплачено на объекте счет
            if (isPaid)
            {
                var contractId = order.GetAttributeValue <EntityReference>("al_dogovorid").Id;
                _TracingService.Trace("PostOrderCreateUpdate: Get paid orders by contract and sums");

                // поиск всех оплаченных счетов для данного договора
                QueryExpression queryExpression = new QueryExpression();
                queryExpression.EntityName = "al_order";
                queryExpression.ColumnSet  = new ColumnSet(new string[] { "al_summa" });
                queryExpression.Criteria   = new FilterExpression
                {
                    Conditions =
                    {
                        new ConditionExpression
                        {
                            AttributeName = "al_dogovorid",
                            Operator      = ConditionOperator.Equal,
                            Values        = { contractId }
                        },
                        new ConditionExpression
                        {
                            AttributeName = "al_facted",
                            Operator      = ConditionOperator.Equal,
                            Values        = { true       }
                        }
                    }
                };

                var entityCollection = _Service.RetrieveMultiple(queryExpression);

                // общая сумма счетов
                var commonSum = 0;

                // подсчёт общей суммы счетов
                foreach (var ent in entityCollection.Entities)
                {
                    commonSum = commonSum + (int)ent.Attributes["al_summa"];
                }

                _TracingService.Trace("PostOrderCreateUpdate: Set fact summa in contract object.");

                // объект договор связанный со счетами
                var contractValues = _Service.Retrieve("al_dogovor", contractId, new ColumnSet(new string[] { "al_summa" }));

                Entity contractToUpdate = new Entity("al_dogovor", contractId);

                // общая сумма в договоре
                var contractSum = contractValues.GetAttributeValue <Money>("al_summa");

                // проверка не превышает ли общая сумма счетов общей суммы в договоре
                if ((decimal)commonSum > contractSum.Value)
                {
                    throw new InvalidPluginExecutionException("Common sum of bills greater than contract sum");
                }

                // обновление общей суммы в объекте договор
                contractToUpdate["al_factsumma"] = new Money((decimal)commonSum);
                _Service.Update(contractToUpdate);
            }
        }
        public static EntityCollection RetrieveMultipleAll(this IOrganizationService service, QueryExpression query)
        {
            var entitiesList = new List <Entity>();

            query.PageInfo.PageNumber = 1;
            while (true)
            {
                var collRecords = service.RetrieveMultiple(query);
                entitiesList.AddRange(collRecords.Entities);

                if (!collRecords.MoreRecords)
                {
                    break;
                }

                query.PageInfo.PageNumber++;
                query.PageInfo.PagingCookie = collRecords.PagingCookie;
            }
            return(new EntityCollection(entitiesList));
        }
Ejemplo n.º 53
0
        public void Execute(IServiceProvider serviceProvider)
        {
            ITracingService tracingService =
                (ITracingService)serviceProvider.GetService(typeof(ITracingService));

            IPluginExecutionContext context = (IPluginExecutionContext)
                                              serviceProvider.GetService(typeof(IPluginExecutionContext));

            if (!context.InputParameters.Contains("Target") ||
                !(context.InputParameters["Target"] is Entity))
            {
                throw new InvalidPluginExecutionException("Target is not Entity");
            }

            if (!context.PostEntityImages.Contains("image") || !(context.PostEntityImages["image"] is Entity))
            {
                throw new InvalidPluginExecutionException("Context has no post images");
            }

            Entity targetEntity = (Entity)context.InputParameters["Target"];

            if (targetEntity.LogicalName != "al_order" && context.MessageName != "Update")
            {
                throw new InvalidPluginExecutionException("Target's logical name is not order or action is not update");
            }
            try
            {
                IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                IOrganizationService        service        = serviceFactory.CreateOrganizationService(context.UserId);

                Entity currentOrder = (Entity)context.InputParameters["Target"];
                var    isPaidOrder  = currentOrder.GetAttributeValue <bool>("al_facted");

                if (isPaidOrder)
                {
                    var contractId = currentOrder.GetAttributeValue <EntityReference>("al_dogovorid").Id;
                    tracingService.Trace("PostOrderDelete: Get paid orders by contract and sums");

                    QueryExpression queryExpression = new QueryExpression();
                    queryExpression.EntityName = "al_order";
                    queryExpression.ColumnSet  = new ColumnSet(new string[] { "al_summa" });
                    queryExpression.Criteria   = new FilterExpression
                    {
                        Conditions =
                        {
                            new ConditionExpression
                            {
                                AttributeName = "al_dogovorid",
                                Operator      = ConditionOperator.Equal,
                                Values        = { contractId }
                            },
                            new ConditionExpression
                            {
                                AttributeName = "al_facted",
                                Operator      = ConditionOperator.Equal,
                                Values        = { true       }
                            }
                        }
                    };

                    var entityCollection = service.RetrieveMultiple(queryExpression);
                    var commonSum        = 0;
                    foreach (var ent in entityCollection.Entities)
                    {
                        commonSum = commonSum + (int)ent.Attributes["al_summa"];
                    }

                    tracingService.Trace("PostOrderDelete: Set fact summa in contract object.");
                    var res = service.Retrieve("al_dogovor", contractId, new ColumnSet(new string[] { "al_summa" }));

                    Entity contractToUpdate = new Entity("al_dogovor", contractId);

                    var contractSum = res.GetAttributeValue <Money>("al_summa");

                    if (contractSum.Value < (decimal)commonSum)
                    {
                        throw new InvalidPluginExecutionException("Common sum of bills greater than contract sum");
                    }

                    contractToUpdate["al_factsumma"] = new Money((decimal)commonSum);
                    service.Update(contractToUpdate);
                }
            }
            catch (Exception ex)
            {
                tracingService.Trace("PostOrderUpdate: {0}", ex.ToString());
                throw;
            }
        }
Ejemplo n.º 54
0
 public static TBuilder Limit <TBuilder>(this TBuilder builder, QueryExpression queryExpression)
     where TBuilder : IRangeQueryBuilder
 {
     builder.Range.Limit(queryExpression);
     return(builder);
 }
Ejemplo n.º 55
0
 private static void ThrowUnsupportedRangeExpression(FacetQuery query, QueryExpression expression)
 {
     throw new InvalidQueryException($"Unsupported range expression of a facet query: {expression.GetType().Name}. Text: {expression.GetText()}.", query.Query.Metadata.QueryText, query.Query.QueryParameters);
 }
Ejemplo n.º 56
0
        public void Execute(IServiceProvider serviceProvider)
        {
            IPluginExecutionContext     context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService        service = factory.CreateOrganizationService(context.UserId);

            try
            {
                string credentials = null;
                try
                {
                    QueryExpression query = new QueryExpression();
                    query.EntityName = "syt_twittercredential";
                    query.ColumnSet  = new ColumnSet()
                    {
                        AllColumns = true
                    };
                    EntityCollection entities = service.RetrieveMultiple(query);
                    Entity           entity   = entities[0];
                    credentials = entity.Attributes["syt_twitterauth"].ToString();
                }
                catch (Exception ex)
                {
                    throw new InvalidPluginExecutionException(ex.Message);
                }


                string access_token = "";
                var    post         = WebRequest.Create("https://api.twitter.com/oauth2/token") as HttpWebRequest;
                post.Method      = "POST";
                post.ContentType = "application/x-www-form-urlencoded";
                post.Headers[HttpRequestHeader.Authorization] = "Basic " + credentials;
                var reqbody = Encoding.UTF8.GetBytes("grant_type=client_credentials");
                post.ContentLength = reqbody.Length;
                using (var req = post.GetRequestStream())
                {
                    req.Write(reqbody, 0, reqbody.Length);
                }
                try
                {
                    string respbody = null;
                    using (var resp = post.GetResponse().GetResponseStream())//there request sends
                    {
                        var respR = new StreamReader(resp);
                        respbody = respR.ReadToEnd();
                    }

                    access_token = respbody.Substring(respbody.IndexOf("access_token\":\"") + "access_token\":\"".Length, respbody.IndexOf("\"}") - (respbody.IndexOf("access_token\":\"") + "access_token\":\"".Length));
                }
                catch //if credentials are not valid
                {
                    //TODO
                }


                var crm = WebRequest.Create("https://api.twitter.com/1.1/search/tweets.json?q=%23crm-filter:retweets&-filter:replies&result_type=recent&count=30‏") as HttpWebRequest;
                crm.Method = "GET";
                crm.Headers[HttpRequestHeader.Authorization] = "Bearer " + access_token;
                var cms = WebRequest.Create("https://api.twitter.com/1.1/search/tweets.json?q=%23cms-filter:retweets&-filter:replies&result_type=recent&count=30‏") as HttpWebRequest;
                cms.Method = "GET";
                cms.Headers[HttpRequestHeader.Authorization] = "Bearer " + access_token;
                var suyati = WebRequest.Create("https://api.twitter.com/1.1/search/tweets.json?q=%23suyati-filter:retweets&-filter:replies&result_type=recent&count=30‏") as HttpWebRequest;
                suyati.Method = "GET";
                suyati.Headers[HttpRequestHeader.Authorization] = "Bearer " + access_token;
                var salesforce = WebRequest.Create("https://api.twitter.com/1.1/search/tweets.json?q=%23salesforce-filter:retweets&-filter:replies&result_type=recent&count=30‏") as HttpWebRequest;
                salesforce.Method = "GET";
                salesforce.Headers[HttpRequestHeader.Authorization] = "Bearer " + access_token;
                var dynamics = WebRequest.Create("https://api.twitter.com/1.1/search/tweets.json?q=%23msdynamics-filter:retweets&-filter:replies&result_type=recent&count=30‏") as HttpWebRequest;
                dynamics.Method = "GET";
                dynamics.Headers[HttpRequestHeader.Authorization] = "Bearer " + access_token;
                try
                {
                    string crmtweet = null;
                    using (var resp = crm.GetResponse().GetResponseStream())//get tweets with #crm
                    {
                        var respR = new StreamReader(resp);
                        crmtweet = respR.ReadToEnd();
                    }
                    string cmstweet = null;
                    using (var resp = cms.GetResponse().GetResponseStream())//get tweets with #cms
                    {
                        var respR = new StreamReader(resp);
                        cmstweet = respR.ReadToEnd();
                    }
                    string suyatitweet = null;
                    using (var resp = suyati.GetResponse().GetResponseStream())//get tweets with #suyati
                    {
                        var respR = new StreamReader(resp);
                        suyatitweet = respR.ReadToEnd();
                    }
                    string salesforcetweet = null;
                    using (var resp = salesforce.GetResponse().GetResponseStream())//get tweets with #salesforce
                    {
                        var respR = new StreamReader(resp);
                        salesforcetweet = respR.ReadToEnd();
                    }
                    string dynamicstweet = null;
                    using (var resp = dynamics.GetResponse().GetResponseStream())//get tweets with #dynamics
                    {
                        var respR = new StreamReader(resp);
                        dynamicstweet = respR.ReadToEnd();
                    }



                    //Passing it to Action
                    context.OutputParameters["crmtweets"]        = crmtweet.ToString();
                    context.OutputParameters["cmstweets"]        = cmstweet.ToString();
                    context.OutputParameters["suyatitweets"]     = suyatitweet.ToString();
                    context.OutputParameters["salesforcetweets"] = salesforcetweet.ToString();
                    context.OutputParameters["dynamicstweets"]   = dynamicstweet.ToString();
                }
                catch //401 (access token invalid or expired)
                {
                    //TODO
                }
            }
            catch (Exception ex)
            {
                throw new InvalidPluginExecutionException(ex.Message);
            }
        }
Ejemplo n.º 57
0
        public static JoinQueryResult VisitQueryExpression(QueryExpression queryExpression, ResultElement resultElement, DbJoinType joinType, LambdaExpression conditionExpression, List <IMappingObjectExpression> moeList)
        {
            JoinQueryExpressionVisitor visitor = new JoinQueryExpressionVisitor(resultElement, joinType, conditionExpression, moeList);

            return(queryExpression.Accept(visitor));
        }
Ejemplo n.º 58
0
        private static ParsedRange ParseRange(QueryExpression expression, FacetQuery query, out RangeType type)
        {
            if (expression is BetweenExpression bee)
            {
                var hValue = ConvertFieldValue(bee.Max.Token, bee.Max.Value);
                var lValue = ConvertFieldValue(bee.Min.Token, bee.Min.Value);

                var fieldName = ((FieldExpression)bee.Source).FieldValue;

                if (hValue.Type != lValue.Type)
                {
                    ThrowDifferentTypesOfRangeValues(query, hValue.Type, lValue.Type, fieldName);
                }

                type = hValue.Type;

                return(new ParsedRange
                {
                    Field = fieldName,
                    HighInclusive = true,
                    HighValue = hValue.Value,
                    LowInclusive = true,
                    LowValue = lValue.Value,
                    RangeText = expression.GetText()
                });
            }

            if (expression is BinaryExpression be)
            {
                switch (be.Operator)
                {
                case OperatorType.LessThan:
                case OperatorType.GreaterThan:
                case OperatorType.LessThanEqual:
                case OperatorType.GreaterThanEqual:
                    var fieldName = ExtractFieldName(be, query);

                    var r          = (ValueExpression)be.Right;
                    var fieldValue = ConvertFieldValue(r.Token, r.Value);

                    type = fieldValue.Type;

                    var range = new ParsedRange
                    {
                        Field     = fieldName,
                        RangeText = expression.GetText()
                    };

                    if (be.Operator == OperatorType.LessThan || be.Operator == OperatorType.LessThanEqual)
                    {
                        range.HighValue     = fieldValue.Value;
                        range.HighInclusive = be.Operator == OperatorType.LessThanEqual;

                        return(range);
                    }

                    if (be.Operator == OperatorType.GreaterThan || be.Operator == OperatorType.GreaterThanEqual)
                    {
                        range.LowValue     = fieldValue.Value;
                        range.LowInclusive = be.Operator == OperatorType.GreaterThanEqual;

                        return(range);
                    }

                    return(range);

                case OperatorType.And:
                    var left  = ParseRange(be.Left, query, out var lType);
                    var right = ParseRange(be.Right, query, out var rType);

                    if (lType != rType)
                    {
                        ThrowDifferentTypesOfRangeValues(query, lType, rType, left.Field);
                    }

                    type = lType;

                    if (left.HighValue == null)
                    {
                        left.HighValue     = right.HighValue;
                        left.HighInclusive = right.HighInclusive;
                    }

                    if (left.LowValue == null)
                    {
                        left.LowValue     = right.LowValue;
                        left.LowInclusive = right.LowInclusive;
                    }

                    left.RangeText = expression.GetText();
                    return(left);

                default:
                    ThrowUnsupportedRangeOperator(query, be.Operator);
                    break;
                }
            }

            ThrowUnsupportedRangeExpression(query, expression);
            type = RangeType.None;
            return(null);
        }
Ejemplo n.º 59
0
        public async Task <List <FrequentlyAskedQuestions> > getContractSpecificFAQS(string patientId, SoapEntityRepository entityRepository)
        {
            try
            {
                if (!string.IsNullOrEmpty(patientId))
                {
                    List <FrequentlyAskedQuestions> FAQS = new List <FrequentlyAskedQuestions>();
                    QueryExpression query = new QueryExpression("mzk_faqconfiguration");
                    query.Criteria.AddCondition("mzk_servicespecific", ConditionOperator.Equal, true);
                    query.ColumnSet = new ColumnSet("mzk_faqconfigurationid", "mzk_name", "entityimage");
                    LinkEntity FAQContract = new LinkEntity("mzk_faqconfiguration", "mzk_faqconfigurationcontract", "mzk_faqconfigurationid", "mzk_faqconfiguration", JoinOperator.LeftOuter)
                    {
                    };
                    LinkEntity FAQContractManagement = new LinkEntity("mzk_faqconfigurationcontract", "mzk_contractmanagement", "mzk_contract", "mzk_contractmanagementid", JoinOperator.LeftOuter)
                    {
                    };
                    LinkEntity ContractReferral = new LinkEntity("mzk_contractmanagement", "opportunity", "mzk_contractmanagementid", "mzk_contract", JoinOperator.Inner)
                    {
                        LinkCriteria =
                        {
                            Conditions     =
                            {
                                new ConditionExpression("mzk_status", ConditionOperator.Equal, 275380001), //Active
                                new ConditionExpression("mzk_status", ConditionOperator.Equal, 275380004)  //Reviewed
                            },
                            FilterOperator = LogicalOperator.Or
                        },
                    };
                    LinkEntity ReferralPatient = new LinkEntity("opportunity", "contact", "parentcontactid", "contactid", JoinOperator.Inner)
                    {
                        LinkCriteria =
                        {
                            Conditions =
                            {
                                new ConditionExpression("contactid", ConditionOperator.Equal, new Guid(patientId)),
                            }
                        },
                    };

                    FAQContract.LinkEntities.Add(FAQContractManagement);
                    FAQContractManagement.LinkEntities.Add(ContractReferral);
                    ContractReferral.LinkEntities.Add(ReferralPatient);
                    query.LinkEntities.Add(FAQContract);

                    EntityCollection entitycollection = entityRepository.GetEntityCollection(query);
                    var groupedFAQS = entitycollection.Entities.GroupBy(item => (item.GetAttributeValue <Guid>("mzk_faqconfigurationid")));
                    foreach (var faqs in groupedFAQS)
                    {
                        foreach (Entity entity in faqs)
                        {
                            FrequentlyAskedQuestions FAQ = new FrequentlyAskedQuestions();
                            if (entity.Attributes.Contains("mzk_faqconfigurationid"))
                            {
                                FAQ.FAQId = entity["mzk_faqconfigurationid"].ToString();
                            }
                            if (entity.Attributes.Contains("mzk_name"))
                            {
                                FAQ.name = entity["mzk_name"].ToString();
                            }
                            if (entity.Attributes.Contains("entityimage"))
                            {
                                byte[] imageInBytes = (entity.Attributes["entityimage"]) as byte[];
                                FAQ.image = Convert.ToBase64String(imageInBytes);
                            }
                            FAQS.Add(FAQ);
                            break;
                        }
                    }
                    return(FAQS);
                }
                else
                {
                    throw new ValidationException("Patient Id missing");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 60
0
        public void Run(ServerConnection.Configuration serverConfig,
                        bool promptforDelete)
        {
            using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri, serverConfig.Credentials, serverConfig.DeviceCredentials))
            {
                // This statement is required to enable early bound type support.
                _serviceProxy.EnableProxyTypes();
                CreateRequiredRecords();

                Console.WriteLine("=== Creating and Qualifying Leads ===");

                // Create two leads.
                var lead1 = new Lead
                {
                    CompanyName = "A. Datum Corporation",
                    FirstName   = "Henriette",
                    LastName    = "Andersen",
                    Subject     = "Sample Lead 1"
                };

                _lead1Id = _serviceProxy.Create(lead1);
                NotifyEntityCreated(Lead.EntityLogicalName, _lead1Id);

                var lead2 = new Lead
                {
                    CompanyName = "Adventure Works",
                    FirstName   = "Michael",
                    LastName    = "Sullivan",
                    Subject     = "Sample Lead 2"
                };

                _lead2Id = _serviceProxy.Create(lead2);
                NotifyEntityCreated(Lead.EntityLogicalName, _lead2Id);

                // Qualify the first lead, creating an account and a contact from it, but
                // not creating an opportunity.
                var qualifyIntoAccountContactReq = new QualifyLeadRequest
                {
                    CreateAccount = true,
                    CreateContact = true,
                    LeadId        = new EntityReference(Lead.EntityLogicalName, _lead1Id),
                    Status        = new OptionSetValue((int)lead_statuscode.Qualified)
                };

                var qualifyIntoAccountContactRes =
                    (QualifyLeadResponse)_serviceProxy.Execute(qualifyIntoAccountContactReq);
                Console.WriteLine("  The first lead was qualified.");
                foreach (var entity in qualifyIntoAccountContactRes.CreatedEntities)
                {
                    NotifyEntityCreated(entity.LogicalName, entity.Id);
                    if (entity.LogicalName == Account.EntityLogicalName)
                    {
                        _leadAccountId = entity.Id;
                    }
                    else if (entity.LogicalName == Contact.EntityLogicalName)
                    {
                        _contactId = entity.Id;
                    }
                }

                // Retrieve the organization's base currency ID for setting the
                // transaction currency of the opportunity.
                var query = new QueryExpression("organization");
                query.ColumnSet = new ColumnSet("basecurrencyid");
                var result     = _serviceProxy.RetrieveMultiple(query);
                var currencyId = (EntityReference)result.Entities[0]["basecurrencyid"];

                // Qualify the second lead, creating an opportunity from it, and not
                // creating an account or a contact.  We use an existing account for the
                // opportunity customer instead.
                var qualifyIntoOpportunityReq = new QualifyLeadRequest
                {
                    CreateOpportunity     = true,
                    OpportunityCurrencyId = currencyId,
                    OpportunityCustomerId = new EntityReference(
                        Account.EntityLogicalName,
                        _accountId),
                    Status = new OptionSetValue((int)lead_statuscode.Qualified),
                    LeadId = new EntityReference(Lead.EntityLogicalName, _lead2Id)
                };

                var qualifyIntoOpportunityRes =
                    (QualifyLeadResponse)_serviceProxy.Execute(qualifyIntoOpportunityReq);
                Console.WriteLine("  The second lead was qualified.");

                foreach (var entity in qualifyIntoOpportunityRes.CreatedEntities)
                {
                    NotifyEntityCreated(entity.LogicalName, entity.Id);
                    if (entity.LogicalName == Opportunity.EntityLogicalName)
                    {
                        _opportunityId = entity.Id;
                    }
                }

                DeleteRecords(promptforDelete);
            }
        }