// Path: src/main/java/com/boaglio/casadocodigo/greendogdelivery/domain/Cliente.java
// @Entity
// public class Cliente {
// 
// 	@Id
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
// 	private Long id;
// 
//     @NotNull
//     @Length(min=2, max=30,message="O tamanho do nome deve ser entre {min} e {max} caracteres")
// 	private String nome;
// 
//     @NotNull
//     @Length(min=2, max=300,message="O tamanho do endereço deve ser entre {min} e {max} caracteres")
// 	private String endereco;
// 	
//     @JsonIgnore
// 	@OneToMany(mappedBy = "cliente",fetch = FetchType.EAGER)
// 	@Cascade(CascadeType.ALL)
// 	private List<Pedido> pedidos;
// 
// 	public Cliente(Long id,String nome,String endereco) {
// 		super();
// 		this.id = id;
// 		this.nome = nome;
// 		this.endereco = endereco;
// 	}
// 
// 	public Cliente() {}
// 
// 	public Long getId() {
// 		return id;
// 	}
// 
// 	public void setId(Long id) {
// 		this.id = id;
// 	}
// 
// 	public String getNome() {
// 		return nome;
// 	}
// 
// 	public void setNome(String nome) {
// 		this.nome = nome;
// 	}
// 
// 	public String getEndereco() {
// 		return endereco;
// 	}
// 
// 	public void setEndereco(String endereco) {
// 		this.endereco = endereco;
// 	}
// 	
// 	public List<Pedido> getPedidos() {
// 		return pedidos;
// 
// 	}
// 
// 	public void novoPedido(Pedido pedido) {
// 		
// 		if (this.pedidos==null) pedidos = new ArrayList<Pedido>();
// 		
// 		pedidos.add(pedido);
// 		
// 	}
// 
// 	
// 	public void setPedidos(List<Pedido> pedidos) {
// 		this.pedidos = pedidos;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "Cliente [id=" + id + ", nome=" + nome + ", endereco=" + endereco + "]";
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + ( (id == null) ? 0 : id.hashCode());
// 		return result;
// 	}
// 
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (getClass() != obj.getClass())
// 			return false;
// 		Cliente other = (Cliente) obj;
// 		if (id == null) {
// 			if (other.id != null)
// 				return false;
// 		} else if (!id.equals(other.id))
// 			return false;
// 		return true;
// 	}
// 
// }
// 
// Path: src/main/java/com/boaglio/casadocodigo/greendogdelivery/repository/ClienteRepository.java
//  @Repository
// //@RepositoryRestResource(collectionResourceRel = "clientes",path = "clientes")
// public interface ClienteRepository extends JpaRepository<Cliente,Long> {
// 
// 	Cliente findByNome(String nome);
// 
// 	Page<Cliente> findByNomeContainingAllIgnoringCase(@Param("nome") String nome,Pageable pageable);
// 
// 	Cliente findByNomeAllIgnoringCase(@Param("nome") String nome);
// 
// }


import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.boaglio.casadocodigo.greendogdelivery.domain.Cliente;
import com.boaglio.casadocodigo.greendogdelivery.repository.ClienteRepository;

package com.boaglio.casadocodigo.greendogdelivery.controller;




@Controller
@RequestMapping("/clientes")
public class ClienteController {

	private final ClienteRepository clienteRepository;
	private final String CLIENTE_URI = "clientes/";

// Path: src/main/java/com/boaglio/casadocodigo/greendogdelivery/domain/Cliente.java
// @Entity
// public class Cliente {
// 
// 	@Id
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
// 	private Long id;
// 
//     @NotNull
//     @Length(min=2, max=30,message="O tamanho do nome deve ser entre {min} e {max} caracteres")
// 	private String nome;
// 
//     @NotNull
//     @Length(min=2, max=300,message="O tamanho do endereço deve ser entre {min} e {max} caracteres")
// 	private String endereco;
// 	
//     @JsonIgnore
// 	@OneToMany(mappedBy = "cliente",fetch = FetchType.EAGER)
// 	@Cascade(CascadeType.ALL)
// 	private List<Pedido> pedidos;
// 
// 	public Cliente(Long id,String nome,String endereco) {
// 		super();
// 		this.id = id;
// 		this.nome = nome;
// 		this.endereco = endereco;
// 	}
// 
// 	public Cliente() {}
// 
// 	public Long getId() {
// 		return id;
// 	}
// 
// 	public void setId(Long id) {
// 		this.id = id;
// 	}
// 
// 	public String getNome() {
// 		return nome;
// 	}
// 
// 	public void setNome(String nome) {
// 		this.nome = nome;
// 	}
// 
// 	public String getEndereco() {
// 		return endereco;
// 	}
// 
// 	public void setEndereco(String endereco) {
// 		this.endereco = endereco;
// 	}
// 	
// 	public List<Pedido> getPedidos() {
// 		return pedidos;
// 
// 	}
// 
// 	public void novoPedido(Pedido pedido) {
// 		
// 		if (this.pedidos==null) pedidos = new ArrayList<Pedido>();
// 		
// 		pedidos.add(pedido);
// 		
// 	}
// 
// 	
// 	public void setPedidos(List<Pedido> pedidos) {
// 		this.pedidos = pedidos;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "Cliente [id=" + id + ", nome=" + nome + ", endereco=" + endereco + "]";
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + ( (id == null) ? 0 : id.hashCode());
// 		return result;
// 	}
// 
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (getClass() != obj.getClass())
// 			return false;
// 		Cliente other = (Cliente) obj;
// 		if (id == null) {
// 			if (other.id != null)
// 				return false;
// 		} else if (!id.equals(other.id))
// 			return false;
// 		return true;
// 	}
// 
// }
// 
// Path: src/main/java/com/boaglio/casadocodigo/greendogdelivery/repository/ClienteRepository.java
//  @Repository
// //@RepositoryRestResource(collectionResourceRel = "clientes",path = "clientes")
// public interface ClienteRepository extends JpaRepository<Cliente,Long> {
// 
// 	Cliente findByNome(String nome);
// 
// 	Page<Cliente> findByNomeContainingAllIgnoringCase(@Param("nome") String nome,Pageable pageable);
// 
// 	Cliente findByNomeAllIgnoringCase(@Param("nome") String nome);
// 
// }


// Path: src/main/java/com/boaglio/casadocodigo/greendogdelivery/controller/ClienteController.java
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.boaglio.casadocodigo.greendogdelivery.domain.Cliente;
import com.boaglio.casadocodigo.greendogdelivery.repository.ClienteRepository;


package com.boaglio.casadocodigo.greendogdelivery.controller;




@Controller
@RequestMapping("/clientes")
public class ClienteController {

	private final ClienteRepository clienteRepository;
	private final String CLIENTE_URI = "clientes/";

	public ClienteController(ClienteRepository clienteRepository) {