package io.delphiplatform.api.v3.model.ads;

import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.Objects;

import io.delphiplatform.api.v3.decibelrdb.entity.DecibelCampaignProviderEntity;

public class Provider {

    @JsonProperty("provider_id")
    private Integer providerId;

    @JsonProperty("provider_name")
    private String providerName;

    public Provider providerId(Integer providerId) {
        this.providerId = providerId;
        return this;
    }

    public static Provider from(DecibelCampaignProviderEntity entity) {
        return new Provider()
            .providerId(entity.getId())
            .providerName(entity.getName());
    }

    public Integer getProviderId() {
        return providerId;
    }

    public void setProviderId(Integer providerId) {
        this.providerId = providerId;
    }

    public Provider providerName(String providerName) {
        this.providerName = providerName;
        return this;
    }


    public String getProviderName() {
        return providerName;
    }

    public void setProviderName(String providerName) {
        this.providerName = providerName;
    }


    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        Provider provider = (Provider) o;
        return Objects.equals(this.providerId, provider.providerId) &&
            Objects.equals(this.providerName, provider.providerName);
    }

    @Override
    public int hashCode() {
        return Objects.hash(providerId, providerName);
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("class Provider {\n");
        sb.append("    providerId: ").append(toIndentedString(providerId)).append("\n");
        sb.append("    providerName: ").append(toIndentedString(providerName)).append("\n");
        sb.append("}");
        return sb.toString();
    }

    private String toIndentedString(Object o) {
        if (o == null) {
            return "null";
        }
        return o.toString().replace("\n", "\n    ");
    }
}

