Exemple #1
0
        private static void DisplayCurrenyValues(object sender, NBPCurrencyInformation e)
        {
            Console.CursorVisible = false;
            int valuesPaddingLeft = 57;

            PrintAt($"{ e.AverageSellingRate:0.#####0} zł", valuesPaddingLeft, 2);
            PrintAt($"{ e.AverageBuyingRate:0.#####0} zł", valuesPaddingLeft, 3);
            PrintAt($"{e.StandardDeviationSellingRate:0.#####0} zł", valuesPaddingLeft, 5);
            PrintAt($"{e.StandardDeviationBuyingRate:0.#####0} zł", valuesPaddingLeft, 6);

            CurrencyData current = e.MinimimSellingRate;

            PrintAt($"{current.SellingRate:0.#####0} zł ({current.ListingDateString})", valuesPaddingLeft, 8);
            current = e.MaximumSellingRate;
            PrintAt($"{current.SellingRate:0.#####0} zł ({current.ListingDateString})", valuesPaddingLeft, 9);
            current = e.MinimimBuyingRate;
            PrintAt($"{current.BuyingRate:0.#####0} zł ({current.ListingDateString})", valuesPaddingLeft, 11);
            current = e.MaximumBuyingRate;
            PrintAt($"{current.BuyingRate:0.#####0} zł ({current.ListingDateString})", valuesPaddingLeft, 12);
            var diffrences = e.BiggestDiference;

            PrintAt($"{diffrences.First().DifferenceBeetweenRates:0.#####0 zł}", valuesPaddingLeft, 14);
            StringBuilder line            = new StringBuilder();
            int           howManyCouldFit = Console.WindowWidth / 12; //bo data ma 12 znaków z spacją i przecinkiem
            int           begginingLine   = 16;

            for (int i = 0; i < diffrences.Length; ++i)
            {
                int j = 0;
                for (; j < howManyCouldFit; ++j)
                {
                    int index = i + j;
                    if (index >= diffrences.Length)
                    {
                        break;
                    }
                    line.Append(diffrences[i + j].ListingDateString);
                    if (j != howManyCouldFit - 1 && (index + 1) < diffrences.Length)
                    {
                        line.Append(", ");
                    }
                }
                i += j;
                PrintAt(line.ToString(), 0, begginingLine++);
                line.Clear();
            }
            Console.CursorVisible = true;
        }
Exemple #2
0
        static void Main(string[] args)
        {
            // TODO: We need to check user unput
            if (args.Length == 3)
            {
                string currencyCode = args[0].ToUpper();
                if (DateTime.TryParse(args[1], out DateTime from))
                {
                    if (DateTime.TryParse(args[2], out DateTime to))
                    {
                        if (from > to) // if user reverse period points
                        {
                            var t = from;
                            from = to;
                            to   = t;
                        }
                        if (currencyCode.Length < 3 && currencyCode.Length > 3)
                        {
                            invalidCurrency();
                            return;
                        }
                        var now = DateTime.Now;
                        if (from.Date == now.Date)
                        {
                            Console.WriteLine("Todays rates will be availabe tomorrow!!");
                            return;
                        }

                        if (from.Date == now.AddDays(-1).Date)
                        {
                            if (now.Hour < 8 || (now.Hour == 8 && now.Minute < 15))
                            {
                                Console.WriteLine("Yesterday rates will be availabe after 8:15 am");
                                return;
                            }
                        }
                        NBPCurrencyInformation currencyInformation = null;
                        try
                        {
                            currencyInformation = new CurrencyValueNBP.NBPCurrencyInformation(currencyCode, from, to);
                        }
                        catch (InvalidDataException)
                        {
                            invalidCurrency();
                            return;
                        }
                        catch (ArgumentOutOfRangeException)
                        {
                            invalidRange();
                            return;
                        }
                        currencyInformation.DataChanged     += DisplayCurrenyValues;
                        currencyInformation.ProgressChanged += DataParsingProgressChanged;
                        createInterface(currencyCode);
                        currencyInformation.StartParsingDataAsync().Wait();
                        // Lastest date display
                        createInterface(currencyCode);
                        DisplayCurrenyValues(null, currencyInformation);
                        PrintAt("Naciśnij dowolny klawisz, aby zakończyć...", 0, Console.WindowHeight - 2);
                        Console.Read();
                        return;
                    }
                }
                Console.WriteLine("Bad date format! :(");
                Console.Read();
            }
            else
            {
                Console.WriteLine("Bad arguments passed :(");
                Console.Read();
            }
        }