Пример #1
0
        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()));
        }
Пример #2
0
 public byte[] GetGeneralFilteredReport(GeneralFilteredReportListViewModel request, IList <PdfTableCell> tableHeaders)
 {
     throw new NotImplementedException();
 }