public static NewColumnRequest GetRequestFromDynamicObject(dynamic request) { var newRequest = new NewColumnRequest(); if (request.newColumn.dataType == ColumnDataType.Number) { var newCol = new NumericDataColumn { Name = request.newColumn.name, ColumnId = request.newColumn.columnId, ColumnType = request.newColumn.columnType, DataType = request.newColumn.dataType, RelatedDataId = request.newColumn.relatedDataId, CalcRule = request.newColumn.calcRule, ColMaxValue = request.newColumn.colMaxValue, ColMinValue = request.newColumn.colMinValue, Rows = new List <NumericDataRow>() }; newRequest.NewColumn = newCol; } else { var newCol = new StringDataColumn { Name = request.newColumn.name, ColumnId = request.newColumn.columnId, ColumnType = request.newColumn.columnType, DataType = request.newColumn.dataType, RelatedDataId = request.newColumn.relatedDataId, CalcRule = request.newColumn.calcRule, ColMaxValue = request.newColumn.colMaxValue, ColMinValue = request.newColumn.colMinValue, Rows = new List <StringDataRow>() }; newRequest.NewColumn = newCol; } return(newRequest); }
/// <summary> /// Returns the list of custom data columns related with the Canvas Gradebook of a particular course /// </summary> /// <param name="accessToken">The Canvas Personal Access Token being used</param> /// <param name="courseId">The id of the course</param> /// <returns>List<CourseDataColumn>: Custom Columns of Canvas Gradebook</returns> public List <CourseDataColumn> GetCustomDataColumns(string accessToken, int courseId) { var custDataColumns = new List <CourseDataColumn>(); var canvasCustCols = _canvasDataAccess.GetCustomColumns(accessToken, courseId); var custColsDb = _dbCtx.CustomDataColumns.Where(x => x.CourseId == courseId).ToList(); foreach (var canvasCol in canvasCustCols) { var currDbCol = custColsDb.Where(x => x.RelatedDataId == canvasCol.Id).FirstOrDefault(); if (currDbCol != null) { // The derived data columns should be loaded last since they derive data from other columns // (hence it being called a "Dervied" column) if (currDbCol.ColumnType != ColumnType.Derived_Data) { CourseDataColumn newKnownCol; if (currDbCol.DataType == ColumnDataType.Number) { newKnownCol = new NumericDataColumn { Name = canvasCol.Title, DataType = currDbCol.DataType, ColumnType = currDbCol.ColumnType, RelatedDataId = canvasCol.Id, CalcRule = currDbCol.CalcRule, ColMaxValue = currDbCol.ColMaxValue, ColMinValue = currDbCol.ColMinValue, ColumnId = Guid.NewGuid() }; ((NumericDataColumn)newKnownCol).Rows = GetCustomDataRowsForNumberColumns(accessToken, courseId, newKnownCol); } else { newKnownCol = new StringDataColumn { Name = canvasCol.Title, DataType = currDbCol.DataType, ColumnType = currDbCol.ColumnType, RelatedDataId = canvasCol.Id, CalcRule = currDbCol.CalcRule, ColMaxValue = currDbCol.ColMaxValue, ColMinValue = currDbCol.ColMinValue, ColumnId = Guid.NewGuid() }; ((StringDataColumn)newKnownCol).Rows = GetCustomDataFromStringColumns(accessToken, courseId, newKnownCol); } custDataColumns.Add(newKnownCol); } } else { var newCol = new CourseDataColumn { Name = canvasCol.Title, RelatedDataId = canvasCol.Id, ColumnType = ColumnType.Custom_Canvas_Column, }; var newColRows = GetCustomColumnDataRowsForUnknownTypes(accessToken, courseId, newCol); newCol.DataType = GetColumnDataType(newColRows[0].Value); if (newColRows != null) { if (newColRows.Count > 0) { } } if (newCol.DataType == ColumnDataType.Number) { var numCol = (NumericDataColumn)newCol; numCol.Rows = new List <NumericDataRow>(); foreach (var row in newColRows) { numCol.Rows.Add(new NumericDataRow { ColumnId = Guid.NewGuid(), AssociatedUser = row.AssociatedUser, Value = double.Parse(row.Value), ValueChanged = false }); } custDataColumns.Add(numCol); } else { var strCol = (StringDataColumn)newCol; strCol.Rows = newColRows; custDataColumns.Add(strCol); } } } return(custDataColumns); }