public byte[] GetGeneralFilteredReport(GeneralFilteredReportListViewModel request, IList <ExcelTableCell> tableHeaders) { var tableNames = tableHeaders.Where(x => x.IsActive).Select(x => x.Name).ToList(); var tableHelper = new ExcelTableHelper(); var headers = tableHelper.GetGeneralFilteredReportTableHeaders(); var result = new StringBuilder(); result.Append(string.Join(',', tableNames)); result.AppendLine(); var estimatedHoursColumn = 'A'; var loggedHoursColumn = 'A'; var startColumn = 'B'; var startRow = 0; var row = 0; foreach (var projectGroup in request.ProjectGroups) { var isProjectGroupSetted = false; foreach (var project in projectGroup.ProjectView.Projects) { var isProjectSetted = false; foreach (var sprint in project.SprintView.Sprints) { var isSprintSetted = false; foreach (var activity in sprint.ActivityView.Activities) { var isActivitySetted = false; foreach (var assignee in activity.AssigneeView.Assignees) { ++row; result.AppendLine(); var currentColumn = startColumn; foreach (var name in tableNames) { var pattern = $"{currentColumn++}{row}"; if (name == headers[0].Name) { result.Append($"{row - startRow}, "); } else if (name == headers[1].Name) { if (isProjectGroupSetted) { continue; } result.Append($"{projectGroup.ProjectGroupName}, "); isProjectGroupSetted = true; } else if (name == headers[2].Name) { if (isProjectSetted) { continue; } result.Append($"{project.ProjectName}, "); isProjectSetted = true; } else if (name == headers[3].Name) { if (isSprintSetted) { continue; } result.Append($"{sprint.SprintName}, "); isSprintSetted = true; } else if (name == headers[4].Name) { if (isActivitySetted) { continue; } result.Append($"{activity.ActivityName}, "); isActivitySetted = true; } else if (name == headers[5].Name) { result.Append($"{assignee.AssigneeName}, "); } else if (name == headers[6].Name) { result.Append($"{activity.EstimatedTime:0.00}, "); estimatedHoursColumn = currentColumn; } else if (name == headers[7].Name) { result.Append($"{activity.AssigneeView.TotalLoggedTime:0.00}, "); loggedHoursColumn = currentColumn; } } } if (isActivitySetted && (estimatedHoursColumn != 'A' || loggedHoursColumn != 'A')) { ++startRow; ++row; result.AppendLine(); result.Append("Total:, "); if (estimatedHoursColumn != 'A') { result.Append($"\"Activity estimated: {activity.EstimatedTime:0.00}\", "); ++estimatedHoursColumn; } if (loggedHoursColumn != 'A') { result.Append($"\"Activity logged: {activity.AssigneeView.TotalLoggedTime:0.00}\", "); ++loggedHoursColumn; } } } if (isSprintSetted && (estimatedHoursColumn != 'A' || loggedHoursColumn != 'A')) { ++startRow; ++row; result.AppendLine(); result.Append("Total:, "); if (estimatedHoursColumn != 'A') { result.Append($"\"Sprint estimated: {sprint.ActivityView.TotalEstimatedTime:0.00}\", "); ++estimatedHoursColumn; } if (loggedHoursColumn != 'A') { result.Append($"\"Sprint logged: {sprint.ActivityView.TotalLoggedTime:0.00}\", "); ++loggedHoursColumn; } } } if (isProjectSetted && (estimatedHoursColumn != 'A' || loggedHoursColumn != 'A')) { ++startRow; ++row; result.AppendLine(); result.Append("Total:, "); if (estimatedHoursColumn != 'A') { result.Append($"\"Project estimated: {project.SprintView.TotalEstimatedTime:0.00}\", "); ++estimatedHoursColumn; } if (loggedHoursColumn != 'A') { result.Append($"\"Project logged: {project.SprintView.TotalLoggedTime:0.00}\", "); ++loggedHoursColumn; } } } if (isProjectGroupSetted && (estimatedHoursColumn != 'A' || loggedHoursColumn != 'A')) { ++startRow; ++row; result.AppendLine(); result.Append("Total:, "); if (estimatedHoursColumn != 'A') { result.Append($"\"Project group estimated: {projectGroup.ProjectView.TotalEstimatedTime:0.00}\", "); ++estimatedHoursColumn; } if (loggedHoursColumn != 'A') { result.Append($"\"Project group logged: {projectGroup.ProjectView.TotalLoggedTime:0.00}\", "); ++loggedHoursColumn; } } } startRow = row; var rowForFinal = row + 1; if (estimatedHoursColumn == 'A' && loggedHoursColumn == 'A') { return(Encoding.Unicode.GetBytes(result.ToString())); } result.AppendLine(); result.Append("Total:, "); if (estimatedHoursColumn != 'A') { result.Append($"\"All estimated: {request.TotalEstimatedTime:0.00}\", "); } if (loggedHoursColumn == 'A') { return(Encoding.Unicode.GetBytes(result.ToString())); } result.Append($"\"All logged: {request.TotalLoggedTime:0.00}\", "); return(Encoding.Unicode.GetBytes(result.ToString())); }
public byte[] GetGeneralFilteredReport(GeneralFilteredReportListViewModel request, IList <PdfTableCell> tableHeaders) { throw new NotImplementedException(); }