/*
 * Microsoft Bot Connector API - v3.0
 * The Bot Connector REST API allows your bot to send and receive messages to channels configured in the  [Bot Framework Developer Portal](https://dev.botframework.com). The Connector service uses industry-standard REST  and JSON over HTTPS.    Client libraries for this REST API are available. See below for a list.    Many bots will use both the Bot Connector REST API and the associated [Bot State REST API](/en-us/restapi/state). The  Bot State REST API allows a bot to store and retrieve state associated with users and conversations.    Authentication for both the Bot Connector and Bot State REST APIs is accomplished with JWT Bearer tokens, and is  described in detail in the [Connector Authentication](/en-us/restapi/authentication) document.    # Client Libraries for the Bot Connector REST API    * [Bot Builder for C#](/en-us/csharp/builder/sdkreference/)  * [Bot Builder for Node.js](/en-us/node/builder/overview/)  * Generate your own from the [Connector API Swagger file](https://raw.githubusercontent.com/Microsoft/BotBuilder/master/CSharp/Library/Microsoft.Bot.Connector.Shared/Swagger/ConnectorAPI.json)    � 2016 Microsoft
 *
 * OpenAPI spec version: v3
 * Contact: botframework@microsoft.com
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */


package client.model;

import com.google.gson.annotations.SerializedName;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * W3C Payment Method Data for Microsoft Pay
 */
@ApiModel(description = "W3C Payment Method Data for Microsoft Pay")
@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaClientCodegen", date = "2018-08-29T10:06:15.114-07:00")
public class MicrosoftPayMethodData {
  @SerializedName("merchantId")
  private String merchantId = null;

  @SerializedName("supportedNetworks")
  private List<String> supportedNetworks = null;

  @SerializedName("supportedTypes")
  private List<String> supportedTypes = null;

  public MicrosoftPayMethodData merchantId(String merchantId) {
    this.merchantId = merchantId;
    return this;
  }

   /**
   * Microsoft Pay Merchant ID
   * @return merchantId
  **/
  @ApiModelProperty(value = "Microsoft Pay Merchant ID")
  public String getMerchantId() {
    return merchantId;
  }

  public void setMerchantId(String merchantId) {
    this.merchantId = merchantId;
  }

  public MicrosoftPayMethodData supportedNetworks(List<String> supportedNetworks) {
    this.supportedNetworks = supportedNetworks;
    return this;
  }

  public MicrosoftPayMethodData addSupportedNetworksItem(String supportedNetworksItem) {
    if (this.supportedNetworks == null) {
      this.supportedNetworks = new ArrayList<String>();
    }
    this.supportedNetworks.add(supportedNetworksItem);
    return this;
  }

   /**
   * Supported payment networks (e.g., \&quot;visa\&quot; and \&quot;mastercard\&quot;)
   * @return supportedNetworks
  **/
  @ApiModelProperty(value = "Supported payment networks (e.g., \"visa\" and \"mastercard\")")
  public List<String> getSupportedNetworks() {
    return supportedNetworks;
  }

  public void setSupportedNetworks(List<String> supportedNetworks) {
    this.supportedNetworks = supportedNetworks;
  }

  public MicrosoftPayMethodData supportedTypes(List<String> supportedTypes) {
    this.supportedTypes = supportedTypes;
    return this;
  }

  public MicrosoftPayMethodData addSupportedTypesItem(String supportedTypesItem) {
    if (this.supportedTypes == null) {
      this.supportedTypes = new ArrayList<String>();
    }
    this.supportedTypes.add(supportedTypesItem);
    return this;
  }

   /**
   * Supported payment types (e.g., \&quot;credit\&quot;)
   * @return supportedTypes
  **/
  @ApiModelProperty(value = "Supported payment types (e.g., \"credit\")")
  public List<String> getSupportedTypes() {
    return supportedTypes;
  }

  public void setSupportedTypes(List<String> supportedTypes) {
    this.supportedTypes = supportedTypes;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    MicrosoftPayMethodData microsoftPayMethodData = (MicrosoftPayMethodData) o;
    return Objects.equals(this.merchantId, microsoftPayMethodData.merchantId) &&
        Objects.equals(this.supportedNetworks, microsoftPayMethodData.supportedNetworks) &&
        Objects.equals(this.supportedTypes, microsoftPayMethodData.supportedTypes);
  }

  @Override
  public int hashCode() {
    return Objects.hash(merchantId, supportedNetworks, supportedTypes);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class MicrosoftPayMethodData {\n");

    sb.append("    merchantId: ").append(toIndentedString(merchantId)).append("\n");
    sb.append("    supportedNetworks: ").append(toIndentedString(supportedNetworks)).append("\n");
    sb.append("    supportedTypes: ").append(toIndentedString(supportedTypes)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(java.lang.Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }

}

