Вот такой вот кодэ
Jan. 31st, 2012 04:23 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Цейтнот. Недосып. Обедать не пошли. В итоге такие вот высеры
Повесил тасочку, постец написал, чо. Не забуду. Будем рефакторить.
- public void PushToSite(Package package) {
- var pi = package.Data.DeserializeFromXml<TbcPIType>();
- using (var dbPackage = new DbPackagesDataContext(Settings.Default.Packages2ConnectionString))
- using (var dbSite = new DbScanSiteDataContext(Settings.Default.ScansSiteConnectionString)) {
- var goodsShipment = dbSite.tssGoodsShipments.FirstOrDefault(gs => gs.ID == pi.NakladID);
- goodsShipment = goodsShipment ?? pi.ToTssGoodsShipment(package).Do(dbSite.tssGoodsShipments.InsertOnSubmit);
- var removedContainers = from container in goodsShipment.tssContainers
- let exist = pi.GoodsShipment.ContainerNumbers.Any(c => c == container.Container)
- where !exist
- select container;
- removedContainers.ForEach(c => goodsShipment.tssContainers.Remove(c));
- var addedContainers = (from number in pi.GoodsShipment.ContainerNumbers
- let exist = goodsShipment.tssContainers.Any(c => c.Container == number)
- where !exist
- select number)
- .ToList()
- .Select(number => new tssContainers { Container = number });
- goodsShipment.tssContainers.AddRange(addedContainers);
- goodsShipment.tssScans.ForEach(d => d.IsInLastPackage = false);
- var removedDocuments = from document in goodsShipment.tssScans
- let exist = package.Document.Any(d => d.DocumentID == document.ID)
- where !exist
- select document;
- removedDocuments.ForEach(d => d.IsDeleted = true);
- var addedDocumnents = (from document in package.Document
- let exist = goodsShipment.tssScans.Any(d => d.ID == document.DocumentID)
- where !exist
- select document)
- .ToList()
- .Select(document => dbPackage.Package.First(p => p.ID == document.DocumentID))
- .Where(p => p.Type == PackageType.FileDocument)
- .ToList()
- .Select(PushToDisk);
- goodsShipment.tssScans.AddRange(addedDocumnents);
- dbPackage.SubmitChanges();
- }
- }
Повесил тасочку, постец написал, чо. Не забуду. Будем рефакторить.
(no subject)
Date: 2012-01-31 10:15 pm (UTC)(no subject)
Date: 2012-02-01 05:55 am (UTC)