public ResultModels InsertDataSaleFromPOS(PosSaleReportReturnModels datas) { NSLog.Logger.Info("Start InsertDataSaleFromPOS (Pos Sale).......................", datas); var result = new ResultModels(); if (datas != null && (datas.PosSaleReportDTOs != null && datas.PosSaleReportDTOs.Any())) { PosSaleFactory posSaleFactory = new PosSaleFactory(); result.IsOk = posSaleFactory.Insert(datas); } return(result); }
public bool Insert(PosSaleReportReturnModels datas) { List <PosSaleModels> lstPosSale = datas.PosSaleReportDTOs; List <PosSaleDetailModels> lstPosSaleDetail = datas.PosSaleDetailReportDTOs; bool result = true; List <R_PosSale> lstPosSales = new List <R_PosSale>(); using (NuWebContext cxt = new NuWebContext()) { using (var transaction = cxt.Database.BeginTransaction()) { try { var storeId = string.Empty; if (lstPosSale != null && lstPosSale.Any()) { var infoPosSale = lstPosSale.FirstOrDefault(); storeId = infoPosSale.StoreId; var obj = cxt.R_PosSale.Where(ww => ww.BusinessId == infoPosSale.BusinessId && ww.StoreId == infoPosSale.StoreId).FirstOrDefault(); if (obj != null) { NSLog.Logger.Info("Insert PosSale data exist", infoPosSale); //isPosSaleData = false; } else { var lstPosSalesEntity = lstPosSale.Select(ss => new R_PosSale() { Id = Guid.NewGuid().ToString(), StoreId = ss.StoreId, BusinessId = ss.BusinessId, OrderId = ss.OrderId, OrderNo = ss.OrderNo, ReceiptNo = ss.ReceiptNo, CreatedDate = ss.CreatedDate, ReceiptCreatedDate = ss.ReceiptCreatedDate, OrderStatus = ss.OrderStatus, TableNo = ss.TableNo, NoOfPerson = ss.NoOfPerson, CancelAmount = ss.CancelAmount, ReceiptTotal = ss.ReceiptTotal, Discount = ss.Discount, Tip = ss.Tip, PromotionValue = ss.PromotionValue, ServiceCharge = ss.ServiceCharge, GST = ss.GST, Rounding = ss.Rounding, Refund = ss.Refund, //NetSales = ss.NetSales, CashierId = ss.CashierId, CashierName = ss.CashierName, Mode = ss.Mode, CreditNoteNo = ss.CreditNoteNo }).ToList(); //add to db cxt.R_PosSale.AddRange(lstPosSalesEntity); } } if (lstPosSaleDetail != null && lstPosSaleDetail.Any()) { var infoPosSaleDetail = lstPosSaleDetail.FirstOrDefault(); var obj = cxt.R_PosSaleDetail.Where(ww => ww.BusinessId == infoPosSaleDetail.BusinessId && ww.StoreId == infoPosSaleDetail.StoreId).FirstOrDefault(); if (obj != null) { NSLog.Logger.Info("Insert PosSaleDetail data exist", infoPosSaleDetail); } else { var lstPosSaleDetailsEntity = lstPosSaleDetail.Select(ss => new R_PosSaleDetail() { Id = Guid.NewGuid().ToString(), StoreId = ss.StoreId, BusinessId = ss.BusinessId, OrderId = ss.OrderId, OrderDetailId = ss.OrderDetailId, ItemId = ss.ItemId, ItemTypeId = ss.ItemTypeId, ParentId = ss.ParentId, ItemCode = ss.ItemCode, ItemName = ss.ItemName, CategoryId = ss.CategoryId, CategoryName = ss.CategoryName, GLAccountCode = ss.GLAccountCode, Quantity = ss.Quantity, Price = ss.Price, ExtraPrice = ss.ExtraPrice, TotalAmount = ss.TotalAmount, Discount = ss.Discount, Cost = ss.Cost, ServiceCharge = ss.ServiceCharge, Tax = ss.Tax, PromotionAmount = ss.PromotionAmount, PoinsOrderId = ss.PoinsOrderId, GiftCardId = ss.GiftCardId, IsIncludeSale = ss.IsIncludeSale, CreatedDate = ss.CreatedDate, Mode = ss.Mode, IsDiscountTotal = ss.IsDiscountTotal, CancelUser = ss.CancelUser, RefundUser = ss.RefundUser, TaxType = ss.TaxType }).ToList(); //add to db cxt.R_PosSaleDetail.AddRange(lstPosSaleDetailsEntity); } } cxt.SaveChanges(); transaction.Commit(); NSLog.Logger.Info("Insert PosSale data success"); //push to xero Task.Run(() => PushInvoiceToXexo(storeId, lstPosSaleDetail, datas.PaymentReportXeroDTOs, datas.BusinessInfo)); } catch (Exception ex) { NSLog.Logger.Error("Insert PosSale data fail", ex); result = false; transaction.Rollback(); } finally { if (cxt != null) { cxt.Dispose(); } } } // end using transaction } //end using context return(result); }