public Controller(IMigrateConfiguration migrateConfig, ILogService log, IGenericSyncRespository syncRepository, Func <ITableSpec, IMutateTarget> createMutateTarget, IEnumerable <ITableSpec> tables) { _migrateConfig = migrateConfig; _log = log; _syncRepository = syncRepository; _createMutateTarget = createMutateTarget; _tables = tables; }
public AvmsToAvmsPlusTables(ILogService log, IMigrateConfiguration migrateConfig, IAvmsSyncRespository avmsSyncRepository, bool includeVacancy = true) { _log = log; _migrateConfig = migrateConfig; _avmsSyncRepository = avmsSyncRepository; _tables = new TableSpecList(); { // Reference / bottom level var VacancyProvisionRelationshipHistoryEventType = _tables.AddNew("VacancyProvisionRelationshipHistoryEventType", Unchanged, OwnedByAVUnlessNegativeNoDeletes); var VacancyProvisionRelationshipStatusType = _tables.AddNew("VacancyProvisionRelationshipStatusType", Unchanged, OwnedByAVUnlessNegativeNoDeletes); var MimeType = _tables.AddNew("MIMEType", Unchanged, OwnedByAVUnlessNegativeNoDeletes); var EmployerHistoryEventType = _tables.AddNew("EmployerHistoryEventType", Unchanged, OwnedByAVUnlessNegativeNoDeletes); var ProviderSiteHistoryEventType = _tables.AddNew("ProviderSiteHistoryEventType", Unchanged, OwnedByAVUnlessNegativeNoDeletes); var PersonTitleType = _tables.AddNew("PersonTitleType", Unchanged, OwnedByAVUnlessNegativeNoDeletes); var ContactPreferenceType = _tables.AddNew("ContactPreferenceType", Unchanged, OwnedByAVUnlessNegativeNoDeletes); var VacancyHistoryEventType = _tables.AddNew("VacancyHistoryEventType", Unchanged, OwnedByAVUnlessNegativeNoDeletes); var PersonType = _tables.AddNew("PersonType", Unchanged, OwnedByAVUnlessNegativeNoDeletes); // See EmployerSicCodes below // var SicCode = _tables.AddNew("SICCode", OwnedByAv, DeleteShouldNeverHappen); var EmployerTrainingProviderStatus = _tables.AddNew("EmployerTrainingProviderStatus", Unchanged, OwnedByAVUnlessNegativeNoDeletes); var VacancyTextFieldValue = _tables.AddNew("VacancyTextFieldValue", Unchanged, OwnedByAVUnlessNegativeNoDeletes); var ApprenticeshipType = _tables.AddNew("ApprenticeshipType", Unchanged, OwnedByAVUnlessNegativeNoDeletes); var ProviderSiteRelationshipType = _tables.AddNew("ProviderSiteRelationshipType", new string[] { "ProviderSiteRelationshipTypeID" }, Unchanged, OwnedByAVUnlessNegativeNoDeletes); var VacancyStatusType = _tables.AddNew("VacancyStatusType", Unchanged, OwnedByAVUnlessNegativeNoDeletes); var ApprenticeshipOccupationStatusType = _tables.AddNew("ApprenticeshipOccupationStatusType", Unchanged, OwnedByAVUnlessNegativeNoDeletes); var ApprenticeshipFrameworkStatusType = _tables.AddNew("ApprenticeshipFrameworkStatusType", Unchanged, OwnedByAVUnlessNegativeNoDeletes); var VacancyReferralCommentsFieldType = _tables.AddNew("VacancyReferralCommentsFieldType", Unchanged, OwnedByAVUnlessNegativeNoDeletes); // Not in diagram var County = _tables.AddNew("County", Unchanged, OwnedByAVUnlessNegativeNoDeletes); var LocalAuthority = _tables.AddNew("LocalAuthority", Unchanged, OwnedByAVUnlessNegativeNoDeletes, County); // Other tables var AttachedDocument = _tables.AddNew("AttachedDocument", 0.1m, TransformAttachedDocument, OwnedByAVUnlessNegative, MimeType); var Person = _tables.AddNew("Person", AnonymisePerson, OwnedByAVUnlessNegative, PersonTitleType, PersonType); var EmployerContact = _tables.AddNew("EmployerContact", AnonymiseEmployerContact, OwnedByAVUnlessNegative, ContactPreferenceType, County, LocalAuthority, Person); var Employer = _tables.AddNew("Employer", TransformEmployer, OwnedByAVUnlessNegative, EmployerTrainingProviderStatus, EmployerContact, County, LocalAuthority); var EmployerHistory = _tables.AddNew("EmployerHistory", Unchanged, OwnedByAVUnlessNegative, EmployerHistoryEventType, Employer, County, LocalAuthority); var ProviderSite = _tables.AddNew("ProviderSite", new string[] { "ProviderSiteID" }, AnonymiseProviderSite, OwnedByAVUnlessNegativeNoDeletes, EmployerTrainingProviderStatus, LocalAuthority); var ProviderSiteHistory = _tables.AddNew("ProviderSiteHistory", new string[] { "TrainingProviderHistoryId" }, AnonymiseProviderSiteHistory, OwnedByAVUnlessNegativeNoDeletes, ProviderSiteHistoryEventType, ProviderSite); // This isn't really needed, plus records can be deleted (outside of archiving activity) which we don't support yet (also, records get deleted and re-added by the AVMS GUI when editing) // var EmployerSicCodes = _tables.AddNew("EmployerSICCodes", new string[] { "EmployerSICCodes" }, OwnedByAv, DeleteShouldNeverHappen, Employer, SicCode); var Provider = _tables.AddNew("Provider", new string[] { "ProviderID" }, TransformProvider, OwnedByAVUnlessNegativeNoDeletes, EmployerTrainingProviderStatus); var ApprenticeshipOccupation = _tables.AddNew("ApprenticeshipOccupation", Unchanged, OwnedByAVUnlessNegativeNoDeletes, ApprenticeshipOccupationStatusType); var ApprenticeshipFramework = _tables.AddNew("ApprenticeshipFramework", Unchanged, OwnedByAVUnlessNegativeNoDeletes, ApprenticeshipOccupation, ApprenticeshipFrameworkStatusType); var VacancyOwnerRelationship = _tables.AddNew("VacancyOwnerRelationship", Unchanged, CanMutateVacancyOwnerRelationship, ProviderSite, Employer, AttachedDocument, VacancyProvisionRelationshipStatusType); var VacancyOwnerRelationshipHistory = _tables.AddNew("VacancyOwnerRelationshipHistory", Unchanged, CanMutateVacancyOwnerRelationshipHistory, VacancyOwnerRelationship, VacancyProvisionRelationshipHistoryEventType); var ProviderSiteRelationship = _tables.AddNew("ProviderSiteRelationship", new string[] { "ProviderSiteRelationshipID" }, Unchanged, OwnedByAVUnlessNegativeNoDeletes, Provider, ProviderSite, ProviderSiteRelationshipType); var RecruitmentAgentLinkedRelationships = _tables.AddNew("RecruitmentAgentLinkedRelationships", new string[] { "VacancyOwnerRelationshipID", "ProviderSiteRelationshipID" }, Unchanged, OwnedByAVUnlessNegativeNoDeletes, VacancyOwnerRelationship, ProviderSiteRelationship); var SectorSuccessRates = _tables.AddNew("SectorSuccessRates", new string[] { "ProviderID", "SectorID" }, Unchanged, OwnedByAVUnlessNegativeNoDeletes, Provider, ApprenticeshipOccupation); // Seems to be related to applications rather than vacancies // var SubVacancy = _tables.AddNew("SubVacancy", OwnedByAv, Vacancy); var ProviderSiteLocalAuthority = _tables.AddNew("ProviderSiteLocalAuthority", new string[] { "ProviderSiteLocalAuthorityID" }, Unchanged, OwnedByAVUnlessNegative, ProviderSiteRelationship); var ProviderSiteFramework = _tables.AddNew("ProviderSiteFramework", new string[] { "ProviderSiteFrameworkID" }, Unchanged, OwnedByAVUnlessNegativeAllowDeletes, ProviderSiteRelationship, ApprenticeshipFramework); // This isn't really needed, plus records can be deleted (outside of archiving activity) which we don't support yet (also, records get deleted and re-added by the AVMS GUI when editing) // var ProviderSiteOffer = _tables.AddNew("ProviderSiteOffer", new string[] { "ProviderSiteOfferID" }, OwnedByAv, DoDelete, ProviderSiteLocalAuthority, ProviderSiteFramework); if (includeVacancy) { // These take a while so don't always do them var Vacancy = _tables.AddNew("Vacancy", 0.2m, TransformVacancy, CanMutateVacancy, VacancyOwnerRelationship, ProviderSite, Provider, ApprenticeshipType, VacancyStatusType, ApprenticeshipFramework, County, LocalAuthority); var VacancyHistory = _tables.AddNew("VacancyHistory", 2.0m, Unchanged, CanMutateVacancyChild, Vacancy, VacancyHistoryEventType); var VacancyTextField = _tables.AddNew("VacancyTextField", 2.0m, Unchanged, CanMutateVacancyChild, Vacancy, VacancyTextFieldValue); var VacancyLocation = _tables.AddNew("VacancyLocation", Unchanged, CanMutateVacancyChild, Vacancy, County, LocalAuthority); var AdditionalQuestion = _tables.AddNew("AdditionalQuestion", 2.0m, Unchanged, CanMutateVacancyChild, Vacancy); var VacancyReferralComments = _tables.AddNew("VacancyReferralComments", new string[] { "VacancyReferralCommentsID" }, 2.0m, Unchanged, CanMutateVacancyChild, Vacancy, VacancyReferralCommentsFieldType); } /*if (false) // TODO: Stakeholder * { * var Organisation = _tables.AddNew("Organisation", OwnedByAv); * var StakeholderStatus = _tables.AddNew("StakeHolderStatus", OwnedByAv); * var Stakeholder = _tables.AddNew("StakeHolder", new string[] { "StakeHolderID" }, OwnedByAv, Person, Organisation, StakeholderStatus, County, LocalAuthority); * }*/ /* Other tables from diagram not required here * var VacancySearch = tables.AddNew("VacancySearch", OwnedByAv); * var SearchFrameworks = tables.AddNew("SearchFrameworks", OwnedByAv); * var SavedSearchCriteria = tables.AddNew("SavedSearchCriteria", OwnedByAv); * var SavedSearchCriteriaSearchtype = tables.AddNew("SavedSearchCriteriaSearchtype", OwnedByAv); * var SavedSearchCriteriaVacancyPostedSince = tables.AddNew("SavedSearchCriteriaVacancyPostedSince", OwnedByAv); */ } /* * select top 10 * from VacancyProvisionRelationshipHistoryEventType * select top 10 * from VacancyProvisionRelationshipStatusType * select top 10 * from MIMEType * select top 10 * from EmployerHistoryEventType * select top 10 * from ProviderSiteHistoryEventType * select top 10 * from PersonTitleType * select top 10 * from ContactPreferenceType * select top 10 * from VacancyHistoryEventType * select top 10 * from PersonType * select top 10 * from SICCode * select top 10 * from EmployerTrainingProviderStatus * select top 10 * from VacancyTextFieldValue * select top 10 * from ApprenticeshipType * select top 10 * from ProviderSiteRelationshipType * select top 10 * from VacancyStatusType * select top 10 * from ApprenticeshipOccupationStatusType * select top 10 * from ApprenticeshipFrameworkStatusType * select top 10 * from VacancyReferralCommentsFieldType * select top 10 * from County * select top 10 * from LocalAuthority * select top 10 * from AttachedDocument * select top 10 * from Person * select top 10 * from EmployerContact * select top 10 * from Employer * select top 10 * from EmployerHistory * select top 10 * from ProviderSite * select top 10 * from ProviderSiteHistory * select top 10 * from EmployerSICCodes * select top 10 * from Provider * select top 10 * from ApprenticeshipOccupation * select top 10 * from ApprenticeshipFramework * select top 10 * from VacancyOwnerRelationship * select top 10 * from VacancyOwnerRelationshipHistory * select top 10 * from ProviderSiteRelationship * select top 10 * from RecruitmentAgentLinkedRelationships * select top 10 * from SectorSuccessRates * select top 10 * from SubVacancy * select top 10 * from ProviderSiteLocalAuthority * select top 10 * from ProviderSiteFramework * select top 10 * from ProviderSiteOffer * select top 10 * from Vacancy * select top 10 * from VacancyHistory * select top 10 * from VacancyTextField * select top 10 * from VacancyLocation * select top 10 * from AdditionalQuestion * select top 10 * from VacancyReferralComments */ }