Beispiel #1
0
        private ProjectReport ToProjectReport(ProjectEntity project, DateTime?beginDate = null, DateTime?endDate = null)
        {
            var timeRecordsWithoutResources = LoadTimeRecordsWithoutResources(project.Id, project.Versions.Select(i => i.ExternalId), beginDate, endDate).ToArray();

            return(new ProjectReport
            {
                Project = project
                          .ToProjectModel(timeRecordsWithoutResources.Sum(i => i.Hours), beginDate, endDate),

                SelfCost = project.Issues.SelectMany(issue => issue.TimeRecords).GroupBy(timeRecords => timeRecords.Employee)
                           .Select(timeRecordsGroup => timeRecordsGroup.Key.SelfRate * timeRecordsGroup.Sum(i => i.Hours))
                           .Sum(),

                Payments = project.Payments
                           .Select(payment => payment.ToPaymentRecord())
                           .ToArray(),

                Resources = project.SoldResources
                            .Where(i => i.ProjectVersion == null)
                            .Select(resource => resource.ToResourceModel(beginDate, endDate))
                            .ToArray(),

                EmployeesWithoutResource = GetEmployeesWithoutResource(null, timeRecordsWithoutResources)
                                           .ToArray(),

                ProjectVerisons = project.Versions
                                  .Select(projectVersion => projectVersion.ToProjectVerison(GetEmployeesWithoutResource(projectVersion.ExternalId, timeRecordsWithoutResources), beginDate, endDate))
                                  .ToArray()
            });
        }