/*
 * Swagger of Opencellsoft Api
 * @#Introduction
 *
 * The version of the OpenAPI document: 7.3.1-SNAPSHOT
 * Contact: contact@opencellsoft.fr
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


package org.openapitools.client.model;

import java.util.Objects;
import java.util.Arrays;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.IOException;
import java.math.BigDecimal;
import org.threeten.bp.OffsetDateTime;

/**
 * WalletReservationDto
 */
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2019-09-13T10:03:17.753Z[GMT]")
public class WalletReservationDto {
  public static final String SERIALIZED_NAME_RESERVATION_ID = "reservationId";
  @SerializedName(SERIALIZED_NAME_RESERVATION_ID)
  private Long reservationId;

  public static final String SERIALIZED_NAME_PROVIDER_CODE = "providerCode";
  @SerializedName(SERIALIZED_NAME_PROVIDER_CODE)
  private String providerCode;

  public static final String SERIALIZED_NAME_SELLER_CODE = "sellerCode";
  @SerializedName(SERIALIZED_NAME_SELLER_CODE)
  private String sellerCode;

  public static final String SERIALIZED_NAME_OFFER_CODE = "offerCode";
  @SerializedName(SERIALIZED_NAME_OFFER_CODE)
  private String offerCode;

  public static final String SERIALIZED_NAME_USER_ACCOUNT_CODE = "userAccountCode";
  @SerializedName(SERIALIZED_NAME_USER_ACCOUNT_CODE)
  private String userAccountCode;

  public static final String SERIALIZED_NAME_SUBSCRIPTION_DATE = "subscriptionDate";
  @SerializedName(SERIALIZED_NAME_SUBSCRIPTION_DATE)
  private OffsetDateTime subscriptionDate;

  public static final String SERIALIZED_NAME_EXPIRATION_DATE = "expirationDate";
  @SerializedName(SERIALIZED_NAME_EXPIRATION_DATE)
  private OffsetDateTime expirationDate;

  public static final String SERIALIZED_NAME_TERMINATION_DATE = "terminationDate";
  @SerializedName(SERIALIZED_NAME_TERMINATION_DATE)
  private OffsetDateTime terminationDate;

  public static final String SERIALIZED_NAME_CREDIT_LIMIT = "creditLimit";
  @SerializedName(SERIALIZED_NAME_CREDIT_LIMIT)
  private BigDecimal creditLimit;

  public static final String SERIALIZED_NAME_PARAM1 = "param1";
  @SerializedName(SERIALIZED_NAME_PARAM1)
  private String param1;

  public static final String SERIALIZED_NAME_PARAM2 = "param2";
  @SerializedName(SERIALIZED_NAME_PARAM2)
  private String param2;

  public static final String SERIALIZED_NAME_PARAM3 = "param3";
  @SerializedName(SERIALIZED_NAME_PARAM3)
  private String param3;

  public static final String SERIALIZED_NAME_AMOUNT_WITH_TAX = "amountWithTax";
  @SerializedName(SERIALIZED_NAME_AMOUNT_WITH_TAX)
  private Boolean amountWithTax;


  public WalletReservationDto reservationId(Long reservationId) {
    
    this.reservationId = reservationId;
    return this;
  }

   /**
   * Get reservationId
   * @return reservationId
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public Long getReservationId() {
    return reservationId;
  }



  public void setReservationId(Long reservationId) {
    this.reservationId = reservationId;
  }


  public WalletReservationDto providerCode(String providerCode) {
    
    this.providerCode = providerCode;
    return this;
  }

   /**
   * Get providerCode
   * @return providerCode
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public String getProviderCode() {
    return providerCode;
  }



  public void setProviderCode(String providerCode) {
    this.providerCode = providerCode;
  }


  public WalletReservationDto sellerCode(String sellerCode) {
    
    this.sellerCode = sellerCode;
    return this;
  }

   /**
   * Get sellerCode
   * @return sellerCode
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public String getSellerCode() {
    return sellerCode;
  }



  public void setSellerCode(String sellerCode) {
    this.sellerCode = sellerCode;
  }


  public WalletReservationDto offerCode(String offerCode) {
    
    this.offerCode = offerCode;
    return this;
  }

   /**
   * Get offerCode
   * @return offerCode
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public String getOfferCode() {
    return offerCode;
  }



  public void setOfferCode(String offerCode) {
    this.offerCode = offerCode;
  }


  public WalletReservationDto userAccountCode(String userAccountCode) {
    
    this.userAccountCode = userAccountCode;
    return this;
  }

   /**
   * Get userAccountCode
   * @return userAccountCode
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public String getUserAccountCode() {
    return userAccountCode;
  }



  public void setUserAccountCode(String userAccountCode) {
    this.userAccountCode = userAccountCode;
  }


  public WalletReservationDto subscriptionDate(OffsetDateTime subscriptionDate) {
    
    this.subscriptionDate = subscriptionDate;
    return this;
  }

   /**
   * Get subscriptionDate
   * @return subscriptionDate
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public OffsetDateTime getSubscriptionDate() {
    return subscriptionDate;
  }



  public void setSubscriptionDate(OffsetDateTime subscriptionDate) {
    this.subscriptionDate = subscriptionDate;
  }


  public WalletReservationDto expirationDate(OffsetDateTime expirationDate) {
    
    this.expirationDate = expirationDate;
    return this;
  }

   /**
   * Get expirationDate
   * @return expirationDate
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public OffsetDateTime getExpirationDate() {
    return expirationDate;
  }



  public void setExpirationDate(OffsetDateTime expirationDate) {
    this.expirationDate = expirationDate;
  }


  public WalletReservationDto terminationDate(OffsetDateTime terminationDate) {
    
    this.terminationDate = terminationDate;
    return this;
  }

   /**
   * Get terminationDate
   * @return terminationDate
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public OffsetDateTime getTerminationDate() {
    return terminationDate;
  }



  public void setTerminationDate(OffsetDateTime terminationDate) {
    this.terminationDate = terminationDate;
  }


  public WalletReservationDto creditLimit(BigDecimal creditLimit) {
    
    this.creditLimit = creditLimit;
    return this;
  }

   /**
   * Get creditLimit
   * @return creditLimit
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public BigDecimal getCreditLimit() {
    return creditLimit;
  }



  public void setCreditLimit(BigDecimal creditLimit) {
    this.creditLimit = creditLimit;
  }


  public WalletReservationDto param1(String param1) {
    
    this.param1 = param1;
    return this;
  }

   /**
   * Get param1
   * @return param1
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public String getParam1() {
    return param1;
  }



  public void setParam1(String param1) {
    this.param1 = param1;
  }


  public WalletReservationDto param2(String param2) {
    
    this.param2 = param2;
    return this;
  }

   /**
   * Get param2
   * @return param2
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public String getParam2() {
    return param2;
  }



  public void setParam2(String param2) {
    this.param2 = param2;
  }


  public WalletReservationDto param3(String param3) {
    
    this.param3 = param3;
    return this;
  }

   /**
   * Get param3
   * @return param3
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public String getParam3() {
    return param3;
  }



  public void setParam3(String param3) {
    this.param3 = param3;
  }


  public WalletReservationDto amountWithTax(Boolean amountWithTax) {
    
    this.amountWithTax = amountWithTax;
    return this;
  }

   /**
   * Get amountWithTax
   * @return amountWithTax
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public Boolean getAmountWithTax() {
    return amountWithTax;
  }



  public void setAmountWithTax(Boolean amountWithTax) {
    this.amountWithTax = amountWithTax;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    WalletReservationDto walletReservationDto = (WalletReservationDto) o;
    return Objects.equals(this.reservationId, walletReservationDto.reservationId) &&
        Objects.equals(this.providerCode, walletReservationDto.providerCode) &&
        Objects.equals(this.sellerCode, walletReservationDto.sellerCode) &&
        Objects.equals(this.offerCode, walletReservationDto.offerCode) &&
        Objects.equals(this.userAccountCode, walletReservationDto.userAccountCode) &&
        Objects.equals(this.subscriptionDate, walletReservationDto.subscriptionDate) &&
        Objects.equals(this.expirationDate, walletReservationDto.expirationDate) &&
        Objects.equals(this.terminationDate, walletReservationDto.terminationDate) &&
        Objects.equals(this.creditLimit, walletReservationDto.creditLimit) &&
        Objects.equals(this.param1, walletReservationDto.param1) &&
        Objects.equals(this.param2, walletReservationDto.param2) &&
        Objects.equals(this.param3, walletReservationDto.param3) &&
        Objects.equals(this.amountWithTax, walletReservationDto.amountWithTax);
  }

  @Override
  public int hashCode() {
    return Objects.hash(reservationId, providerCode, sellerCode, offerCode, userAccountCode, subscriptionDate, expirationDate, terminationDate, creditLimit, param1, param2, param3, amountWithTax);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class WalletReservationDto {\n");
    sb.append("    reservationId: ").append(toIndentedString(reservationId)).append("\n");
    sb.append("    providerCode: ").append(toIndentedString(providerCode)).append("\n");
    sb.append("    sellerCode: ").append(toIndentedString(sellerCode)).append("\n");
    sb.append("    offerCode: ").append(toIndentedString(offerCode)).append("\n");
    sb.append("    userAccountCode: ").append(toIndentedString(userAccountCode)).append("\n");
    sb.append("    subscriptionDate: ").append(toIndentedString(subscriptionDate)).append("\n");
    sb.append("    expirationDate: ").append(toIndentedString(expirationDate)).append("\n");
    sb.append("    terminationDate: ").append(toIndentedString(terminationDate)).append("\n");
    sb.append("    creditLimit: ").append(toIndentedString(creditLimit)).append("\n");
    sb.append("    param1: ").append(toIndentedString(param1)).append("\n");
    sb.append("    param2: ").append(toIndentedString(param2)).append("\n");
    sb.append("    param3: ").append(toIndentedString(param3)).append("\n");
    sb.append("    amountWithTax: ").append(toIndentedString(amountWithTax)).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    ");
  }

}

