This is all the data fed into the stream variable s by the function and ac is just an application controller
public System.IO.Stream ExportApplicationResultDocument(string templatePath,
Image spiderDiagram,
Image bestDiagram,
Image worstDiagram,
DataTable questionsDurationBestCase,
DataTable questionsDuration,
IEnumerable trainingBestTable,
IEnumerable trainingWorstTable,
string assessedLevel,
string justification,
string resultingDecisionBest,
string resultingDecisionWorst,
InternalStatus status,
string applicantFirstName,
string applicantLastName,
string applicantEadsCorpId,
Image worstCaseTableImage,
Image bestCaseTableImage,
string assessedDate
)
{
DataRow[] partiallyAssessedResults;
DataTable exportQuestionResults;
WordDocument doc = WordDocument.OpenCopy(File.OpenRead(templatePath), true);
foreach (WordBookmark bm in doc.GetBookmarks())
{
switch (bm.Name)
{
case Constants.ApplicationResult.CriterionBestDiagram:
if (bestDiagram != null)
bm.SetBookmarkImage(bestDiagram);
break;
case Constants.ApplicationResult.CriterionBestTable:
exportQuestionResults = questionsDurationBestCase.Copy();
exportQuestionResults.Columns.Remove("1");
exportQuestionResults.Columns.Remove("2");
exportQuestionResults.Columns.Remove("3");
exportQuestionResults.Columns.Remove("4");
exportQuestionResults.Columns.Remove("5");
exportQuestionResults.Columns.Remove("6");
exportQuestionResults.Columns.Remove("7");
exportQuestionResults.Columns.Remove("8");
exportQuestionResults.Columns.Remove("9");
bm.SetBookmarkRow(exportQuestionResults, 2);
break;
case Constants.ApplicationResult.CriterionWorstDiagram:
if (worstDiagram != null)
bm.SetBookmarkImage(worstDiagram);
break;
case Constants.ApplicationResult.CriterionWorstTable:
exportQuestionResults = questionsDuration.Copy();
exportQuestionResults.Columns.Remove("1");
exportQuestionResults.Columns.Remove("2");
exportQuestionResults.Columns.Remove("3");
exportQuestionResults.Columns.Remove("4");
exportQuestionResults.Columns.Remove("5");
exportQuestionResults.Columns.Remove("6");
exportQuestionResults.Columns.Remove("7");
exportQuestionResults.Columns.Remove("8");
exportQuestionResults.Columns.Remove("9");
bm.SetBookmarkRow(exportQuestionResults, 2);
break;
case Constants.ApplicationResult.TrainingBestTable:
if (trainingBestTable != null)
{
bm.SetBookmarkRow(trainingBestTable, 2, "Title", "Duration");
}
break;
case Constants.ApplicationResult.TrainingWorstTable:
if (trainingWorstTable != null)
{
bm.SetBookmarkRow(trainingWorstTable, 2, "Title", "Duration");
}
break;
case Constants.ApplicationResult.AssessedLevel:
if (status.Equals(InternalStatus.SelfAssessed))
{
bm.Text = string.Empty;
}
else
{
bm.Text = assessedLevel;
}
break;
case Constants.ApplicationResult.Justification:
if (status.Equals(InternalStatus.SelfAssessed))
{
bm.Text = string.Empty;
}
else
{
bm.Text = justification;
}
break;
case Constants.ApplicationResult.AssessmentDate:
if (status.Equals(InternalStatus.SelfAssessed))
{
bm.Text = string.Empty;
}
else
{
bm.Text = assessedDate;
}
break;
case Constants.ApplicationResult.ResultingDecisionBestCase:
if (status.Equals(InternalStatus.SelfAssessed))
{
bm.Text = string.Empty;
}
else
{
bm.Text = resultingDecisionBest;
}
break;
case Constants.ApplicationResult.ResultingDecisionHeader:
if (status.Equals(InternalStatus.SelfAssessed))
{
bm.Text = string.Empty;
}
break;
case Constants.ApplicationResult.AssessedLevelHeader:
if (status.Equals(InternalStatus.SelfAssessed))
{
bm.Text = string.Empty;
}
break;
case Constants.ApplicationResult.JustificationHeader:
if (status.Equals(InternalStatus.SelfAssessed))
{
bm.Text = string.Empty;
}
break;
case Constants.ApplicationResult.ResultingDecisionWorstCase:
bm.Text = resultingDecisionWorst;
break;
case Constants.ApplicationResult.SpiderDiagram:
if (spiderDiagram != null)
bm.SetBookmarkImage(spiderDiagram);
break;
case Constants.ApplicationResult.GenericDisciplineWorst:
var query = from DataRow question in questionsDuration.Rows where ((string)question["GenericDiscipline"]).ToLower() != "none" select (string)question["GenericDiscipline"];
bm.Text = query.Distinct().Count().ToString();
break;
case Constants.ApplicationResult.GenericDisciplineBest:
var queryBest = from DataRow question in questionsDurationBestCase.Rows where ((string)question["GenericDiscipline"]).ToLower() != "none" select (string)question["GenericDiscipline"];
bm.Text = queryBest.Distinct().Count().ToString();
break;
case Constants.ApplicationResult.Q1SumWorst:
bm.Text = questionsDuration.Compute(string.Format(Constants.Format.ComputeSumPattern, "1"), null).ToString();
break;
case Constants.ApplicationResult.Q1SumBest:
bm.Text = questionsDurationBestCase.Compute(string.Format(Constants.Format.ComputeSumPattern, "1"), null).ToString();
break;
case Constants.ApplicationResult.Q2BisSumWorst:
bm.Text = "";
break;
case Constants.ApplicationResult.Q2BisSumBest:
bm.Text = "";
break;
case Constants.ApplicationResult.Q2SumWorst:
bm.Text = questionsDuration.Compute(string.Format(Constants.Format.ComputeSumPattern, "2"), null).ToString();
break;
case Constants.ApplicationResult.Q2SumBest:
bm.Text = questionsDurationBestCase.Compute(string.Format(Constants.Format.ComputeSumPattern, "2"), null).ToString();
break;
case Constants.ApplicationResult.Q3SumWorst:
bm.Text = questionsDuration.Compute(string.Format(Constants.Format.ComputeSumPattern, "3"), null).ToString();
break;
case Constants.ApplicationResult.Q3SumBest:
bm.Text = questionsDurationBestCase.Compute(string.Format(Constants.Format.ComputeSumPattern, "3"), null).ToString();
break;
case Constants.ApplicationResult.Q4SumWorst:
bm.Text = questionsDuration.Compute(string.Format(Constants.Format.ComputeSumPattern, "4"), null).ToString();
break;
case Constants.ApplicationResult.Q4SumBest:
bm.Text = questionsDurationBestCase.Compute(string.Format(Constants.Format.ComputeSumPattern, "4"), null).ToString();
break;
case Constants.ApplicationResult.Q5SumWorst:
bm.Text = questionsDuration.Compute(string.Format(Constants.Format.ComputeSumPattern, "5"), null).ToString();
break;
case Constants.ApplicationResult.Q5SumBest:
bm.Text = questionsDurationBestCase.Compute(string.Format(Constants.Format.ComputeSumPattern, "5"), null).ToString();
break;
case Constants.ApplicationResult.Q6SumWorst:
bm.Text = questionsDuration.Compute(string.Format(Constants.Format.ComputeSumPattern, "6"), null).ToString();
break;
case Constants.ApplicationResult.Q6SumBest:
bm.Text = questionsDurationBestCase.Compute(string.Format(Constants.Format.ComputeSumPattern, "6"), null).ToString();
break;
case Constants.ApplicationResult.Q7SumWorst:
bm.Text = questionsDuration.Compute(string.Format(Constants.Format.ComputeSumPattern, "7"), null).ToString();
break;
case Constants.ApplicationResult.Q7SumBest:
bm.Text = questionsDurationBestCase.Compute(string.Format(Constants.Format.ComputeSumPattern, "7"), null).ToString();
break;
case Constants.ApplicationResult.Q8SumWorst:
bm.Text = questionsDuration.Compute(string.Format(Constants.Format.ComputeSumPattern, "8"), null).ToString();
break;
case Constants.ApplicationResult.Q8SumBest:
bm.Text = questionsDurationBestCase.Compute(string.Format(Constants.Format.ComputeSumPattern, "8"), null).ToString();
break;
case Constants.ApplicationResult.Q9SumWorst:
bm.Text = questionsDuration.Compute(string.Format(Constants.Format.ComputeSumPattern, "9"), null).ToString();
break;
case Constants.ApplicationResult.Q9SumBest:
bm.Text = questionsDurationBestCase.Compute(string.Format(Constants.Format.ComputeSumPattern, "9"), null).ToString();
break;
case Constants.ApplicationResult.ApplicantName:
bm.Text = string.Format("{0} {1}", applicantFirstName, applicantLastName);
break;
case Constants.ApplicationResult.ApplicantEADSCorpId:
bm.Text = applicantEadsCorpId;
break;
case Constants.ApplicationResult.TrainingBestSum:
if (trainingBestTable != null)
{
bm.Text = trainingBestTable.Sum(t => t.Duration).ToString();
}
break;
case Constants.ApplicationResult.TrainingWorstSum:
if (trainingWorstTable != null)
{
bm.Text = trainingWorstTable.Sum(t => t.Duration).ToString();
}
break;
case Constants.ApplicationResult.LabelPartialAssessorPercent:
// Search for partially assessed results (displayed values ends with *)
partiallyAssessedResults = questionsDurationBestCase.Select("[1Display] LIKE '*[*]'"
+ " OR [2Display] LIKE '*[*]'"
+ " OR [3Display] LIKE '*[*]'"
+ " OR [4Display] LIKE '*[*]'"
+ " OR [5Display] LIKE '*[*]'"
+ " OR [6Display] LIKE '*[*]'"
+ " OR [7Display] LIKE '*[*]'"
+ " OR [8Display] LIKE '*[*]'"
+ " OR [9Display] LIKE '*[*]'");
if (partiallyAssessedResults.Length == 0)
{
bm.Text = string.Empty;
}
break;
case Constants.ApplicationResult.LabelPartialAssessorPercentBestCase:
// Search for partially assessed results (displayed values ends with *)
partiallyAssessedResults = questionsDuration.Select("[1Display] LIKE '*[*]'"
+ " OR [2Display] LIKE '*[*]'"
+ " OR [3Display] LIKE '*[*]'"
+ " OR [4Display] LIKE '*[*]'"
+ " OR [5Display] LIKE '*[*]'"
+ " OR [6Display] LIKE '*[*]'"
+ " OR [7Display] LIKE '*[*]'"
+ " OR [8Display] LIKE '*[*]'"
+ " OR [9Display] LIKE '*[*]'");
if (partiallyAssessedResults.Length == 0)
{
bm.Text = string.Empty;
}
break;
case Constants.ApplicationResult.WorstCaseTable:
if (worstCaseTableImage != null)
{
bm.SetBookmarkImage(worstCaseTableImage);
}
break;
case Constants.ApplicationResult.BestCaseTable:
if (bestCaseTableImage != null)
{
bm.SetBookmarkImage(bestCaseTableImage);
}
break;
case Constants.ApplicationResult.ResultTitleHeader:
var valueResultTitle = Session["ResultTitleHeader"];
if (valueResultTitle != null)
{
bm.Text = valueResultTitle.ToString();
}
break;
default:
break;
}
}
return doc.GetStream();
}