package org.wfc.omada.api.sitesetting.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * Only for Gateway.
 */
@ApiModel(description = "Only for Gateway.")
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2024-12-04T11:32:19.054+08:00[Asia/Shanghai]")

public class GatewayDirectionEntity   {
  @JsonProperty("lanToWan")
  private Boolean lanToWan;

  @JsonProperty("lanToLan")
  private Boolean lanToLan;

  @JsonProperty("wanInIds")
  @Valid
  private List<String> wanInIds = null;

  @JsonProperty("vpnInIds")
  @Valid
  private List<String> vpnInIds = null;

  public GatewayDirectionEntity lanToWan(Boolean lanToWan) {
    this.lanToWan = lanToWan;
    return this;
  }

  /**
   * Whether select LAN->WAN direction
   * @return lanToWan
  */
  @ApiModelProperty(value = "Whether select LAN->WAN direction")


  public Boolean getLanToWan() {
    return lanToWan;
  }

  public void setLanToWan(Boolean lanToWan) {
    this.lanToWan = lanToWan;
  }

  public GatewayDirectionEntity lanToLan(Boolean lanToLan) {
    this.lanToLan = lanToLan;
    return this;
  }

  /**
   * Whether select LAN->LAN direction, which conflicts with other directions
   * @return lanToLan
  */
  @ApiModelProperty(value = "Whether select LAN->LAN direction, which conflicts with other directions")


  public Boolean getLanToLan() {
    return lanToLan;
  }

  public void setLanToLan(Boolean lanToLan) {
    this.lanToLan = lanToLan;
  }

  public GatewayDirectionEntity wanInIds(List<String> wanInIds) {
    this.wanInIds = wanInIds;
    return this;
  }

  public GatewayDirectionEntity addWanInIdsItem(String wanInIdsItem) {
    if (this.wanInIds == null) {
      this.wanInIds = new ArrayList<>();
    }
    this.wanInIds.add(wanInIdsItem);
    return this;
  }

  /**
   * Selected WAN port IDs
   * @return wanInIds
  */
  @ApiModelProperty(value = "Selected WAN port IDs")


  public List<String> getWanInIds() {
    return wanInIds;
  }

  public void setWanInIds(List<String> wanInIds) {
    this.wanInIds = wanInIds;
  }

  public GatewayDirectionEntity vpnInIds(List<String> vpnInIds) {
    this.vpnInIds = vpnInIds;
    return this;
  }

  public GatewayDirectionEntity addVpnInIdsItem(String vpnInIdsItem) {
    if (this.vpnInIds == null) {
      this.vpnInIds = new ArrayList<>();
    }
    this.vpnInIds.add(vpnInIdsItem);
    return this;
  }

  /**
   * Selected VPN IDs
   * @return vpnInIds
  */
  @ApiModelProperty(value = "Selected VPN IDs")


  public List<String> getVpnInIds() {
    return vpnInIds;
  }

  public void setVpnInIds(List<String> vpnInIds) {
    this.vpnInIds = vpnInIds;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    GatewayDirectionEntity gatewayDirectionEntity = (GatewayDirectionEntity) o;
    return Objects.equals(this.lanToWan, gatewayDirectionEntity.lanToWan) &&
        Objects.equals(this.lanToLan, gatewayDirectionEntity.lanToLan) &&
        Objects.equals(this.wanInIds, gatewayDirectionEntity.wanInIds) &&
        Objects.equals(this.vpnInIds, gatewayDirectionEntity.vpnInIds);
  }

  @Override
  public int hashCode() {
    return Objects.hash(lanToWan, lanToLan, wanInIds, vpnInIds);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class GatewayDirectionEntity {\n");
    
    sb.append("    lanToWan: ").append(toIndentedString(lanToWan)).append("\n");
    sb.append("    lanToLan: ").append(toIndentedString(lanToLan)).append("\n");
    sb.append("    wanInIds: ").append(toIndentedString(wanInIds)).append("\n");
    sb.append("    vpnInIds: ").append(toIndentedString(vpnInIds)).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(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }
}

