public IList <string> GetAllNames()
        {
            var names = new List <string>();

            using (var reader = new FarmaimpeksReader(_fileName)) {
                foreach (var parsedPrice in reader.Prices())
                {
                    var       priceInfo  = _data.Rows[0];
                    var       supplierId = Convert.ToUInt32(priceInfo["FirmCode"]);
                    PriceCost cost;
                    using (new SessionScope(FlushAction.Never)) {
                        cost =
                            PriceCost.Queryable.FirstOrDefault(
                                c => c.Price.Supplier.Id == supplierId && c.CostName == parsedPrice.Id);
                    }

                    if (cost == null)
                    {
                        _log.WarnFormat(
                            "Не смог найти прайс лист у поставщика {0} с именем '{1}', пропуская этот прайс",
                            Info.FirmShortName, parsedPrice.Id);
                        continue;
                    }

                    var info   = new PriceFormalizationInfo(priceInfo, cost.Price);
                    var parser = new BasePriceParser(reader, info);
                    parser.Downloaded = Downloaded;
                    names.AddRange(reader.Read()
                                   .Where(x => !String.IsNullOrWhiteSpace(x.PositionName)).Select(x => x.PositionName));
                }
            }
            return(names);
        }
示例#2
0
        protected void FormalizePrice(IReader reader)
        {
            var parser = new BasePriceParser(reader, Info);

            parser.Downloaded = Downloaded;
            parser.Formalize();
            Stat = parser.Stat;
        }
示例#3
0
 public void Formalize()
 {
     using (var reader = new FarmaimpeksOKPReader(_fileName)) {
         Info.IsUpdating = true;
         var parser = new BasePriceParser(reader, Info, true);
         parser.Downloaded = Downloaded;
         parser.Formalize();
         Stat = parser.Stat;
     }
 }