public void WithNameAndPostCodeQueryParameterReturnsMatchingResident() { var person1 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(firstName: "ciasom"); var person2 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(firstName: "wrong name"); var person3 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(firstName: "ciasom"); DatabaseContext.Persons.Add(person1); DatabaseContext.Persons.Add(person2); DatabaseContext.Persons.Add(person3); DatabaseContext.SaveChanges(); var address = DatabaseGatewayHelper.CreateAddressDatabaseEntity(personId: person1.Id, postCode: "E8 1DY"); var address2 = DatabaseGatewayHelper.CreateAddressDatabaseEntity(personId: person2.Id, postCode: "E8 1DY"); var address3 = DatabaseGatewayHelper.CreateAddressDatabaseEntity(personId: person2.Id, postCode: "E8 5RT"); DatabaseContext.Addresses.Add(address); DatabaseContext.Addresses.Add(address2); DatabaseContext.Addresses.Add(address3); DatabaseContext.SaveChanges(); var(listOfPersons, _) = _classUnderTest.GetResidentsBySearchCriteria(cursor: 0, limit: 20, firstname: "ciasom", postcode: "E8 1DY"); listOfPersons.Count.Should().Be(1); listOfPersons.First().MosaicId.Should().Be(person1.Id.ToString()); listOfPersons.First().AddressList.Should().ContainEquivalentOf(address.ToResponse()); }
public void GetTeamByTeamIdAndGetAssociatedWorkers() { var workerOne = SaveWorkerToDatabase( DatabaseGatewayHelper.CreateWorkerDatabaseEntity(1, "*****@*****.**")); var workerTwo = SaveWorkerToDatabase( DatabaseGatewayHelper.CreateWorkerDatabaseEntity(2, "*****@*****.**")); var workerTeamOne = SaveWorkerTeamToDatabase( DatabaseGatewayHelper.CreateWorkerTeamDatabaseEntity(id: 1, workerId: workerOne.Id, worker: workerOne)); var workerTeamTwo = SaveWorkerTeamToDatabase( DatabaseGatewayHelper.CreateWorkerTeamDatabaseEntity(id: 2, workerId: workerTwo.Id, worker: workerTwo)); var workerTeams = new List <WorkerTeam> { workerTeamOne, workerTeamTwo }; var team = SaveTeamToDatabase(DatabaseGatewayHelper.CreateTeamDatabaseEntity(workerTeams)); var responseTeam = _teamGateway.GetTeamByTeamId(team.Id); responseTeam?.WorkerTeams.Count.Should().Be(2); var responseWorkerTeams = responseTeam?.WorkerTeams.ToList(); var workerOneResponse = responseWorkerTeams?.Find(workerTeam => workerTeam.Worker.Id == workerOne.Id)?.Worker; var workerTwoResponse = responseWorkerTeams?.Find(workerTeam => workerTeam.Worker.Id == workerTwo.Id)?.Worker; workerOneResponse.Should().BeEquivalentTo(workerOne); workerTwoResponse.Should().BeEquivalentTo(workerTwo); }
public void WithAddressQueryParameterReturnsMatchingResident(string addressQuery) { var person1 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); var person2 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); DatabaseContext.Persons.Add(person1); DatabaseContext.Persons.Add(person2); DatabaseContext.SaveChanges(); var address = DatabaseGatewayHelper.CreateAddressDatabaseEntity(personId: person1.Id, address: "1 My Street, Hackney, London"); var address2 = DatabaseGatewayHelper.CreateAddressDatabaseEntity(personId: person2.Id, address: "5 Another Street, Lambeth, London"); DatabaseContext.Addresses.Add(address); DatabaseContext.Addresses.Add(address2); DatabaseContext.SaveChanges(); var(listOfPersons, _) = _classUnderTest.GetResidentsBySearchCriteria(cursor: 0, limit: 20, address: addressQuery); listOfPersons.Count.Should().Be(1); listOfPersons .First(p => p.MosaicId.Equals(person1.Id.ToString())) .AddressList .Should().ContainEquivalentOf(address.ToDomain()); }
public void GetTeamByTeamIdReturnsTeamWithWorkers() { var team = SaveTeamToDatabase( DatabaseGatewayHelper.CreateTeamDatabaseEntity(new List <WorkerTeam>())); var response = _teamGateway.GetTeamByTeamId(team.Id); response.Should().BeEquivalentTo(team); }
public void ExecuteGetReturnsGetPersonResponseWhenPersonIsFound() { var request = GetValidGetPersonRequest(); var person = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); _mockDataBaseGateway.Setup(x => x.GetPersonDetailsById(request.Id)).Returns(person); var response = _residentUseCase.GetResident(request); response.Should().BeOfType <GetPersonResponse>(); }
public void WildcardSearchWithNameQueryParametersReturnsMatchingResident() { var person = DatabaseGatewayHelper.CreatePersonDatabaseEntity(firstName: "ciasom", lastName: "Tessellate"); DatabaseContext.Persons.Add(person); DatabaseContext.SaveChanges(); var(listOfPersons, _) = _classUnderTest.GetResidentsBySearchCriteria(cursor: 0, limit: 20, firstname: "ciasom", lastname: "ssellat"); listOfPersons.Count.Should().Be(1); listOfPersons.First().MosaicId.Should().Be(person.Id.ToString()); }
public void IfThereAreNoResidentPhoneNumbersWillReturnNullForPhoneNumbers() { var person = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); DatabaseContext.Persons.Add(person); DatabaseContext.SaveChanges(); var(listOfPersons, _) = _classUnderTest.GetResidentsBySearchCriteria(cursor: 0, limit: 20, id: person.Id); listOfPersons.First().PhoneNumber.Should().BeNull(); }
public void WhenNoMatchingIDReturnsEmptyList() { var person = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); DatabaseContext.Persons.Add(person); DatabaseContext.SaveChanges(); var response = _caseStatusGateway.GetCaseStatusesByPersonId(person.Id); response.Should().BeEmpty(); }
public void CanMapPhoneNumberFromDatabaseEntityToDomainObject() { dbPhoneNumber phoneNumber = DatabaseGatewayHelper.CreatePhoneNumberEntity(_faker.Random.Long()); var expectedResponse = new PhoneNumber() { Number = phoneNumber.Number, Type = phoneNumber.Type }; phoneNumber.ToDomain().Should().BeEquivalentTo(expectedResponse); }
public void CanMapPersonOtherNameFromDatabaseObjectToDomainObject() { PersonOtherName otherName = DatabaseGatewayHelper.CreatePersonOtherNameDatabaseEntity(_faker.Random.Long()); var expectedResponse = new OtherName() { FirstName = otherName.FirstName, LastName = otherName.LastName }; otherName.ToDomain().Should().BeEquivalentTo(expectedResponse); }
public void CanMapDbAddressToAddressDomain() { dbAddress address = DatabaseGatewayHelper.CreateAddressDatabaseEntity(); AddressDomain expectedAddressDomain = new AddressDomain() { Address = address.AddressLines, Postcode = address.PostCode, Uprn = address.Uprn }; EntityFactory.DbAddressToAddressDomain(address).Should().BeEquivalentTo(expectedAddressDomain); }
public void WildcardSearchWithLastNameQueryParameterReturnsMatchingResident() { var person1 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(lastName: "tessellate"); var person2 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(lastName: "Tessellate"); DatabaseContext.Persons.Add(person1); DatabaseContext.Persons.Add(person2); DatabaseContext.SaveChanges(); var(listOfPersons, _) = _classUnderTest.GetResidentsBySearchCriteria(cursor: 0, limit: 20, lastname: "sell"); listOfPersons.Count.Should().Be(2); listOfPersons.Should().ContainEquivalentOf(DatabaseContext.Persons.First(x => x.Id == person1.Id).ToResidentInformationResponse()); listOfPersons.Should().ContainEquivalentOf(DatabaseContext.Persons.First(x => x.Id == person2.Id).ToResidentInformationResponse()); }
public void ReturnsTotalPersonCountForGivenFilterIgnoringPagingAndCursor() { var person1 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(firstName: "foo"); var person2 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(firstName: "foobar"); var person3 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(firstName: "foobarbar"); DatabaseContext.Persons.AddRange(new List <Person> { person1, person2, person3 }); DatabaseContext.SaveChanges(); var(_, totalCount) = _classUnderTest.GetResidentsBySearchCriteria(cursor: 0, limit: 1, firstname: "foo"); totalCount.Should().Be(3); }
public void GetAllResidentsWithPostCodeQueryParameterReturnsEmptyListWhenNoMatchingResidentsWithPostcodeInDisplayAddressAreFound() { var person = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); DatabaseContext.Persons.Add(person); DatabaseContext.SaveChanges(); var address = DatabaseGatewayHelper.CreateAddressDatabaseEntity(personId: person.Id, postCode: "E83 AS", isDisplayAddress: "N"); DatabaseContext.Addresses.Add(address); DatabaseContext.SaveChanges(); var(listOfPersons, _) = _classUnderTest.GetResidentsBySearchCriteria(cursor: 0, limit: 20, postcode: "E83 AS"); listOfPersons.Should().BeEmpty(); }
public void IfThereAreResidentsWithGivenMosaicIdThenReturnsThem() { var person1 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); var person2 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); var person3 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); DatabaseContext.Persons.AddRange(new List <Person> { person1, person2, person3 }); DatabaseContext.SaveChanges(); var(listOfPersons, _) = _classUnderTest.GetResidentsBySearchCriteria(cursor: 0, limit: 20, id: person2.Id); listOfPersons.Count.Should().Be(1); listOfPersons.First().MosaicId.Should().Be(person2.Id.ToString()); }
public void IfThereAreMultipleAddressesReturnsTheUprnForTheCurrentAddress() { var person = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); DatabaseContext.Persons.Add(person); DatabaseContext.SaveChanges(); var oldAddress = DatabaseGatewayHelper.CreateAddressDatabaseEntity(personId: person.Id, endDate: DateTime.Now); var currentAddress = DatabaseGatewayHelper.CreateAddressDatabaseEntity(personId: person.Id); DatabaseContext.Addresses.Add(oldAddress); DatabaseContext.Addresses.Add(currentAddress); DatabaseContext.SaveChanges(); var(response, _) = _classUnderTest.GetResidentsBySearchCriteria(0, 20); response.First().Uprn.Should().Be(currentAddress.Uprn.ToString()); }
public void IfThereAreResidentsWillReturnThem() { var person1 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); var person2 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); var person3 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); DatabaseContext.Persons.AddRange(new List <Person>() { person1, person2, person3 }); DatabaseContext.SaveChanges(); var(listOfPersons, _) = _classUnderTest.GetResidentsBySearchCriteria(cursor: 0, limit: 20); listOfPersons.Should().ContainEquivalentOf(DatabaseContext.Persons.First(x => x.Id == person1.Id).ToResidentInformationResponse()); listOfPersons.Should().ContainEquivalentOf(DatabaseContext.Persons.First(x => x.Id == person2.Id).ToResidentInformationResponse()); listOfPersons.Should().ContainEquivalentOf(DatabaseContext.Persons.First(x => x.Id == person3.Id).ToResidentInformationResponse()); }
public void WithPostCodeQueryParameterIgnoresFormatting(string postcode) { var person = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); DatabaseContext.Persons.Add(person); DatabaseContext.SaveChanges(); var address = DatabaseGatewayHelper.CreateAddressDatabaseEntity(personId: person.Id, postCode: postcode); DatabaseContext.Addresses.Add(address); DatabaseContext.SaveChanges(); var(listOfPersons, _) = _classUnderTest.GetResidentsBySearchCriteria(cursor: 0, limit: 20, postcode: "E8 1DY"); listOfPersons.Count.Should().Be(1); listOfPersons.First().MosaicId.Should().Be(person.Id.ToString()); listOfPersons.First().AddressList.Should().ContainEquivalentOf(address.ToResponse()); }
public void WithBirthdayQueryParameterReturnsMatchingResidents() { var person1 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); var person2 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); var person3 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); person3.DateOfBirth = person1.DateOfBirth; DatabaseContext.Persons.AddRange(new List <Person> { person1, person2, person3 }); DatabaseContext.SaveChanges(); var(listOfPersons, _) = _classUnderTest.GetResidentsBySearchCriteria(cursor: 0, limit: 20, dateOfBirth: person1.DateOfBirth.Value.ToString("yyyy-MM-dd")); //Format passed by FE listOfPersons.Count.Should().Be(2); listOfPersons.Should().ContainEquivalentOf(DatabaseContext.Persons.First(x => x.Id == person1.Id).ToResidentInformationResponse()); listOfPersons.Should().ContainEquivalentOf(DatabaseContext.Persons.First(x => x.Id == person3.Id).ToResidentInformationResponse()); }
public void DoesNotReturnPersonRecordsMarkedForDeletion() { var person1 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); var person2 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(markedForDeletion: true); var person3 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); DatabaseContext.Persons.AddRange(new List <Person> { person1, person2, person3 }); DatabaseContext.SaveChanges(); var(response, _) = _classUnderTest.GetResidentsBySearchCriteria(cursor: 0, limit: 20); response.Count.Should().Be(2); response.Any(x => x.MosaicId == person1.Id.ToString()).Should().BeTrue(); response.Any(x => x.MosaicId == person2.Id.ToString()).Should().BeFalse(); response.Any(x => x.MosaicId == person3.Id.ToString()).Should().BeTrue(); }
public void ReturnsResidentsUprn() { var person = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); DatabaseContext.Persons.Add(person); DatabaseContext.SaveChanges(); var address = DatabaseGatewayHelper.CreateAddressDatabaseEntity(personId: person.Id); DatabaseContext.Addresses.Add(address); DatabaseContext.SaveChanges(); var(listOfPersons, _) = _classUnderTest.GetResidentsBySearchCriteria(0, 20); listOfPersons .First(p => p.MosaicId.Equals(person.Id.ToString())) .Uprn .Should().Be(address.Uprn.ToString()); }
public void IfThereAreResidentPhoneNumbersWillReturnThem() { var person = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); DatabaseContext.Persons.Add(person); DatabaseContext.SaveChanges(); var phoneNumber = DatabaseGatewayHelper.CreatePhoneNumberEntity(personId: person.Id); DatabaseContext.PhoneNumbers.Add(phoneNumber); DatabaseContext.SaveChanges(); var(listOfPersons, _) = _classUnderTest.GetResidentsBySearchCriteria(0, 20); listOfPersons .Where(p => p.MosaicId.Equals(phoneNumber.Person.Id.ToString())) .First() .PhoneNumber .Should().ContainEquivalentOf(phoneNumber.ToResponse()); }
public void IfThereAreResidentAddressesWillReturnThem() { var person = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); DatabaseContext.Persons.Add(person); DatabaseContext.SaveChanges(); var address = DatabaseGatewayHelper.CreateAddressDatabaseEntity(personId: person.Id); DatabaseContext.Addresses.Add(address); DatabaseContext.SaveChanges(); var(listOfPersons, _) = _classUnderTest.GetResidentsBySearchCriteria(cursor: 0, limit: 20); listOfPersons .Where(p => p.MosaicId.Equals(person.Id.ToString())) .First() .AddressList .Should().ContainEquivalentOf(address.ToResponse()); }
public void GetAllResidentsWithPostCodeQueryParameterReturnsOnlyResidentsWithPostcodeInDisplayAddress() { var person1 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); var person2 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); DatabaseContext.Persons.Add(person1); DatabaseContext.Persons.Add(person2); DatabaseContext.SaveChanges(); var address1 = DatabaseGatewayHelper.CreateAddressDatabaseEntity(personId: person1.Id, postCode: "E83 AS"); var address2 = DatabaseGatewayHelper.CreateAddressDatabaseEntity(personId: person2.Id, postCode: "E83 AS", isDisplayAddress: "N"); DatabaseContext.Addresses.Add(address1); DatabaseContext.Addresses.Add(address2); DatabaseContext.SaveChanges(); var(listOfPersons, _) = _classUnderTest.GetResidentsBySearchCriteria(cursor: 0, limit: 20, postcode: "E83 AS"); listOfPersons.Count.Should().Be(1); listOfPersons.First().MosaicId.Should().Be(person1.Id.ToString()); }
public void WithPostCodeQueryParameterReturnsPhoneNumberWithResidentInformation() { var person = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); DatabaseContext.Persons.Add(person); DatabaseContext.SaveChanges(); var address = DatabaseGatewayHelper.CreateAddressDatabaseEntity(personId: person.Id, postCode: "E8 1DY"); var phoneNumber = DatabaseGatewayHelper.CreatePhoneNumberEntity(person.Id); DatabaseContext.Addresses.Add(address); DatabaseContext.PhoneNumbers.Add(phoneNumber); DatabaseContext.SaveChanges(); var(listOfPersons, _) = _classUnderTest.GetResidentsBySearchCriteria(cursor: 0, limit: 20, postcode: "E8 1DY"); var personUnderTest = listOfPersons .First(p => p.MosaicId.Equals(person.Id.ToString())); personUnderTest.PhoneNumber.Should().ContainEquivalentOf(phoneNumber.ToResponse()); }
public void GetAllResidentsWithPostCodeQueryParameterReturnsMatchingResident() { var person = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); DatabaseContext.Persons.Add(person); DatabaseContext.SaveChanges(); var address1 = DatabaseGatewayHelper.CreateAddressDatabaseEntity(personId: person.Id, postCode: "E8 1DY"); var address2 = DatabaseGatewayHelper.CreateAddressDatabaseEntity(personId: person.Id, postCode: "E8 5TG"); DatabaseContext.Addresses.Add(address1); DatabaseContext.Addresses.Add(address2); DatabaseContext.SaveChanges(); var(listOfPersons, _) = _classUnderTest.GetResidentsBySearchCriteria(cursor: 0, limit: 20, postcode: "E8 1DY"); listOfPersons.Count.Should().Be(1); listOfPersons .First(p => p.MosaicId.Equals(address1.Person.Id.ToString())) .AddressList .Should().ContainEquivalentOf(address1.ToDomain()); }
public void WithPostCodeQueryParameterWhenAPersonHasTwoAddressesReturnsOneRecordWithAListOfAddresses() { var person1 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); var person2 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); DatabaseContext.Persons.Add(person1); DatabaseContext.Persons.Add(person2); DatabaseContext.SaveChanges(); var address = DatabaseGatewayHelper.CreateAddressDatabaseEntity(personId: person1.Id, postCode: "E8 1DY"); var address2 = DatabaseGatewayHelper.CreateAddressDatabaseEntity(personId: person1.Id, postCode: "E8 1DY"); DatabaseContext.Addresses.Add(address); DatabaseContext.Addresses.Add(address2); DatabaseContext.SaveChanges(); var(listOfPersons, _) = _classUnderTest.GetResidentsBySearchCriteria(cursor: 0, limit: 20, postcode: "E8 1DY"); listOfPersons.Count.Should().Be(1); listOfPersons .First(p => p.MosaicId.Equals(person1.Id.ToString())) .AddressList.Count .Should().Be(2); }
public void WithContextFlagQueryParameterReturnsMatchingResidents() { var person1 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); person1.AgeContext = "A"; var person2 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); person2.AgeContext = "C"; var person3 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(); person3.AgeContext = "A"; DatabaseContext.Persons.AddRange(new List <Person> { person1, person2, person3 }); DatabaseContext.SaveChanges(); var(listOfPersons, _) = _classUnderTest.GetResidentsBySearchCriteria(cursor: 0, limit: 20, contextflag: "A"); listOfPersons.Count.Should().Be(2); listOfPersons.Should().ContainEquivalentOf(DatabaseContext.Persons.First(x => x.Id == person1.Id).ToResidentInformationResponse()); listOfPersons.Should().ContainEquivalentOf(DatabaseContext.Persons.First(x => x.Id == person3.Id).ToResidentInformationResponse()); }
public void OnlyReturnsTheMatchingResidentsForGivenLimitAndCursor() { var person1 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(personId: 1); var person2 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(personId: 2); var person3 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(personId: 3); var person4 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(personId: 4); var person5 = DatabaseGatewayHelper.CreatePersonDatabaseEntity(personId: 5); DatabaseContext.Persons.AddRange(new List <Person>() { person1, person2, person3, person4, person5 }); DatabaseContext.SaveChanges(); var(listOfPersons, _) = _classUnderTest.GetResidentsBySearchCriteria(cursor: 2, limit: 3); listOfPersons.Count.Should().Be(3); listOfPersons .Select(p => p.MosaicId) .Should().BeEquivalentTo(new List <string> { "3", "4", "5" }); }
public void SetsTheMarkedForDeletionFlagToFalseForPersonAndRelatedEntitiesAndRemovesTheRecordFromDeletedPersonRecordTable() { //person to be restored, new master record and relationship var(deletedPerson, newMasterPersonRecord, personalRelationship, personalRelationshipType, _) = PersonalRelationshipsHelper.SavePersonWithPersonalRelationshipToDatabase(DatabaseContext); //address var address = DatabaseGatewayHelper.CreateAddressDatabaseEntity(personId: deletedPerson.Id); address.MarkedForDeletion = true; DatabaseContext.Addresses.Add(address); //telephone numbers var telephoneNumber = DatabaseGatewayHelper.CreatePhoneNumberEntity(personId: deletedPerson.Id); address.MarkedForDeletion = true; DatabaseContext.PhoneNumbers.Add(telephoneNumber); //other names var otherName = DatabaseGatewayHelper.CreatePersonOtherNameDatabaseEntity(personId: deletedPerson.Id); otherName.MarkedForDeletion = true; DatabaseContext.PersonOtherNames.Add(otherName); //allocations var allocation = TestHelpers.CreateAllocation(personId: (int)deletedPerson.Id); allocation.MarkedForDeletion = true; DatabaseContext.Allocations.Add(allocation); //warning notes var warningNote = TestHelpers.CreateWarningNote(personId: deletedPerson.Id); warningNote.MarkedForDeletion = true; DatabaseContext.WarningNotes.Add(warningNote); //inverse relationship (type not handled for simplicity) var inversePersonalRelationship = PersonalRelationshipsHelper.CreatePersonalRelationship(newMasterPersonRecord, deletedPerson, personalRelationshipType); inversePersonalRelationship.MarkedForDeletion = true; DatabaseContext.PersonalRelationships.Add(inversePersonalRelationship); //record marked as soft deleted DatabaseContext.DeletedPersonRecords.Add(new DeletedPersonRecord() { DeletedId = deletedPerson.Id, MasterId = newMasterPersonRecord.Id }); DatabaseContext.SaveChanges(); //TODO: wrap into transaction when running manually (BEGIN; <SCRIPT> END;) //TODO: this is designed to be run against individual IDs. Replace the {deletedPerson.Id} with appropriate MosaicId (long) DatabaseContext.Database.ExecuteSqlInterpolated($@" UPDATE dbo.dm_persons SET marked_for_deletion = false WHERE person_id = {deletedPerson.Id}; UPDATE dbo.dm_addresses SET marked_for_deletion = false WHERE person_id = {deletedPerson.Id}; UPDATE dbo.dm_telephone_numbers SET marked_for_deletion = false WHERE person_id = {deletedPerson.Id}; UPDATE dbo.sccv_person_other_name SET marked_for_deletion = false WHERE person_id = {deletedPerson.Id}; UPDATE dbo.sccv_allocations_combined SET marked_for_deletion = false WHERE mosaic_id = {deletedPerson.Id}; UPDATE dbo.sccv_warning_note SET marked_for_deletion = false WHERE person_id = {deletedPerson.Id}; UPDATE dbo.sccv_personal_relationship SET marked_for_deletion = false WHERE fk_person_id = {deletedPerson.Id}; UPDATE dbo.sccv_personal_relationship SET marked_for_deletion = false WHERE fk_other_person_id = {deletedPerson.Id}; DELETE from dbo.sccv_deleted_person_record where deleted_person_id = {deletedPerson.Id}; "); DatabaseContext.Persons.First(x => x.Id == deletedPerson.Id).MarkedForDeletion.Should().BeFalse(); DatabaseContext.Addresses.First(x => x.PersonId == deletedPerson.Id).MarkedForDeletion.Should().BeFalse(); DatabaseContext.PhoneNumbers.First(x => x.PersonId == deletedPerson.Id).MarkedForDeletion.Should().BeFalse(); DatabaseContext.PersonOtherNames.First(x => x.PersonId == deletedPerson.Id).MarkedForDeletion.Should().BeFalse(); DatabaseContext.Allocations.First(x => x.PersonId == deletedPerson.Id).MarkedForDeletion.Should().BeFalse(); DatabaseContext.WarningNotes.First(x => x.PersonId == deletedPerson.Id).MarkedForDeletion.Should().BeFalse(); DatabaseContext.PersonalRelationships.First(x => x.PersonId == deletedPerson.Id).MarkedForDeletion.Should().BeFalse(); DatabaseContext.PersonalRelationships.First(x => x.OtherPersonId == newMasterPersonRecord.Id).MarkedForDeletion.Should().BeFalse(); DatabaseContext.DeletedPersonRecords.Any(x => x.DeletedId == deletedPerson.Id).Should().BeFalse(); }