예제 #1
0
        private bool IsValidEntity(Model.PurchaseOrder po)
        {
            po.Errors = new List <Error>();
            ValidationContext       context = new ValidationContext(po);
            List <ValidationResult> results = new List <ValidationResult>();

            bool isValid = Validator.TryValidateObject(po, context, results, true);

            foreach (ValidationResult r in results)
            {
                po.AddError(new Error(po.Errors.Count, r.ErrorMessage, "Model"));
            }

            return(isValid);
        }
예제 #2
0
        private bool IsValid(Model.PurchaseOrder po)
        {
            List <bool> validations = new List <bool>();

            validations.Add(IsValidEntity(po));
            foreach (Item item in po.Items)
            {
                if (item.Status == ItemStatus.NoLongerRequired)
                {
                    ItemStatus status = GetItemStatus(item.ItemId);
                    if (status != ItemStatus.Pending)
                    {
                        validations.Add(false);
                        po.AddError(new Error(111, "The item status cannot be changed, it has already been processed", "Business"));
                    }
                    else
                    {
                        item.Quantity    = 0;
                        item.Price       = 0;
                        item.Description = "No longer needed";
                        item.Status      = ItemStatus.Denied;
                    }
                }
            }

            if (po.PurchaseOrderId > 0)
            {
                PurchaseOrder poFromDatabase = GetPurchaseOrder(po.PurchaseOrderId);

                //if (po.IsProcess == false && poFromDatabase.Status == POStatus.UnderReview)
                //{
                //    validations.Add(false);
                //    po.Errors.Add(new Error(111, "This Purchase Order is currently under review and cannot be modified", "Business"));
                //}

                if (poFromDatabase.Status == POStatus.Closed)
                {
                    validations.Add(false);
                    po.Errors.Add(new Error(112, "This Purchase Order is closed and cannot be modified", "Business"));
                }
            }

            return(validations.Contains(false) ? false : true);
        }