Ejemplo n.º 1
0
        public DataValidationException(string fieldName, DataValidationFailure dataValidationFailure, int valueBoundary, int actualValue)
        {
            switch (dataValidationFailure)
            {
            case DataValidationFailure.StringTooShort:
                InitComponent(fieldName, dataValidationFailure,
                              $"Length of {actualValue} is less than expected {valueBoundary}");
                break;

            case DataValidationFailure.StringTooLong:
                InitComponent(fieldName, dataValidationFailure,
                              $"Length of {actualValue} is more than allowed {valueBoundary}");
                break;

            case DataValidationFailure.IntegerTooLow:
                InitComponent(fieldName, dataValidationFailure,
                              $"Value of {actualValue} is less than expected {valueBoundary}");
                break;

            case DataValidationFailure.IntegerTooHigh:
                InitComponent(fieldName, dataValidationFailure,
                              $"Length of {actualValue} is more than allowed {valueBoundary}");
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(dataValidationFailure), dataValidationFailure, null);
            }
        }
Ejemplo n.º 2
0
        public DataValidationException(string fieldName, DataValidationFailure dataValidationFailure)
        {
            switch (dataValidationFailure)
            {
            case DataValidationFailure.ParentEntityNull:
                InitComponent(fieldName, dataValidationFailure, "Parent entity is null");
                break;

            case DataValidationFailure.ForeignKeyNotPopulated:
                InitComponent(fieldName, dataValidationFailure, "Foreign key not populated");
                break;

            case DataValidationFailure.ForeignKeyPopulated:
                InitComponent(fieldName, dataValidationFailure, "Foreign key populated");
                break;

            case DataValidationFailure.ForeignKeyNegativeValue:
                InitComponent(fieldName, dataValidationFailure, "Foreign key populated with a negative value");
                break;

            case DataValidationFailure.ChildCollectionNotEmpty:
                InitComponent(fieldName, dataValidationFailure, "Child collection is not empty");
                break;

            case DataValidationFailure.DecimalIsZero:
            case DataValidationFailure.IntegerIsZero:
                InitComponent(fieldName, dataValidationFailure, "Value unexpectedly zero");
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(dataValidationFailure), dataValidationFailure, null);
            }
        }
Ejemplo n.º 3
0
        public DataValidationException(string fieldName, DataValidationFailure dataValidationFailure, bool actualValue)
        {
            switch (dataValidationFailure)
            {
            case DataValidationFailure.IllegalValue:
                InitComponent(fieldName, dataValidationFailure, $"Illegal boolean value of {actualValue}");
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(dataValidationFailure), dataValidationFailure, null);
            }
        }
Ejemplo n.º 4
0
        public DataValidationException(string field1Name, string field2Name, DataValidationFailure dataValidationFailure)
        {
            switch (dataValidationFailure)
            {
            case DataValidationFailure.NoneOrBoth:
                InitComponent(field1Name + "/" + field2Name, dataValidationFailure,
                              "Fields must be either both null or both have values");
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(dataValidationFailure), dataValidationFailure, null);
            }
        }
Ejemplo n.º 5
0
        public DataValidationException(
            string field1Name,
            string field2Name,
            DateTime value1,
            DateTime value2,
            DataValidationFailure dataValidationFailure)
        {
            switch (dataValidationFailure)
            {
            case DataValidationFailure.FromDateAfterToDate:
                InitComponent(field1Name + "/" + field2Name, dataValidationFailure,
                              $"{field1Name} ({value1}) is after {field2Name} ({value2})");
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(dataValidationFailure), dataValidationFailure, null);
            }
        }
Ejemplo n.º 6
0
        public DataValidationException(string fieldName, DataValidationFailure dataValidationFailure, DateTime?valueBoundary, DateTime?actualValue)
        {
            string type = fieldName.Contains("Time") ? "DateTime" : "Date";

            switch (dataValidationFailure)
            {
            case DataValidationFailure.DateTimeTooEarly:
                InitComponent(fieldName, dataValidationFailure,
                              $"{type} of {actualValue} is earlier than expected {valueBoundary}");
                break;

            case DataValidationFailure.DateTimeTooLate:
                InitComponent(fieldName, dataValidationFailure,
                              $"{type} of {actualValue} is later than allowed {valueBoundary}");
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(dataValidationFailure), dataValidationFailure, null);
            }
        }
            /// <summary>
            /// Convert unit of measure for item reservations.
            /// </summary>
            /// <param name="context">The request context.</param>
            /// <param name="itemReservations">The item reservations.</param>
            /// <param name="itemUnitConversions">The item unit conversions.</param>
            /// <exception cref="DataValidationException">Thrown if there is no conversion rules defined for any of item reservations.</exception>
            internal static void ConvertUnitOfMeasure(RequestContext context, IEnumerable <ItemReservation> itemReservations, IEnumerable <ItemUnitConversion> itemUnitConversions)
            {
                Collection <DataValidationFailure> validationFailures = new Collection <DataValidationFailure>();

                Dictionary <ItemUnitConversion, UnitOfMeasureConversion> conversions = GetUnitOfMeasureConversions(context, itemUnitConversions);
                IEnumerator <ItemReservation>    itemReservationEnumerator           = itemReservations.GetEnumerator();
                IEnumerator <ItemUnitConversion> itemUnitConversionEnumerator        = itemUnitConversions.GetEnumerator();

                while (itemReservationEnumerator.MoveNext() && itemUnitConversionEnumerator.MoveNext())
                {
                    ItemUnitConversion itemUnitConversion = itemUnitConversionEnumerator.Current;
                    if (!itemUnitConversion.IsNop)
                    {
                        UnitOfMeasureConversion unitOfMeasureConversion;
                        if (conversions.TryGetValue(itemUnitConversion, out unitOfMeasureConversion))
                        {
                            ItemReservation itemReservation = itemReservationEnumerator.Current;
                            itemReservation.Quantity = unitOfMeasureConversion.Convert(itemReservation.Quantity);
                        }
                        else
                        {
                            DataValidationFailure validationFailure = new DataValidationFailure(DataValidationErrors.Microsoft_Dynamics_Commerce_Runtime_UnitOfMeasureConversionNotFound);
                            validationFailure.ErrorContext = string.Format(CultureInfo.InvariantCulture, "No conversion rules defined for ItemUnitConversion:{0}", itemUnitConversion);
                            validationFailures.Add(validationFailure);
                        }
                    }
                }

                if (validationFailures.Count > 0)
                {
                    throw new DataValidationException(
                              DataValidationErrors.Microsoft_Dynamics_Commerce_Runtime_AggregateValidationError,
                              validationFailures,
                              string.Format("There are {0} item reservations whose unit of measures cannot be converted.", validationFailures.Count));
                }
            }
Ejemplo n.º 8
0
 private void InitComponent(string fieldName, DataValidationFailure dataValidationFailure, string details = "")
 {
     FieldName             = fieldName;
     DataValidationFailure = dataValidationFailure;
     Details = details;
 }