public async Task <IHttpActionResult> MakeUnitPlan( OrganizationReference organization, int year, ReportingTerm reportingTerm) { return(await MakeUnitPlan2(organization, year, reportingTerm, ReportingFrequency.Monthly)); }
public async Task <IHttpActionResult> CopyCentralPlan( int copyFromReportId, OrganizationReference organization, int year, ReportingTerm reportingTerm, ReportingFrequency reportingFrequency) { try { if (!_userContext.CurrentUserIsSystemUser()) { return(Unauthorized()); } if (organization == null) { throw new ArgumentNullException(nameof(organization)); } if (!_userContext.CurrentUserCanAccess(organization.Id)) { return(Unauthorized()); } var cmd = new CopyUnitPlanCommand(copyFromReportId, organization, year, reportingTerm, reportingFrequency); await _endpointInstance().SendWithSignalRMetaData(cmd, Request); return(this.Accepted()); } catch (Exception ex) { _log.Error(ex); return(InternalServerError()); } }
public ZoneReport CopyZonePlan(string description, int copyFromReportId, OrganizationReference organizationRef, ReportingTerm reportingTerm, int year) { if (organizationRef.OrganizationType != OrganizationType.Zone) { throw new ArgumentException("Invalid Organization Type"); } var copyFromReport = _session.Get <ZoneReport>(copyFromReportId); if (copyFromReport.ReportingPeriod.ReportingFrequency != ReportingFrequency.Quarterly && copyFromReport.ReportingPeriod.ReportingFrequency != ReportingFrequency.Yearly) { throw new ArgumentException("Invalid Reporting Frequency"); } ReportData reportData = copyFromReport; var lastPeriodUpdateData = Calculator.GetLastPeriodUpdateData(reportData); var newReport = CreateNewZonePlan(description, copyFromReport.Organization, reportingTerm, year, copyFromReport.ReportingPeriod.ReportingFrequency); newReport.UpdatePlan(reportData); newReport.Update(reportData); newReport.Update(lastPeriodUpdateData); _session.Save(newReport); return(newReport); }
/// <summary> /// Archive a product /// </summary> /// <param name="organizationReference">The organization reference.</param> /// <param name="productReference">The product reference.</param> /// <returns>List of CultureInfos</returns> public void ActiveProduct(ReferenceName organizationReference, ReferenceName productReference) { var orgRef = new OrganizationReference(organizationReference); var prodRef = new Generated.ReferenceName(productReference); _client.ActiveProduct(orgRef, prodRef); }
public void AddOrganizationReference(OrganizationReference organizationReference) { if (organizationReference == null) { throw new ArgumentNullException(nameof(organizationReference)); } _managedOrganizations.Add(organizationReference); }
public void CreateNewUnitPlan_SavesCorrectlyWhenLastYearSubmitted(ReportingFrequency reportingFrequency) { DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var organizationType = OrganizationType.Unit; var description = DataProvider.Get <string>(); var year = 2019; var reportingTerm = ReportingTerm.One; var organization = new TestObjectBuilder <Organization>() .SetArgument(o => o.OrganizationType, organizationType) .SetArgument(o => o.ReportingFrequency, reportingFrequency) .BuildAndPersist(s); OrganizationReference organizationRef = organization; var reportingPeriod = new ReportingPeriod(reportingFrequency, reportingTerm, year); var expected = new UnitReportBuilder() .SetDescription(description) .SetOrganization(organization) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingTerm, year)) .SetReportData(ReportData.Default()) .Build(); return(new { description, organizationRef, reportingPeriod, expected }); }); var result = Endpoint.Act(AssemblySetupFixture.EndpointTestContainer, c => { var unitReport = c.GetInstance <UnitReportFactory>() .CreateNewUnitPlan(testParams.description, testParams.organizationRef, testParams.reportingPeriod.ReportingTerm, testParams.reportingPeriod.Year, reportingFrequency); return(new { unitReport }); }); result.unitReport.Should().NotBeNull(); result.unitReport.Should().BeEquivalentTo(testParams.expected, e => e.Excluding(p => p.Id)); }
public Report CreateNewReport(string description, OrganizationReference organizationRef, ReportingTerm reportingTerm, int year) { var organization = _session.Query <Organization>().Single(o => o.Id == organizationRef.Id); var reportingPeriod = new ReportingPeriod(organization.ReportingFrequency, reportingTerm, year); var report = new Report(description, organization, reportingPeriod, null); _session.Save(report); return(report); }
public CreateCentralPlanCommand( OrganizationReference organization, int year, ReportingTerm reportingTerm, ReportingFrequency reportingFrequency) { Organization = organization ?? throw new ArgumentNullException(nameof(organization)); Year = year; ReportingTerm = reportingTerm; ReportingFrequency = reportingFrequency; }
public async Task Handle_SavesRecord(OrganizationType organizationType, ReportingFrequency reportingFrequency) { var username = DataProvider.Get <string>(); var description = DataProvider.Get <string>(); var details = DataProvider.Get <string>(); var parent = DataProvider.Get <EntityReference>(); DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var expected = new OrganizationBuilder() .SetDescription(description) .SetDetails(details) .SetParent(parent) .SetOrganizationType(organizationType) .SetReportingFreQuency(reportingFrequency) .Build(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => new { Cmd = new CreateOrganizationCommand(description, details, organizationType, reportingFrequency, parent), username, expected }); var context = await Endpoint.Act <CreateOrganizationCommandHandler>( AssemblySetupFixture.EndpointTestContainer, (h, ctx) => { ctx.SetUsernameOnHeader(testParams.username); return(h.Handle(testParams.Cmd, ctx)); }); var evt = context.ExpectPublish <IOrganizationCreated>(); Endpoint.AssertOnSqlSessionThat(AssemblySetupFixture.EndpointTestContainer, s => { var org = s.Query <Organization>().Single(); org.Should().NotBeNull(); org.Should().BeEquivalentTo(testParams.expected, e => e.Excluding(p => p.Id)); OrganizationReference orgRef = org; var expectedEvt = Test.CreateInstance <IOrganizationCreated>(e => { e.Organization = orgRef; e.Username = testParams.username; }); evt.Should().BeEquivalentTo(expectedEvt, e => e.Excluding(p => p.SerializedData)); evt.SerializedData.Should().NotBe(null); }); }
private ReportingPeriodViewModel[] GetReportingPeriods(OrganizationReference organizationReference, DateTime startDate, DateTime endDate, ReportingFrequency reportingFrequency) { var reportingPeriods = ReportingPeriod.GetReportingPeriods(startDate, endDate, reportingFrequency); return(reportingPeriods.Select(o => { var isActive = ZaphodTime.LocalNow >= o.StartDate && ZaphodTime.LocalNow <= o.EndDate; return new ReportingPeriodViewModel() { IsActive = isActive, OrganizationReference = organizationReference, ReportingPeriodData = o }; }).ToArray()); }
public CopyStatePlanCommand( int copyFromReportId, OrganizationReference organization, int year, ReportingTerm reportingTerm, ReportingFrequency reportingFrequency = ReportingFrequency.Quarterly) { Organization = organization ?? throw new ArgumentNullException(nameof(organization)); CopyFromReportId = copyFromReportId; Year = year; ReportingTerm = reportingTerm; ReportingFrequency = reportingFrequency; }
public void Update(string description, OrganizationReference organization, ReportingPeriod reportingPeriod) { if (string.IsNullOrWhiteSpace(description)) { throw new ArgumentException("Value cannot be null or whitespace.", nameof(description)); } Description = description; Organization = organization ?? throw new ArgumentNullException(nameof(organization)); ReportingPeriod = reportingPeriod ?? throw new ArgumentNullException(nameof(reportingPeriod)); Timestamp = ZaphodTime.UtcNow; }
/// <summary> /// Gets the product references that are available for a specific product. /// </summary> /// <param name="organizationReference">The organization reference.</param> /// <param name="productReference">The product reference.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException">The productReference was null</exception> public ProductReference GetProductReferences(OrganizationReference organizationReference, ReferenceName productReference) { if (productReference == null) { throw new ArgumentNullException("productReference"); } var refs = _client.GetProductReferences( organizationReference != null ? new Generated.OrganizationReference(new ReferenceName(organizationReference.ToString())) : null, new Generated.ReferenceName(productReference)); return(new ProductReference(refs.SystemName, refs.ReferenceNames.Select(x => new ReferenceName(x.SubSystem, x.LocalName)))); }
public CreateZoneReportCommand(string description, OrganizationReference organization, int year, ReportingTerm reportingTerm) { if (string.IsNullOrWhiteSpace(description)) { throw new ArgumentException("Value cannot be null or whitespace.", nameof(description)); } Description = description; Organization = organization ?? throw new ArgumentNullException(nameof(organization)); Year = year; ReportingTerm = reportingTerm; }
public Report(string description, OrganizationReference organization, ReportingPeriod reportingPeriod, string comment) { if (string.IsNullOrWhiteSpace(description)) { throw new ArgumentException("Value cannot be null or whitespace.", nameof(description)); } Description = description; Organization = organization ?? throw new ArgumentNullException(nameof(organization)); ReportingPeriod = reportingPeriod ?? throw new ArgumentNullException(nameof(reportingPeriod)); ReportStatus = ReportStatus.Draft; ReopenedReportStatus = ReopenedReportStatus.None; Comment = comment; Timestamp = ZaphodTime.UtcNow; IsDeleted = false; }
/// <summary> /// Updates information about the supplier. Data normally used is contact information, like email, phone and address. /// </summary> /// <param name="organizationReference">The organization reference.</param> /// <param name="informationData">The information data that should be stored with the supplier.</param> /// <exception cref="System.ArgumentNullException"> /// organizationReference /// or /// informationData /// </exception> public void UpdateSupplier(ReferenceName organizationReference, List <InformationData> informationData) { if (organizationReference == null) { throw new ArgumentNullException("organizationReference"); } if (informationData == null) { throw new ArgumentNullException("informationData"); } var orgRef = new OrganizationReference(organizationReference); var unifiedItems = this.InformationDataValidator(informationData); var dataList = unifiedItems.Select(x => x.Create()).ToArray(); _client.UpdateOrganization(orgRef, dataList); }
/// <summary> /// Retrieves all products from the organization in a paged manner. /// </summary> /// <param name="organizationReference">The organization reference.</param> /// <param name="pageSize">Size of the page.</param> /// <param name="skipPages">The skip pages.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException">The organizationReference was null</exception> public List <ProductReference> GetProducts(ReferenceName organizationReference, int pageSize, int skipPages) { OrganizationReference orgRef = null; if (organizationReference != null) { orgRef = new OrganizationReference(organizationReference); } var productList = _client.GetProducts(orgRef, pageSize, skipPages); var list = new List <ProductReference>(); foreach (var p in productList) { list.Add(new ProductReference(p.SystemName, p.ReferenceNames.Select(x => new ReferenceName(x.SubSystem, x.LocalName)))); } return(list); }
/// <summary> /// Sets information that should be stored with the product. All information submitted though <paramref name="informationData"/> will be stored. /// All informationdata that exists on the product not included in that set will be deleted. /// </summary> /// <param name="organizationReference">The organization reference.</param> /// <param name="name">The name.</param> /// <param name="categoryId">The category identifier.</param> /// <param name="productId">The product identifier.</param> /// <param name="informationData">The information data.</param> /// <param name="images">The images.</param> /// <param name="occasions">The occasions.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException"> /// organizationReference /// or /// name /// or /// productId /// </exception> public ReferenceName SetProduct(ReferenceName organizationReference, string name, int categoryId, ReferenceName productId, IEnumerable <InformationData> informationData, IEnumerable <ImageData> images, IEnumerable <Occasion> occasions) { if (organizationReference == null) { throw new ArgumentNullException("organizationReference"); } if (name == null) { throw new ArgumentNullException("name"); } if (productId == null) { throw new ArgumentNullException("productId"); } HashSet <InformationData> unifiedItems = InformationDataValidator(informationData); OrganizationReference orgRef = new OrganizationReference(organizationReference); Generated.ReferenceName prodRef = new Generated.ReferenceName(productId); if (occasions == null) { occasions = new List <Occasion>(); } if (images == null) { images = new List <ImageData>(); } ProductCallbackReference productResult = _client.SetProduct(orgRef, name, categoryId, prodRef, unifiedItems.Select(x => x.Create()).ToArray(), images.Select(x => x.Create()).ToArray(), occasions.Select(x => x.Create()).ToArray()); return(new ReferenceName(productResult.CbisProductId.SubSystem, productResult.CbisProductId.LocalName)); }
private ReportingPeriodViewModel[] GetReportingPeriodByOrganizationType(OrganizationReference organizationReference) { switch (organizationReference.OrganizationType) { case OrganizationType.Unit: { var now = ZaphodTime.LocalNow; var startDate = ZaphodTime.LocalNow.AddMonths(-20); var endDate = ZaphodTime.LocalNow.AddMonths(8); return(GetReportingPeriods(organizationReference, startDate, endDate, ReportingFrequency.Monthly)); } default: { var startDate = ZaphodTime.LocalNow.AddYears(-2); var endDate = ZaphodTime.LocalNow.AddYears(1); var annualReportingPeriods = GetReportingPeriods(organizationReference, startDate, endDate, ReportingFrequency.Yearly); var quarterlyReportingPeriods = GetReportingPeriods(organizationReference, startDate, endDate, ReportingFrequency.Quarterly); return(annualReportingPeriods.Concat(quarterlyReportingPeriods).ToArray()); } } }
public ZoneReport CreateNewZonePlan(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.Zone) { 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 = _zoneReportService.GetGeneratedData(organizationRef.Id, reportingPeriod); var report = new ZoneReport(description, organization, reportingPeriod, reportData); report.UpdateGeneratedData(reportData); _session.Save(report); return(report); }
/// <summary> /// Gets information related to a product. /// </summary> /// <param name="organizationReference">The organization reference.</param> /// <param name="productReference">The product reference.</param> /// <returns></returns> /// <exception cref="System.Exception"></exception> public Product GetProduct(ReferenceName organizationReference, ReferenceName productReference) { var orgRef = new OrganizationReference(organizationReference); var prodRef = new Generated.ReferenceName(productReference); var converter = this.GetInformationDataConverter(); var product = _client.GetProduct(orgRef, prodRef); var productReferenceName = new ReferenceName(product.Reference.SubSystem, product.Reference.LocalName); var informationDataList = new List <InformationData>(); foreach (var data in product.InformationData) { Func <Generated.InformationData, InformationData> dataConverter; if (!converter.TryGetValue(data.GetType(), out dataConverter)) { throw new Exception("Failed to find converter for type: " + data.GetType()); } informationDataList.Add(dataConverter(data)); } var occasions = new List <Occasion>(); foreach (var occasion in product.OccasionData) { occasions.Add(ConvertOccasion(occasion)); } var images = new List <ImageData>(); foreach (var media in product.MediaData) { images.Add(ConvertMedia(media)); } return(new Product(productReferenceName, informationDataList, occasions, images)); }
public ProductReferenceSetResult ModifyProductReferences( OrganizationReference organizationReference, ReferenceName productToActOn, List <ReferenceName> referencesToAdd, List <ReferenceName> referencesToRemove) { if (referencesToAdd == null) { referencesToAdd = new List <ReferenceName>(); } if (referencesToRemove == null) { referencesToRemove = new List <ReferenceName>(); } if (productToActOn == null) { throw new ArgumentNullException("productToActOn"); } if (referencesToAdd.Count == 0 && referencesToRemove.Count == 0) { throw new InvalidOperationException("No names addad and no removed, call obsolete. Remove"); } var result = _client.ModifyProductReferences( organizationReference, productToActOn.CreateContractReferenceName(), referencesToAdd.Select(x => x.CreateContractReferenceName()).ToArray(), referencesToRemove.Select(x => x.CreateContractReferenceName()).ToArray()); return (new ProductReferenceSetResult( result.AddedReferences.Select(x => new ReferenceName(x.SubSystem, x.LocalName)), result.RemovedReferences.Select(x => new ReferenceName(x.SubSystem, x.LocalName)))); }
private UnitReport CreateNew(string description, OrganizationReference organizationRef, ReportingTerm reportingTerm, int year, ReportingFrequency reportingFrequency, bool isAi = false) { var organization = _session.Query <Organization>().Single(o => o.Id == organizationRef.Id); if (organization.OrganizationType != OrganizationType.Unit) { throw new ArgumentException("Invalid Organization Type"); } if (reportingFrequency != organization.ReportingFrequency) { throw new ArgumentException("Invalid Reporting Frequency"); } var reportingPeriod = new ReportingPeriod(reportingFrequency, reportingTerm, year); var reportData = isAi ? GetReportDataAi(organization, reportingPeriod) : ReportData.Default(); var report = new UnitReport(description, organization, reportingPeriod, reportData); _session.Save(report); return(report); }
public void CreateNewPlan_For_State_Unit_SavesMaterialDataCorrectly( bool thisPeriodSubmitted, bool lastPeriod1Submitted, bool lastPeriod2Submitted ) { DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var reportingTerms = ReportingPeriod.GetReportingTerms(reportingFrequency); if (reportingTerms.All(o => o != reportingTerm)) { return; } var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var organizations = IntegrationTestOrganizationHelper.SetupOrzanizations( stateReportingFrequency: reportingFrequency, zoneReportingFrequency: ReportingFrequency.Monthly); var nswState = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.NswState).Value; var laPerouse = new OrganizationBuilder() .SetDescription("La perouse") .SetOrganizationType(OrganizationType.Unit) .SetReportingFreQuency(ReportingFrequency.Monthly) .SetParent(nswState) .BuildAndPersist(s); var lalorPark = new OrganizationBuilder() .SetDescription("Lalor park") .SetOrganizationType(OrganizationType.Unit) .SetReportingFreQuency(ReportingFrequency.Monthly) .SetParent(nswState) .BuildAndPersist(s); var description = DataProvider.Get <string>(); var year = 2019; OrganizationReference organizationRef = nswState; var reportingPeriod = new ReportingPeriod(reportingFrequency, reportingTerm, year); var expected = new StateReportBuilder() .SetDescription(description) .SetOrganization(organizationRef) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingPeriod.ReportingTerm, reportingPeriod.Year)) .Build(); var lastPeriod1 = reportingPeriod.GetReportingPeriodOfPreviousTerm(); var lastPeriod2 = lastPeriod1.GetReportingPeriodOfPreviousTerm(); var laPerouseThisPeriodUnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(thisPeriodSubmitted, laPerouse, reportingPeriod, s); var laPerouseLastPeriod1UnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(lastPeriod1Submitted, laPerouse, lastPeriod1, s); var laPerouseLastPeriod2UnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(lastPeriod2Submitted, laPerouse, lastPeriod2, s); var lalorParkThisPeriodUnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(thisPeriodSubmitted, lalorPark, reportingPeriod, s); var lalorParkLastPeriod1UnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(lastPeriod1Submitted, lalorPark, lastPeriod1, s); var lalorParkLastPeriod2UnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(lastPeriod2Submitted, lalorPark, lastPeriod2, s); var allUnitReports = new[] { laPerouseThisPeriodUnitReport, laPerouseLastPeriod1UnitReport, laPerouseLastPeriod2UnitReport, lalorParkThisPeriodUnitReport, lalorParkLastPeriod1UnitReport, lalorParkLastPeriod2UnitReport, }; var submittedReports = IntegrationTestStateReportHelper.GetSubmittedReports(allUnitReports, reportingPeriod); var expectedBookSaleMaterialData = IntegrationTestStateReportHelper.GetExpectedMaterialData(submittedReports, nameof(StateReport.BookSaleMaterialData)); var expectedBookSaleMaterialGeneratedData = expectedBookSaleMaterialData; var expectedBookDistributionMaterialData = IntegrationTestStateReportHelper.GetExpectedMaterialData(submittedReports, nameof(StateReport.BookDistributionMaterialData)); var expectedBookDistributionMaterialGeneratedData = expectedBookDistributionMaterialData; var expectedVhsSaleMaterialData = IntegrationTestStateReportHelper.GetExpectedMaterialData(submittedReports, nameof(StateReport.VhsSaleMaterialData)); var expectedVhsSaleMaterialGeneratedData = expectedVhsSaleMaterialData; var expectedVhsDistributionMaterialData = IntegrationTestStateReportHelper.GetExpectedMaterialData(submittedReports, nameof(StateReport.VhsDistributionMaterialData)); var expectedVhsDistributionMaterialGeneratedData = expectedVhsDistributionMaterialData; var expectedEmailDistributionMaterialData = IntegrationTestStateReportHelper.GetExpectedMaterialData(submittedReports, nameof(StateReport.EmailDistributionMaterialData)); var expectedEmailDistributionMaterialGeneratedData = expectedEmailDistributionMaterialData; var expectedIpdcLeafletDistributionMaterialData = IntegrationTestStateReportHelper.GetExpectedMaterialData(submittedReports, nameof(StateReport.IpdcLeafletDistributionMaterialData)); var expectedIpdcLeafletDistributionMaterialGeneratedData = expectedIpdcLeafletDistributionMaterialData; return(new { description, reportingPeriod, organizationRef, expected, expectedBookSaleMaterialData, expectedBookSaleMaterialGeneratedData, expectedBookDistributionMaterialData, expectedBookDistributionMaterialGeneratedData, expectedVhsSaleMaterialData, expectedVhsSaleMaterialGeneratedData, expectedVhsDistributionMaterialData, expectedVhsDistributionMaterialGeneratedData, expectedEmailDistributionMaterialData, expectedEmailDistributionMaterialGeneratedData, expectedIpdcLeafletDistributionMaterialData, expectedIpdcLeafletDistributionMaterialGeneratedData }); }); var result = Endpoint.Act(AssemblySetupFixture.EndpointTestContainer, c => { var stateReport = c.GetInstance <IStateReportFactory>() .CreateNewStatePlan(testParams.description, testParams.organizationRef, testParams.reportingPeriod.ReportingTerm, testParams.reportingPeriod.Year, reportingFrequency); return(new { stateReport }); }); result.stateReport.Should().NotBeNull(); result.stateReport.BookSaleMaterialData.Should().BeEquivalentTo(testParams.expectedBookSaleMaterialData); result.stateReport.BookSaleMaterialGeneratedData.Should().BeEquivalentTo(testParams.expectedBookSaleMaterialGeneratedData); result.stateReport.BookDistributionMaterialData.Should().BeEquivalentTo(testParams.expectedBookDistributionMaterialData); result.stateReport.BookDistributionMaterialGeneratedData.Should().BeEquivalentTo(testParams.expectedBookDistributionMaterialGeneratedData); result.stateReport.VhsSaleMaterialData.Should().BeEquivalentTo(testParams.expectedVhsSaleMaterialData); result.stateReport.VhsSaleMaterialGeneratedData.Should().BeEquivalentTo(testParams.expectedVhsSaleMaterialGeneratedData); result.stateReport.VhsDistributionMaterialData.Should().BeEquivalentTo(testParams.expectedVhsDistributionMaterialData); result.stateReport.VhsDistributionMaterialGeneratedData.Should().BeEquivalentTo(testParams.expectedVhsDistributionMaterialGeneratedData); result.stateReport.EmailDistributionMaterialData.Should().BeEquivalentTo(testParams.expectedEmailDistributionMaterialData); result.stateReport.EmailDistributionMaterialGeneratedData.Should().BeEquivalentTo(testParams.expectedEmailDistributionMaterialGeneratedData); result.stateReport.IpdcLeafletDistributionMaterialData.Should().BeEquivalentTo(testParams.expectedIpdcLeafletDistributionMaterialData); result.stateReport.IpdcLeafletDistributionMaterialGeneratedData.Should().BeEquivalentTo(testParams.expectedIpdcLeafletDistributionMaterialGeneratedData); }
public void CreateNewPlan_For_State_Unit_SavesMemberDataCorrectly( bool thisPeriodSubmitted, bool lastPeriod1Submitted, bool lastPeriod2Submitted ) { DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var reportingTerms = ReportingPeriod.GetReportingTerms(reportingFrequency); if (reportingTerms.All(o => o != reportingTerm)) { return; } var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var organizations = IntegrationTestOrganizationHelper.SetupOrzanizations( stateReportingFrequency: reportingFrequency, zoneReportingFrequency: ReportingFrequency.Monthly); var nswState = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.NswState).Value; var laPerouse = new OrganizationBuilder() .SetDescription("La perouse") .SetOrganizationType(OrganizationType.Unit) .SetReportingFreQuency(ReportingFrequency.Monthly) .SetParent(nswState) .BuildAndPersist(s); var lalorPark = new OrganizationBuilder() .SetDescription("Lalor park") .SetOrganizationType(OrganizationType.Unit) .SetReportingFreQuency(ReportingFrequency.Monthly) .SetParent(nswState) .BuildAndPersist(s); var description = DataProvider.Get <string>(); var year = 2019; OrganizationReference organizationRef = nswState; var reportingPeriod = new ReportingPeriod(reportingFrequency, reportingTerm, year); var expected = new StateReportBuilder() .SetDescription(description) .SetOrganization(organizationRef) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingPeriod.ReportingTerm, reportingPeriod.Year)) .Build(); var lastPeriod1 = reportingPeriod.GetReportingPeriodOfPreviousTerm(); var lastPeriod2 = lastPeriod1.GetReportingPeriodOfPreviousTerm(); var laPerouseThisPeriodUnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(thisPeriodSubmitted, laPerouse, reportingPeriod, s); var laPerouseLastPeriod1UnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(lastPeriod1Submitted, laPerouse, lastPeriod1, s); var laPerouseLastPeriod2UnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(lastPeriod2Submitted, laPerouse, lastPeriod2, s); var lalorParkThisPeriodUnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(thisPeriodSubmitted, lalorPark, reportingPeriod, s); var lalorParkLastPeriod1UnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(lastPeriod1Submitted, lalorPark, lastPeriod1, s); var lalorParkLastPeriod2UnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(lastPeriod2Submitted, lalorPark, lastPeriod2, s); var laPerouseUnitReports = new[] { laPerouseThisPeriodUnitReport, laPerouseLastPeriod1UnitReport, laPerouseLastPeriod2UnitReport, }; var lalorParkeUnitReports = new[] { lalorParkThisPeriodUnitReport, lalorParkLastPeriod1UnitReport, lalorParkLastPeriod2UnitReport, }; var lastSubmittedLapeRouseReport = IntegrationTestStateReportHelper.GetLastSubmittedReport(laPerouseUnitReports, reportingPeriod); var lastSubmittedLalorParkReport = IntegrationTestStateReportHelper.GetLastSubmittedReport(lalorParkeUnitReports, reportingPeriod); var submittedReports = new[] { lastSubmittedLapeRouseReport, lastSubmittedLalorParkReport }.Where(o => o != null).ToArray(); var expectedMemberMemberData = IntegrationTestStateReportHelper.GetExpectedMemberData(submittedReports, nameof(StateReport.MemberMemberData)); var expectedMemberMemberGeneratedData = expectedMemberMemberData; var expectedAssociateMemberData = IntegrationTestStateReportHelper.GetExpectedMemberData(submittedReports, nameof(StateReport.AssociateMemberData)); var expectedAssociateMemberGeneratedData = expectedAssociateMemberData; var expectedPreliminaryMemberData = IntegrationTestStateReportHelper.GetExpectedMemberData(submittedReports, nameof(StateReport.PreliminaryMemberData)); var expectedPreliminaryMemberGeneratedData = expectedPreliminaryMemberData; var expectedSupporterMemberData = IntegrationTestStateReportHelper.GetExpectedMemberData(submittedReports, nameof(StateReport.SupporterMemberData)); var expectedSupporterMemberGeneratedData = expectedSupporterMemberData; return(new { description, reportingPeriod, organizationRef, expected, expectedMemberMemberData, expectedMemberMemberGeneratedData, expectedAssociateMemberData, expectedAssociateMemberGeneratedData, expectedPreliminaryMemberData, expectedPreliminaryMemberGeneratedData, expectedSupporterMemberData, expectedSupporterMemberGeneratedData, }); }); var result = Endpoint.Act(AssemblySetupFixture.EndpointTestContainer, c => { var stateReport = c.GetInstance <IStateReportFactory>() .CreateNewStatePlan(testParams.description, testParams.organizationRef, testParams.reportingPeriod.ReportingTerm, testParams.reportingPeriod.Year, reportingFrequency); return(new { stateReport }); }); result.stateReport.Should().NotBeNull(); //no need to repeat this section for the other field types result.stateReport.Should().BeEquivalentTo(testParams.expected, e => e.Excluding(p => p.Id) .Excluding(p => p.MemberMemberData) .Excluding(p => p.MemberMemberGeneratedData) .Excluding(p => p.AssociateMemberData) .Excluding(p => p.AssociateMemberGeneratedData) .Excluding(p => p.PreliminaryMemberData) .Excluding(p => p.PreliminaryMemberGeneratedData) .Excluding(p => p.SupporterMemberData) .Excluding(p => p.SupporterMemberGeneratedData) .Excluding(p => p.WorkerMeetingProgramData) .Excluding(p => p.WorkerMeetingProgramGeneratedData) .Excluding(p => p.DawahMeetingProgramData) .Excluding(p => p.DawahMeetingProgramGeneratedData) .Excluding(p => p.StateLeaderMeetingProgramData) .Excluding(p => p.StateLeaderMeetingProgramGeneratedData) .Excluding(p => p.StateOutingMeetingProgramData) .Excluding(p => p.StateOutingMeetingProgramGeneratedData) .Excluding(p => p.IftarMeetingProgramData) .Excluding(p => p.IftarMeetingProgramGeneratedData) .Excluding(p => p.LearningMeetingProgramData) .Excluding(p => p.LearningMeetingProgramGeneratedData) .Excluding(p => p.SocialDawahMeetingProgramData) .Excluding(p => p.SocialDawahMeetingProgramGeneratedData) .Excluding(p => p.DawahGroupMeetingProgramData) .Excluding(p => p.DawahGroupMeetingProgramGeneratedData) .Excluding(p => p.NextGMeetingProgramData) .Excluding(p => p.NextGMeetingProgramGeneratedData) .Excluding(p => p.CmsMeetingProgramData) .Excluding(p => p.CmsMeetingProgramGeneratedData) .Excluding(p => p.SmMeetingProgramData) .Excluding(p => p.SmMeetingProgramGeneratedData) .Excluding(p => p.MemberMeetingProgramData) .Excluding(p => p.MemberMeetingProgramGeneratedData) .Excluding(p => p.TafsirMeetingProgramData) .Excluding(p => p.TafsirMeetingProgramGeneratedData) .Excluding(p => p.UnitMeetingProgramData) .Excluding(p => p.UnitMeetingProgramGeneratedData) .Excluding(p => p.FamilyVisitMeetingProgramData) .Excluding(p => p.FamilyVisitMeetingProgramGeneratedData) .Excluding(p => p.EidReunionMeetingProgramData) .Excluding(p => p.EidReunionMeetingProgramGeneratedData) .Excluding(p => p.BbqMeetingProgramData) .Excluding(p => p.BbqMeetingProgramGeneratedData) .Excluding(p => p.GatheringMeetingProgramData) .Excluding(p => p.GatheringMeetingProgramGeneratedData) .Excluding(p => p.OtherMeetingProgramData) .Excluding(p => p.OtherMeetingProgramGeneratedData) .Excluding(p => p.GroupStudyTeachingLearningProgramData) .Excluding(p => p.GroupStudyTeachingLearningProgramGeneratedData) .Excluding(p => p.StudyCircleTeachingLearningProgramData) .Excluding(p => p.StudyCircleTeachingLearningProgramGeneratedData) .Excluding(p => p.PracticeDarsTeachingLearningProgramData) .Excluding(p => p.PracticeDarsTeachingLearningProgramGeneratedData) .Excluding(p => p.StateLearningCampTeachingLearningProgramData) .Excluding(p => p.StateLearningCampTeachingLearningProgramGeneratedData) .Excluding(p => p.QuranStudyTeachingLearningProgramData) .Excluding(p => p.QuranStudyTeachingLearningProgramGeneratedData) .Excluding(p => p.QuranClassTeachingLearningProgramData) .Excluding(p => p.QuranClassTeachingLearningProgramGeneratedData) .Excluding(p => p.MemorizingAyatTeachingLearningProgramData) .Excluding(p => p.MemorizingAyatTeachingLearningProgramGeneratedData) .Excluding(p => p.StateLearningSessionTeachingLearningProgramData) .Excluding(p => p.StateLearningSessionTeachingLearningProgramGeneratedData) .Excluding(p => p.StateQiyamulLailTeachingLearningProgramData) .Excluding(p => p.StateQiyamulLailTeachingLearningProgramGeneratedData) .Excluding(p => p.StudyCircleForAssociateMemberTeachingLearningProgramData) .Excluding(p => p.StudyCircleForAssociateMemberTeachingLearningProgramGeneratedData) .Excluding(p => p.HadithTeachingLearningProgramData) .Excluding(p => p.HadithTeachingLearningProgramGeneratedData) .Excluding(p => p.WeekendIslamicSchoolTeachingLearningProgramData) .Excluding(p => p.WeekendIslamicSchoolTeachingLearningProgramGeneratedData) .Excluding(p => p.MemorizingHadithTeachingLearningProgramData) .Excluding(p => p.MemorizingHadithTeachingLearningProgramGeneratedData) .Excluding(p => p.MemorizingDoaTeachingLearningProgramData) .Excluding(p => p.MemorizingDoaTeachingLearningProgramGeneratedData) .Excluding(p => p.OtherTeachingLearningProgramData) .Excluding(p => p.OtherTeachingLearningProgramGeneratedData) .Excluding(p => p.BookSaleMaterialData) .Excluding(p => p.BookSaleMaterialGeneratedData) .Excluding(p => p.BookDistributionMaterialData) .Excluding(p => p.BookDistributionMaterialGeneratedData) .Excluding(p => p.BookLibraryStockData) .Excluding(p => p.BookLibraryStockGeneratedData) .Excluding(p => p.OtherSaleMaterialData) .Excluding(p => p.OtherSaleMaterialGeneratedData) .Excluding(p => p.OtherDistributionMaterialData) .Excluding(p => p.OtherDistributionMaterialGeneratedData) .Excluding(p => p.OtherLibraryStockData) .Excluding(p => p.OtherLibraryStockGeneratedData) .Excluding(p => p.VhsSaleMaterialData) .Excluding(p => p.VhsSaleMaterialGeneratedData) .Excluding(p => p.VhsDistributionMaterialData) .Excluding(p => p.VhsDistributionMaterialGeneratedData) .Excluding(p => p.VhsLibraryStockData) .Excluding(p => p.VhsLibraryStockGeneratedData) .Excluding(p => p.EmailDistributionMaterialData) .Excluding(p => p.EmailDistributionMaterialGeneratedData) .Excluding(p => p.IpdcLeafletDistributionMaterialData) .Excluding(p => p.IpdcLeafletDistributionMaterialGeneratedData) .Excluding(p => p.BaitulMalFinanceData) .Excluding(p => p.BaitulMalFinanceGeneratedData) .Excluding(p => p.ADayMasjidProjectFinanceData) .Excluding(p => p.ADayMasjidProjectFinanceGeneratedData) .Excluding(p => p.MasjidTableBankFinanceData) .Excluding(p => p.MasjidTableBankFinanceGeneratedData) .Excluding(p => p.QardeHasanaSocialWelfareData) .Excluding(p => p.QardeHasanaSocialWelfareGeneratedData) .Excluding(p => p.PatientVisitSocialWelfareData) .Excluding(p => p.PatientVisitSocialWelfareGeneratedData) .Excluding(p => p.SocialVisitSocialWelfareData) .Excluding(p => p.SocialVisitSocialWelfareGeneratedData) .Excluding(p => p.TransportSocialWelfareData) .Excluding(p => p.TransportSocialWelfareGeneratedData) .Excluding(p => p.ShiftingSocialWelfareData) .Excluding(p => p.ShiftingSocialWelfareGeneratedData) .Excluding(p => p.ShoppingSocialWelfareData) .Excluding(p => p.ShoppingSocialWelfareGeneratedData) .Excluding(p => p.FoodDistributionSocialWelfareData) .Excluding(p => p.FoodDistributionSocialWelfareGeneratedData) .Excluding(p => p.CleanUpAustraliaSocialWelfareData) .Excluding(p => p.CleanUpAustraliaSocialWelfareGeneratedData) .Excluding(p => p.OtherSocialWelfareData) .Excluding(p => p.OtherSocialWelfareGeneratedData) ); result.stateReport.MemberMemberData.Should().BeEquivalentTo(testParams.expectedMemberMemberData); result.stateReport.MemberMemberGeneratedData.Should().BeEquivalentTo(testParams.expectedMemberMemberGeneratedData); result.stateReport.AssociateMemberData.Should().BeEquivalentTo(testParams.expectedAssociateMemberData); result.stateReport.AssociateMemberGeneratedData.Should().BeEquivalentTo(testParams.expectedAssociateMemberGeneratedData); result.stateReport.PreliminaryMemberData.Should().BeEquivalentTo(testParams.expectedPreliminaryMemberData); result.stateReport.PreliminaryMemberGeneratedData.Should().BeEquivalentTo(testParams.expectedPreliminaryMemberGeneratedData); result.stateReport.SupporterMemberData.Should().BeEquivalentTo(testParams.expectedSupporterMemberData); result.stateReport.SupporterMemberGeneratedData.Should().BeEquivalentTo(testParams.expectedSupporterMemberGeneratedData); }
public UnitReport CreateNewUnitPlanAi(string description, OrganizationReference organizationRef, ReportingTerm reportingTerm, int year, ReportingFrequency reportingFrequency) { return(CreateNew(description, organizationRef, reportingTerm, year, reportingFrequency, true)); }
public void CreateNewUnitPlanAi_SavesCorrectlyWhenLastYearSubmitted(ReportingFrequency reportingFrequency) { DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var organizationType = OrganizationType.Unit; var description = DataProvider.Get <string>(); var year = 2019; var reportingTerm = ReportingTerm.One; var organization = new TestObjectBuilder <Organization>() .SetArgument(o => o.OrganizationType, organizationType) .SetArgument(o => o.ReportingFrequency, reportingFrequency) .BuildAndPersist(s); OrganizationReference organizationRef = organization; var reportingPeriod = new ReportingPeriod(reportingFrequency, reportingTerm, year); var lastPeriod1 = reportingPeriod.GetReportingPeriodOfPreviousTerm(); var lastPeriod1ReportingData = new ReportDataBuilder().Build(); var lastPeriod1UnitReport = new UnitReport(description, organization, lastPeriod1, lastPeriod1ReportingData); lastPeriod1UnitReport.MarkStatusAsSubmitted(); s.Save(lastPeriod1UnitReport); var lastPeriod2 = lastPeriod1.GetReportingPeriodOfPreviousTerm(); var lastPeriod2ReportingData = new ReportDataBuilder().Build(); var lastPeriod2UnitReport = new UnitReport(description, organization, lastPeriod2, lastPeriod2ReportingData); lastPeriod2UnitReport.MarkStatusAsSubmitted(); s.Save(lastPeriod2UnitReport); var expected = new UnitReportBuilder() .SetDescription(description) .SetOrganization(organization) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingTerm, year)) .Build(); return(new { description, organizationRef, reportingPeriod, lastPeriod1UnitReport, expected }); }); var result = Endpoint.Act(AssemblySetupFixture.EndpointTestContainer, c => { var unitReport = c.GetInstance <UnitReportFactory>() .CreateNewUnitPlanAi(testParams.description, testParams.organizationRef, testParams.reportingPeriod.ReportingTerm, testParams.reportingPeriod.Year, reportingFrequency); return(new { unitReport }); }); result.unitReport.Should().NotBeNull(); result.unitReport.Should().BeEquivalentTo(testParams.expected, e => e.Excluding(p => p.Id) .Excluding(p => p.AssociateMemberData) .Excluding(p => p.PreliminaryMemberData) .Excluding(p => p.WorkerMeetingProgramData) .Excluding(p => p.SupporterMemberData) .Excluding(p => p.DawahMeetingProgramData) .Excluding(p => p.MemberMemberData)); TestHelper.MemberDataForCreateUnitPlanShouldBeEquivalent(result.unitReport.AssociateMemberData, testParams.lastPeriod1UnitReport.AssociateMemberData); TestHelper.MemberDataForCreateUnitPlanShouldBeEquivalent(result.unitReport.PreliminaryMemberData, testParams.lastPeriod1UnitReport.PreliminaryMemberData); result.unitReport.PreliminaryMemberData.Should().BeEquivalentTo(testParams.lastPeriod1UnitReport.WorkerMeetingProgramData); }
public ZoneReportBuilder SetOrganization(OrganizationReference organization) { _organization = organization; return(this); }