public void SaveMainRow() { Loading = true; var saveTemp = (TblTradeAgreementTransaction) new TblTradeAgreementTransaction().InjectFrom(SelectedMainRow); saveTemp.TblTradeAgreementHeaders = new ObservableCollection <TblTradeAgreementHeader>(); var details = SelectedMainRow.DetailsList.Where(d => d.TblVendorPurchaseGroup != null && d.ItemCode != null && d.CurrencyCode != null); foreach (var item in details.GroupBy(d => new { d.Vendor })) { var firstDetail = item.FirstOrDefault(); var TradeAgreementHeader = new TblTradeAgreementHeader() { FromDate = SelectedMainRow.FromDate, ToDate = SelectedMainRow.ToDate, Vendor = item.Key.Vendor, TblTradeAgreementTransaction = saveTemp.Iserial, }; if (firstDetail != null) { TradeAgreementHeader.Iserial = firstDetail.HeaderIserial; } TradeAgreementHeader.TblTradeAgreementDetails = new ObservableCollection <TblTradeAgreementDetail>(); GenericMapper.InjectFromObCollection(TradeAgreementHeader.TblTradeAgreementDetails, details.Where(d => d.Vendor == item.Key.Vendor)); saveTemp.TblTradeAgreementHeaders.Add(TradeAgreementHeader); } productionServiceClient.SaveTradeAgreementAsync(saveTemp); }
public List <TblTradeAgreementDetail> SaveTradeAgreement(TblTradeAgreementHeader header) { using (var entities = new WorkFlowManagerDBEntities()) { if (entities.TblTradeAgreementHeaders.Any(x => x.Vendor == header.Vendor && x.FromDate == header.FromDate && x.ToDate == header.ToDate)) { var oldHeader = (from s in entities.TblTradeAgreementHeaders where s.Iserial == header.Iserial select s).SingleOrDefault(); GenericUpdate(oldHeader, header, entities); foreach (var detail in header.TblTradeAgreementDetails) { detail.TblTradeAgreementHeader = oldHeader.Iserial; if (detail.Iserial != 0) { var oldRow = (from s in entities.TblTradeAgreementDetails where s.Iserial == detail.Iserial select s).SingleOrDefault(); GenericUpdate(oldRow, detail, entities); } else { entities.TblTradeAgreementDetails.AddObject(detail); } } } else { entities.TblTradeAgreementHeaders.AddObject(header); } entities.SaveChanges(); return(header.TblTradeAgreementDetails.ToList()); } }
public List <TblTradeAgreementDetail> SaveTradeAgreement(TblTradeAgreementTransaction header, out TblTradeAgreementTransaction savedHeader) { header.TblLkpSeason1 = null; savedHeader = header; using (var entities = new WorkFlowManagerDBEntities()) { var oldTransaction = entities.TblTradeAgreementTransactions.FirstOrDefault(s => s.Iserial == header.Iserial); if (oldTransaction != null) { SharedOperation.GenericUpdate(oldTransaction, header, entities); foreach (var headerItem in header.TblTradeAgreementHeaders) { headerItem.TblTradeAgreementTransaction = oldTransaction.Iserial; var oldRow = entities.TblTradeAgreementHeaders.FirstOrDefault( x => x.Vendor == headerItem.Vendor && x.FromDate == headerItem.FromDate && x.ToDate == headerItem.ToDate); if (oldRow != null) { headerItem.Iserial = oldRow.Iserial; SharedOperation.GenericUpdate(oldRow, headerItem, entities); foreach (var detailItem in headerItem.TblTradeAgreementDetails) { detailItem.TblTradeAgreementHeader = headerItem.Iserial; if (detailItem.Iserial != 0) { var olddetailRow = entities.TblTradeAgreementDetails.SingleOrDefault( s => s.Iserial == detailItem.Iserial); SharedOperation.GenericUpdate(olddetailRow, detailItem, entities); } else { var tempDetail = new TblTradeAgreementDetail(); tempDetail = detailItem.Clone(); tempDetail.TblTradeAgreementHeader1 = null; entities.TblTradeAgreementDetails.AddObject(tempDetail); } } } else { var tempHeader = new TblTradeAgreementHeader(); tempHeader = headerItem.Clone(); tempHeader.TblTradeAgreementTransaction1 = null; entities.TblTradeAgreementHeaders.AddObject(tempHeader); } } } else { header.Serial = entities.TblTradeAgreementTransactions.Where(t => t.TblLkpSeason == header.TblLkpSeason ).Select(t => t.Serial).DefaultIfEmpty(0).Max() + 1; entities.TblTradeAgreementTransactions.AddObject(header); } entities.SaveChanges(); List <TblTradeAgreementDetail> result = new List <TblTradeAgreementDetail>(); header.TblTradeAgreementHeaders.ForEach(h => h.TblTradeAgreementDetails.ForEach(d => result.Add(d))); return(result); } }