public bool CheckIdIsUsedByDeliveryOrder(int Id)
        {
            TransferDeliveryOrderItemService TransferDeliveryOrderItemService = this.ServiceProvider.GetService <TransferDeliveryOrderItemService>();
            HashSet <int> TransferDeliveryOrderItemIds = new HashSet <int>(TransferDeliveryOrderItemService.DbSet.Select(p => p.ETOId));

            return(TransferDeliveryOrderItemIds.Contains(Id));
        }
        public IEnumerable <ValidationResult> Validate(ValidationContext validationContext)

        {
            if (this.DODate == null || this.DODate == DateTime.MinValue)
            {
                yield return(new ValidationResult("Tanggal harus diisi", new List <string> {
                    "DODate"
                }));
            }

            if (this.Supplier == null || string.IsNullOrWhiteSpace(this.Supplier.name))
            {
                yield return(new ValidationResult("Unit Pengirim harus diisi", new List <string> {
                    "Supplier"
                }));
            }

            if (this.Division == null || string.IsNullOrWhiteSpace(this.Division.name))
            {
                yield return(new ValidationResult("Divisi Pemesan harus diisi", new List <string> {
                    "Division"
                }));
            }

            int itemErrorCount   = 0;
            int detailErrorCount = 0;

            if (items == null || items.Count.Equals(0))
            {
                yield return(new ValidationResult("Items Harus Diisi", new List <string> {
                    "TransferDeliveryOrderItemsCount"
                }));
            }
            else
            {
                string transferDeliveryOrderItemError = "[";

                foreach (TransferDeliveryOrderItemViewModel Item in items)
                {
                    transferDeliveryOrderItemError += "{ ";

                    if (string.IsNullOrWhiteSpace(Item.ETONo))
                    {
                        itemErrorCount++;
                        transferDeliveryOrderItemError += "ETONo: 'Nomor TO Eksternal Harus Diisi', ";
                    }
                    else
                    {
                        TransferDeliveryOrderItemService transferDeliveryOrderItemService = (TransferDeliveryOrderItemService)validationContext.GetService(typeof(TransferDeliveryOrderItemService));
                        //List<ExternalTransferOrderItem> itemsData = externalTransferOrderItemService.ReadModel(Filter: "{ InternalTransferOrderNo : '" + Item.InternalTransferOrderNo + "' }").Item1;
                        //itemsData = itemsData.Where(w => w.ExternalTransferOrderId != this.Id).ToList();
                        List <TransferDeliveryOrderItem> itemsData = transferDeliveryOrderItemService.DbSet.Where(
                            w => w.DOId != this.Id && w.ETONo.Equals(Item.ETONo)
                            )
                                                                     .ToList();
                        if (itemsData.Count > 0)
                        {
                            itemErrorCount++;
                            transferDeliveryOrderItemError += "ETONo: 'Nomor TO Eksternal Sudah Digunakan', ";
                        }
                    }

                    string transferDeliveryOrderDetailError = "[";
                    if (Item.details != null)
                    {
                        foreach (TransferDeliveryOrderDetailViewModel Detail in Item.details)
                        {
                            transferDeliveryOrderDetailError += "{ ";

                            // ExternalTransferOrderDetailService externalTransferOrderDetailService = (ExternalTransferOrderDetailService)validationContext.GetService(typeof(ExternalTransferOrderDetailService));
                            // List<ExternalTransferOrderDetail> detailsData = externalTransferOrderDetailService.DbSet.Where(
                            //    w => w.DOId != this.Id && w.ETONo.Equals(Item.ETONo)
                            //)
                            //.ToList();

                            //if (Detail.DOQuantity > Detail.RemainingQuantity)
                            //{
                            //    detailErrorCount++;
                            //    transferDeliveryOrderDetailError += "DOQuantity: 'Jumlah DO tidak boleh lebih dari (Jumlah pada RemainingQuantity di tabel ExternalTransferOrderDetails)', ";
                            //}

                            transferDeliveryOrderDetailError += " }, ";
                        }
                    }
                    transferDeliveryOrderDetailError += "]";

                    if (detailErrorCount > 0)
                    {
                        itemErrorCount++;
                        transferDeliveryOrderItemError += string.Concat("details: ", transferDeliveryOrderDetailError);
                    }

                    transferDeliveryOrderItemError += " }, ";
                }

                transferDeliveryOrderItemError += "]";

                if (itemErrorCount > 0)
                {
                    yield return(new ValidationResult(transferDeliveryOrderItemError, new List <string> {
                        "items"
                    }));
                }
            }
        }