private string CreateTableForFileUsage(FileType ft, string[] columnHeaders, string tableId = "", string headerClass = "")
{
string[] status = { "Active", "Inactive", "Frozen" };
List<List<string>> rows = new List<List<string>>();
List<string> columns;
double percentageOfUploads;
int totalFiles = dbContext.Files.Count();
var fileType = from t in dbContext.Types
where t.FileType == ft
select t;
var fileTypeID = from t in fileType
select t.TypeID;
var files = from f in dbContext.Files
where fileTypeID.Contains(f.TypeID)
select f;
int totalImages = files.Count();
foreach (var type in fileTypeID)
{
var filesWithExt = from f in files
where f.TypeID == type
select f;
columns = new List<string>();
var getType = fileType.Where(t => t.TypeID == type).SingleOrDefault();
// file extension
columns.Add(getType.Extension.ToString());
int totalFilesWithExt = filesWithExt.Count();
columns.Add(totalFilesWithExt.ToString());
// percentage of uploads of file type with respect to total uploads
// check for divide by zero
if (totalFiles != 0)
{
percentageOfUploads = (double)totalFilesWithExt / (double)totalFiles * 100.0;
percentageOfUploads = Math.Round(percentageOfUploads, 3, MidpointRounding.ToEven);
}
else
{
percentageOfUploads = 0;
}
columns.Add(percentageOfUploads.ToString());
// percentage of uploads of file type with respect to total file category
// check for divide by zero
if (totalImages != 0)
{
percentageOfUploads = (double)totalFilesWithExt / (double)totalImages * 100.0;
percentageOfUploads = Math.Round(percentageOfUploads, 3, MidpointRounding.ToEven);
}
else
{
percentageOfUploads = 0;
}
columns.Add(percentageOfUploads.ToString());
columns.Add(status[(int)getType.Status]);
rows.Add(columns);
}
return CreateTable(5, columnHeaders, rows, tableId, headerClass);
}