using System.Threading.Tasks;
using System.Collections.Generic;
private static readonly string apiKey = "patEDzbL0nB6EVsLi.0b0a1d6c85ec23e4cdaa1cfda671672e2f50179dd02d61242eb311cadd0b94a5";
private static readonly string baseId = "app0aUX9icPNnwKLA";
private static readonly string tableName = "Clients";
public class CARI_TEMSILCI
public string id { get; set; }
public string email { get; set; }
public string name { get; set; }
public class CARI_HESAPLAR
public string CariKod { get; set; }
public string CariUnvan1 { get; set; }
public string CariUnvan2 { get; set; }
public int CariDovizCinsi { get; set; }
public string CariVdaireAdi { get; set; }
public string CariVdaireNo { get; set; }
public string CariEmail { get; set; }
public string CariCepTel { get; set; }
public CARI_TEMSILCI CariTemsilci { get; set; }
public List<string> Orders { get; set; }
public DateTime? LastUpdated { get; set; }
public void BindFields(IDictionary<string, object> fields)
if (fields.ContainsKey("Company Name"))
CariUnvan1 = fields["Company Name"]?.ToString();
if (fields.ContainsKey("Tax Office"))
CariVdaireAdi = fields["Tax Office"]?.ToString();
if (fields.ContainsKey("Tax No"))
CariVdaireNo = fields["Tax No"]?.ToString();
if (fields.ContainsKey("Email (from Contacts)"))
var emailsJson = fields["Email (from Contacts)"]?.ToString();
if (!string.IsNullOrEmpty(emailsJson))
var emails = JsonSerializer.Deserialize<List<string>>(emailsJson);
if (emails != null && emails.Count > 0)
if (fields.ContainsKey("Phone Number (from Contacts)"))
var phoneNumbersJson = fields["Phone Number (from Contacts)"]?.ToString();
if (!string.IsNullOrEmpty(phoneNumbersJson))
var phoneNumbers = JsonSerializer.Deserialize<List<string>>(phoneNumbersJson);
if (phoneNumbers != null && phoneNumbers.Count > 0)
CariCepTel = phoneNumbers[0];
if (fields.ContainsKey("Sales Person"))
var salesPersonJson = fields["Sales Person"]?.ToString();
if (!string.IsNullOrEmpty(salesPersonJson))
CariTemsilci = JsonSerializer.Deserialize<CARI_TEMSILCI>(salesPersonJson);
if (fields.ContainsKey("Last Modified Time"))
if (DateTime.TryParse(fields["Last Modified Time"]?.ToString(), out var lastModifiedTime))
LastUpdated = lastModifiedTime;
if (fields.ContainsKey("Orders"))
var ordersJson = fields["Orders"]?.ToString();
if (!string.IsNullOrEmpty(ordersJson))
Orders = JsonSerializer.Deserialize<List<string>>(ordersJson);
public static async Task Main(string[] args)
Console.WriteLine("Airtable'dan kayıtlar listeleniyor...");
await ListAllAirtableRecordsAsync();
private static async Task ListAllAirtableRecordsAsync()
using (AirtableBase airtableBase = new AirtableBase(apiKey, baseId))
var cts = new CancellationTokenSource(TimeSpan.FromSeconds(60));
bool hasMoreRecords = true;
var response = await airtableBase.ListRecords(
filterByFormula: "{Last Modified Time} >= '2024-09-23T09:41:58.000Z'",
new Sort { Field = "Last Modified Time", Direction = SortDirection.Asc }
foreach (var record in response.Records)
var cariHesap = new CARI_HESAPLAR
cariHesap.BindFields(record.Fields);
if (cariHesap.CariTemsilci != null)
Console.WriteLine($"Record ID: {cariHesap.CariKod}, Firma Adi: {cariHesap.CariUnvan1}, Cep Tel: {cariHesap.CariCepTel}, Email: {cariHesap.CariEmail}, Cari Temsilci Id: {cariHesap.CariTemsilci.id}, Cari Temsilci Email: {cariHesap.CariTemsilci.email}, Cari Temsilci Name: {cariHesap.CariTemsilci.name}, Last Updated: {cariHesap.LastUpdated}");
Console.WriteLine($"Record ID: {cariHesap.CariKod}, Firma Adi: {cariHesap.CariUnvan1}, Cep Tel: {cariHesap.CariCepTel}, Email: {cariHesap.CariEmail}, Last Updated: {cariHesap.LastUpdated}");
if (cariHesap.Orders != null && cariHesap.Orders.Count > 0)
Console.WriteLine("Orders:");
foreach (var order in cariHesap.Orders)
Console.WriteLine($"- {order}");
offset = response.Offset;
hasMoreRecords = !string.IsNullOrEmpty(offset);
Console.WriteLine($"Error: {response.AirtableApiError.ErrorMessage}");