public TransferShippingOrder MapToModel(TransferShippingOrderViewModel viewModel) { TransferShippingOrder model = new TransferShippingOrder(); PropertyCopier <TransferShippingOrderViewModel, TransferShippingOrder> .Copy(viewModel, model); model.SupplierId = viewModel.Supplier._id; model.SupplierCode = viewModel.Supplier.code; model.SupplierName = viewModel.Supplier.name; model.TransferShippingOrderItems = new List <TransferShippingOrderItem>(); foreach (TransferShippingOrderItemViewModel shippingOrderItemViewModel in viewModel.TransferShippingOrderItems) { TransferShippingOrderItem shippingOrderItem = new TransferShippingOrderItem(); PropertyCopier <TransferShippingOrderItemViewModel, TransferShippingOrderItem> .Copy(shippingOrderItemViewModel, shippingOrderItem); shippingOrderItem.TransferShippingOrderDetails = new List <TransferShippingOrderDetail>(); foreach (TransferShippingOrderDetailViewModel shippingOrderDetailViewModel in shippingOrderItemViewModel.TransferShippingOrderDetails) { TransferShippingOrderDetail shippingOrderDetail = new TransferShippingOrderDetail(); PropertyCopier <TransferShippingOrderDetailViewModel, TransferShippingOrderDetail> .Copy(shippingOrderDetailViewModel, shippingOrderDetail); shippingOrderDetail.ProductId = shippingOrderDetailViewModel.Product._id; shippingOrderDetail.ProductCode = shippingOrderDetailViewModel.Product.code; shippingOrderDetail.ProductName = shippingOrderDetailViewModel.Product.name; shippingOrderDetail.UomId = shippingOrderDetailViewModel.Uom._id; shippingOrderDetail.UomUnit = shippingOrderDetailViewModel.Uom.unit; shippingOrderItem.TransferShippingOrderDetails.Add(shippingOrderDetail); } model.TransferShippingOrderItems.Add(shippingOrderItem); } return(model); }
public override async Task <int> DeleteModel(int Id) { int Deleted = 0; using (var Transaction = this.DbContext.Database.BeginTransaction()) { try { TransferShippingOrderItemService transferShippingOrderItemService = ServiceProvider.GetService <TransferShippingOrderItemService>(); transferShippingOrderItemService.Username = this.Username; TransferShippingOrderDetailService transferShippingOrderDetailService = ServiceProvider.GetService <TransferShippingOrderDetailService>(); transferShippingOrderDetailService.Username = this.Username; HashSet <int> TransferShippingOrderItemIds = new HashSet <int>( this.DbContext.TransferShippingOrderItems .Where(p => p.SOId.Equals(Id)) .Select(p => p.Id) ); foreach (int itemId in TransferShippingOrderItemIds) { HashSet <int> TransferShippingOrderDetailIds = new HashSet <int>( this.DbContext.TransferShippingOrderDetails .Where(p => p.SOItemId.Equals(itemId)) .Select(p => p.Id) ); foreach (int detailId in TransferShippingOrderDetailIds) { await transferShippingOrderDetailService.DeleteModel(detailId); TransferShippingOrderItem item = this.DbContext.TransferShippingOrderItems .Include(d => d.TransferShippingOrderDetails) .FirstOrDefault(p => p.Id.Equals(itemId)); if (item != null) { foreach (var detail in item.TransferShippingOrderDetails) { TransferDeliveryOrderDetail transferDeliveryOrderDetail = this.DbContext.TransferDeliveryOrderDetails.FirstOrDefault(s => s.Id == detail.DODetailId); transferDeliveryOrderDetail.ShippingOrderQuantity -= (int)detail.DeliveryQuantity; transferDeliveryOrderDetail.RemainingQuantity += (int)detail.DeliveryQuantity; TransferRequestDetail transferRequestDetail = this.DbContext.TransferRequestDetails.FirstOrDefault(s => s.Id == detail.TRDetailId); transferRequestDetail._LastModifiedUtc = DateTime.UtcNow; transferRequestDetail._LastModifiedAgent = "Service"; transferRequestDetail._LastModifiedBy = this.Username; InternalTransferOrderDetail internalTransferOrderDetail = this.DbContext.InternalTransferOrderDetails.FirstOrDefault(s => s.Id == detail.ITODetailId); internalTransferOrderDetail._LastModifiedUtc = DateTime.UtcNow; internalTransferOrderDetail._LastModifiedAgent = "Service"; internalTransferOrderDetail._LastModifiedBy = this.Username; if (transferDeliveryOrderDetail.RemainingQuantity == transferDeliveryOrderDetail.DOQuantity) { ExternalTransferOrderDetail externalTransferOrderDetail = this.DbContext.ExternalTransferOrderDetails.FirstOrDefault(s => s.Id == detail.ETODetailId); transferRequestDetail.Status = externalTransferOrderDetail.RemainingQuantity > 0 ? "Barang Sudah dikirim sebagian ke Unit Pengirim" : "Barang Sudah dikirim semua ke Unit Pengirim"; internalTransferOrderDetail.Status = externalTransferOrderDetail.RemainingQuantity > 0 ? "Barang Sudah dikirim sebagian ke Unit Pengirim" : "Barang Sudah dikirim semua ke Unit Pengirim"; } else { transferRequestDetail.Status = transferDeliveryOrderDetail.RemainingQuantity > 0 ? "Barang Sudah dikirim sebagian" : "Barang Sudah dikirim semua"; internalTransferOrderDetail.Status = transferDeliveryOrderDetail.RemainingQuantity > 0 ? "Barang Sudah dikirim sebagian" : "Barang Sudah dikirim semua"; } } } } await transferShippingOrderItemService.DeleteModel(itemId); } Deleted = await this.DeleteAsync(Id); this.DbContext.SaveChanges(); Transaction.Commit(); } catch (Exception) { Transaction.Rollback(); } } return(Deleted); }