예제 #1
0
 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;
 }
예제 #2
0
        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
             */
        }