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

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

import java.util.Objects;

import io.delphiplatform.api.v3.rdb.entity.CompanyEntity;


/**
 * Company response object
 */
@JsonPropertyOrder(alphabetic = true)
public class Company {

    @JsonProperty("company_key")
    private String companyKey;

    @JsonProperty("company_name")
    private String companyName;

    public static Company from(CompanyEntity entity) {
        if (entity == null) {
            return null;
        }
        return new Company()
            .companyKey(entity.getCompanyKey())
            .companyName(entity.getCompanyName());
    }

    public Company companyKey(String companyKey) {
        this.companyKey = companyKey;
        return this;
    }

    /**
     * Primary key identifier for Company.
     *
     * @return companyKey
     */
    public String getCompanyKey() {
        return companyKey;
    }

    public void setCompanyKey(String companyKey) {
        this.companyKey = companyKey;
    }

    public Company companyName(String companyName) {
        this.companyName = companyName;
        return this;
    }

    /**
     * Company name.
     *
     * @return companyName
     */
    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }


    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        Company company = (Company) o;
        return Objects.equals(this.companyKey, company.companyKey) &&
            Objects.equals(this.companyName, company.companyName);
    }

    @Override
    public int hashCode() {
        return Objects.hash(companyKey, companyName);
    }

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

        sb.append("    companyKey: ").append(toIndentedString(companyKey)).append("\n");
        sb.append("    companyName: ").append(toIndentedString(companyName)).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    ");
    }
}

