package com.softgraf.model;

// ClienteProperty usando Fluent Interface
public class ClienteProperty {

	private Integer codigo;
	private Character tipo;
	private String nome, cpfCnpj, email, fone, cep, rua, bairro, cidade, estado;

	// construtor padrão
	public ClienteProperty() {
		this(0, 'F', "", "", "", "", "Paraná");
		this.email = "";
		this.cep = "";
		this.rua = "";
		this.bairro = "";
	}

	public ClienteProperty(Integer codigo, Character tipo, String nome, String cpfCnpj, String fone, String cidade, String estado) {
		this.codigo = codigo;
		this.tipo = tipo;
		this.nome = nome;
		this.cpfCnpj = cpfCnpj;
		this.fone = fone;
		this.cidade = cidade;
		this.estado = estado;
	}
	
	public Integer getCodigo() {
		return codigo;
	}

	public ClienteProperty codigo(Integer codigo) {
		this.codigo = codigo;
		return this;
	}

	public Character getTipo() {
		return tipo;
	}

	public ClienteProperty tipo(Character tipo) {
		this.tipo = tipo;
		return this;
	}

	public String getNome() {
		return nome;
	}

	public ClienteProperty nome(String nome) {
		this.nome = nome;
		return this;
	}

	public String getCpfCnpj() {
		return cpfCnpj;
	}

	public ClienteProperty cpfCnpj(String cpfCnpj) {
		this.cpfCnpj = cpfCnpj;
		return this;
	}

	public String getFone() {
		return fone;
	}

	public ClienteProperty fone(String fone) {
		this.fone = fone;
		return this;
	}

	public String getCidade() {
		return cidade;
	}

	public ClienteProperty cidade(String cidade) {
		this.cidade = cidade;
		return this;
	}
	
	public String getEstado() {
		return estado;
	}
	
	public ClienteProperty estado(String estado) {
		this.estado = estado;
		return this;
	}
	
	public String getEmail() {
		return email;
	}
	
	public ClienteProperty email(String email) {
		this.email = email;
		return this;
	}
	
	public String getCep() {
		return cep;
	}
	
	public ClienteProperty cep(String cep) {
		this.cep = cep;
		return this;
	}
	
	public String getRua() {
		return rua;
	}
	
	public ClienteProperty rua(String rua) {
		this.rua = rua;
		return this;
	}
	
	public String getBairro() {
		return bairro;
	}
	
	public ClienteProperty bairro(String bairro) {
		this.bairro = bairro;
		return this;
	}
	
	@Override
	public String toString() {
		return String.format("ID: %d Tipo: %c Nome: %s Cpf/Cnpj: %s Email: %s Fone: %s Rua: %s Bairro: %s Cidade: %s Estado: %s Cep: %s", 
						       codigo, tipo, nome, cpfCnpj, email, fone, rua, bairro, cidade, estado, cep);
	}
}
