protected PriceManagerBase(IProcessor processor, SupplierSettings supplierSettings, string archiveDirectory, IRetailPriceBuilder retailPriceBuilder)
 {
     PriceUrl            = supplierSettings.Url;
     DiscountValue       = supplierSettings.Discount;
     _processor          = processor;
     _retailPriceBuilder = retailPriceBuilder;
     ArchiveDirectory    = archiveDirectory;
 }
        public IPriceManager Build(SupplierSettings supplierSettings)
        {
            if (supplierSettings.Supplier != SupplierType.Happiness)
            {
                throw new Exception($"There is no price manager for supplier type {supplierSettings.Supplier}");
            }

            var archiveDirectory = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), supplierSettings.ArchiveDirectory);

            IRetailPriceBuilder retailPriceBuilder = new RetailPriceBuilder(supplierSettings);

            switch (Path.GetExtension(supplierSettings.Url))
            {
            case ".xml":
                return(new HappinesXmlPriceManager(_processor, supplierSettings, archiveDirectory, retailPriceBuilder, _colorBuilder));

            case ".csv":
                return(new HappinesCsvPriceManager(_processor, supplierSettings, archiveDirectory, retailPriceBuilder));

            default:
                throw new Exception($"There is no price manager for file with extension {Path.GetExtension(supplierSettings.Url)}");
            }
        }
예제 #3
0
 public RetailPriceBuilder(SupplierSettings settings)
 {
     _settings = settings;
 }
 public HappinesCsvPriceManager(IProcessor processor, SupplierSettings supplierSettings, string archiveDirectory, IRetailPriceBuilder retailPriceBuilder)
     : base(processor, supplierSettings, archiveDirectory, retailPriceBuilder)
 {
     _priceFormatFile = supplierSettings.FormatFile;
     _priceEncoding   = supplierSettings.Encoding;
 }
예제 #5
0
 public HappinesXmlPriceManager(IProcessor processor, SupplierSettings supplierSettings, string archiveDirectory, IRetailPriceBuilder retailPriceBuilder, IColorBuilder colorCodeBuilder)
     : base(processor, supplierSettings, archiveDirectory, retailPriceBuilder)
 {
     _colorCodeBuilder = colorCodeBuilder;
 }