public void TestLinqTransaction()
        {
            var dao = DataAccessFactory.Create<GenericDao>();

            var report = new Report();
            report.Name = "Andre's Linq test";

            var calcMethod = new ReportParameterCalculationMethod();

            report.ReportParameterCalculationMethod = calcMethod;
            report.ReportTypeId = 2;

            dao.Insert(report);

            dao.SubmitChanges();
        }
 /// <summary>
 /// Loads the report parameters.
 /// </summary>
 /// <param name="report">The report.</param>
 public override void LoadReportParameters(Report report)
 {
     var propertyFunds = this.GetDao<ParametersDao>().GetPropertyFundsByReport(report.ReportId);
     this.View.Selected = propertyFunds.Select(e => new PickListItem(
         e.Name, e.PropertyFundId)).ToList();
 }
        /// <summary>
        /// Saves the report parameters.
        /// </summary>
        /// <param name="report">The report.</param>
        public override void SaveReportParameters(Report report)
        {
            if (!this.Validate(this.View.Selected.Count > 0, "Please select at least one reporting entity"))
            {
                return;
            }

            Func<int, int, ReportParameterPropertyFund> selector = (id, reportParameterId) =>
                new ReportParameterPropertyFund
                {
                    PropertyFundId = id,
                    ReportParameterEntityTypeId = reportParameterId
                };

            var selectedPropertyFundIds = new List<int>(this.View.Selected.Select(propertyFund => propertyFund.Id));

            int[] selectedPropertyFundsArray = selectedPropertyFundIds.ToArray();

            List<ReportParameterEntityType> savedEntityTypes = report.ReportParameterEntityTypes.ToList();

            if (selectedPropertyFundIds.Contains(0))
            {
                foreach (var entityType in savedEntityTypes)
                {
                    entityType.ReportParameterPropertyFunds.Add(selector(0, entityType.ReportParameterEntityTypeId));
                }
            }
            else
            {
                IQueryable<ParameterPropertyFund> selectedPropertyFunds = this.GetDao<ReportDao>()
                    .FindAll<ParameterPropertyFund>(e => selectedPropertyFundsArray.Contains(e.PropertyFundId));

                foreach (var entityType in savedEntityTypes)
                {
                    var findPropertyFunds = ExpressionBuilder.Make<ParameterPropertyFund>(propertyFund => Convert.ToBoolean(propertyFund.IsActive));

                    if (entityType.EntityTypeId != 0)
                    {
                        findPropertyFunds = ExpressionBuilder.And(findPropertyFunds, propertyFund => propertyFund.EntityTypeId == entityType.EntityTypeId);
                    }

                    List<ReportParameterPropertyFund> propertyFundsToAdd = (from selectedPropertyFund in selectedPropertyFunds.Where(findPropertyFunds)
                                                                            select selector(selectedPropertyFund.PropertyFundId, entityType.ReportParameterEntityTypeId))
                                                                            .ToList();

                    entityType.ReportParameterPropertyFunds.AddRange(propertyFundsToAdd);
                }
            }
        }
Exemple #4
0
        /// <summary>
        /// Saves the report parameters.
        /// </summary>
        /// <param name="report">The report.</param>
        public override void SaveReportParameters(Report report)
        {
            if (!this.Validate(this.View.Selected.Count > 0, "Please select at least one staff member"))
            {
                return;
            }

            IEnumerable<ReportParameterReportReceiver> reportReceiversToSave = this.View.Selected.Select(e => new ReportParameterReportReceiver()
            {
                StaffId = e.Id
            });

            report.ReportParameterReportReceivers.AddRange(reportReceiversToSave);
        }
Exemple #5
0
 /// <summary>
 /// Loads the report parameters.
 /// </summary>
 /// <param name="report">The report.</param>
 public override void LoadReportParameters(Report report)
 {
     List<PickListItem> savedStaffList = (from
         parameterReceiver in this.GetDao<ParametersDao>().FindAll<ReportParameterReportReceiver>(e => e.ReportId == report.ReportId)
                                          join receiver in this.GetDao<ParametersDao>().FindAll<ParameterReportReceiver>() on
                                              parameterReceiver.StaffId equals receiver.StaffID
                                          select new PickListItem(receiver.StaffName, receiver.StaffID)).ToList();
     View.Selected = savedStaffList;
 }
Exemple #6
0
        /// <summary>
        /// Creates a new Profitability Report Generator for a given report
        /// </summary>
        /// <param name="report">The report to generate</param>
        /// <param name="reportGenerationQueueId">The report generation queue instance id</param>
        /// <param name="configuration">The configuration.</param>
        /// <param name="reportQueueStatusService">The report queue status service.</param>
        /// <returns>The report generator</returns>
        private static ProfitabilityReportGenerator GetProfitabilityReportGenerator(
            Report report,
            int reportGenerationQueueId,
            IReportGenerationConfiguration configuration,
            IReportQueueStatusService reportQueueStatusService)
        {
            ProfitabilityReportParameter reportParameter = BuildProfitabilityReportParameter(report, reportGenerationQueueId);

            return new ProfitabilityReportGenerator(
                reportParameter,
                configuration,
                reportQueueStatusService);
        }
Exemple #7
0
        /// <summary>
        /// Creates a new Budget Owner Report Parameter object encapsulating all the report parameters
        /// </summary>
        /// <param name="report">The report for which to fetch the parameters</param>
        /// <param name="reportGenerationQueueId">The report generation queue instance id</param>
        /// <param name="configuration">The configuration.</param>
        /// <param name="reportQueueStatusService">The report queue status service.</param>
        /// <returns>The budget owner report parameter object</returns>
        private static BudgetOwnerReportParameter BuildBudgetOwnerReportParameter(
            Report report,
            int reportGenerationQueueId,
            IReportGenerationConfiguration configuration,
            IReportQueueStatusService reportQueueStatusService,
            int isEU)
        {
            ReportGenerationQueue reportGenerationQueue = DataAccessFactory.Create<GenerationDao>().GetReportGenerationQueueItem(reportGenerationQueueId);

            if (reportGenerationQueue != null && report != null)
            {
                // Validate all parameters first, because the database does not enforce constraints
                if (report.ReportParameterShowMRISourceForPayroll == null)
                {
                    throw new InvalidReportParameterException(report.ReportId, "ReportParameterShowMRISourceForPayroll");
                }

                if (report.ReportParameterCalculationMethod == null)
                {
                    throw new InvalidReportParameterException(report.ReportId, "ReportParameterCalculationMethod");
                }

                if (report.ReportParameterGLCategorization == null)
                {
                    throw new InvalidReportParameterException(report.ReportId, "ReportParameterGLCategorization");
                }

                if (report.ReportParameterCurrency == null)
                {
                    throw new InvalidReportParameterException(report.ReportId, "ReportParameterCurrency");
                }

                if (report.ReportParameterEntityTypes.Count == 0)
                {
                    throw new InvalidReportParameterException(report.ReportId, "ReportParameterEntityTypes");
                }
                else
                {
                    bool validPropertyFunds = false;

                    foreach (ReportParameterEntityType reportParameterEntityType in report.ReportParameterEntityTypes)
                    {
                        if (reportParameterEntityType.ReportParameterPropertyFunds.Count > 0)
                        {
                            validPropertyFunds = true;
                        }
                    }

                    if (!validPropertyFunds)
                    {
                        throw new InvalidReportParameterException(report.ReportId, "ReportParameterPropertyFunds");
                    }
                }

                if (report.ReportParameterActivityTypes.Count == 0)
                {
                    throw new InvalidReportParameterException(report.ReportId, "ReportParameterActivityTypes");
                }

                if (report.ReportParameterAllocationSubRegions.Count == 0)
                {
                    throw new InvalidReportParameterException(report.ReportId, "ReportParameterAllocationSubRegions");
                }

                if (report.ReportParameterFunctionalDepartments.Count == 0)
                {
                    throw new InvalidReportParameterException(report.ReportId, "ReportParameterFunctionalDepartments");
                }

                if (report.ReportParameterReportReceivers.Count == 0)
                {
                    throw new InvalidReportParameterException(report.ReportId, "ReportParameterReportReceivers");
                }

                // Get all the parameters we need
                bool mustDeliverToTest = reportGenerationQueue.MustDeliverReportToTestLocation;
                bool showMRISourceForPayroll = report.ReportParameterShowMRISourceForPayroll.ShowMRISourceForPayroll;
                DateTime insertedDate = reportGenerationQueue.InsertedDate;
                int reportPeriod = reportGenerationQueue.Period;
                string reforecastQuarterName = reportGenerationQueue.ReforecastQuarterName;
                bool reportTypeIsActive = report.ReportType.IsActive;
                string reportName = report.Name;

                List<ParameterActivityType> activityTypes = new List<ParameterActivityType>();

                foreach (ReportParameterActivityType reportParameterActivityType in report.ReportParameterActivityTypes)
                {
                    activityTypes.Add(reportParameterActivityType.ParameterActivityType);
                }

                List<ParameterAllocationSubRegion> allocationSubRegions = new List<ParameterAllocationSubRegion>();

                foreach (ReportParameterAllocationSubRegion reportParameterAllocationSubRegion in report.ReportParameterAllocationSubRegions)
                {
                    allocationSubRegions.Add(reportParameterAllocationSubRegion.ParameterAllocationSubRegion);
                }

                ParameterCalculationMethod calculationMethod = report.ReportParameterCalculationMethod.ParameterCalculationMethod;
                ParameterGLCategorization glCategorization = report.ReportParameterGLCategorization.ParameterGLCategorization;
                Currency currency = report.ReportParameterCurrency.Currency;

                List<ParameterFunctionalDepartment> functionalDepartments = new List<ParameterFunctionalDepartment>();

                foreach (ReportParameterFunctionalDepartment reportParameterFunctionalDepartment in report.ReportParameterFunctionalDepartments)
                {
                    functionalDepartments.Add(reportParameterFunctionalDepartment.ParameterFunctionalDepartment);
                }

                List<ParameterGLFinancialCategory> financialCategories = new List<ParameterGLFinancialCategory>();
                List<ParameterGLMajorCategory> majorCategories = new List<ParameterGLMajorCategory>();
                List<ParameterGLMinorCategory> minorCategories = new List<ParameterGLMinorCategory>();

                foreach (ReportParameterGLFinancialCategory reportParameterGLFinancialCategory in report.ReportParameterGLCategorization.ReportParameterGLFinancialCategories)
                {
                    financialCategories.Add(reportParameterGLFinancialCategory.ParameterGLFinancialCategory);

                    foreach (ReportParameterGLMajorCategory reportParameterGLMajorCategory in reportParameterGLFinancialCategory.ReportParameterGLMajorCategories)
                    {
                        majorCategories.Add(reportParameterGLMajorCategory.ParameterGLMajorCategory);

                        foreach (ReportParameterGLMinorCategory reportParameterGLMinorCategory in reportParameterGLMajorCategory.ReportParameterGLMinorCategories)
                        {
                            minorCategories.Add(reportParameterGLMinorCategory.ParameterGLMinorCategory);
                        }
                    }
                }

                List<ParameterOriginatingSubRegion> originatingSubRegions = new List<ParameterOriginatingSubRegion>();

                foreach (ReportParameterOriginatingSubRegion reportParameterOriginatingSubRegion in report.ReportParameterOriginatingSubRegions)
                {
                    originatingSubRegions.Add(reportParameterOriginatingSubRegion.ParameterOriginatingSubRegion);
                }

                List<ParameterEntityType> entityTypes = new List<ParameterEntityType>();

                foreach (ReportParameterEntityType reportParameterEntityType in report.ReportParameterEntityTypes)
                {
                    entityTypes.Add(reportParameterEntityType.ParameterEntityType);
                }

                List<ParameterPropertyFund> propertyFunds = new List<ParameterPropertyFund>();

                foreach (ReportParameterEntityType reportParameterEntityType in report.ReportParameterEntityTypes)
                {
                    foreach (ReportParameterPropertyFund reportParameterPropertyFund in reportParameterEntityType.ReportParameterPropertyFunds)
                    {
                        propertyFunds.Add(reportParameterPropertyFund.ParameterPropertyFund);
                    }
                }

                List<ParameterReportReceiver> reportReceivers = new List<ParameterReportReceiver>();

                foreach (ReportParameterReportReceiver reportParameterReportReceiver in report.ReportParameterReportReceivers)
                {
                    reportReceivers.Add(reportParameterReportReceiver.ParameterReportReceiver);
                }

                return new BudgetOwnerReportParameter(
                    mustDeliverToTest,
                    insertedDate,
                    reportPeriod,
                    reforecastQuarterName,
                    reportTypeIsActive,
                    reportGenerationQueueId,
                    reportName,
                    showMRISourceForPayroll,
                    activityTypes,
                    allocationSubRegions,
                    calculationMethod,
                    glCategorization,
                    currency,
                    functionalDepartments,
                    financialCategories,
                    majorCategories,
                    minorCategories,
                    originatingSubRegions,
                    entityTypes,
                    propertyFunds,
                    reportReceivers,
                    isEU == 0 ? BusinessLayer.Automation.Enums.ReportType.BudgetOwnerReport : BusinessLayer.Automation.Enums.ReportType.BudgetOwnerEUReport);
            }

            return null;
        }
Exemple #8
0
        /// <summary>
        /// Generates an Expense Czar report generator for a specific report
        /// </summary>
        /// <param name="report">The report instance</param>
        /// <param name="reportGenerationQueueId">The report generation queue instance id</param>
        /// <param name="configuration">The configuration.</param>
        /// <param name="reportQueueStatusService">The report queue status service.</param>
        /// <returns>The report generator</returns>
        private static ExpenseCzarReportGenerator GetExpenseCzarReportGenerator(
            Report report,
            int reportGenerationQueueId,
            IReportGenerationConfiguration configuration,
            IReportQueueStatusService reportQueueStatusService)
        {
            ExpenseCzarReportParameter reportParameter = BuildExpenseCzarReportParameter(
                report,
                reportGenerationQueueId,
                configuration,
                reportQueueStatusService);

            return new ExpenseCzarReportGenerator(reportParameter, configuration, reportQueueStatusService);
        }
Exemple #9
0
        /// <summary>
        /// Generates a budget owner FTE report generator for a specific report
        /// </summary>
        /// <param name="report">The report Instance</param>
        /// <param name="reportGenerationQueueId">The report generation queue instance id</param>
        /// <param name="configuration">The configuration.</param>
        /// <param name="reportQueueStatusService">The report queue status service.</param>
        /// <returns></returns>
        private static BudgetOwnerFTEReportGenerator GetFTEBudgetOwnerReportGenerator(
            Report report,
            int reportGenerationQueueId,
            IReportGenerationConfiguration configuration,
            IReportQueueStatusService reportQueueStatusService)
        {
            BudgetOwnerFTEReportParameter reportParameter = BuildBudgetOwnerFTEReportParameter(
                report,
                reportGenerationQueueId,
                configuration,
                reportQueueStatusService);

            return new BudgetOwnerFTEReportGenerator(reportParameter, configuration, reportQueueStatusService);
        }
Exemple #10
0
		private void detach_Reports(Report entity)
		{
			this.SendPropertyChanging();
			entity.ReportType = null;
		}
Exemple #11
0
        /// <summary>
        /// Creates a new Profitability Report Parameter object encapsulating all the report parameters
        /// </summary>
        /// <param name="report">The report for which to fetch the parameters</param>
        /// <param name="reportGenerationQueueId">The report generation queue instance id</param>
        /// <returns>The profitability report parameter object</returns>
        private static ProfitabilityReportParameter BuildProfitabilityReportParameter(Report report, int reportGenerationQueueId)
        {
            using (GenerationDao generationDao = DataAccessFactory.Create<GenerationDao>())
            {
                ReportGenerationQueue reportGenerationQueue = generationDao.GetReportGenerationQueueItem(reportGenerationQueueId);
                if (reportGenerationQueue != null && report != null)
                {
                    // Validate all parameters first, because the database does not enforce constraints
                    if (report.ReportParameterShowMRISourceForPayroll == null)
                    {
                        throw new InvalidReportParameterException(report.ReportId, "ReportParameterShowMRISourceForPayroll");
                    }

                    if (report.ReportParameterCurrency == null)
                    {
                        throw new InvalidReportParameterException(report.ReportId, "ReportParameterCurrency");
                    }

                    if (report.ReportParameterDisplayOverheadBy == null)
                    {
                        throw new InvalidReportParameterException(report.ReportId, "ReportParameterDisplayOverheadBy");
                    }

                    if (report.ReportParameterIncludeGrossNonPayrollExpense == null)
                    {
                        throw new InvalidReportParameterException(report.ReportId, "ReportParameterIncludeGrossNonPayrollExpense");
                    }

                    if (report.ReportParameterIncludeFeeAdjustment == null)
                    {
                        throw new InvalidReportParameterException(report.ReportId, "ReportParameterIncludeFeeAdjustment");
                    }

                    // Get all the parameters we need
                    bool mustDeliverToTest = reportGenerationQueue.MustDeliverReportToTestLocation;
                    bool showMRISourceForPayroll = report.ReportParameterShowMRISourceForPayroll.ShowMRISourceForPayroll;
                    DateTime insertedDate = reportGenerationQueue.InsertedDate;
                    int reportPeriod = reportGenerationQueue.Period;
                    string reforecastQuarterName = reportGenerationQueue.ReforecastQuarterName;
                    bool reportTypeIsActive = report.ReportType.IsActive;
                    string reportName = report.Name;

                    List<ParameterActivityType> activityTypes = new List<ParameterActivityType>();

                    foreach (ReportParameterActivityType reportParameterActivityType in report.ReportParameterActivityTypes)
                    {
                        activityTypes.Add(reportParameterActivityType.ParameterActivityType);
                    }

                    List<ParameterConsolidationRegion> consolidationRegions = new List<ParameterConsolidationRegion>();

                    foreach (ReportParameterConsolidationRegion reportParameterConsolidationRegion in report.ReportParameterConsolidationRegions)
                    {
                        consolidationRegions.Add(reportParameterConsolidationRegion.ParameterConsolidationRegion);
                    }

                    Currency currency = report.ReportParameterCurrency.Currency;

                    ParameterDisplayOverheadBy displayOverheadBy = report.ReportParameterDisplayOverheadBy.ParameterDisplayOverheadBy;
                    bool includeGrossNonPayrollExpense = report.ReportParameterIncludeGrossNonPayrollExpense.IncludeGrossNonPayrollExpense;
                    bool includeFeeAdjustments = report.ReportParameterIncludeFeeAdjustment.IncludeFeeAdjustment;

                    List<ParameterEntityType> entityTypes = new List<ParameterEntityType>();

                    foreach (ReportParameterEntityType reportParameterEntityType in report.ReportParameterEntityTypes)
                    {
                        entityTypes.Add(reportParameterEntityType.ParameterEntityType);
                    }

                    List<ParameterPropertyFund> propertyFunds = new List<ParameterPropertyFund>();

                    foreach (ReportParameterEntityType reportParameterEntityType in report.ReportParameterEntityTypes)
                    {
                        foreach (ReportParameterPropertyFund reportParameterPropertyFund in reportParameterEntityType.ReportParameterPropertyFunds)
                        {
                            propertyFunds.Add(reportParameterPropertyFund.ParameterPropertyFund);
                        }
                    }

                    List<ParameterReportReceiver> reportReceivers = new List<ParameterReportReceiver>();

                    foreach (ReportParameterReportReceiver reportParameterReportReceiver in report.ReportParameterReportReceivers)
                    {
                        reportReceivers.Add(reportParameterReportReceiver.ParameterReportReceiver);
                    }

                    List<ParameterOriginatingSubRegion> overheadOriginatingSubRegions = new List<ParameterOriginatingSubRegion>();

                    if (report.ReportParameterDisplayOverheadBy != null)
                    {
                        foreach (ReportParameterDisplayOverheadByOriginatingSubRegion reportParameterOriginatingSubRegion in report.ReportParameterDisplayOverheadBy.ReportParameterDisplayOverheadByOriginatingSubRegions)
                        {
                            overheadOriginatingSubRegions.Add(reportParameterOriginatingSubRegion.ParameterOriginatingSubRegion);
                        }
                    }

                    ParameterGLCategorization parameterGLCategorization = report.ReportParameterGLCategorization.ParameterGLCategorization;

                    return new ProfitabilityReportParameter(
                        parameterGLCategorization.Name,
                        mustDeliverToTest,
                        insertedDate,
                        reportPeriod,
                        reforecastQuarterName,
                        reportTypeIsActive,
                        reportGenerationQueueId,
                        reportName,
                        showMRISourceForPayroll,
                        activityTypes,
                        consolidationRegions,
                        currency,
                        displayOverheadBy: displayOverheadBy,
                        includeGrossNonPayrollExpense: includeGrossNonPayrollExpense,
                        includeFeeAdjustments: includeFeeAdjustments,
                        entityTypes: entityTypes,
                        propertyFunds: propertyFunds,
                        reportReceivers: reportReceivers,
                        overheadOriginatingSubRegions: overheadOriginatingSubRegions);
                }

                return null;
            }
        }
Exemple #12
0
		private void attach_Reports(Report entity)
		{
			this.SendPropertyChanging();
			entity.ReportType = this;
		}
        /// <summary>
        /// Gets a Budget Job Code Report DTO
        /// </summary>
        /// <param name="report">The report for which to create the DTO</param>
        /// <returns>The report parameter DTO object</returns>
        public static ReportParametersDTO GetBudgetJobCodeReportDTO(Report report)
        {
            List<string> entityTypeList = new List<string>();

            foreach (ReportParameterEntityType entityType in report.ReportParameterEntityTypes)
            {
                entityTypeList.Add(entityType.ParameterEntityType == null ? InvalidParameterString : entityType.ParameterEntityType.Name);
            }

            List<string> entityList = new List<string>();

            foreach (ReportParameterEntityType entityType in report.ReportParameterEntityTypes)
            {
                foreach (ReportParameterPropertyFund entity in entityType.ReportParameterPropertyFunds)
                {
                    if (!entityList.Contains(entity.ParameterPropertyFund == null ? InvalidParameterString : entity.ParameterPropertyFund.Name))
                    {
                        entityList.Add(entity.ParameterPropertyFund == null ? InvalidParameterString : entity.ParameterPropertyFund.Name);
                    }
                }
            }

            List<string> functionalDepartmentList = new List<string>();

            foreach (ReportParameterFunctionalDepartment functionalDepartment in report.ReportParameterFunctionalDepartments)
            {
                functionalDepartmentList.Add(functionalDepartment.ParameterFunctionalDepartment == null ? InvalidParameterString : functionalDepartment.ParameterFunctionalDepartment.Name);
            }

            List<string> allocationSubRegionList = new List<string>();

            foreach (ReportParameterAllocationSubRegion allocationSubRegion in report.ReportParameterAllocationSubRegions)
            {
                allocationSubRegionList.Add(allocationSubRegion.ParameterAllocationSubRegion == null ? InvalidParameterString : allocationSubRegion.ParameterAllocationSubRegion.Name);
            }

            List<string> originatingSubRegionList = new List<string>();

            foreach (ReportParameterOriginatingSubRegion originatingSubRegion in report.ReportParameterOriginatingSubRegions)
            {
                originatingSubRegionList.Add(originatingSubRegion.ParameterOriginatingSubRegion == null ? InvalidParameterString : originatingSubRegion.ParameterOriginatingSubRegion.Name);
            }

            List<string> reportReceiversList = new List<string>();

            foreach (ReportParameterReportReceiver reportReceiver in report.ReportParameterReportReceivers)
            {
                if (reportReceiver.ParameterReportReceiver != null)
                {
                    reportReceiversList.Add(reportReceiver.ParameterReportReceiver.StaffName);
                }
            }

            string reportParameterCurrency = report.ReportParameterCurrency == null ? InvalidParameterString : report.ReportParameterCurrency.CurrencyCode;
            bool? reportParameterShowMRISourceForPayroll = report.ReportParameterShowMRISourceForPayroll == null ? (bool?)null : report.ReportParameterShowMRISourceForPayroll.ShowMRISourceForPayroll;
            string reportParameterCalculationMethod = report.ReportParameterCalculationMethod == null ? InvalidParameterString : report.ReportParameterCalculationMethod.ParameterCalculationMethod == null ? InvalidParameterString : report.ReportParameterCalculationMethod.ParameterCalculationMethod.Name;
            string reportParameterGLCategorization = report.ReportParameterGLCategorization == null ? InvalidParameterString : report.ReportParameterGLCategorization.ParameterGLCategorization == null ? InvalidParameterString : report.ReportParameterGLCategorization.ParameterGLCategorization.Name;

            return new ReportParametersDTO(
                report.ReportId,
                report.Name,
                EnumHelper.GetEnum<GRP.BusinessLayer.Automation.Enums.ReportType>(report.ReportType.Name),
                reportParameterCurrency,
                entityTypeList,
                entityList,
                reportParameterShowMRISourceForPayroll,
                reportParameterCalculationMethod,
                reportParameterGLCategorization,
                functionalDepartmentList,
                allocationSubRegionList,
                originatingSubRegionList,
                null,
                null,
                null,
                null,
                null,
                null,
                null,
                null,
                null,
                reportReceiversList,
                null);
        }
 /// <summary>
 /// Creates a new instance of the <see cref="ReportParametersDTO"/> class
 /// </summary>
 /// <param name="report">The report for which to create a DTO object</param>
 /// <returns>The DTO object</returns>
 public static ReportParametersDTO GetReportDTO(Report report)
 {
     switch (EnumHelper.GetEnum<GRP.BusinessLayer.Automation.Enums.ReportType>(report.ReportType.Name))
     {
         case GRP.BusinessLayer.Automation.Enums.ReportType.BudgetOriginatorReport:
             return GetBudgetOriginatorReportDTO(report);
         case GRP.BusinessLayer.Automation.Enums.ReportType.BudgetOwnerReport:
             return GetBudgetOwnerReportDTO(report);
         case GRP.BusinessLayer.Automation.Enums.ReportType.ExpenseCzarReport:
             return GetExpenseCzarReportDTO(report);
         case GRP.BusinessLayer.Automation.Enums.ReportType.BudgetOriginatorJobCodeDetailsReport:
             return GetBudgetJobCodeReportDTO(report);
         case GRP.BusinessLayer.Automation.Enums.ReportType.ProfitabilityReport:
             return GetProfitabilityReportDTO(report);
         default:
             throw new ReportValidationException("Invalid report type for report with ID " + report.ReportId);
     }
 }
        /// <summary>
        /// Gets a Profitability Report DTO
        /// </summary>
        /// <param name="report">The report for which to create the DTO</param>
        /// <returns>The report parameter DTO object</returns>
        public static ReportParametersDTO GetProfitabilityReportDTO(Report report)
        {
            List<string> entityTypeList = new List<string>();

            foreach (ReportParameterEntityType entityType in report.ReportParameterEntityTypes)
            {
                entityTypeList.Add(entityType.ParameterEntityType == null ? InvalidParameterString : entityType.ParameterEntityType.Name);
            }

            List<string> entityList = new List<string>();

            foreach (ReportParameterEntityType entityType in report.ReportParameterEntityTypes)
            {
                foreach (ReportParameterPropertyFund entity in entityType.ReportParameterPropertyFunds)
                {
                    if (!entityList.Contains(entity.ParameterPropertyFund == null ? InvalidParameterString : entity.ParameterPropertyFund.Name))
                    {
                        entityList.Add(entity.ParameterPropertyFund == null ? InvalidParameterString : entity.ParameterPropertyFund.Name);
                    }
                }
            }

            List<string> overheadOriginatingSubRegionList = new List<string>();

            if (report.ReportParameterDisplayOverheadBy != null)
            {
                foreach (ReportParameterDisplayOverheadByOriginatingSubRegion originatingSubRegion in report.ReportParameterDisplayOverheadBy.ReportParameterDisplayOverheadByOriginatingSubRegions)
                {
                    overheadOriginatingSubRegionList.Add(originatingSubRegion.ParameterOriginatingSubRegion == null ? InvalidParameterString : originatingSubRegion.ParameterOriginatingSubRegion.Name);
                }
            }

            List<string> consolidationRegionList = new List<string>();

            foreach (ReportParameterConsolidationRegion consolidationRegion in report.ReportParameterConsolidationRegions)
            {
                consolidationRegionList.Add(consolidationRegion.ParameterConsolidationRegion == null ? InvalidParameterString : consolidationRegion.ParameterConsolidationRegion.Name);
            }

            List<string> reportReceiversList = new List<string>();

            foreach (ReportParameterReportReceiver reportReceiver in report.ReportParameterReportReceivers)
            {
                if (reportReceiver.ParameterReportReceiver != null)
                {
                    reportReceiversList.Add(reportReceiver.ParameterReportReceiver.StaffName);
                }
            }

            List<string> activityTypeList = new List<string>();

            foreach (ReportParameterActivityType activityType in report.ReportParameterActivityTypes)
            {
                // we want to distinct the list of activity types, otherwise we will add one for each minor category, leading to duplicates
                if (!activityTypeList.Contains(activityType.ParameterActivityType == null ? InvalidParameterString : activityType.ParameterActivityType.Name))
                {
                    activityTypeList.Add(activityType.ParameterActivityType == null ? InvalidParameterString : activityType.ParameterActivityType.Name);
                }
            }

            string reportParameterCurrency = report.ReportParameterCurrency == null ? InvalidParameterString : report.ReportParameterCurrency.CurrencyCode;
            bool? reportParameterShowMRISourceForPayroll = report.ReportParameterShowMRISourceForPayroll == null ? (bool?)null : report.ReportParameterShowMRISourceForPayroll.ShowMRISourceForPayroll;
            string reportParameterCalculationMethod = report.ReportParameterCalculationMethod == null ? InvalidParameterString : report.ReportParameterCalculationMethod.ParameterCalculationMethod == null ? InvalidParameterString : report.ReportParameterCalculationMethod.ParameterCalculationMethod.Name;
            string reportParameterGLCategorization = report.ReportParameterGLCategorization == null ? InvalidParameterString : report.ReportParameterGLCategorization.ParameterGLCategorization == null ? InvalidParameterString : report.ReportParameterGLCategorization.ParameterGLCategorization.Name;

            return new ReportParametersDTO(
                report.ReportId,
                report.Name,
                EnumHelper.GetEnum<GRP.BusinessLayer.Automation.Enums.ReportType>(report.ReportType.Name),
                reportParameterCurrency,
                entityTypeList,
                entityList,
                reportParameterShowMRISourceForPayroll,
                reportParameterCalculationMethod,
                reportParameterGLCategorization,
                null,
                null,
                null,
                null,
                null,
                null,
                activityTypeList,
                report.ReportParameterIncludeGrossNonPayrollExpense == null ? (bool?)null : report.ReportParameterIncludeGrossNonPayrollExpense.IncludeGrossNonPayrollExpense,
                report.ReportParameterIncludeFeeAdjustment == null ? (bool?)null : report.ReportParameterIncludeFeeAdjustment.IncludeFeeAdjustment,
                report.ReportParameterDisplayOverheadBy == null ? null : report.ReportParameterDisplayOverheadBy.ParameterDisplayOverheadBy.Name,
                overheadOriginatingSubRegionList,
                consolidationRegionList,
                reportReceiversList,
                null);
        }
        /// <summary>
        /// Gets a Expense Czar Report DTO
        /// </summary>
        /// <param name="report">The report for which to create the DTO</param>
        /// <returns>The report parameter DTO object</returns>
        public static ReportParametersDTO GetExpenseCzarReportDTO(Report report)
        {
            List<string> entityTypeList = new List<string>();

            foreach (ReportParameterEntityType entityType in report.ReportParameterEntityTypes)
            {
                entityTypeList.Add(entityType.ParameterEntityType == null ? InvalidParameterString : entityType.ParameterEntityType.Name);
            }

            List<string> entityList = new List<string>();

            foreach (ReportParameterEntityType entityType in report.ReportParameterEntityTypes)
            {
                foreach (ReportParameterPropertyFund entity in entityType.ReportParameterPropertyFunds)
                {
                    if (!entityList.Contains(entity.ParameterPropertyFund == null ? InvalidParameterString : entity.ParameterPropertyFund.Name))
                    {
                        entityList.Add(entity.ParameterPropertyFund == null ? InvalidParameterString : entity.ParameterPropertyFund.Name);
                    }
                }
            }

            List<string> functionalDepartmentList = new List<string>();

            foreach (ReportParameterFunctionalDepartment functionalDepartment in report.ReportParameterFunctionalDepartments)
            {
                functionalDepartmentList.Add(functionalDepartment.ParameterFunctionalDepartment == null ? InvalidParameterString : functionalDepartment.ParameterFunctionalDepartment.Name);
            }

            List<string> allocationSubRegionList = new List<string>();

            foreach (ReportParameterAllocationSubRegion allocationSubRegion in report.ReportParameterAllocationSubRegions)
            {
                allocationSubRegionList.Add(allocationSubRegion.ParameterAllocationSubRegion == null ? InvalidParameterString : allocationSubRegion.ParameterAllocationSubRegion.Name);
            }

            List<string> financialCategoryList = new List<string>();

            List<string> majorCategoryList = new List<string>();

            List<string> minorCategoryList = new List<string>();

            List<string> activityTypeList = new List<string>();

            MinorCategoryActivityTypeCombination minorCategoryActivityTypes = new MinorCategoryActivityTypeCombination();

            if (report.ReportParameterGLCategorization != null)
            {
                foreach (ReportParameterGLFinancialCategory financialCategory in report.ReportParameterGLCategorization.ReportParameterGLFinancialCategories)
                {
                    if (!financialCategoryList.Contains(financialCategory.ParameterGLFinancialCategory == null ? InvalidParameterString : financialCategory.ParameterGLFinancialCategory.Name))
                    {
                    financialCategoryList.Add(financialCategory.ParameterGLFinancialCategory == null ? InvalidParameterString : financialCategory.ParameterGLFinancialCategory.Name);
                    }

                    foreach (ReportParameterGLMajorCategory majorCategory in financialCategory.ReportParameterGLMajorCategories)
                    {
                        if (!majorCategoryList.Contains(majorCategory.ParameterGLMajorCategory == null ? InvalidParameterString : majorCategory.ParameterGLMajorCategory.Name))
                        {
                            majorCategoryList.Add(majorCategory.ParameterGLMajorCategory == null ? InvalidParameterString : majorCategory.ParameterGLMajorCategory.Name);
                        }

                        foreach (ReportParameterGLMinorCategory minorCategory in majorCategory.ReportParameterGLMinorCategories)
                        {
                            if (!minorCategoryList.Contains(minorCategory.ParameterGLMinorCategory == null ? InvalidParameterString : minorCategory.ParameterGLMinorCategory.Name))
                            {
                                minorCategoryList.Add(minorCategory.ParameterGLMinorCategory == null ? InvalidParameterString : minorCategory.ParameterGLMinorCategory.Name);
                            }

                            if (minorCategory.ParameterGLMinorCategory != null)
                            {
                                foreach (ReportParameterGLMinorCategoryActivityType minorCategoryActivityType in minorCategory.ReportParameterGLMinorCategoryActivityTypes)
                                {
                                    // we want to distinct the list of activity types, otherwise we will add one for each minor category, leading to duplicates
                                    if (!activityTypeList.Contains(minorCategoryActivityType.ParameterActivityType == null ? InvalidParameterString : minorCategoryActivityType.ParameterActivityType.Name))
                                    {
                                        activityTypeList.Add(minorCategoryActivityType.ParameterActivityType == null ? InvalidParameterString : minorCategoryActivityType.ParameterActivityType.Name);
                                    }

                                    minorCategoryActivityTypes.AddMinorCategoryActivityType(minorCategoryActivityType.GroupId, minorCategory.ParameterGLMinorCategory == null ? InvalidParameterString : minorCategory.ParameterGLMinorCategory.Name, minorCategoryActivityType.ParameterActivityType == null ? InvalidParameterString : minorCategoryActivityType.ParameterActivityType.Name);
                                }
                            }
                        }
                    }
                }
            }

            List<string> reportReceiversList = new List<string>();

            foreach (ReportParameterReportReceiver reportReceiver in report.ReportParameterReportReceivers)
            {
                if (reportReceiver.ParameterReportReceiver != null)
                {
                    reportReceiversList.Add(reportReceiver.ParameterReportReceiver.StaffName);
                }
            }

            string reportParameterCurrency = report.ReportParameterCurrency == null ? InvalidParameterString : report.ReportParameterCurrency.CurrencyCode;
            bool? reportParameterShowMRISourceForPayroll = report.ReportParameterShowMRISourceForPayroll == null ? (bool?)null : report.ReportParameterShowMRISourceForPayroll.ShowMRISourceForPayroll;
            string reportParameterCalculationMethod = report.ReportParameterCalculationMethod == null ? InvalidParameterString : report.ReportParameterCalculationMethod.ParameterCalculationMethod == null ? InvalidParameterString : report.ReportParameterCalculationMethod.ParameterCalculationMethod.Name;

            return new ReportParametersDTO(
                report.ReportId,
                report.Name,
                EnumHelper.GetEnum<GRP.BusinessLayer.Automation.Enums.ReportType>(report.ReportType.Name),
                reportParameterCurrency,
                entityTypeList,
                entityList,
                reportParameterShowMRISourceForPayroll,
                reportParameterCalculationMethod,
                "Global",
                functionalDepartmentList,
                allocationSubRegionList,
                null,
                financialCategoryList,
                majorCategoryList,
                minorCategoryList,
                activityTypeList,
                null,
                null,
                null,
                null,
                null,
                reportReceiversList,
                minorCategoryActivityTypes);
        }