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); }
public void Formalize() { using (var reader = new FarmaimpeksReader(_fileName)) { foreach (var parsedPrice in reader.Prices()) { var supplierId = Info.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; } Info.IsUpdating = true; Info.CostCode = cost.Id; Info.PriceItemId = cost.PriceItemId; Info.PriceCode = cost.Price.Id; FormalizePrice(reader); var customers = reader.Settings().ToList(); //фармаимпекс не передает флаг доступности клиенту, подразумевается что если есть настройка //то прайс доступен foreach (var customer in customers) { customer.Available = true; } With.Transaction((c, t) => { var command = new MySqlCommand(@" update Usersettings.Pricesdata set PriceName = ?name where pricecode = ?PriceId" , c); command.Parameters.AddWithValue("?PriceId", cost.Price.Id); command.Parameters.AddWithValue("?Name", parsedPrice.Name); command.ExecuteNonQuery(); command = new MySqlCommand(@" update Customers.Intersection i set i.AvailableForClient = 0 where i.PriceId = ?priceId" , c); command.Parameters.AddWithValue("?priceId", cost.Price.Id); command.ExecuteNonQuery(); UpdateIntersection(command, customers, reader.CostDescriptions); }); } } }