public void UpdateSocCodesOccupationalCodeTest(int numberOfSocs)
        {
            // Arrange
            var skillsImportService = new SkillsFrameworkDataImportService(fakeSkillsFrameworkService, fakeFrameworkSkillRepository, fakeJobProfileSocCodeRepository, fakeJobProfileRepository, fakeSocSkillMatrixRepository, fakeReportAuditRepository);

            //Dummies and Fakes
            A.CallTo(() => fakeJobProfileSocCodeRepository.GetSocCodes()).Returns(GetSOCs(numberOfSocs));
            A.CallTo(() => fakeSkillsFrameworkService.GetAllSocMappings()).Returns(new List <SocCode>());
            A.CallTo(() => fakeReportAuditRepository.CreateAudit(A <string> ._, A <string> ._)).DoesNothing();
            A.CallTo(() => fakeJobProfileSocCodeRepository.UpdateSocOccupationalCode(A <SocCode> ._)).Returns(new RepoActionResult());

            // Act
            skillsImportService.UpdateSocCodesOccupationalCode();

            // Assert
            A.CallTo(() => fakeJobProfileSocCodeRepository.GetSocCodes()).MustHaveHappened();
            A.CallTo(() => fakeReportAuditRepository.CreateAudit(A <string> ._, A <string> ._)).MustHaveHappened();
            A.CallTo(() => fakeSkillsFrameworkService.GetAllSocMappings()).MustHaveHappened();
            A.CallTo(() => fakeJobProfileSocCodeRepository.UpdateSocOccupationalCode(A <SocCode> ._)).MustHaveHappened(numberOfSocs * 2, Times.OrLess);
        }
        public UpdateSocOccupationalCodeResponse UpdateSocCodesOccupationalCode()
        {
            var allSocCodes = jobProfileSocCodeRepository.GetSocCodes().ToList();
            var occupationalCodeMappings = skillsFrameworkService.GetAllSocMappings();

            reportAuditRepository.CreateAudit(SummaryDetailsKey, $"Found {allSocCodes.Count} SOCs in the Sitefinity ");
            reportAuditRepository.CreateAudit(SummaryDetailsKey, $"Found {occupationalCodeMappings.Count()} socOccupation Code Mappings from Framework Service");
            var updatedCount      = 0;
            var totalRecordsCount = 0;
            var noActionCount     = 0;

            foreach (var socCode in allSocCodes)
            {
                var occupationalCode = occupationalCodeMappings.FirstOrDefault(occmap => occmap.SOCCode.Equals(socCode.SOCCode, StringComparison.OrdinalIgnoreCase))
                                       ?.ONetOccupationalCode ?? string.Empty;

                var auditMessage = $"{(totalRecordsCount++).ToString("0000")} - Got occupational code [{occupationalCode}] for SOC : {socCode.SOCCode} from SkillFramework Service ";

                //if the existing ocupational code is not the same update it.
                if (socCode.ONetOccupationalCode?.Equals(occupationalCode, StringComparison.OrdinalIgnoreCase) == false)
                {
                    socCode.ONetOccupationalCode = occupationalCode;
                    jobProfileSocCodeRepository.UpdateSocOccupationalCode(socCode);
                    auditMessage += " - Updated";
                    updatedCount++;
                }
                else
                {
                    auditMessage += " - No action as it already the same";
                    noActionCount++;
                }

                reportAuditRepository.CreateAudit(ActionDetailsKey, auditMessage);
            }
            reportAuditRepository.CreateAudit(SummaryDetailsKey, $"Total number checked : {totalRecordsCount} updated : {updatedCount} no action : {noActionCount}");

            return(new UpdateSocOccupationalCodeResponse {
                Success = true
            });
        }