Exemplo n.º 1
0
        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}.");
            }
        }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 3
0
        private static void Setup()
        {
            var settlementRepo = new SettlementRepository();
            var fuelRepo       = new FuelChargeRepository();

            Task.WhenAll(
                settlementRepo.EnsureDatabaseAsync(),
                fuelRepo.EnsureDatabaseAsync()
                ).Wait();
            System.Console.WriteLine("Setup database.");
        }
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 5
0
        /// <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);
        }
Exemplo n.º 6
0
        /// <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);
        }
Exemplo n.º 7
0
        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");
            }
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
 public RevenueReport(SettlementRepository repository)
 {
     this.repository = repository;
 }
Exemplo n.º 10
0
 public ConvertedExcelFiles(string convertApiKey)
 {
     converter  = new ExcelConverter(convertApiKey);
     repository = new SettlementRepository();
 }