public static CreditCard GetCreditCardInfo(CreditCardMetadata incomingCreditCard)
        {
            var creditCard = new CreditCard
            {
                CreditCardId       = incomingCreditCard.CreditCardId,
                AccountId          = incomingCreditCard.AccountId,
                ContactId          = incomingCreditCard.ContactId,
                Type               = incomingCreditCard.Type ?? null,
                Name               = string.IsNullOrEmpty(incomingCreditCard.Name) ? null : incomingCreditCard.Name,
                Number             = string.IsNullOrEmpty(incomingCreditCard.Number) ? null : incomingCreditCard.Number,
                CardholderName     = string.IsNullOrEmpty(incomingCreditCard.CardholderName) ? null : incomingCreditCard.CardholderName,
                ExpirationMonth    = incomingCreditCard.ExpirationMonth ?? null,
                ExpirationYear     = string.IsNullOrEmpty(incomingCreditCard.ExpirationYear) ? null : incomingCreditCard.ExpirationYear,
                Address            = string.IsNullOrEmpty(incomingCreditCard.Address) ? null : incomingCreditCard.Address,
                City               = string.IsNullOrEmpty(incomingCreditCard.City) ? null : incomingCreditCard.City,
                StateOrProvince    = string.IsNullOrEmpty(incomingCreditCard.StateOrProvince) ? null : incomingCreditCard.StateOrProvince,
                PostalCode         = string.IsNullOrEmpty(incomingCreditCard.PostalCode) ? null : incomingCreditCard.PostalCode,
                StatusCode         = incomingCreditCard.StatusCode ?? null,
                TransactionCode    = incomingCreditCard.TransactionCode,
                AuthCode           = incomingCreditCard.AuthCode,
                ResultCode         = incomingCreditCard.ResultCode,
                ProfileCode        = incomingCreditCard.ProfileCode,
                ProfilePaymentCode = incomingCreditCard.ProfilePaymentCode,
                ResultMessage      = incomingCreditCard.ResultMessage,
            };

            if (!string.IsNullOrEmpty(incomingCreditCard.ExpirationDate))
            {
                if (incomingCreditCard.ExpirationDate.Length > 4 && incomingCreditCard.ExpirationDate.Contains("/"))
                {
                    if (incomingCreditCard.ExpirationDate.Length == 5)
                    {
                        incomingCreditCard.ExpirationDate = incomingCreditCard.ExpirationDate.Replace("/", "");
                    }
                    else if (incomingCreditCard.ExpirationDate.Length == 7)
                    {
                        incomingCreditCard.ExpirationDate = incomingCreditCard.ExpirationDate.Substring(0, 2)
                                                            + incomingCreditCard.ExpirationDate.Substring(5, 2);
                    }
                }

                if (incomingCreditCard.ExpirationDate.Length == 4)
                {
                    CreditCard.Enums.ExpirationMonth month =
                        GetExpirtationMonthFromNumber(incomingCreditCard.ExpirationDate.Substring(0, 2));
                    creditCard.ExpirationMonth = month;
                    creditCard.ExpirationYear  = incomingCreditCard.ExpirationDate.Substring(2, 2);
                }
            }

            return(creditCard);
        }
        public static int GetYearValue(CreditCardMetadata incomingCreditCard)
        {
            if (incomingCreditCard.ExpirationYear != null)
            {
                int expYear;
                if (Int32.TryParse(incomingCreditCard.ExpirationYear, out expYear))
                {
                    if (expYear < 100)
                    {
                        return(expYear);
                    }
                    else
                    {
                        return(GetTwoDigitYearFromFourDigit(expYear));
                    }
                }
            }
            else
            {
                if (incomingCreditCard.ExpirationDate.Length > 4 && incomingCreditCard.ExpirationDate.Contains("/"))
                {
                    DateTime date;
                    if (DateTime.TryParse(incomingCreditCard.ExpirationDate, out date))
                    {
                        ;
                    }
                    {
                        return(GetTwoDigitYearFromFourDigit(date.Year));
                    }
                }
                if (incomingCreditCard.ExpirationDate.Length == 4 && IsNumber(incomingCreditCard.ExpirationDate))
                {
                    var year = incomingCreditCard.ExpirationDate.Substring(2, 2);
                    return(Int32.Parse(year));
                }
            }

            return(0);
        }
        public static int GetMonthValue(CreditCardMetadata incomingCreditCard)
        {
            int expMonth = -1;

            if (incomingCreditCard.ExpirationMonth != null)
            {
                expMonth = incomingCreditCard.ExpirationMonth != null ? (int)incomingCreditCard.ExpirationMonth : -1;
            }

            if (expMonth != -1)
            {
                return(expMonth);
            }
            else
            {
                if (incomingCreditCard.ExpirationDate.Length > 4 && incomingCreditCard.ExpirationDate.Contains("/"))
                {
                    DateTime date;
                    if (DateTime.TryParse(incomingCreditCard.ExpirationDate, out date))
                    {
                        ;
                    }
                    {
                        return(date.Month);
                    }
                }

                if (incomingCreditCard.ExpirationDate.Length == 4 && IsNumber(incomingCreditCard.ExpirationDate))
                {
                    var month = incomingCreditCard.ExpirationDate.Substring(0, 2);
                    return(Int32.Parse(month));
                }
            }

            return(expMonth);
        }