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); } }
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 }
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; }
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})"); }
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; }
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); } }
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); } }