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 padrao
	public ClienteProperty() {
		this(0, 'F', "", "", "", "", "Paraná");
		this.email = "";
		this.cep = "";
		this.rua = "";
		this.bairro = "";
	}

	// construtor com argumentos
	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;
	}
	
	// getters e setters
	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 getEmail() {
		return email;
	}

	public ClienteProperty email(String email) {
		this.email = email;
		return this;
	}

	public String getFone() {
		return fone;
	}

	public ClienteProperty fone(String fone) {
		this.fone = fone;
		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;
	}

	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;
	}
	
	@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);
	}
	
}
