コード例 #1
0
        private Task HandleSuccess(string username, CentralReport centralReport, IMessageHandlerContext context)
        {
            var data = centralReport.SerializeMessage();

            return(context.Publish <ICentralReportUpdated>(e =>
            {
                e.Username = username;
                e.Organization = centralReport.Organization;
                e.CentralReport = centralReport;
                e.SerializedData = data;
            }));
        }
コード例 #2
0
        public CentralReport CreateNewCentralPlan(string description, OrganizationReference organizationRef, ReportingTerm reportingTerm, int year, ReportingFrequency reportingFrequency)
        {
            var organization = _session.Query <Organization>().Single(o => o.Id == organizationRef.Id);

            if (organization.OrganizationType != OrganizationType.Central)
            {
                throw new ArgumentException("Invalid Organization Type");
            }
            if (reportingFrequency != ReportingFrequency.Quarterly && reportingFrequency != ReportingFrequency.Yearly)
            {
                throw new ArgumentException("Invalid Reporting Frequency");
            }

            var reportingPeriod =
                new ReportingPeriod(reportingFrequency, reportingTerm, year);
            var reportData = _centralReportService.GetGeneratedData(organizationRef.Id, reportingPeriod);
            var report     = new CentralReport(description, organization, reportingPeriod, reportData);

            report.UpdateGeneratedData(reportData);
            _session.Save(report);
            return(report);
        }
コード例 #3
0
        public static ReportData GetCalculatedReportData(UnitReport[] onlyRecentUnitReports,
                                                         UnitReport[] allUnitReports,
                                                         ZoneReport[] onlyRecentZoneReports       = null,
                                                         ZoneReport[] allZoneReports              = null,
                                                         StateReport[] onlyRecentStateReports     = null,
                                                         StateReport[] allStateReports            = null,
                                                         CentralReport[] onlyRecentCentralReports = null,
                                                         CentralReport[] allCentralReports        = null

                                                         )
        {
            if (onlyRecentUnitReports == null)
            {
                onlyRecentUnitReports = new UnitReport[0];
            }
            if (onlyRecentZoneReports == null)
            {
                onlyRecentZoneReports = new ZoneReport[0];
            }
            if (onlyRecentStateReports == null)
            {
                onlyRecentStateReports = new StateReport[0];
            }
            if (onlyRecentCentralReports == null)
            {
                onlyRecentCentralReports = new CentralReport[0];
            }

            if (allUnitReports == null)
            {
                allUnitReports = new UnitReport[0];
            }
            if (allZoneReports == null)
            {
                allZoneReports = new ZoneReport[0];
            }
            if (allStateReports == null)
            {
                allStateReports = new StateReport[0];
            }
            if (allCentralReports == null)
            {
                allCentralReports = new CentralReport[0];
            }

            return(Calculator.GetCalculatedReportData(onlyRecentUnitReports.Select(o =>
            {
                ReportData r = o;
                return r;
            }).ToArray(),
                                                      allUnitReports.Select(o =>
            {
                ReportData r = o;
                return r;
            }).ToArray(),
                                                      onlyRecentZoneReports.Select(o =>
            {
                ReportData r = o;
                return r;
            }).ToArray(),
                                                      allZoneReports.Select(o =>
            {
                ReportData r = o;
                return r;
            }).ToArray(),
                                                      onlyRecentStateReports.Select(o =>
            {
                ReportData r = o;
                return r;
            }).ToArray(),
                                                      allStateReports.Select(o =>
            {
                ReportData r = o;
                return r;
            }).ToArray(),
                                                      onlyRecentCentralReports.Select(o =>
            {
                ReportData r = o;
                return r;
            }).ToArray(),
                                                      allCentralReports.Select(o =>
            {
                ReportData r = o;
                return r;
            }).ToArray()));
        }
        public async Task Handle_Publishes_ExpectedResult()
        {
            DateTimeDbTestExtensions.SetUtcNowToRandomDate();
            var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer,
                                                          s =>
            {
                var username      = DataProvider.Get <string>();
                var organizations = IntegrationTestOrganizationHelper.SetupOrzanizations();
                var central       = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.Central).Value;
                var nswState      = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.NswState).Value;
                var nswZone1      = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.NswZoneOne).Value;
                var lakemba       = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.Lakemba).Value;

                var year1 = 2019;
                var year2 = 2020;

                var period1 = new ReportingPeriod(ReportingFrequency.Monthly, ReportingTerm.One, year1);
                var period2 = new ReportingPeriod(ReportingFrequency.Monthly, ReportingTerm.One, year2);

                var period1ReportingData = new ReportDataBuilder().Build();
                var period2ReportingData = new ReportDataBuilder().Build();

                var period1UnitReport =
                    new UnitReport(DataProvider.Get <string>(), lakemba, period1, period1ReportingData);
                s.Save(period1UnitReport);
                var period2UnitReport =
                    new UnitReport(DataProvider.Get <string>(), lakemba, period2, period2ReportingData);
                s.Save(period2UnitReport);

                var period1ZoneReport =
                    new ZoneReport(DataProvider.Get <string>(), nswZone1, period1, period1ReportingData);
                s.Save(period1ZoneReport);
                var period2ZoneReport =
                    new ZoneReport(DataProvider.Get <string>(), nswZone1, period2, period2ReportingData);
                s.Save(period2ZoneReport);

                var period1StateReport =
                    new StateReport(DataProvider.Get <string>(), nswState, period1, period1ReportingData);
                s.Save(period1StateReport);
                var period2StateReport =
                    new StateReport(DataProvider.Get <string>(), nswState, period2, period2ReportingData);
                s.Save(period2StateReport);

                var period1CentralReport =
                    new CentralReport(DataProvider.Get <string>(), central, period1, period1ReportingData);
                s.Save(period1CentralReport);
                var period2CentralReport =
                    new CentralReport(DataProvider.Get <string>(), central, period2, period2ReportingData);
                s.Save(period2CentralReport);

                var reportIds = new[]
                {
                    period1UnitReport.Id, period2UnitReport.Id, period1ZoneReport.Id, period2ZoneReport.Id,
                    period1StateReport.Id, period2StateReport.Id, period1CentralReport.Id, period2CentralReport.Id,
                };
                var expectedReportData = ReportDataCalculator.GetCalculatedReportData(new[] { period2UnitReport },
                                                                                      new[] { period1UnitReport, period2UnitReport }, new[] { period2ZoneReport },
                                                                                      new[] { period1ZoneReport, period2ZoneReport }, new[] { period2StateReport },
                                                                                      new[] { period1StateReport, period2StateReport }, new[] { period2CentralReport },
                                                                                      new[] { period1CentralReport, period2CentralReport });

                return(new
                {
                    username,
                    expectedReportData,
                    cmd = new ConsolidateReportCommand(reportIds),
                });
            });

            var context = await Endpoint.Act <ConsolidateReportCommandHandler>(AssemblySetupFixture.EndpointTestContainer,
                                                                               (h, ctx) =>
            {
                ctx.SetUsernameOnHeader(testParams.username);
                return(h.Handle(testParams.cmd, ctx));
            });

            var evt = context.ExpectPublish <IConsolidateReportSucceeded>();

            evt.ReportIds.Should().BeEquivalentTo(testParams.cmd.ReportIds);
            evt.ReportData.Should().BeEquivalentTo(testParams.expectedReportData);
            evt.Username.Should().BeEquivalentTo(testParams.username);
        }
        public void GetConsolidatedReportData_Returns_ExpectedReportData()
        {
            DateTimeDbTestExtensions.SetUtcNowToRandomDate();
            var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s =>
            {
                var organizations = IntegrationTestOrganizationHelper.SetupOrzanizations();
                var central       = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.Central).Value;
                var nswState      = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.NswState).Value;
                var nswZone1      = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.NswZoneOne).Value;
                var lakemba       = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.Lakemba).Value;

                var year1 = 2019;
                var year2 = 2020;

                var period1 = new ReportingPeriod(ReportingFrequency.Monthly, ReportingTerm.One, year1);
                var period2 = new ReportingPeriod(ReportingFrequency.Monthly, ReportingTerm.One, year2);

                var period1ReportingData = new ReportDataBuilder().Build();
                var period2ReportingData = new ReportDataBuilder().Build();

                var period1UnitReport =
                    new UnitReport(DataProvider.Get <string>(), lakemba, period1, period1ReportingData);
                s.Save(period1UnitReport);
                var period2UnitReport =
                    new UnitReport(DataProvider.Get <string>(), lakemba, period2, period2ReportingData);
                s.Save(period2UnitReport);

                var period1ZoneReport =
                    new ZoneReport(DataProvider.Get <string>(), nswZone1, period1, period1ReportingData);
                s.Save(period1ZoneReport);
                var period2ZoneReport =
                    new ZoneReport(DataProvider.Get <string>(), nswZone1, period2, period2ReportingData);
                s.Save(period2ZoneReport);

                var period1StateReport =
                    new StateReport(DataProvider.Get <string>(), nswState, period1, period1ReportingData);
                s.Save(period1StateReport);
                var period2StateReport =
                    new StateReport(DataProvider.Get <string>(), nswState, period2, period2ReportingData);
                s.Save(period2StateReport);

                var period1CentralReport =
                    new CentralReport(DataProvider.Get <string>(), central, period1, period1ReportingData);
                s.Save(period1CentralReport);
                var period2CentralReport =
                    new CentralReport(DataProvider.Get <string>(), central, period2, period2ReportingData);
                s.Save(period2CentralReport);

                var reportIds = new[]
                {
                    period1UnitReport.Id, period2UnitReport.Id, period1ZoneReport.Id, period2ZoneReport.Id,
                    period1StateReport.Id, period2StateReport.Id, period1CentralReport.Id, period2CentralReport.Id,
                };
                var expectedReportData = ReportDataCalculator.GetCalculatedReportData(new[] { period2UnitReport },
                                                                                      new[] { period1UnitReport, period2UnitReport }, new[] { period2ZoneReport },
                                                                                      new[] { period1ZoneReport, period2ZoneReport }, new[] { period2StateReport },
                                                                                      new[] { period1StateReport, period2StateReport }, new[] { period2CentralReport },
                                                                                      new[] { period1CentralReport, period2CentralReport });
                return(new { reportIds, expectedReportData });
            });
            var result = Endpoint.Act(AssemblySetupFixture.EndpointTestContainer,
                                      c => c.GetInstance <ConsolidatedReportService>().GetConsolidatedReportData(testParams.reportIds));

            result.Should().NotBeNull();
            result.Should().BeEquivalentTo(testParams.expectedReportData);
        }