Exemplo n.º 1
0
        /// <exception cref="Ca.Infoway.Messagebuilder.Marshalling.HL7.XmlToModelTransformationException"></exception>
        protected override Money ParseNonNullNode(ParseContext context, XmlNode node, BareANY result, Type expectedReturnType, XmlToModelResult
                                                  xmlToModelResult)
        {
            ValidateNoChildren(context, node);
            string     value        = GetMandatoryAttributeValue(node, "value", xmlToModelResult);
            BigDecimal amount       = ValidateValue(value, context.Type, xmlToModelResult, (XmlElement)node);
            string     currencyCode = GetMandatoryAttributeValue(node, "currency", xmlToModelResult);

            Ca.Infoway.Messagebuilder.Domainvalue.Basic.Currency currency = ValidateCurrency(currencyCode, node, xmlToModelResult);
            return(amount == null && currency == null ? null : new Money(amount, currency));
        }
Exemplo n.º 2
0
 private Ca.Infoway.Messagebuilder.Domainvalue.Basic.Currency ValidateCurrency(string currencyCode, XmlNode node, XmlToModelResult
                                                                               xmlToModelResult)
 {
     if (StringUtils.IsBlank(currencyCode))
     {
         return(null);
     }
     // TM - the MB enum for currency is very limited
     Ca.Infoway.Messagebuilder.Domainvalue.Basic.Currency currency = CodeResolverRegistry.Lookup <Ca.Infoway.Messagebuilder.Domainvalue.Basic.Currency
                                                                                                  >(currencyCode);
     if (currency == null)
     {
         RecordUnknownCurrencyError(currencyCode, node, xmlToModelResult);
     }
     return(currency);
 }
Exemplo n.º 3
0
        protected override IDictionary <string, string> GetAttributeNameValuePairs(FormatContext context, Money money, BareANY bareAny
                                                                                   )
        {
            Validate(money, context);
            IDictionary <string, string> result = new Dictionary <string, string>();
            BigDecimal value = money.Amount;

            if (value != null)
            {
                result["value"] = value.ToString();
            }
            Ca.Infoway.Messagebuilder.Domainvalue.Basic.Currency currency = money.Currency;
            if (currency != null)
            {
                result["currency"] = currency.CodeValue;
            }
            return(result);
        }
Exemplo n.º 4
0
        protected override IDictionary <string, string> GetAttributeNameValuePairs(FormatContext context, Money money, BareANY bareAny
                                                                                   )
        {
            Validate(money, context);
            IDictionary <string, string> attributes = new Dictionary <string, string>();
            BigDecimal value = money.Amount;

            if (value != null)
            {
                attributes["value"] = value.ToString();
            }
            Ca.Infoway.Messagebuilder.Domainvalue.Basic.Currency currency = money.Currency;
            if (currency != null)
            {
                attributes["currency"] = currency.CodeValue;
            }
            this.sxcmHelper.HandleOperator(attributes, context, (ANYMetaData)bareAny);
            return(attributes);
        }
Exemplo n.º 5
0
        private void Validate(Money money, FormatContext context)
        {
            ModelToXmlResult modelToXmlResult = context.GetModelToXmlResult();
            string           propertyPath     = context.GetPropertyPath();
            BigDecimal       amount           = money.Amount;

            if (amount == null)
            {
                RecordMissingValueError(propertyPath, modelToXmlResult);
            }
            else
            {
                string value       = amount.ToString();
                string integerPart = value.Contains(".") ? StringUtils.SubstringBefore(value, ".") : value;
                string decimalPart = value.Contains(".") ? StringUtils.SubstringAfter(value, ".") : string.Empty;
                if (StringUtils.Length(integerPart) > MAX_DIGITS_BEFORE_DECIMAL)
                {
                    RecordTooManyDigitsBeforeDecimalError(value, propertyPath, modelToXmlResult);
                }
                if (StringUtils.Length(decimalPart) > MAX_DIGITS_AFTER_DECIMAL)
                {
                    RecordTooManyDigitsAfterDecimalError(value, propertyPath, modelToXmlResult);
                }
                if (!StringUtils.IsNumeric(integerPart) || !StringUtils.IsNumeric(decimalPart))
                {
                    RecordMustContainDigitsOnlyError(value, propertyPath, modelToXmlResult);
                }
            }
            Ca.Infoway.Messagebuilder.Domainvalue.Basic.Currency currency = money.Currency;
            if (currency == null)
            {
                RecordMissingCurrencyError(propertyPath, modelToXmlResult);
            }
            else
            {
                if (!Ca.Infoway.Messagebuilder.Domainvalue.Basic.Currency.CANADIAN_DOLLAR.CodeValue.Equals(currency.CodeValue))
                {
                    RecordCurrencyMustBeCadError(propertyPath, modelToXmlResult);
                }
            }
        }
Exemplo n.º 6
0
 private void AssertResultAsExpected(Money result, BigDecimal value, Ca.Infoway.Messagebuilder.Domainvalue.Basic.Currency
                                     currency)
 {
     Assert.IsNotNull(result, "populated result returned");
     if (result.Amount == null)
     {
         Assert.IsNull(result.Amount, "value");
     }
     else
     {
         Assert.AreEqual(value, result.Amount, "value");
     }
     if (result.Currency == null)
     {
         Assert.IsNull(result.Currency, "currency");
     }
     else
     {
         Assert.AreEqual(currency, result.Currency, "currency");
     }
 }
Exemplo n.º 7
0
 private Ca.Infoway.Messagebuilder.Domainvalue.Basic.Currency ValidateCurrency(string currencyCode, XmlNode node, XmlToModelResult
                                                                               xmlToModelResult)
 {
     if (StringUtils.IsBlank(currencyCode))
     {
         return(null);
     }
     Ca.Infoway.Messagebuilder.Domainvalue.Basic.Currency currency = CodeResolverRegistry.Lookup <Ca.Infoway.Messagebuilder.Domainvalue.Basic.Currency
                                                                                                  >(currencyCode);
     if (currency == null)
     {
         RecordUnknownCurrencyError(currencyCode, node, xmlToModelResult);
     }
     else
     {
         if (!Ca.Infoway.Messagebuilder.Domainvalue.Basic.Currency.CANADIAN_DOLLAR.CodeValue.Equals(currencyCode))
         {
             RecordCurrencyMustBeCanadianError(currencyCode, node, xmlToModelResult);
         }
     }
     return(currency);
 }
Exemplo n.º 8
0
 /// <summary>
 /// Constructs a Money object with the supplied amount and currency.
 /// </summary>
 ///
 /// <param name="amount_0">an amount</param>
 /// <param name="currency_1">a currency</param>
 public Money(BigDecimal amount_0, Ca.Infoway.Messagebuilder.Domainvalue.Basic.Currency currency_1)
 {
     this.amount   = amount_0;
     this.currency = currency_1;
 }