private async Task <string> GetSourceInfoFromTable(ConnectorTask taskInfo) { Expression <Func <PageJobEntity, bool> > filter = (entity => entity.RowKey == taskInfo.JobId); List <PageJobEntity> pageJobEntityList = await azureTableProvider.QueryEntitiesAsync <PageJobEntity>(PageJobMappingTable, filter); PageJobEntity pageJobEntity = pageJobEntityList?[0]; return(pageJobEntity.SourceInfo); }
private async Task <PageJobEntity> GetJobIdFromTable(string jobId) { Expression <Func <PageJobEntity, bool> > filter = (entity => entity.RowKey == jobId); pageJobMappingTable = azureTableProvider.GetAzureTableReference(Settings.PageJobMappingTableName); List <PageJobEntity> pageJobEntityList = await azureTableProvider.QueryEntitiesAsync <PageJobEntity>(pageJobMappingTable, filter); if (pageJobEntityList == null || pageJobEntityList.Count == 0) { return(null); } return(pageJobEntityList?[0]); }
public async Task <IEnumerable <ConnectorEntity> > Get([FromUri] string jobType, [FromUri] string jobId) { CloudTable jobMappingTable = azureTableProvider.GetAzureTableReference(Settings.PageJobMappingTableName); Trace.TraceInformation("Getting connector Entities for JobType {0}", jobType.ToString()); IEnumerable <ConnectorEntity> entities = await sourceProvider.GetEntities(jobId); Trace.TraceInformation("Entities retrieved: {0}", entities?.Count()); if (entities != null) { foreach (ConnectorEntity entity in entities) { Expression <Func <PageJobEntity, bool> > filter = (e => e.PartitionKey == entity.Id); List <PageJobEntity> pageJobEntityList = await azureTableProvider.QueryEntitiesAsync <PageJobEntity>(jobMappingTable, filter); entity.AlreadyUsed = pageJobEntityList.Any(); } } return(entities); }
/// <summary> /// convert facebook data to table object /// </summary> /// <param name="data">the data comng from server</param> /// <returns>Table object</returns> private async Task SendDataAsync(WebhookFeedFB data) { string jobId; foreach (Entry entry in data.Entry) { if (PageJobMapping.ContainsKey(entry.Id)) { jobId = PageJobMapping[entry.Id].RowKey; } else { Trace.TraceInformation($"Page Id: {entry.Id}"); Expression <Func <PageJobEntity, bool> > filter = (entity => entity.PartitionKey == entry.Id); PageJobMappingTable = azureTableProvider.GetAzureTableReference(Settings.PageJobMappingTableName); List <PageJobEntity> pageJobEntityList = await azureTableProvider.QueryEntitiesAsync <PageJobEntity>(PageJobMappingTable, filter); Trace.TraceInformation($"Fetched entries from Table: {pageJobEntityList.Count}"); PageJobEntity pageJobEntity = pageJobEntityList?[0]; PageJobMapping.Add(pageJobEntity?.PartitionKey, pageJobEntity); jobId = pageJobEntity?.RowKey; } foreach (Change change in entry.Changes) { if (change.Value != null && change.Value.PostId != null) { await eventApiClient.OnWebhookEvent(Settings.TenantId, jobId, $"{change.Value?.CreatedTime}", $"{change.Value?.PostId}", "update"); } else { Trace.TraceWarning("No post id"); } } } }