コード例 #1
0
        // returns card template if empty
        public Attachment CreatePtoCard(PtoRequest ptoData)
        {
            var cardName      = "approval-card";
            var ptoDataString = JsonConvert.SerializeObject(ptoData);
            // combine path for cross platform
            var populatedCard = PopulateCard(ptoDataString, cardName);

            var adaptiveCardAttachment = new Attachment()
            {
                ContentType = "application/vnd.microsoft.card.adaptive",
                Content     = JsonConvert.DeserializeObject(populatedCard),
            };

            return(adaptiveCardAttachment);
        }
コード例 #2
0
        public async Task <IActionResult> PostAsync([FromBody] PtoRequest pto)
        {
            _logger.LogInformation("Pto request received.", pto);
            _currentRequest = pto;

            // make api calls to get email address
            try
            {
                var restClient     = new RestClient(_baseApiUrl);
                var managerRequest = new RestRequest($"user/{pto.ManagerUserId}", DataFormat.Json);
                managerRequest.AddHeader("Authorization", $"Bearer {_bearerToken}");
                var managerResponse = await restClient.ExecuteAsync(managerRequest, Method.GET);

                var managerEmail = JObject.Parse(managerResponse.Content)["email"].ToString();
                pto.ManagerEmail = managerEmail;
            }
            catch (Exception ex)
            {
                _logger.LogError("Unable to find manager");
                return(new BadRequestObjectResult(pto));
            }

            // find approprivate personal conversation
            var personalManagerConversation = _conversationReferences.Values.FirstOrDefault(
                x => x.User.Properties["upn"].ToString().ToLower() == pto.ManagerEmail.ToLower() &&
                x.Conversation.ConversationType == "personal");

            _logger.LogInformation("Manager found.", personalManagerConversation.User.Name);

            // don't do anything if no manager found
            if (personalManagerConversation == null)
            {
                return(new NotFoundResult());
            }

            await((BotAdapter)_adapter).ContinueConversationAsync(_appId, personalManagerConversation, CreatePtoCard, default);

            _logger.LogInformation("Adaptive card sent.");

            // posts the complete results back to the page
            return(new OkObjectResult(pto));
        }