public IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            if (UnitDODate.Equals(DateTimeOffset.MinValue) || UnitDODate == null)
            {
                yield return(new ValidationResult("Tgl. Delivery Order harus diisi", new List <string> {
                    "UnitDODate"
                }));
            }

            if (UnitRequest == null || string.IsNullOrWhiteSpace(UnitRequest.Id))
            {
                yield return(new ValidationResult("Unit yang meminta haris diisi", new List <string> {
                    "UnitRequest"
                }));
            }

            if (UnitDOType == "TRANSFER" && (StorageRequest == null || string.IsNullOrWhiteSpace(StorageRequest._id)))
            {
                yield return(new ValidationResult("Gudang yang meminta harus diisi", new List <string> {
                    "StorageRequest"
                }));
            }

            if (UnitDOType == "TRANSFER" && (UnitSender == null || string.IsNullOrWhiteSpace(UnitSender.Id)))
            {
                yield return(new ValidationResult("Unit yang mengirim harus diisi", new List <string> {
                    "UnitSender"
                }));
            }

            if (UnitDOType == "TRANSFER" && UnitSender.Id == UnitRequest.Id)
            {
                yield return(new ValidationResult("Unit yang meminta dan Unit yang mengirim tidak boleh sama", new List <string> {
                    "UnitSender"
                }));
            }

            if (Storage == null)
            {
                yield return(new ValidationResult("Gudang yang mengirim harus diisi", new List <string> {
                    "Storage"
                }));
            }

            if (string.IsNullOrWhiteSpace(RONo))
            {
                yield return(new ValidationResult("No RO harus diisi", new List <string> {
                    "RONo"
                }));
            }
            else
            {
                int itemErrorCount = 0;

                if (Items == null || Items.Count(i => i.IsSave) <= 0)
                {
                    yield return(new ValidationResult("Item is required", new List <string> {
                        "ItemsCount"
                    }));
                }
                else
                {
                    string itemError = "[";

                    foreach (var item in Items)
                    {
                        itemError += "{";

                        if (item.IsSave)
                        {
                            if (item.Quantity == 0)
                            {
                                itemErrorCount++;
                                itemError += "Quantity: 'Jumlah tidak boleh 0', ";
                            }
                            else
                            {
                                PurchasingDbContext dbContext = (PurchasingDbContext)validationContext.GetService(typeof(PurchasingDbContext));
                                var URNItem = dbContext.GarmentUnitReceiptNoteItems.AsNoTracking().FirstOrDefault(x => x.Id == item.URNItemId);
                                if (URNItem != null)
                                {
                                    var UDOItem  = dbContext.GarmentUnitDeliveryOrderItems.AsNoTracking().FirstOrDefault(x => x.Id == item.Id);
                                    var quantity = URNItem.SmallQuantity - URNItem.OrderQuantity + (decimal)(UDOItem != null ? UDOItem.Quantity : 0);
                                    if ((decimal)item.Quantity > quantity)
                                    {
                                        itemErrorCount++;
                                        itemError += $"Quantity: 'Jumlah tidak boleh lebih dari {quantity}', ";
                                    }
                                }
                            }
                        }

                        itemError += "}, ";
                    }

                    itemError += "]";

                    if (itemErrorCount > 0)
                    {
                        yield return(new ValidationResult(itemError, new List <string> {
                            "Items"
                        }));
                    }
                }
            }
        }
コード例 #2
0
        public IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            IGarmentUnitDeliveryOrderFacade unitDeliveryOrderFacade = validationContext == null ? null : (IGarmentUnitDeliveryOrderFacade)validationContext.GetService(typeof(IGarmentUnitDeliveryOrderFacade));

            if (ExpenditureDate.Equals(DateTimeOffset.MinValue) || ExpenditureDate == null)
            {
                yield return(new ValidationResult("Tanggal Pengeluaran Diperlukan", new List <string> {
                    "ExpenditureDate"
                }));
            }
            else if (UnitDODate > ExpenditureDate)
            {
                yield return(new ValidationResult($"Tanggal Pengeluaran Tidak boleh kurang dari {UnitDODate.ToOffset(new TimeSpan(7, 0, 0)).ToString("dd/MM/yyyy", new CultureInfo("id-ID"))}", new List <string> {
                    "ExpenditureDate"
                }));
            }
            if (UnitDONo == null)
            {
                yield return(new ValidationResult("Nomor Delivery Order Diperlukan", new List <string> {
                    "UnitDONo"
                }));
            }

            int itemErrorCount = 0;

            if (this.Items == null || Items.Count(i => i.IsSave) <= 0)
            {
                yield return(new ValidationResult("Item is required", new List <string> {
                    "ItemsCount"
                }));
            }
            else
            {
                string itemError = "[";

                foreach (var item in Items)
                {
                    itemError += "{";

                    if (item.IsSave)
                    {
                        var unitDO = unitDeliveryOrderFacade.ReadById((int)UnitDOId);
                        if (unitDO != null)
                        {
                            var unitDOItem = unitDO.Items.Where(s => s.Id == item.UnitDOItemId).FirstOrDefault();
                            if (unitDOItem != null)
                            {
                                if ((double)item.Quantity > unitDOItem.Quantity)
                                {
                                    itemErrorCount++;
                                    itemError += "Quantity: 'Jumlah tidak boleh lebih dari " + unitDOItem.Quantity + "', ";
                                }
                            }
                        }


                        PurchasingDbContext dbContext = (PurchasingDbContext)validationContext.GetService(typeof(PurchasingDbContext));
                        var UENItem = dbContext.GarmentUnitExpenditureNoteItems.AsNoTracking().FirstOrDefault(x => x.Id == item.Id);
                        if (UENItem != null)
                        {
                            if ((double)item.Quantity > UENItem.Quantity)
                            {
                                itemErrorCount++;
                                itemError += "Quantity: 'Jumlah tidak boleh lebih dari " + UENItem.Quantity + "', ";
                            }
                        }
                        if (item.Quantity <= 0)
                        {
                            itemErrorCount++;
                            itemError += "Quantity: 'Jumlah harus lebih dari 0', ";
                        }
                    }

                    itemError += "}, ";
                }

                itemError += "]";

                if (itemErrorCount > 0)
                {
                    yield return(new ValidationResult(itemError, new List <string> {
                        "Items"
                    }));
                }
            }
        }
        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
        {
            if (UnitDODate.Equals(DateTimeOffset.MinValue) || UnitDODate == null)
            {
                yield return new ValidationResult("Tgl. Delivery Order harus diisi", new List<string> { "UnitDODate" });
            }
            if (DateTimeOffset.Compare(DateTimeOffset.Now, UnitDODate) < 0)
            {
                yield return new ValidationResult("Tgl. Delivery Order tidak boleh lebih dari hari ini", new List<string> {"UnitDODate"}); //menambah kondisi validasi
            }

            if (UnitDOType != "RETUR" && UnitDOType != "MARKETING" &&(UnitRequest == null || string.IsNullOrWhiteSpace(UnitRequest.Id)))
            {
                yield return new ValidationResult("Unit yang meminta harus diisi", new List<string> { "UnitRequest" });
            }

            if (UnitDOType == "TRANSFER" && (StorageRequest == null || string.IsNullOrWhiteSpace(StorageRequest._id)))
            {
                yield return new ValidationResult("Gudang yang meminta harus diisi", new List<string> { "StorageRequest" });
            }

            if ((UnitDOType == "TRANSFER" || UnitDOType == "RETUR" || UnitDOType == "MARKETING") && (UnitSender == null || string.IsNullOrWhiteSpace(UnitSender.Id)))
            {
                yield return new ValidationResult("Unit yang mengirim harus diisi", new List<string> { "UnitSender" });
            }

            if (UnitDOType == "TRANSFER" && UnitSender.Id == UnitRequest.Id)
            {
                yield return new ValidationResult("Unit yang meminta dan Unit yang mengirim tidak boleh sama", new List<string> { "UnitSender" });
            }

            if (UnitDOType != "RETUR" && UnitDOType != "MARKETING" && string.IsNullOrWhiteSpace(Article))
            {
                yield return new ValidationResult("Artikel harus diisi", new List<string> { "Article" });
            }

            if (Storage == null)
            {
                yield return new ValidationResult("Gudang yang mengirim harus diisi", new List<string> { "Storage" });
            }

            if (UnitDOType == "LAIN-LAIN" && string.IsNullOrWhiteSpace(OtherDescription))
            {
                yield return new ValidationResult("Keterangan Lain-lain harus diisi", new List<string> { "OtherDescription" });
            }

            if (UnitDOType != "RETUR" && UnitDOType != "MARKETING" && string.IsNullOrWhiteSpace(RONo) )
            {
                yield return new ValidationResult("No RO harus diisi", new List<string> { "RONo" });
            }
            else
            {
                int itemErrorCount = 0;

                if (Items == null || Items.Count(i => i.IsSave) <= 0)
                {
                    yield return new ValidationResult("Item is required", new List<string> { "ItemsCount" });
                }
                else
                {
                    string itemError = "[";

                    foreach (var item in Items)
                    {
                        itemError += "{";

                        if (item.IsSave)
                        {
                            if (item.Quantity == 0)
                            {
                                itemErrorCount++;
                                itemError += "Quantity: 'Jumlah tidak boleh 0', ";
                            }
                            else if(UnitDOType == "RETUR")
                            {
                                if (item.Quantity > item.ReturQtyCheck)
                                {
                                    itemErrorCount++;
                                    itemError += $"Quantity: 'Jumlah tidak boleh lebih dari {item.ReturQtyCheck}', ";
                                }
                            }
                            else
                            {
                                PurchasingDbContext dbContext = (PurchasingDbContext)validationContext.GetService(typeof(PurchasingDbContext));
                                var DOItem = dbContext.GarmentDOItems.AsNoTracking().FirstOrDefault(x => x.Id == item.DOItemsId);
                                if (DOItem != null)
                                {
                                    var UDOItem = dbContext.GarmentUnitDeliveryOrderItems.AsNoTracking().FirstOrDefault(x => x.Id == item.Id);
                                    var quantity =Math.Round(DOItem.RemainingQuantity + (decimal)(UDOItem != null ? UDOItem.Quantity : 0),2);
                                    if ((decimal)item.Quantity > quantity)
                                    {
                                        itemErrorCount++;
                                        itemError += $"Quantity: 'Jumlah tidak boleh lebih dari {quantity}', ";
                                    }
                                }
                            }
                        }

                        itemError += "}, ";
                    }

                    itemError += "]";

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