Esempio n. 1
0
        /// <summary>
        /// Creates a list of Bulk update Canvas entries from
        /// </summary>
        /// <param name="content">The string content from the csv file</param>
        /// <returns>CustomColumnsUpdateRequest: A "bulk update" request object to send to Canvas</returns>
        public CustomColumnsUpdateRequest CreateCanvasColumnRequestFromCsvString(string content,
                                                                                 List <DataTableStudent> students, int columnId)
        {
            var custColReq = new CustomColumnsUpdateRequest();

            custColReq.ColumnData = new List <CustomColumnDataEntry>();
            var csvLines = content.Split("\n");
            var headers  = content.Split(",");

            for (int i = 1; i < csvLines.Length; i++)
            {
                var currLine = csvLines[i].Split(",");
                var student  = students.Where(x => x.InstitutionId.Equals(currLine[0])).FirstOrDefault();
                if (student != null)
                {
                    var newEntry = new CustomColumnDataEntry
                    {
                        ColumnId = columnId,
                        Content  = currLine[1],
                        UserId   = student.Id
                    };
                    custColReq.ColumnData.Add(newEntry);
                }
            }
            return(custColReq);
        }
        /// <summary>
        /// Sets all the entries for a custom column on Canvas
        /// </summary>
        /// <param name="accessToken">The API key to use to access Canvas</param>
        /// <param name="courseId">The id of the course</param>
        /// <param name="updateRequest">A request that contains the rows to update in the custom column</param>
        public void SetCustomColumnEntries(string accessToken, int courseId, CustomColumnsUpdateRequest updateRequest)
        {
            string requestUrl = $"{_config.canvasBaseUrl}/courses/{courseId}/custom_gradebook_column_data";
            var    request    = WebRequest.CreateHttp(requestUrl);

            request.Headers.Add("Authorization", $"Bearer {accessToken}");
            request.ContentType = "application/json";
            request.Method      = "PUT";
            using (var streamWriter = new StreamWriter(request.GetRequestStream()))
            {
                string jsonContent = JsonConvert.SerializeObject(updateRequest);
                streamWriter.Write(jsonContent);
            }
            request.GetResponse();
        }