public static FileStructure GetCourseFiles(string sessionId, int userId, int courseId) { try { DataTable table = new DataAccess(ConnectionString).ExecuteQuerySP("SP_GetFilesByCourseID", "@SessionID", sessionId, "@UserID", userId, "@courseID", courseId); if (table == null || table.Rows.Count == 0) return null; FileStructure struc = null; List<FileItem> files = new List<FileItem>(); foreach (DataRow row in table.Rows) { int id, ownerId, perantId, rate,typeId, size,rUsers; bool isFolder; ParseCellDataToInt(row["ID"], out id); ParseCellDataToInt(row["UserId"], out ownerId); ParseCellDataToInt(row["ParentFileID"], out perantId); ParseCellDataToInt(row["Rate"], out rate); ParseCellDataToInt(row["RatingUsers"], out rUsers); ParseCellDataToInt(row["TypeID"], out typeId); ParseCellDataToBool(row["IsFolder"], out isFolder); ParseCellDataToInt(row["Size"], out size); FileType type = new FileType { ID=typeId, Description = ParseCellDataToString(row["Type"]), Extension = ParseCellDataToString(row["Extension"]), ImageUrl = ParseCellDataToString(row["ImageUrl"]) }; FileItem item = new FileItem { FileName = ParseCellDataToString(row["FileName"]), Type = type, SubItems=null, OwnerName = ParseCellDataToString(row["UserName"]), LastModify = ParseCellDataToDateTime(row["LastModify"]), ID=id, IsFolder=isFolder, OwnerId=ownerId, PerantID=perantId, Rate = ((double)rate / rUsers), Size=size }; if (rate == 0 && rUsers == 0) item.Rate = -1; files.Add(item); } struc = new FileStructure(files.Where(x => x.PerantID == -1).First()); files.Remove(struc.RootFolder); while (files.Count != 0) { if (files.Count > 0 && struc.AddFileByPerantID(files[0])) files.Remove(files[0]); } return struc; } catch (Exception) { return null; } }