public void Create(BillViewModel billVm) { var order = billVm.AddModel(); //var orderDetails = Mapper.Map<List<BillDetailViewModel>, List<BillDetail>>(billVm.BillDetails); var orderDetails = billVm.BillDetails.Select(a => a.AddModel()).ToList(); foreach (var detail in orderDetails) { var product = _productRepository.FindById(detail.ProductId); detail.Price = product.Price; } order.BillDetails = orderDetails; _orderRepository.Add(order); }
public void Update(BillViewModel billVm) { //Mapping to order domain var order = billVm.AddModel(); //Get order Detail var newDetails = order.BillDetails; //new details added var addedDetails = newDetails.Where(x => x.Id == 0).ToList(); //get updated details var updatedDetails = newDetails.Where(x => x.Id != 0).ToList(); //Existed details var existedDetails = _orderDetailRepository.FindAll(x => x.BillId == billVm.Id); //Clear db order.BillDetails.Clear(); foreach (var detail in updatedDetails) { var product = _productRepository.FindById(detail.ProductId); detail.Price = product.Price; _orderDetailRepository.Update(detail); } foreach (var detail in addedDetails) { var product = _productRepository.FindById(detail.ProductId); detail.Price = product.Price; _orderDetailRepository.Add(detail); } _orderDetailRepository.RemoveMultiple(existedDetails.Except(updatedDetails).ToList()); _orderRepository.Update(order); }