public static async Task <IActionResult> RunAsync( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, [Queue("e-commerce-emails")] IAsyncCollector <CloudQueueMessage> messages, ILogger log) { log.LogInformation($"Webhook activated at {DateTime.Now}"); var watch = new Stopwatch(); watch.Start(); //getting connection string //https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/xrm-tooling/use-connection-strings-xrm-tooling-connect var connectionString = Environment.GetEnvironmentVariable("CDSConnString"); var svc = new CdsServiceClient(connectionString); var myCdsUserId = svc.GetMyCdsUserId(); var qe = new QueryExpression { EntityName = "account", ColumnSet = new ColumnSet() }; qe.ColumnSet.Columns.Add("name"); qe.LinkEntities.Add(new LinkEntity("account", "contact", "primarycontactid", "contactid", JoinOperator.Inner)); qe.LinkEntities[0].Columns.AddColumns("firstname", "lastname"); qe.LinkEntities[0].EntityAlias = "primarycontact"; var ec = svc.RetrieveMultiple(qe); string currentEmailContent = string.Empty; foreach (var act in ec.Entities) { var accountName = act["name"]?.ToString(); var firstName = act.GetAttributeValue <AliasedValue>("primarycontact.firstname")?.Value?.ToString(); var lastName = act.GetAttributeValue <AliasedValue>("primarycontact.lastname")?.Value?.ToString(); currentEmailContent += $"Account {accountName}: {firstName} {lastName}"; log.LogInformation(currentEmailContent); } await messages.AddAsync(new CloudQueueMessage(currentEmailContent)); watch.Stop(); var elapsedInfo = $"Report and execution from Dynamics lasted for {watch.ElapsedMilliseconds} ms ({watch.Elapsed.Seconds} s) for user @{myCdsUserId}"; log.LogInformation(elapsedInfo); return((ActionResult) new OkObjectResult(elapsedInfo)); }
public string CheckStatus() { try { _client.GetMyCdsUserId(); } catch (Exception e) { return(e.Message); } return(HealthCheckResponse.StatusOk); }
public void GetCurrentUser() { Mock <IOrganizationService> orgSvc = null; Mock <MoqHttpMessagehander> fakHttpMethodHander = null; CdsServiceClient cli = null; testSupport.SetupMockAndSupport(out orgSvc, out fakHttpMethodHander, out cli); var rsp01 = cli.GetMyCdsUserId(); // Validate that the user ID sent in is the UserID that comes out. Assert.Equal(rsp01, testSupport._UserId); }
static void Main(string[] args) { HorizontalRule("Getting data from CDS"); var connString = Environment.GetEnvironmentVariable("CDSConnString"); var svc = new CdsServiceClient(connString); var myCdsUserId = svc.GetMyCdsUserId(); AnsiConsole.WriteLine("My user ID is " + myCdsUserId); HorizontalRule("Getting back account with primary contacts"); var qe = new QueryExpression { EntityName = "account", ColumnSet = new ColumnSet() }; qe.ColumnSet.Columns.Add("name"); qe.LinkEntities.Add(new LinkEntity("account", "contact", "primarycontactid", "contactid", JoinOperator.Inner)); qe.LinkEntities[0].Columns.AddColumns("firstname", "lastname"); qe.LinkEntities[0].EntityAlias = "primarycontact"; var ec = svc.RetrieveMultiple(qe); AnsiConsole.WriteLine($"Retrieved {ec.Entities.Count} entities"); var projectRepresentation = new Table() .Border(TableBorder.Square) .BorderColor(Color.Red) .AddColumn(new TableColumn("Name")) .AddColumn(new TableColumn("First Name")) .AddColumn(new TableColumn("Last Name")); foreach (var act in ec.Entities) { var accountName = act["name"]?.ToString(); var firstName = act.GetAttributeValue <AliasedValue>("primarycontact.firstname")?.Value?.ToString(); var lastName = act.GetAttributeValue <AliasedValue>("primarycontact.lastname")?.Value?.ToString(); projectRepresentation.AddRow(accountName ?? "", firstName ?? "", lastName ?? ""); } AnsiConsole.Render(projectRepresentation); Console.WriteLine("Retrieved {0} entities", ec.Entities.Count); }