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; })); }
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); }
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); }