Example #1
0
 public async Task<ActionResult> Outcomes(LineItemModel model, string submit)
 {
     switch (submit)
     {
         case "Delete LineItem":
             var deleteLineItemResponse = await OutcomesClient.DeleteLineItem(
                 model.LineItemServiceUrl,
                 model.ConsumerKey,
                 model.ConsumerSecret);
             model.HttpRequest = deleteLineItemResponse.HttpRequest;
             model.HttpResponse = deleteLineItemResponse.HttpResponse;
             switch (deleteLineItemResponse.StatusCode)
             {
                 case HttpStatusCode.OK:
                     model.LineItem = null;
                     ModelState.Clear();
                     ViewBag.Message = "200 LineItem deleted";
                     break;
                 case HttpStatusCode.Unauthorized:
                     ViewBag.Message = "401 Not authorized";
                     break;
                 case HttpStatusCode.NotFound:
                     ViewBag.Message = "404 Not found";
                     break;
                 case HttpStatusCode.InternalServerError:
                     ViewBag.Message = "500 Internal server error";
                     break;
                 default:
                     ViewBag.Message = Convert.ToInt32(deleteLineItemResponse.StatusCode) + " " + deleteLineItemResponse.StatusCode;
                     break;
             }
             break;
         case "Get LineItem":
             var getLineItemResponse = await OutcomesClient.GetLineItem(
                 model.LineItemServiceUrl,
                 model.ConsumerKey,
                 model.ConsumerSecret);
             model.HttpRequest = getLineItemResponse.HttpRequest;
             model.HttpResponse = getLineItemResponse.HttpResponse;
             switch (getLineItemResponse.StatusCode)
             {
                 case HttpStatusCode.OK:
                     model.LineItem = getLineItemResponse.Outcome;
                     ModelState.Clear();
                     ViewBag.Message = "200 LineItem received";
                     break;
                 case HttpStatusCode.Unauthorized:
                     ViewBag.Message = "401 Not authorized";
                     break;
                 case HttpStatusCode.NotFound:
                     ViewBag.Message = "404 Not found";
                     break;
                 case HttpStatusCode.InternalServerError:
                     ViewBag.Message = "500 Internal server error";
                     break;
                 default:
                     ViewBag.Message = Convert.ToInt32(getLineItemResponse.StatusCode) + " " + getLineItemResponse.StatusCode;
                     break;
             }
             break;
         case "Get LineItems":
             var getLineItemsResponse = await OutcomesClient.GetLineItemPage(
                 model.LineItemsServiceUrl,
                 model.ConsumerKey,
                 model.ConsumerSecret);
             model.HttpRequest = getLineItemsResponse.HttpRequest;
             model.HttpResponse = getLineItemsResponse.HttpResponse;
             switch (getLineItemsResponse.StatusCode)
             {
                 case HttpStatusCode.OK:
                     ViewBag.Message = "200 LineItems received";
                     break;
                 case HttpStatusCode.Unauthorized:
                     ViewBag.Message = "401 Not authorized";
                     break;
                 case HttpStatusCode.NotFound:
                     ViewBag.Message = "404 Not found";
                     break;
                 case HttpStatusCode.InternalServerError:
                     ViewBag.Message = "500 Internal server error";
                     break;
                 default:
                     ViewBag.Message = Convert.ToInt32(getLineItemsResponse.StatusCode) + " " + getLineItemsResponse.StatusCode;
                     break;
             }
             break;
         case "Post LineItem":
             var postLineItem = new LineItem
             {
                 ReportingMethod = "res:totalScore",
                 LineItemOf = new Context { ContextId = model.ContextId},
                 AssignedActivity = new Activity { ActivityId = model.LineItem.AssignedActivity.ActivityId},
                 ScoreContraints = new NumericLimits {  NormalMaximum = 100, ExtraCreditMaximum = 10, TotalMaximum = 110}
             };
             var postLineItemResponse = await OutcomesClient.PostLineItem(
                 postLineItem,
                 model.LineItemsServiceUrl,
                 model.ConsumerKey,
                 model.ConsumerSecret);
             model.HttpRequest = postLineItemResponse.HttpRequest;
             model.HttpResponse = postLineItemResponse.HttpResponse;
             switch (postLineItemResponse.StatusCode)
             {
                 case HttpStatusCode.Created:
                     model.LineItem = postLineItemResponse.Outcome;
                     ModelState.Clear();
                     ViewBag.Message = "201 LineItem added";
                     break;
                 case HttpStatusCode.BadRequest:
                     ViewBag.Message = "400 Bad Request";
                     break;
                 case HttpStatusCode.Unauthorized:
                     ViewBag.Message = "401 Not authorized";
                     break;
                 case HttpStatusCode.InternalServerError:
                     ViewBag.Message = "500 Internal server error";
                     break;
                 default:
                     ViewBag.Message = Convert.ToInt32(postLineItemResponse.StatusCode) + " " + postLineItemResponse.StatusCode;
                     break;
             }
             break;
         case "Put LineItem":
             var putLineItem = new LineItem
             {
                 Id = model.LineItem.Id,
                 ReportingMethod = "res:totalScore",
                 LineItemOf = new Context { ContextId = model.ContextId },
                 AssignedActivity = new Activity { ActivityId = model.LineItem.AssignedActivity.ActivityId },
                 ScoreContraints = new NumericLimits { NormalMaximum = 100, ExtraCreditMaximum = 10, TotalMaximum = 110 },
                 Results = model.LineItem.Results
             };
             var putLineItemResponse = await OutcomesClient.PutLineItem(
                 putLineItem,
                 model.LineItemsServiceUrl,
                 model.ConsumerKey,
                 model.ConsumerSecret);
             model.HttpRequest = putLineItemResponse.HttpRequest;
             model.HttpResponse = putLineItemResponse.HttpResponse;
             switch (putLineItemResponse.StatusCode)
             {
                 case HttpStatusCode.OK:
                     ViewBag.Message = "200 LineItem updated";
                     break;
                 case HttpStatusCode.Unauthorized:
                     ViewBag.Message = "401 Not authorized";
                     break;
                 case HttpStatusCode.NotFound:
                     ViewBag.Message = "404 Not found";
                     break;
                 case HttpStatusCode.InternalServerError:
                     ViewBag.Message = "500 Internal server error";
                     break;
                 default:
                     ViewBag.Message = Convert.ToInt32(putLineItemResponse.StatusCode) + " " + putLineItemResponse.StatusCode;
                     break;
             }
             break;
     }
     return View(model);
 }
Example #2
0
        // 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 V2 (scores)

        /// <summary>
        /// Display the Outcomes V2 settings and provide buttons to exercise the three actions.
        /// </summary>
        public ActionResult Outcomes(string lineItemServiceUrl, string lineItemsServiceUrl, string contextId, string consumerKey, string consumerSecret)
        {
            var model = new LineItemModel
            {
                LineItemServiceUrl = lineItemServiceUrl,
                LineItemsServiceUrl = lineItemsServiceUrl,
                ConsumerKey = consumerKey,
                ConsumerSecret = consumerSecret,
                ContextId = contextId
            };
            return View(model);
        }