// LTI Outcomes reverse the relationship between Tool Consumers and Tool Providers. The Tool
        // Provider becomes a consumer of the Outcomes service hosted by the Tool Consumer. In this
        // sample, the Tool Provider and tell the Tool Consumer to save, read, and delete scores.
        #region Outcomes-1 (scores)

        /// <summary>
        /// Display the Basic Outcomes settings and provide buttons to exercise the three actions.
        /// </summary>
        /// <param name="lisOutcomeServiceUrl">The URL to the Outcomes service hosted by the Tool Consumer.</param>
        /// <param name="lisResultSourcedId">The SourcedId of the LisResult used in the demo.</param>
        /// <param name="consumerKey">The OAuth Consumer Key to use when sending requests to the Outcomes Service.</param>
        /// <param name="consumerSecret">The OAuth Consumer Secret to use when sending requests to the Outcomes Service.</param>
        /// <remarks>
        /// The Outcomes service is hosted by the Tool Consumer. The Tool Provider call the Outcomes service.
        /// </remarks>
        public ActionResult Outcomes1(string lisOutcomeServiceUrl, string lisResultSourcedId, string consumerKey, string consumerSecret)
        {
            var model = new Outcomes1Model
            {
                LisOutcomeServiceUrl = lisOutcomeServiceUrl,
                LisResultSourcedId   = lisResultSourcedId,
                ConsumerKey          = consumerKey,
                ConsumerSecret       = consumerSecret
            };

            return(View(model));
        }
Esempio n. 2
0
        public async Task <ActionResult> Outcomes1(Outcomes1Model model, string submit)
        {
            switch (submit)
            {
            case "Send Grade":
                if (await LtiLibrary.Core.Outcomes.v1.OutcomesClient.PostScoreAsync(model.LisOutcomeServiceUrl, model.ConsumerKey, model.ConsumerSecret,
                                                                                    model.LisResultSourcedId, model.Score))
                {
                    ViewBag.Message = "Grade sent";
                }
                else
                {
                    ViewBag.Message = "Invalid request";
                }
                break;

            case "Read Grade":
                var lisResult = await LtiLibrary.Core.Outcomes.v1.OutcomesClient.ReadScoreAsync(model.LisOutcomeServiceUrl, model.ConsumerKey,
                                                                                                model.ConsumerSecret, model.LisResultSourcedId);

                if (lisResult.IsValid)
                {
                    model.Score     = lisResult.Score;
                    ViewBag.Message = "Grade read";
                }
                else
                {
                    ViewBag.Message = "No grade";
                }
                break;

            case "Delete Grade":
                if (await LtiLibrary.Core.Outcomes.v1.OutcomesClient.DeleteScoreAsync(model.LisOutcomeServiceUrl, model.ConsumerKey, model.ConsumerSecret,
                                                                                      model.LisResultSourcedId))
                {
                    model.Score     = null;
                    ViewBag.Message = "Grade deleted";
                }
                else
                {
                    ViewBag.Message = "Invalid request";
                }
                break;
            }
            return(View(model));
        }