All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.wix.pay.creditcard.PublicCreditCardOptionalFields.scala Maven / Gradle / Ivy

The newest version!
/*      __ __ _____  __                                              *\
**     / // // /_/ |/ /          Wix                                 **
**    / // // / /|   /           (c) 2006-2015, Wix LTD.             **
**   / // // / //   |            http://www.wix.com/                 **
**   \__/|__/_//_/| |                                                **
\*                |/                                                 */
package com.wix.pay.creditcard


/** Container that holds optional fields of a Public Credit Card (e.g., holder ID, billing address).
  *
  * @author Raz, Ohad
  */
case class PublicCreditCardOptionalFields private(override val holderId: Option[String],
                                                  override val holderName: Option[String],
                                                  override val billingAddress: Option[String],
                                                  override val billingPostalCode: Option[String],
                                                  override val billingAddressDetailed: Option[AddressDetailed])
  extends Serializable with CommonPublicCreditCardFields

object PublicCreditCardOptionalFields {

  def apply(holderId: Option[String] = None,
            holderName: Option[String] = None,
            billingAddress: Option[String] = None,
            billingPostalCode: Option[String] = None): PublicCreditCardOptionalFields = PublicCreditCardOptionalFields(
    holderId = holderId,
    holderName = holderName,
    billingAddress = billingAddress,
    billingPostalCode = billingPostalCode,
    billingAddressDetailed = None)

  def apply(holderId: Option[String],
            holderName: Option[String],
            billingAddressDetailed: Option[AddressDetailed]): PublicCreditCardOptionalFields = PublicCreditCardOptionalFields(
    holderId = holderId,
    holderName = holderName,
    billingAddress = extractBillingAddressFrom(billingAddressDetailed),
    billingPostalCode = billingAddressDetailed.flatMap(_.postalCode),
    billingAddressDetailed = billingAddressDetailed)

  def extractBillingAddressFrom(billingAddressDetailed: Option[AddressDetailed]) =
    billingAddressDetailed.collect {
      case addressDetailed if !addressDetailed.isCompletelyEmpty => addressDetailed.composedAddress
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy