PAWA.Classes.AdminReports.CreateTableForFileUsage C# (CSharp) Method

CreateTableForFileUsage() private method

private CreateTableForFileUsage ( FileType ft, string columnHeaders, string tableId = "", string headerClass = "" ) : string
ft FileType
columnHeaders string
tableId string
headerClass string
return string
        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);
        }