Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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);
        }