Example #1
0
        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);
        }
Example #2
0
        /// <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&lt;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);
        }