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)); }
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}"); }
public async Task ExecuteAsync( [QueueTrigger(QueueNames.DataMigrationQueueName, Connection = "QueueStorage")] DataMigrationQueueMessage message, TextWriter log) { await PerformVacancyALEIdMigration(message); }