public static async Task Run( [QueueTrigger("contacts", Connection = "AzureWebJobsStorage")] string contactJson, ILogger log, ExecutionContext context) { var logPrefix = GetLogPrefix(); log.LogInformation($"{logPrefix}: {contactJson}"); var contactFromFile = JsonConvert.DeserializeObject <FileUploadContact>(contactJson); var config = new ConfigurationBuilder() .SetBasePath(context.FunctionAppDirectory) .AddJsonFile("local.settings.json", true, true) .AddEnvironmentVariables() .Build(); var sqlConnectionString = config.GetConnectionString("Sql"); var fileUploadContext = new FileUploadContext(sqlConnectionString); var getEmployerQuery = new GetEmployerQuery(fileUploadContext); var employerInSql = await getEmployerQuery.Execute(contactFromFile.CompanyName, contactFromFile.CreatedOnCompany); if (employerInSql == null) { // TODO Employer has to exist } var getContactQuery = new GetContactQuery(fileUploadContext); var contactInSql = await getContactQuery.Execute(contactFromFile.CompanyName, contactFromFile.CreatedOnCompany); var contact = ContactMapper.Map(contactFromFile, contactInSql, employerInSql.Id); if (contactInSql == null) { log.LogInformation($"{logPrefix} Creating Contact: {contactFromFile.Contact}"); var createEmployerCommand = new CreateContactCommand(fileUploadContext); await createEmployerCommand.Execute(contact); log.LogInformation($"{logPrefix} Created Contact: {contactFromFile.Contact}"); } else { var areEqual = contactInSql.Equals(contact); if (!areEqual) { log.LogInformation($"{logPrefix} Updating Contact: {contactFromFile.Contact}"); var updateContactCommand = new UpdateContactCommand(fileUploadContext); await updateContactCommand.Execute(contact); log.LogInformation($"{logPrefix} Updated Contact: {contactFromFile.Contact}"); } } log.LogInformation($"{logPrefix} Processed Contact: {contactFromFile.Contact}"); }
public static async Task Run( [QueueTrigger("employers", Connection = "AzureWebJobsStorage")] string employersJson, ILogger log, ExecutionContext context) { var logPrefix = GetLogPrefix(); log.LogInformation($"{logPrefix}: {employersJson}"); var employerFromFile = JsonConvert.DeserializeObject <FileUploadEmployer>(employersJson); var config = new ConfigurationBuilder() .SetBasePath(context.FunctionAppDirectory) .AddJsonFile("local.settings.json", true, true) .AddEnvironmentVariables() .Build(); var sqlConnectionString = config.GetConnectionString("Sql"); var fileUploadContext = new FileUploadContext(sqlConnectionString); var getEmployerQuery = new GetEmployerQuery(fileUploadContext); var employerInSql = await getEmployerQuery.Execute(employerFromFile.Account); var employer = EmployerMapper.Map(employerFromFile, employerInSql); if (employerInSql == null) { log.LogInformation($"{logPrefix} Creating Employer: {employerFromFile.Account}"); var createEmployerCommand = new CreateEmployerCommand(fileUploadContext); await createEmployerCommand.Execute(employer); log.LogInformation($"{logPrefix} Created Employer: {employerFromFile.Account}"); } else { var areEqual = employerInSql.Equals(employer); if (!areEqual) { log.LogInformation($"{logPrefix} Updating Employer: {employerFromFile.Account}"); var updateEmployerCommand = new UpdateEmployerCommand(fileUploadContext); await updateEmployerCommand.Execute(employer); log.LogInformation($"{logPrefix} Updated Employer: {employerFromFile.Account}"); } } log.LogInformation($"{logPrefix} Processed Employer: {employerFromFile.Account}"); }