private static void ProcessDownloaded(PantherClient panther, string convertApiKey) { System.Console.WriteLine("Processing local converted xlsx files."); List <SettlementHistory> settlementHeaders = null; List <SettlementHistory> downloadedSettlements = null; var getSettlementHeaders = Task.Run(async() => { settlementHeaders = await panther.GetSettlementsAsync(); }); var parseLocalFiles = Task.Run(() => downloadedSettlements = SettlementHistoryParser.ParseLocalFiles(panther.Company)); Task.WaitAll(getSettlementHeaders, parseLocalFiles); if (downloadedSettlements.Count > 0) { System.Console.WriteLine($"Found {downloadedSettlements.Count} to process."); List <SettlementHistory> mergedSettlements = MergeSettlements(settlementHeaders, downloadedSettlements).ToList(); System.Console.WriteLine($"Merged {mergedSettlements.Count}."); if (mergedSettlements.Count > 0) { SettlementRepository repository = new SettlementRepository(); repository.SaveSettlements(mergedSettlements); } } else { System.Console.WriteLine($"No settlements found for company {panther.Company}."); } }
public string[] CreateSettlementStatement(int year, int[] weeks, int?truckid = null) { System.Console.WriteLine($"Creating settlements {year}/{weeks[0]} {truckid?.ToString()}"); List <string> files = new List <string>(); Task.Run(async() => { FuelChargeRepository fuelRepository = new FuelChargeRepository(year, weeks); SettlementRepository settlementRepository = new SettlementRepository(); List <SettlementHistory> settlements = await settlementRepository.GetSettlementsByWeekAsync(year, weeks); if (settlements.Count() > 0) { if (truckid != null) { settlements = FilterSettlementsByTruck(settlements, (int)truckid).ToList(); } SettlementWorkbookGenerator generator = new SettlementWorkbookGenerator(settlements, fuelRepository); foreach (string driver in GetDrivers(settlements, truckid)) { string file = generator.Generate(year, weeks, driver); files.Add(file); } } else { System.Console.WriteLine($"No settlements found for the specified {year} and {string.Join(",", weeks)}"); } } ).Wait(); return(files.ToArray()); }
private static void Setup() { var settlementRepo = new SettlementRepository(); var fuelRepo = new FuelChargeRepository(); Task.WhenAll( settlementRepo.EnsureDatabaseAsync(), fuelRepo.EnsureDatabaseAsync() ).Wait(); System.Console.WriteLine("Setup database."); }
private static void GetReport() { System.Console.WriteLine("Generating report."); var task = Task.Run(async() => { SettlementRepository repository = new SettlementRepository(); RevenueReport report = new RevenueReport(repository); await report.GetTruckRevenueGroupBySettlementAsync(); }); task.Wait(); }
/// <summary> /// Forces an update on all settlements. This is normally used to update the serialized /// object after a schema change. /// </summary> public string[] UpdateAll() { System.Console.WriteLine($"Updating all settlements."); List <SettlementHistory> savedSettlements = null; var task = Task.Run(async() => { SettlementRepository repository = new SettlementRepository(); savedSettlements = await repository.GetSettlementsAsync(); repository.SaveSettlements(savedSettlements); }); task.Wait(); string[] settlementIds = savedSettlements?.Select(s => s.SettlementId).ToArray(); return(settlementIds); }
/// <summary> /// Downloads and returns 'max' settlements from panther that we have not persisted, ordered by /// descending date. /// <summary> private async Task <List <KeyValuePair <string, SettlementHistory> > > DownloadMissingSettlements(PantherClient panther, int max = 10) { List <SettlementHistory> settlements = await panther.GetSettlementsAsync(); SettlementRepository repository = new SettlementRepository(); List <SettlementHistory> savedSettlements = await repository.GetSettlementsAsync(); // Don't try to convert settlements we've already persisted. List <SettlementHistory> settlementsToDownload = settlements.Except(savedSettlements, new SettlementHistoryComparer()) .OrderByDescending(s => s.SettlementDate) .Take(max) .ToList(); List <KeyValuePair <string, SettlementHistory> > settlementsToConvert = await panther.DownloadSettlementsAsync(settlementsToDownload); return(settlementsToConvert); }
private static void PrintSettlementHeader(string settlementId, string companyId) { System.Console.WriteLine($"Querying for {settlementId} in company: {companyId}"); SettlementHistory settlement = null; Task.Run(async() => { SettlementRepository repo = new SettlementRepository(); settlement = await repo.GetSettlementAsync(settlementId, companyId); }).Wait(); if (settlement != null) { System.Console.WriteLine($"{settlement.id}, {settlement.SettlementDate}, {settlement.WeekNumber}"); } else { System.Console.WriteLine("Settlement not found"); } }
public string[] UpdateHeadersFromPanther(PantherClient panther) { System.Console.WriteLine($"Updating settlements for company: {panther.Company}."); List <SettlementHistory> settlementsToUpdate = null; var task = Task.Run(async() => { List <SettlementHistory> settlements = await panther.GetSettlementsAsync(); SettlementRepository repository = new SettlementRepository(); List <SettlementHistory> savedSettlements = await repository.GetSettlementsAsync(); settlementsToUpdate = settlements.Intersect(savedSettlements, new SettlementHistoryComparer()) .ToList(); repository.SaveSettlements(settlementsToUpdate); }); task.Wait(); string[] settlementIds = settlementsToUpdate?.Select(s => s.SettlementId).ToArray(); return(settlementIds); }
public RevenueReport(SettlementRepository repository) { this.repository = repository; }
public ConvertedExcelFiles(string convertApiKey) { converter = new ExcelConverter(convertApiKey); repository = new SettlementRepository(); }