/*
 * 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 org.threeten.bp.OffsetDateTime;

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

  public static final String SERIALIZED_NAME_TO_DUE_DATE = "toDueDate";
  @SerializedName(SERIALIZED_NAME_TO_DUE_DATE)
  private OffsetDateTime toDueDate;

  public static final String SERIALIZED_NAME_FILTER_CODE = "filterCode";
  @SerializedName(SERIALIZED_NAME_FILTER_CODE)
  private String filterCode;

  /**
   * Gets or Sets ddrequestOp
   */
  @JsonAdapter(DdrequestOpEnum.Adapter.class)
  public enum DdrequestOpEnum {
    CREATE("CREATE"),
    
    PAYMENT("PAYMENT"),
    
    FILE("FILE");

    private String value;

    DdrequestOpEnum(String value) {
      this.value = value;
    }

    public String getValue() {
      return value;
    }

    @Override
    public String toString() {
      return String.valueOf(value);
    }

    public static DdrequestOpEnum fromValue(String value) {
      for (DdrequestOpEnum b : DdrequestOpEnum.values()) {
        if (b.value.equals(value)) {
          return b;
        }
      }
      throw new IllegalArgumentException("Unexpected value '" + value + "'");
    }

    public static class Adapter extends TypeAdapter<DdrequestOpEnum> {
      @Override
      public void write(final JsonWriter jsonWriter, final DdrequestOpEnum enumeration) throws IOException {
        jsonWriter.value(enumeration.getValue());
      }

      @Override
      public DdrequestOpEnum read(final JsonReader jsonReader) throws IOException {
        String value = jsonReader.nextString();
        return DdrequestOpEnum.fromValue(value);
      }
    }
  }

  public static final String SERIALIZED_NAME_DDREQUEST_OP = "ddrequestOp";
  @SerializedName(SERIALIZED_NAME_DDREQUEST_OP)
  private DdrequestOpEnum ddrequestOp;

  /**
   * Gets or Sets status
   */
  @JsonAdapter(StatusEnum.Adapter.class)
  public enum StatusEnum {
    WAIT("WAIT"),
    
    PROCESSED("PROCESSED"),
    
    ERROR("ERROR");

    private String value;

    StatusEnum(String value) {
      this.value = value;
    }

    public String getValue() {
      return value;
    }

    @Override
    public String toString() {
      return String.valueOf(value);
    }

    public static StatusEnum fromValue(String value) {
      for (StatusEnum b : StatusEnum.values()) {
        if (b.value.equals(value)) {
          return b;
        }
      }
      throw new IllegalArgumentException("Unexpected value '" + value + "'");
    }

    public static class Adapter extends TypeAdapter<StatusEnum> {
      @Override
      public void write(final JsonWriter jsonWriter, final StatusEnum enumeration) throws IOException {
        jsonWriter.value(enumeration.getValue());
      }

      @Override
      public StatusEnum read(final JsonReader jsonReader) throws IOException {
        String value = jsonReader.nextString();
        return StatusEnum.fromValue(value);
      }
    }
  }

  public static final String SERIALIZED_NAME_STATUS = "status";
  @SerializedName(SERIALIZED_NAME_STATUS)
  private StatusEnum status;

  public static final String SERIALIZED_NAME_ERROR_CAUSE = "errorCause";
  @SerializedName(SERIALIZED_NAME_ERROR_CAUSE)
  private String errorCause;

  public static final String SERIALIZED_NAME_DD_REQUEST_BUILDER_CODE = "ddRequestBuilderCode";
  @SerializedName(SERIALIZED_NAME_DD_REQUEST_BUILDER_CODE)
  private String ddRequestBuilderCode;

  public static final String SERIALIZED_NAME_DUE_DATE_RAGE_SCRIPT_CODE = "dueDateRageScriptCode";
  @SerializedName(SERIALIZED_NAME_DUE_DATE_RAGE_SCRIPT_CODE)
  private String dueDateRageScriptCode;

  public static final String SERIALIZED_NAME_RECURRENT = "recurrent";
  @SerializedName(SERIALIZED_NAME_RECURRENT)
  private Boolean recurrent;

  /**
   * Gets or Sets paymentOrRefundEnum
   */
  @JsonAdapter(PaymentOrRefundEnumEnum.Adapter.class)
  public enum PaymentOrRefundEnumEnum {
    PAYMENT("PAYMENT"),
    
    REFUND("REFUND");

    private String value;

    PaymentOrRefundEnumEnum(String value) {
      this.value = value;
    }

    public String getValue() {
      return value;
    }

    @Override
    public String toString() {
      return String.valueOf(value);
    }

    public static PaymentOrRefundEnumEnum fromValue(String value) {
      for (PaymentOrRefundEnumEnum b : PaymentOrRefundEnumEnum.values()) {
        if (b.value.equals(value)) {
          return b;
        }
      }
      throw new IllegalArgumentException("Unexpected value '" + value + "'");
    }

    public static class Adapter extends TypeAdapter<PaymentOrRefundEnumEnum> {
      @Override
      public void write(final JsonWriter jsonWriter, final PaymentOrRefundEnumEnum enumeration) throws IOException {
        jsonWriter.value(enumeration.getValue());
      }

      @Override
      public PaymentOrRefundEnumEnum read(final JsonReader jsonReader) throws IOException {
        String value = jsonReader.nextString();
        return PaymentOrRefundEnumEnum.fromValue(value);
      }
    }
  }

  public static final String SERIALIZED_NAME_PAYMENT_OR_REFUND_ENUM = "paymentOrRefundEnum";
  @SerializedName(SERIALIZED_NAME_PAYMENT_OR_REFUND_ENUM)
  private PaymentOrRefundEnumEnum paymentOrRefundEnum;

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


  public DDRequestLotOpDto fromDueDate(OffsetDateTime fromDueDate) {
    
    this.fromDueDate = fromDueDate;
    return this;
  }

   /**
   * Get fromDueDate
   * @return fromDueDate
  **/
  @ApiModelProperty(required = true, value = "")

  public OffsetDateTime getFromDueDate() {
    return fromDueDate;
  }



  public void setFromDueDate(OffsetDateTime fromDueDate) {
    this.fromDueDate = fromDueDate;
  }


  public DDRequestLotOpDto toDueDate(OffsetDateTime toDueDate) {
    
    this.toDueDate = toDueDate;
    return this;
  }

   /**
   * Get toDueDate
   * @return toDueDate
  **/
  @ApiModelProperty(required = true, value = "")

  public OffsetDateTime getToDueDate() {
    return toDueDate;
  }



  public void setToDueDate(OffsetDateTime toDueDate) {
    this.toDueDate = toDueDate;
  }


  public DDRequestLotOpDto filterCode(String filterCode) {
    
    this.filterCode = filterCode;
    return this;
  }

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

  public String getFilterCode() {
    return filterCode;
  }



  public void setFilterCode(String filterCode) {
    this.filterCode = filterCode;
  }


  public DDRequestLotOpDto ddrequestOp(DdrequestOpEnum ddrequestOp) {
    
    this.ddrequestOp = ddrequestOp;
    return this;
  }

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

  public DdrequestOpEnum getDdrequestOp() {
    return ddrequestOp;
  }



  public void setDdrequestOp(DdrequestOpEnum ddrequestOp) {
    this.ddrequestOp = ddrequestOp;
  }


  public DDRequestLotOpDto status(StatusEnum status) {
    
    this.status = status;
    return this;
  }

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

  public StatusEnum getStatus() {
    return status;
  }



  public void setStatus(StatusEnum status) {
    this.status = status;
  }


  public DDRequestLotOpDto errorCause(String errorCause) {
    
    this.errorCause = errorCause;
    return this;
  }

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

  public String getErrorCause() {
    return errorCause;
  }



  public void setErrorCause(String errorCause) {
    this.errorCause = errorCause;
  }


  public DDRequestLotOpDto ddRequestBuilderCode(String ddRequestBuilderCode) {
    
    this.ddRequestBuilderCode = ddRequestBuilderCode;
    return this;
  }

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

  public String getDdRequestBuilderCode() {
    return ddRequestBuilderCode;
  }



  public void setDdRequestBuilderCode(String ddRequestBuilderCode) {
    this.ddRequestBuilderCode = ddRequestBuilderCode;
  }


  public DDRequestLotOpDto dueDateRageScriptCode(String dueDateRageScriptCode) {
    
    this.dueDateRageScriptCode = dueDateRageScriptCode;
    return this;
  }

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

  public String getDueDateRageScriptCode() {
    return dueDateRageScriptCode;
  }



  public void setDueDateRageScriptCode(String dueDateRageScriptCode) {
    this.dueDateRageScriptCode = dueDateRageScriptCode;
  }


  public DDRequestLotOpDto recurrent(Boolean recurrent) {
    
    this.recurrent = recurrent;
    return this;
  }

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

  public Boolean getRecurrent() {
    return recurrent;
  }



  public void setRecurrent(Boolean recurrent) {
    this.recurrent = recurrent;
  }


  public DDRequestLotOpDto paymentOrRefundEnum(PaymentOrRefundEnumEnum paymentOrRefundEnum) {
    
    this.paymentOrRefundEnum = paymentOrRefundEnum;
    return this;
  }

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

  public PaymentOrRefundEnumEnum getPaymentOrRefundEnum() {
    return paymentOrRefundEnum;
  }



  public void setPaymentOrRefundEnum(PaymentOrRefundEnumEnum paymentOrRefundEnum) {
    this.paymentOrRefundEnum = paymentOrRefundEnum;
  }


  public DDRequestLotOpDto 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;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    DDRequestLotOpDto ddRequestLotOpDto = (DDRequestLotOpDto) o;
    return Objects.equals(this.fromDueDate, ddRequestLotOpDto.fromDueDate) &&
        Objects.equals(this.toDueDate, ddRequestLotOpDto.toDueDate) &&
        Objects.equals(this.filterCode, ddRequestLotOpDto.filterCode) &&
        Objects.equals(this.ddrequestOp, ddRequestLotOpDto.ddrequestOp) &&
        Objects.equals(this.status, ddRequestLotOpDto.status) &&
        Objects.equals(this.errorCause, ddRequestLotOpDto.errorCause) &&
        Objects.equals(this.ddRequestBuilderCode, ddRequestLotOpDto.ddRequestBuilderCode) &&
        Objects.equals(this.dueDateRageScriptCode, ddRequestLotOpDto.dueDateRageScriptCode) &&
        Objects.equals(this.recurrent, ddRequestLotOpDto.recurrent) &&
        Objects.equals(this.paymentOrRefundEnum, ddRequestLotOpDto.paymentOrRefundEnum) &&
        Objects.equals(this.sellerCode, ddRequestLotOpDto.sellerCode);
  }

  @Override
  public int hashCode() {
    return Objects.hash(fromDueDate, toDueDate, filterCode, ddrequestOp, status, errorCause, ddRequestBuilderCode, dueDateRageScriptCode, recurrent, paymentOrRefundEnum, sellerCode);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class DDRequestLotOpDto {\n");
    sb.append("    fromDueDate: ").append(toIndentedString(fromDueDate)).append("\n");
    sb.append("    toDueDate: ").append(toIndentedString(toDueDate)).append("\n");
    sb.append("    filterCode: ").append(toIndentedString(filterCode)).append("\n");
    sb.append("    ddrequestOp: ").append(toIndentedString(ddrequestOp)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    errorCause: ").append(toIndentedString(errorCause)).append("\n");
    sb.append("    ddRequestBuilderCode: ").append(toIndentedString(ddRequestBuilderCode)).append("\n");
    sb.append("    dueDateRageScriptCode: ").append(toIndentedString(dueDateRageScriptCode)).append("\n");
    sb.append("    recurrent: ").append(toIndentedString(recurrent)).append("\n");
    sb.append("    paymentOrRefundEnum: ").append(toIndentedString(paymentOrRefundEnum)).append("\n");
    sb.append("    sellerCode: ").append(toIndentedString(sellerCode)).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    ");
  }

}

