public async Task Arrange() { var fixture = new Fixture(); _orgStandardResponse = fixture.Create <OrganisationStandard>(); _orgStandardResponse.Versions.First().Version = "1.0"; ApiClient.Setup(c => c.GetOrganisationStandard(It.IsAny <int>())) .ReturnsAsync(_orgStandardResponse); Sut = new RegisterController(ControllerSession.Object, ApiClient.Object, ApplyApiClient.Object, ContactsApiClient.Object, Env.Object); }
private static RegisterViewAndEditOrganisationStandardViewModel MapOrganisationStandardToViewModel(OrganisationStandard organisationStandard) { return(new RegisterViewAndEditOrganisationStandardViewModel { OrganisationStandardId = organisationStandard.Id, StandardId = organisationStandard.StandardId, StandardTitle = organisationStandard.StandardTitle, OrganisationId = organisationStandard.OrganisationId, Ukprn = organisationStandard.Ukprn, EffectiveFrom = organisationStandard.EffectiveFrom, EffectiveTo = organisationStandard.EffectiveTo, DateStandardApprovedOnRegister = organisationStandard.DateStandardApprovedOnRegister, StandardEffectiveFrom = organisationStandard.StandardEffectiveFrom, StandardEffectiveTo = organisationStandard.StandardEffectiveTo, StandardLastDateForNewStarts = organisationStandard.StandardLastDateForNewStarts, Comments = organisationStandard.Comments, Status = organisationStandard.Status, ContactId = organisationStandard.ContactId, Contact = organisationStandard.Contact, DeliveryAreas = organisationStandard.DeliveryAreas, OrganisationName = organisationStandard.OrganisationName, OrganisationStatus = organisationStandard.OrganisationStatus, DeliveryAreasDetails = organisationStandard.DeliveryAreasDetails, DeliveryAreasComments = organisationStandard.OrganisationStandardData?.DeliveryAreasComments }); }
public void When_Constructed_From_OrganisationStandard_Then_Values_Should_Be_Copied(OrganisationStandard sourceObject) { var objectUnderTest = new MergeOrganisationStandard(sourceObject, "Before"); objectUnderTest.Replicates.Should().Be("Before"); objectUnderTest.EndPointAssessorOrganisationId.Should().Be(sourceObject.EndPointAssessorOrganisationId); objectUnderTest.StandardCode.Should().Be(sourceObject.StandardCode); objectUnderTest.StandardReference.Should().Be(sourceObject.StandardReference); objectUnderTest.EffectiveFrom.Should().Be(sourceObject.EffectiveFrom); objectUnderTest.EffectiveTo.Should().Be(sourceObject.EffectiveTo); objectUnderTest.DateStandardApprovedOnRegister.Should().Be(sourceObject.DateStandardApprovedOnRegister); objectUnderTest.Comments.Should().Be(sourceObject.Comments); objectUnderTest.Status.Should().Be(sourceObject.Status); objectUnderTest.ContactId.Should().Be(sourceObject.ContactId); objectUnderTest.OrganisationStandardData.Should().Be(sourceObject.OrganisationStandardData); objectUnderTest.OrganisationStandardId.Should().Be(sourceObject.Id); }
public RegisterBase() { EpaOrganisation organisation = new EpaOrganisation { Id = OrganisationOneId, OrganisationId = OrganisationOneOrganisationId, OrganisationTypeId = 1 }; List <OrganisationType> organisationTypes = new List <OrganisationType> { new OrganisationType { Id = 1 } }; List <ContactResponse> contacts = new List <ContactResponse> { new ContactResponse { Id = ContactOneId }, new ContactResponse { Id = ContactTwoId } }; List <ContactIncludePrivilegesResponse> users = new List <ContactIncludePrivilegesResponse> { new ContactIncludePrivilegesResponse { Contact = new ContactResponse { Id = UserOneId } }, new ContactIncludePrivilegesResponse { Contact = new ContactResponse { Id = UserTwoId } }, new ContactIncludePrivilegesResponse { Contact = new ContactResponse { Id = UserThreeId } }, }; List <ContactResponse> contactsWhoCanBePrimary = new List <ContactResponse> { new ContactResponse { Id = ContactOneId }, new ContactResponse { Id = ContactTwoId }, new ContactResponse { Id = UserOneId }, new ContactResponse { Id = UserTwoId }, new ContactResponse { Id = UserThreeId } }; List <OrganisationStandardSummary> organisationStandards = new List <OrganisationStandardSummary>(); for (int standard = 0; standard < 20; standard++) { organisationStandards.Add(new OrganisationStandardSummary { Id = standard, StandardCollation = new StandardCollation { ReferenceNumber = string.Format("ST{0:4}", standard), StandardId = standard, Title = string.Format("{0} Gravyboat Maker", NumberToAlpha(standard / 10)) }, DateStandardApprovedOnRegister = DateTime.Now.AddDays(-100) });; } List <DeliveryArea> deliveryAreas = new List <DeliveryArea> { new DeliveryArea { Id = 1 } }; var organisationStandard = new OrganisationStandard() { OrganisationId = OrganisationOneOrganisationId, Id = organisationStandardId }; List <ApplicationSummaryItem> standardApplications = new List <ApplicationSummaryItem> { new ApplicationSummaryItem { ApplicationId = Guid.NewGuid(), StandardReference = "ST0002", StandardName = "Senior Gravyboat Maker" } }; PaginatedList <ApplicationSummaryItem> standardApplicationPaginatedList = new PaginatedList <ApplicationSummaryItem>(standardApplications, standardApplications.Count, 1, short.MaxValue, 6); int itemsPerPage = 10; int pageIndex = 1; string sortColumn = OrganisationStandardSortColumn.StandardName; string sortDirection = SortOrder.Asc; ApprovedStandards = new Mock <IPagingState>(); ApprovedStandards.SetupGet(s => s.ItemsPerPage).Returns(itemsPerPage); ApprovedStandards.SetupSet(p => p.ItemsPerPage = It.IsAny <int>()).Callback <int>(r => { itemsPerPage = r; ApprovedStandards.SetupGet(s => s.ItemsPerPage).Returns(itemsPerPage); }); ApprovedStandards.SetupGet(s => s.PageIndex).Returns(pageIndex); ApprovedStandards.SetupSet(p => p.PageIndex = It.IsAny <int>()).Callback <int>(r => { pageIndex = r; ApprovedStandards.SetupGet(s => s.PageIndex).Returns(pageIndex); }); ApprovedStandards.SetupGet(s => s.SortColumn).Returns(sortColumn); ApprovedStandards.SetupSet(p => p.SortColumn = It.IsAny <string>()).Callback <string>(r => { sortColumn = r; ApprovedStandards.SetupGet(s => s.SortColumn).Returns(sortColumn); }); ApprovedStandards.SetupGet(s => s.SortDirection).Returns(sortDirection); ApprovedStandards.SetupSet(p => p.SortDirection = It.IsAny <string>()).Callback <string>(r => { sortDirection = r; ApprovedStandards.SetupGet(s => s.SortDirection).Returns(sortDirection); }); ControllerSession = new Mock <IControllerSession>(); ControllerSession.Setup(p => p.Register_SessionValid).Returns(true); ControllerSession.Setup(p => p.Register_ApprovedStandards).Returns(ApprovedStandards.Object); ApiClient = new Mock <IApiClient>(); ApiClient.Setup(p => p.GetEpaOrganisation(OrganisationOneOrganisationId)).ReturnsAsync(organisation); ApiClient.Setup(p => p.GetOrganisationTypes()).ReturnsAsync(organisationTypes); ApiClient.Setup(p => p.GetEpaOrganisationStandards(OrganisationOneOrganisationId)).ReturnsAsync(organisationStandards); ApiClient.Setup(p => p.GetOrganisationStandard(organisationStandardId)).ReturnsAsync(organisationStandard); ApiClient.Setup(p => p.GetDeliveryAreas()).ReturnsAsync(deliveryAreas); ApplyApiClient = new Mock <IApplicationApiClient>(); ApplyApiClient.Setup(p => p.GetStandardApplications(It.IsAny <StandardApplicationsRequest>())).ReturnsAsync(standardApplicationPaginatedList); ContactsApiClient = new Mock <IContactsApiClient>(); ContactsApiClient.Setup(p => p.GetAllContactsForOrganisation(OrganisationOneOrganisationId, null)).ReturnsAsync(contacts); ContactsApiClient.Setup(p => p.GetAllContactsForOrganisation(OrganisationOneOrganisationId, false)).ReturnsAsync(contacts); ContactsApiClient.Setup(p => p.GetAllContactsForOrganisationIncludePrivileges(OrganisationOneOrganisationId, true)).ReturnsAsync(users); ContactsApiClient.Setup(p => p.GetAllContactsWhoCanBePrimaryForOrganisation(OrganisationOneOrganisationId)).ReturnsAsync(contactsWhoCanBePrimary); StandardServiceClient = new Mock <IStandardServiceClient>(); Env = new Mock <IHostingEnvironment>(); }
private RegisterEditOrganisationStandardVersionViewModel MapOrganisationStandardToEditStandardVersionViewModel(OrganisationStandard standard, string version) { var selectedVersion = standard.Versions.FirstOrDefault(v => v.Version == version); return(new RegisterEditOrganisationStandardVersionViewModel { OrganisationStandardId = standard.Id, Standard = standard.StandardTitle, Reference = standard.IFateReferenceNumber, Version = selectedVersion.Version, EffectiveFrom = selectedVersion.EffectiveFrom, EffectiveTo = selectedVersion.EffectiveTo, DateApprovedOnRegister = selectedVersion.DateVersionApproved, Status = selectedVersion.Status, EffectiveFromDay = selectedVersion.EffectiveFrom.HasValue ? selectedVersion.EffectiveFrom.Value.Day.ToString() : null, EffectiveFromMonth = selectedVersion.EffectiveFrom.HasValue ? selectedVersion.EffectiveFrom.Value.Month.ToString() : null, EffectiveFromYear = selectedVersion.EffectiveFrom.HasValue ? selectedVersion.EffectiveFrom.Value.Year.ToString() : null, EffectiveToDay = selectedVersion.EffectiveTo.HasValue ? selectedVersion.EffectiveTo.Value.Day.ToString() : null, EffectiveToMonth = selectedVersion.EffectiveTo.HasValue ? selectedVersion.EffectiveTo.Value.Month.ToString() : null, EffectiveToYear = selectedVersion.EffectiveTo.HasValue ? selectedVersion.EffectiveTo.Value.Year.ToString() : null, }); }
private void MergeOrganisationStandardsAndVersions(Organisation primaryOrganisation, Organisation secondaryOrganisation, string createdByUser, DateTime secondaryStandardsEffectiveTo) { // Grab the primary contact for the primary organisation because we're going to need it. var primaryContact = _dbContext.Contacts.FirstOrDefault(c => c.EndPointAssessorOrganisationId == primaryOrganisation.EndPointAssessorOrganisationId && c.Email == primaryOrganisation.PrimaryContact); // Read all the standards from the secondary organisation. foreach (var secondaryOrganisationStandard in secondaryOrganisation.OrganisationStandards) { // Does the primary organisation have this standard already? var primaryOrganisationStandard = primaryOrganisation.OrganisationStandards.FirstOrDefault(pos => pos.StandardCode == secondaryOrganisationStandard.StandardCode); if (null == primaryOrganisationStandard) { // No - so add the standard to the primary organisation. primaryOrganisationStandard = new OrganisationStandard() { DateStandardApprovedOnRegister = secondaryOrganisationStandard.DateStandardApprovedOnRegister, OrganisationStandardData = secondaryOrganisationStandard.OrganisationStandardData, Comments = $"This standard/version has been acquired from a merge with {secondaryOrganisation.EndPointAssessorOrganisationId} on {DateTime.UtcNow.ToString("dd MMM yyyy")}. {secondaryOrganisationStandard.Comments}", ContactId = primaryContact?.Id, EffectiveFrom = secondaryOrganisationStandard.EffectiveFrom, EffectiveTo = secondaryOrganisationStandard.EffectiveTo, EndPointAssessorOrganisationId = primaryOrganisation.EndPointAssessorOrganisationId, StandardCode = secondaryOrganisationStandard.StandardCode, StandardReference = secondaryOrganisationStandard.StandardReference, Status = secondaryOrganisationStandard.Status, OrganisationStandardVersions = new List <OrganisationStandardVersion>(), OrganisationStandardDeliveryAreas = new List <OrganisationStandardDeliveryArea>(), }; primaryOrganisationStandard.Comments = primaryOrganisationStandard.Comments.Substring(0, Math.Min(primaryOrganisationStandard.Comments.Length, 500)); primaryOrganisation.OrganisationStandards.Add(primaryOrganisationStandard); } // Now read all the versions for this standard for the secondary organisation. foreach (var secondaryOrganisationStandardVersion in secondaryOrganisationStandard.OrganisationStandardVersions) { // Does the standard version exist for this standard in the primary organisation? var primaryOrganisationStandardVersion = primaryOrganisationStandard.OrganisationStandardVersions.FirstOrDefault(posv => posv.StandardUId == secondaryOrganisationStandardVersion.StandardUId && posv.Version == secondaryOrganisationStandardVersion.Version); if (null == primaryOrganisationStandardVersion) { // No - so add the standard version to the standard for the primary organisation. primaryOrganisationStandardVersion = new OrganisationStandardVersion() { DateVersionApproved = secondaryOrganisationStandardVersion.DateVersionApproved, Comments = $"This standard/version has been acquired from a merge with {secondaryOrganisation.EndPointAssessorOrganisationId} on {DateTime.UtcNow.ToString("dd MMM yyyy")}. {secondaryOrganisationStandardVersion.Comments}", EffectiveFrom = secondaryOrganisationStandardVersion.EffectiveFrom, EffectiveTo = secondaryOrganisationStandardVersion.EffectiveTo, StandardUId = secondaryOrganisationStandardVersion.StandardUId, Status = secondaryOrganisationStandardVersion.Status, Version = secondaryOrganisationStandardVersion.Version, }; primaryOrganisationStandardVersion.Comments = primaryOrganisationStandardVersion.Comments.Substring(0, Math.Min(primaryOrganisationStandardVersion.Comments.Length, 500)); primaryOrganisationStandard.OrganisationStandardVersions.Add(primaryOrganisationStandardVersion); } // Mark the secondary standard version as ending secondaryOrganisationStandardVersion.EffectiveTo = secondaryStandardsEffectiveTo; secondaryOrganisationStandardVersion.Comments = $"This standard version has been merged in to {primaryOrganisation.EndPointAssessorOrganisationId} on {DateTime.UtcNow.ToString("dd MMM yyyy")}. ${secondaryOrganisationStandardVersion.Comments}"; secondaryOrganisationStandardVersion.Comments = secondaryOrganisationStandardVersion.Comments.Substring(0, Math.Min(secondaryOrganisationStandardVersion.Comments.Length, 500)); } foreach (var secondaryOrganisationStandardDeliveryArea in secondaryOrganisationStandard.OrganisationStandardDeliveryAreas) { // Does the primary organisation standard have this delivery area? var primaryOrganisationStandardDeliveryArea = primaryOrganisationStandard.OrganisationStandardDeliveryAreas.FirstOrDefault(posda => posda.DeliveryAreaId == secondaryOrganisationStandardDeliveryArea.DeliveryAreaId); if (null == primaryOrganisationStandardDeliveryArea) { // No - so add the area primaryOrganisationStandardDeliveryArea = new OrganisationStandardDeliveryArea() { DeliveryAreaId = secondaryOrganisationStandardDeliveryArea.DeliveryAreaId, Comments = $"This delivery area has been acquired from a merge with {secondaryOrganisation.EndPointAssessorOrganisationId} on {DateTime.UtcNow.ToString("dd MMM yyyy")}. {secondaryOrganisationStandardDeliveryArea.Comments}", Status = secondaryOrganisationStandardDeliveryArea.Status, OrganisationStandard = primaryOrganisationStandard, DeliveryArea = secondaryOrganisationStandardDeliveryArea.DeliveryArea, }; primaryOrganisationStandardDeliveryArea.Comments = primaryOrganisationStandardDeliveryArea.Comments.Substring(0, Math.Min(primaryOrganisationStandardDeliveryArea.Comments.Length, 500)); primaryOrganisationStandard.OrganisationStandardDeliveryAreas.Add(primaryOrganisationStandardDeliveryArea); } secondaryOrganisationStandardDeliveryArea.Comments = $"This delivery area has been merged in to {primaryOrganisation.EndPointAssessorOrganisationId} on {DateTime.UtcNow.ToString("dd MMM yyyy")}. {secondaryOrganisationStandardDeliveryArea.Comments}"; secondaryOrganisationStandardDeliveryArea.Comments = secondaryOrganisationStandardDeliveryArea.Comments.Substring(0, Math.Min(secondaryOrganisationStandardDeliveryArea.Comments.Length, 500)); } // Now set the effectiveTo and comments @ToDo: need content secondaryOrganisationStandard.EffectiveTo = secondaryStandardsEffectiveTo; secondaryOrganisationStandard.Comments = $"This standard has been merged in to Organisation {primaryOrganisation.EndPointAssessorOrganisationId} on {DateTime.UtcNow.ToString("dd MMM yyyy")}. {secondaryOrganisationStandard.Comments}"; secondaryOrganisationStandard.Comments = secondaryOrganisationStandard.Comments.Substring(0, Math.Min(secondaryOrganisationStandard.Comments.Length, 500)); } }