示例#1
0
        public async Task <ActionResult> CreateSubscription()
        {
            if (User.Identity.IsAuthenticated)
            {
                string       identifier          = User.FindFirst(Startup.ObjectIdentifierType)?.Value;
                var          graphClient         = _graphSdkHelper.GetAuthenticatedClient(identifier);
                Subscription createdSubscription = null;

                /// <exercise_hint>
                /// Some hints that can help you.
                /// Creating subscription https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/subscription_post_subscriptions
                /// </exercise_hint>

                /// ADD CODE HERE

                SubscriptionViewModel viewModel = new SubscriptionViewModel
                {
                    Subscription = JsonConvert.DeserializeObject <Models.Subscription>(JsonConvert.SerializeObject(createdSubscription))
                };

                SubscriptionStore.SaveSubscriptionInfo(viewModel.Subscription.Id,
                                                       viewModel.Subscription.ClientState,
                                                       User.FindFirst(Startup.ObjectIdentifierType)?.Value,
                                                       User.FindFirst(Startup.TenantIdType)?.Value);
                subscriptionId = viewModel.Subscription.Id;

                return(View("Subscription", createdSubscription));
            }

            return(View("Subscription", null));
        }
        public async Task <ActionResult> CreateSubscription()
        {
            if (User.Identity.IsAuthenticated)
            {
                string       identifier          = User.FindFirst(Startup.ObjectIdentifierType)?.Value;
                var          graphClient         = _graphSdkHelper.GetAuthenticatedClient(identifier);
                Subscription createdSubscription = null;
                Subscription subscription        = new Subscription
                {
                    Resource           = "me/messages",
                    ChangeType         = "created,updated",
                    NotificationUrl    = GraphAuthProvider.GetNotificationUrl(),
                    ClientState        = Guid.NewGuid().ToString(),
                    ExpirationDateTime = DateTime.UtcNow + new TimeSpan(0, 0, 15, 0)
                };

                try
                {
                    createdSubscription = await graphClient.Subscriptions.Request().AddAsync(subscription);
                }
                catch (ServiceException e)
                {
                    string message = e.Message;
                    return(RedirectToAction("Index", "Error", new { message = e.Message, debug = e.Message }));
                }

                SubscriptionViewModel viewModel = new SubscriptionViewModel
                {
                    Subscription = JsonConvert.DeserializeObject <Models.Subscription>(JsonConvert.SerializeObject(createdSubscription))
                };

                SubscriptionStore.SaveSubscriptionInfo(viewModel.Subscription.Id,
                                                       viewModel.Subscription.ClientState,
                                                       User.FindFirst(Startup.ObjectIdentifierType)?.Value,
                                                       User.FindFirst(Startup.TenantIdType)?.Value);
                subscriptionId = viewModel.Subscription.Id;

                return(View("Subscription", createdSubscription));
            }

            return(View("Subscription", null));
        }