private string CreateApplicationFileReport(FileType ft, string leftColumnClass = "", string rightColumnClass = "")
{
string report;
int totalUploaded = 0;
int averageSize = 0;
int averagePerFolder = 0;
int averagePerUser = 0;
int mostImagesInOneUserAccount = 0;
int totalFolders;
var filesID = from i in dbContext.Types
where i.FileType == ft
select i.TypeID;
var files = from f in dbContext.Files
where filesID.Contains(f.TypeID)
select f;
totalUploaded = files.Count();
totalFolders = dbContext.Folders.Count();
// check for divide by zero
if (totalFolders != 0)
{
averagePerFolder = totalUploaded / totalFolders;
}
else
{
averagePerFolder = 0;
}
// check for divide by zero
if (totalUploaded != 0)
{
averageSize = files.Sum(i => i.SizeMB) / totalUploaded;
}
else
{
averageSize = 0;
}
var users = from u in dbContext.Users
select u.UserID;
foreach(var id in users)
{
int count = files.Where(i => i.UserID == id).Count();
if(mostImagesInOneUserAccount < count)
{
mostImagesInOneUserAccount = count;
}
}
var usersCount = users.Distinct().Count();
// check for divide by zero
if (usersCount != 0)
{
averagePerUser = files.Count() / users.Distinct().Count();
}
else
{
averagePerUser = 0;
}
report = "<span class=\"" + leftColumnClass + "\" id=\"row-background-color\">Total Uploaded</span><span class=\"" + rightColumnClass + "\" id=\"row-background-color\">" +
totalUploaded.ToString() + "</span>";
report += "<br><span class=\"" + leftColumnClass + "\">Average Size(KB)</span><span class=\"" + rightColumnClass + "\">" +
averageSize.ToString() + "</span>";
report += "<br><span class=\"" + leftColumnClass + "\" id=\"row-background-color\">Average Per Folder</span><span class=\"" + rightColumnClass + "\" id=\"row-background-color\">" +
averagePerFolder.ToString() + "</span>";
report += "<br><span class=\"" + leftColumnClass + "\" >Average Per User</span><span class=\"" + rightColumnClass + "\">" +
averagePerUser.ToString() + "</span>";
report += "<br><span class=\"" + leftColumnClass + "\" id=\"row-background-color\">Most Images In One Account</span><span class=\"" + rightColumnClass + "\" id=\"row-background-color\">" +
mostImagesInOneUserAccount.ToString() + "</span>";
return report;
}