public override void OnCreating(TransferShippingOrder model) { base.OnCreating(model); model._CreatedAgent = "Service"; model._CreatedBy = this.Username; model._LastModifiedAgent = "Service"; model._LastModifiedBy = this.Username; TransferShippingOrderItemService shippingOrderItemService = ServiceProvider.GetService <TransferShippingOrderItemService>(); shippingOrderItemService.Username = this.Username; foreach (TransferShippingOrderItem shippingOrderItem in model.TransferShippingOrderItems) { shippingOrderItemService.OnCreating(shippingOrderItem); } }
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); }