コード例 #1
0
        static async Task <int> Main(string[] args)
        {
            if (args.Length != 2 || args[0] != FormatNames.Humpries && args[0] != FormatNames.Megacorp)
            {
                Console.WriteLine("Usage: SPL <Format> <pathToFile>");
                Console.WriteLine($" Formats: {FormatNames.Humpries}, {FormatNames.Megacorp}");
                return(-1);
            }

            if (!File.Exists(args[1]))
            {
                Console.WriteLine($"Error, could not find file {Path.GetFullPath(args[1])}");
                return(-1);
            }
            var serviceProvider = ServiceCollectionFactory.CreateServiceCollection().BuildServiceProvider();
            ISupplyPriceItemProvider itemProvider = null;

            if (args[0] == FormatNames.Humpries)
            {
                itemProvider = serviceProvider.GetRequiredService <HumpriesSupplyPriceItemProvider>();
            }
            else
            {
                itemProvider = serviceProvider.GetRequiredService <MegacorpSupplyPriceItemProvider>();
            }
            var writer = serviceProvider.GetRequiredService <SuppliesPriceListWriter>();

            using (var fileStream = File.OpenRead(args[1]))
            {
                await writer.WriteSuppliesList(itemProvider, Console.Out, fileStream);
            }

            return(0);
        }
コード例 #2
0
        public async Task WriteSuppliesList(ISupplyPriceItemProvider itemProvider, TextWriter streamToWriteTo, Stream streamToReadFrom)
        {
            var items = await itemProvider.GetItemsFromFile(streamToReadFrom);

            foreach (var item in items)
            {
                //example output 7f3c48c4-f8b6-453f-b2fa-83ec31dfa85c, Bobcat to Dig LM of Strip Footing, $800.00
                //All prices must be shown to the nearest cent in AUD based on the exchange rate.
                var price = item.Price;
                if (itemProvider.Currency == Currency.USD)
                {
                    price = _currencyConverter.UsdToAud(price);
                }
                //todo: check requirements for culture output on currency here.
                streamToWriteTo.WriteLine($"{item.Id}, {item.ItemName}, {price:C2}");
            }
        }