private void NotifyFailed(OPC_Sale saleOrder, SaleOrderNotificationStatus create, IEnumerable <string> errorList) { using (var db = new YintaiHZhouContext()) { using (var scope = new TransactionScope()) { db.OPC_SaleOrderNotificationLog.Add(new OPC_SaleOrderNotificationLog { CreateDate = DateTime.Now, CreateUser = JobUserId, SaleOrderNo = saleOrder.SaleOrderNo, Status = (int)create, Message = string.Join(";", errorList) }); var trade = db.OPC_Sale.FirstOrDefault(x => x.SaleOrderNo == saleOrder.SaleOrderNo); if (trade != null) { trade.CashStatus = (int)EnumCashStatus.CashingFailed; trade.CashDate = DateTime.Now; trade.UpdatedDate = DateTime.Now; trade.UpdatedUser = JobUserId; db.Entry(trade).State = EntityState.Modified; } db.SaveChanges(); scope.Complete(); } } }
private void SaleOrderNotified(OPC_Sale saleOrder, SaleOrderNotificationStatus status) { using (var scope = new TransactionScope()) { using (var db = new YintaiHZhouContext()) { var order = db.OPC_Sale.FirstOrDefault(x => x.Id == saleOrder.Id); if (order == null) { Logger.Error(string.Format("Invalid order ({0})", saleOrder.OrderNo)); return; } if (order.Status != (int)EnumSaleOrderStatus.NotifyProduct && order.Status != (int)EnumSaleOrderStatus.None) { Logger.Error(string.Format("Invalid order status ({0})", saleOrder.OrderNo)); return; } if (order.Status == (int)EnumSaleOrderStatus.None) { order.Status = (int)EnumSaleOrderStatus.NotifyProduct; order.UpdatedDate = DateTime.Now; order.UpdatedUser = JobUserId; db.Entry(order).State = EntityState.Modified; } db.OPC_SaleOrderNotificationLog.Add(new OPC_SaleOrderNotificationLog { CreateDate = DateTime.Now, CreateUser = JobUserId, SaleOrderNo = saleOrder.SaleOrderNo, Status = (int)status, Message = string.Empty, }); db.SaveChanges(); scope.Complete(); } } }
private void DoQuery(Action <IQueryable <OPC_Sale> > callback, int orderStatus, SaleOrderNotificationStatus status) { using (var context = new YintaiHZhouContext()) { var linq = context.OPC_Sale.Where( t => t.Status == orderStatus && !context.OPC_SaleOrderNotificationLog.Any( x => x.SaleOrderNo == t.SaleOrderNo && ( x.Status == (int)status || x.Status == (int)SaleOrderNotificationStatus.CreateFailed || x.Status == (int)SaleOrderNotificationStatus.PaidFailed || x.Status == (int)SaleOrderNotificationStatus.ExceptionThrow)) ); if (callback != null) { callback(linq); } } }