public void UpdateJobReceiveQtyOnQA(JobReceiveQALineViewModel QaLine, DateTime DocDate, ref ApplicationDbContext Context) { var temp = (from p in Context.JobReceiveQALine.AsNoTracking() where p.JobReceiveLineId == QaLine.JobReceiveLineId && p.JobReceiveQALineId != QaLine.JobReceiveQALineId join t in Context.JobReceiveQAHeader on p.JobReceiveQAHeaderId equals t.JobReceiveQAHeaderId select new { FailQty = p.FailQty, Date = t.DocDate, FailDealQty = p.FailDealQty, Weight = p.Weight, Penalty = p.PenaltyAmt, }).ToList(); JobReceiveLineStatus Status = Context.JobReceiveLineStatus.Find(QaLine.JobReceiveLineId); if (temp.Count == 0) { Status.QaFailQty = QaLine.FailQty; Status.QaDate = DocDate; Status.QaFailDealQty = QaLine.FailDealQty; Status.QaWeight = QaLine.Weight; Status.QaPenalty = QaLine.PenaltyAmt; } else { Status.QaDate = DocDate; Status.QaFailQty = temp.Sum(m => m.FailQty) + (QaLine.FailQty); Status.QaFailDealQty = temp.Sum(m => m.FailDealQty) + QaLine.FailDealQty; Status.QaWeight = temp.Sum(m => m.Weight) + QaLine.Weight; Status.QaPenalty = temp.Sum(m => m.Penalty) + QaLine.PenaltyAmt; } Status.ObjectState = Model.ObjectState.Modified; Context.JobReceiveLineStatus.Add(Status); }
//UpdateQty on ReceiveQA public void UpdateJobReceiveQtyQAMultiple(List <JobReceiveQALineViewModel> Qty, DateTime DocDate, ref ApplicationDbContext Context) { int[] Ids2 = null; Ids2 = Qty.Select(m => m.JobReceiveLineId).ToArray(); var LineStatus = (from p in Context.JobReceiveLineStatus where (Ids2).Contains(p.JobReceiveLineId.Value) select p).ToList(); foreach (var item in LineStatus) { JobReceiveQALineViewModel recQaline = Qty.Where(m => m.JobReceiveLineId == item.JobReceiveLineId).FirstOrDefault(); item.QaDate = DocDate; item.QaFailQty = (item.QaFailQty ?? 0) + recQaline.FailQty; item.QaFailDealQty = (item.QaFailDealQty ?? 0) + recQaline.FailDealQty; item.QaWeight = (item.QaWeight ?? 0) + (recQaline == null ? 0 : recQaline.Weight); item.QaPenalty = (item.QaPenalty ?? 0) + (recQaline == null ? 0 : recQaline.PenaltyAmt); item.ObjectState = Model.ObjectState.Modified; //Context.JobReceiveLineStatus.Add(item); } Context.JobReceiveLineStatus.AddRange(LineStatus); }