Esempio n. 1
0
        private Task SendVacancyALEIdMigrationMessage(int serialNumber, Guid vacancyId)
        {
            _logger.LogInformation($"Queueing up vacancy {vacancyId} for ALE Id migration");
            var message = new DataMigrationQueueMessage(serialNumber, vacancyId);

            return(_recruitQueueService.AddMessageAsync <DataMigrationQueueMessage>(message));
        }
Esempio n. 2
0
        private async Task PerformVacancyALEIdMigration(DataMigrationQueueMessage message)
        {
            var vacancyId = message.VacancyId;

            _logger.LogInformation($"{message.SerialNumber}: Carrying out ALEId migration on vacancy {vacancyId} ");
            Vacancy vacancy;

            try
            {
                vacancy = await _vacancyRepository.GetVacancyAsync(vacancyId);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"{message.SerialNumber}: Error fetching vacancy - Bypassing vacancy {vacancyId}");
                return;
            }

            if (vacancy == null)
            {
                _logger.LogWarning($"{message.SerialNumber}: Not found - Bypassing vacancy {vacancyId}");
                return;
            }

            if (vacancy.AccountLegalEntityPublicHashedId == "0")
            {
                _logger.LogWarning($"{message.SerialNumber}: Missing AccountLegalEntityPublicHashedId - Bypassing vacancy {vacancyId}");
                return;
            }

            if (string.IsNullOrWhiteSpace(vacancy.AccountLegalEntityPublicHashedId) == false)
            {
                _logger.LogWarning($"{message.SerialNumber}: Already updated - Bypassing vacancy {vacancyId}");
                return;
            }

            LegalEntityViewModel selectedLegalEntity;

            try
            {
                var retryPolicy   = GetApiRetryPolicy();
                var legalEntities = await retryPolicy.Execute(context =>
                                                              _employerAccountProvider.GetLegalEntitiesConnectedToAccountAsync(vacancy.EmployerAccountId),
                                                              new Dictionary <string, object>() { { "apiCall", "employer details" } });

                selectedLegalEntity = legalEntities.FirstOrDefault(l => l.AccountLegalEntityPublicHashedId == vacancy.AccountLegalEntityPublicHashedId);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"{message.SerialNumber}: Error fetching legal entity details - Bypassing vacancy {vacancyId}");
                throw;
            }

            if (selectedLegalEntity == null)
            {
                _logger.LogError($"Unable to find legal entity for vacancy {vacancyId}");
                return;
            }

            _logger.LogInformation($"Updating vacancy: {vacancyId} setting AccountLegalEntityPublicHashedId: {selectedLegalEntity.AccountLegalEntityPublicHashedId}");
            vacancy.AccountLegalEntityPublicHashedId = selectedLegalEntity.AccountLegalEntityPublicHashedId;
            await _vacancyRepository.UpdateAsync(vacancy);

            _logger.LogInformation($"Successfully updated vacancy: {vacancyId} with AccountLegalEntityPublicHashedId: {selectedLegalEntity.AccountLegalEntityPublicHashedId}");
        }
Esempio n. 3
0
 public async Task ExecuteAsync(
     [QueueTrigger(QueueNames.DataMigrationQueueName, Connection = "QueueStorage")] DataMigrationQueueMessage message,
     TextWriter log)
 {
     await PerformVacancyALEIdMigration(message);
 }