public void InsertPurchasingMethod(PurchasingViewModel purchasing, List <PurchasingDetailViewModel> purchasingDetails, int userID) { DateTime serverTime = DateTime.Now; purchasing.CreateDate = serverTime; purchasing.CreateUserId = userID; purchasing.ModifyUserId = userID; purchasing.ModifyDate = serverTime; purchasing.Status = (int)DbConstant.PurchasingStatus.NotVerified; purchasing.PaymentMethodId = _referenceRepository.GetMany(c => c.Code == DbConstant.REF_PURCHASE_PAYMENTMETHOD_UTANG).FirstOrDefault().Id; purchasing.TotalHasPaid = 0; string code = "PRC" + "-" + serverTime.Month.ToString() + serverTime.Day.ToString() + "-"; //get total purchasing created today List <Purchasing> todayPCR = _purchasingRepository.GetMany(s => s.Code.ToString().Contains(code) && s.CreateDate.Year == serverTime.Year).ToList(); code = code + (todayPCR.Count + 1); purchasing.Code = code; Purchasing entity = new Purchasing(); Map(purchasing, entity); _purchasingRepository.AttachNavigation(entity.CreateUser); _purchasingRepository.AttachNavigation(entity.ModifyUser); _purchasingRepository.AttachNavigation(entity.PaymentMethod); _purchasingRepository.AttachNavigation(entity.Supplier); Purchasing purchasingInserted = _purchasingRepository.Add(entity); _unitOfWork.SaveChanges(); foreach (var itemPurchasingDetail in purchasingDetails) { PurchasingDetail newPurchasingDetail = new PurchasingDetail(); newPurchasingDetail.CreateDate = serverTime; newPurchasingDetail.CreateUserId = userID; newPurchasingDetail.ModifyUserId = userID; newPurchasingDetail.ModifyDate = serverTime; newPurchasingDetail.PurchasingId = purchasingInserted.Id; newPurchasingDetail.SparepartId = itemPurchasingDetail.SparepartId; newPurchasingDetail.Qty = itemPurchasingDetail.Qty; newPurchasingDetail.Price = itemPurchasingDetail.Price; newPurchasingDetail.SerialNumber = itemPurchasingDetail.SerialNumber; newPurchasingDetail.Status = (int)DbConstant.PurchasingStatus.NotVerified; _purchasingDetailRepository.AttachNavigation(newPurchasingDetail.CreateUser); _purchasingDetailRepository.AttachNavigation(newPurchasingDetail.ModifyUser); _purchasingDetailRepository.AttachNavigation(newPurchasingDetail.Purchasing); _purchasingDetailRepository.AttachNavigation(newPurchasingDetail.Sparepart); PurchasingDetail purchasingDetailInserted = _purchasingDetailRepository.Add(newPurchasingDetail); } _unitOfWork.SaveChanges(); Recalculate(purchasingInserted); }