Example #1
0
        public void Execute(IServiceProvider serviceProvider)
        {
            ITracingService             tracer  = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
            IPluginExecutionContext     context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService        service = factory.CreateOrganizationService(context.UserId);

            EBooksDB.Instance.Initialize();

            try
            {
                QueryExpression query = context.InputParameterOrDefault <QueryExpression>("Query");

                var visitor = new SearchVisitor();
                query.Accept(visitor);

                EntityCollection results = new EntityCollection();

                results.Entities.AddRange(EBooksDB.Instance.Ebooks.Entities);
                context.OutputParameters["BusinessEntityCollection"] = results;
            }
            catch (Exception e)
            {
                throw new InvalidPluginExecutionException(e.Message);
            }
        }
Example #2
0
 private void ExecutePlugin(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService service, ITracingService tracing, Entity dataSource)
 {
     //Get Parameter from DataSource
     //var ??? = dataSource.GetAttributeValue<string>("???");
     //var ??? = dataSource.GetAttributeValue<int>("???");
     var target = context.InputParameterOrDefault <EntityReference>("Target");
     //YOUR CODE ...
 }
 private void ExecutePlugin(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService service, ITracingService tracing)
 {
     //var target = (Entity)context?.InputParameters?["Target"];
     var target = context.InputParameterOrDefault <Entity>("Target");
     //var preEntity = (Entity)context.PreEntityImages["PreImage"];
     //var postEntity = (Entity)context.PostEntityImages["PostImage"];
     //YOUR PLUGIN-CODE GO HERE
 }
Example #4
0
        private void ExecutePlugin(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService service, ITracingService tracing, Entity dataSource)
        {
            //Get Parameter from DataSource
            //var ??? = dataSource.GetAttributeValue<string>("???");
            //var ??? = dataSource.GetAttributeValue<int>("???");

            var query = context.InputParameterOrDefault <QueryExpression>("Query");

            var entities = new EntityCollection();

            entities.EntityName = "???";
            //YOUR CODE ...

            context.OutputParameters["BusinessEntityCollection"] = entities;
        }
Example #5
0
        public override void Execute(ITracingService tracer, IOrganizationService service, IPluginExecutionContext context)
        {
            var target = context.InputParameterOrDefault <EntityReference>(ContextProperties.Target);

            if (target == null)
            {
                return;
            }
            tracer.Trace($"Retrieve ${target.LogicalName} with id {target.Id}");

            var targetEntity = RetrieveRecord(service, target.Id);

            context.OutputParameters[ContextProperties.Result] = targetEntity;
            tracer.Trace($"Set ${ContextProperties.Result} with {targetEntity.LogicalName}({targetEntity.Id})");
        }
Example #6
0
        public void Execute(IServiceProvider serviceProvider)
        {
            ITracingService             tracer  = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
            IPluginExecutionContext     context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService        service = factory.CreateOrganizationService(context.UserId);

            QueryExpression      query              = context.InputParameterOrDefault <QueryExpression>("Query");
            var                  metadataHelper     = new MetadataHelper(service, query.EntityName);
            IOrganizationService externalCrmService = ExternalD365ServiceHelper.GetOrgWebProxyClient(service, metadataHelper.GetDatasourceId());

            var externalResults = externalCrmService.RetrieveMultiple(Mapper.MapQuery(metadataHelper, query));
            var results         = Mapper.MapExternalResults(metadataHelper, externalResults);

            context.OutputParameters["BusinessEntityCollection"] = results;
        }
Example #7
0
        public override void Execute(ITracingService tracer, IOrganizationService service, IPluginExecutionContext context)
        {
            var query = context.InputParameterOrDefault <QueryExpression>(ContextProperties.QueryExpression);

            if (query == null)
            {
                return;
            }
            tracer.Trace($"RetrieveMultiple ${query.EntityName}");
            var visitor = new CustomQueryVisitor();

            query.Accept(visitor);
            var records = RetrieveRecords(service);

            PrepareResults(visitor, records, context);
            tracer.Trace($"Set output with ${records.Count} records");
        }
        public void Execute(IServiceProvider serviceProvider)
        {
            ITracingService             tracer  = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
            IPluginExecutionContext     context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService        service = factory.CreateOrganizationService(context.UserId);

            //https://api.chucknorris.io/#!
            try
            {
                QueryExpression query = context.InputParameterOrDefault <QueryExpression>("Query");

                var visitor = new SearchVisitor();
                query.Accept(visitor);

                EntityCollection results = new EntityCollection();

                JokeIdHelper jokeIdHelper = new JokeIdHelper();

                if (string.IsNullOrEmpty(visitor.SearchKeyWord))
                {
                    tracer.Trace("Getting random joke");

                    var getRandomJokeTask = Task.Run(async() => await GetRandomJoke(tracer));
                    Task.WaitAll(getRandomJokeTask);

                    Result randomJoke = getRandomJokeTask.Result;

                    Entity joke = JokeHelper.CreateJoke(tracer, randomJoke, jokeIdHelper);
                    if (joke != null)
                    {
                        tracer.Trace($"Joke created: {joke.Id}");
                        results.Entities.Add(joke);
                    }
                }
                else
                {
                    tracer.Trace($"Searching jokes for: {visitor.SearchKeyWord}");

                    var getJokesByValueTask = Task.Run(async() => await GetJokesByValue(tracer, visitor.SearchKeyWord));
                    Task.WaitAll(getJokesByValueTask);

                    Jokes jokes = getJokesByValueTask.Result;

                    tracer.Trace($"Found {jokes.total} jokes");

                    foreach (Result result in jokes.result)
                    {
                        Entity joke = JokeHelper.CreateJoke(tracer, result, jokeIdHelper);
                        if (joke == null)
                        {
                            continue;
                        }

                        tracer.Trace($"Joke created: {joke.GetAttributeValue<Guid>("lat_chucknorrisjokeid")}");

                        results.Entities.Add(joke);
                    }
                }

                context.OutputParameters["BusinessEntityCollection"] = results;
            }
            catch (Exception e)
            {
                tracer.Trace($"{e.Message} {e.StackTrace}");
                if (e.InnerException != null)
                {
                    tracer.Trace($"{e.InnerException.Message} {e.InnerException.StackTrace}");
                }

                throw new InvalidPluginExecutionException(e.Message);
            }
        }
Example #9
0
        public void Execute(IServiceProvider serviceProvider)
        {
            //Get the trace provider
            ITracingService tracer = (ITracingService)serviceProvider.GetService(typeof(ITracingService));

            //get the execution context;
            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));


            //Get the service agent
            IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService        service = factory.CreateOrganizationService(context.UserId);

            try
            {
                tracer.Trace("RetrieveMultiple is called");
                QueryExpression query   = context.InputParameterOrDefault <QueryExpression>("Query");
                SearchVisitor   visitor = new SearchVisitor();
                query.Accept(visitor);


                IEntityDataSourceRetrieverService retrieveService = (IEntityDataSourceRetrieverService)serviceProvider.Get <IEntityDataSourceRetrieverService>();

                Entity sourceEntity = retrieveService.RetrieveEntityDataSource();

                string externalwebapiurl;

                if (string.IsNullOrEmpty(visitor.SearchKeyWords))
                {
                    //Get the settings of Data source
                    externalwebapiurl = sourceEntity.GetAttributeValue <string>("new_externalwebapiurl") + "/Students";
                }
                else
                {
                    tracer.Trace("Search keywords is " + visitor.SearchKeyWords);
                    //The search URL wil be like this: http://winstonodata4.azurewebsites.net/Students?$filter=contains(name,'D')
                    externalwebapiurl = sourceEntity.GetAttributeValue <string>("new_externalwebapiurl") + "/Students?$filter=contains(name,'" + visitor.SearchKeyWords + "')";
                }

                tracer.Trace("external web api url: " + externalwebapiurl);

                EntityCollection results = new EntityCollection();
                results.EntityName = "new_student";

                //Getting Data from ODATA
                tracer.Trace("Begin to get data");
                var getAPIDataTask = Task.Run(async() => await HttpHelper.GetAPIdata(externalwebapiurl));
                Task.WaitAll(getAPIDataTask);

                OData odata = getAPIDataTask.Result;


                foreach (QueryResult row in odata.Value)
                {
                    Entity newrecord = new Entity("new_student");

                    newrecord.Attributes.Add("new_studentid", row.StudentId);
                    newrecord.Attributes.Add("new_name", row.name);
                    newrecord.Attributes.Add("new_familyaddress", row.familyaddress);
                    //newrecord.Attributes.Add("new_age", row.age);
                    //newrecord.Attributes.Add("new_grade", row.grade);
                    newrecord.Attributes.Add("new_phoneno", row.phoneno);

                    results.Entities.Add(newrecord);
                }

                context.OutputParameters["BusinessEntityCollection"] = results;
            }
            catch (Exception ex)
            {
                throw new InvalidPluginExecutionException(ex.Message);
            }
        }