Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>

<dependency>
<groupId>com.h2database</groupId>
Expand Down
13 changes: 13 additions & 0 deletions src/main/java/br/com/codar/receitas/controller/HomeController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package br.com.codar.receitas.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {

@GetMapping("/")
public String home() {
return "Ola mundo";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package br.com.codar.receitas.controller;

import java.util.List;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import br.com.codar.receitas.dto.RequisicaoNovaReceita;
import br.com.codar.receitas.model.Receita;
import br.com.codar.receitas.repository.ReceitaRepository;

@Controller
@RequestMapping("receitas")
public class ReceitaController {

@Autowired
private ReceitaRepository receitaRepository;

@GetMapping("nova")
public String formulario(RequisicaoNovaReceita requisicaoNovaReceita) {
return "cadastro-receita";
}

@GetMapping("lista")
public String listar(Model model) {
List<Receita> receitas = receitaRepository.findAll();
model.addAttribute("receitas", receitas);
return "lista-receitas";
}

@PostMapping
public String salvar(@Valid RequisicaoNovaReceita requisicaoNovaReceita, BindingResult result, RedirectAttributes attributes) {
if (result.hasErrors()) {
return "cadastro-receita";
}
Receita receita = requisicaoNovaReceita.toReceita();
receitaRepository.save(receita);
attributes.addFlashAttribute("sucesso", "Receita salva com sucesso!");
return "redirect:receitas/lista";
}

@GetMapping("detalhe/{id}")
public String detalhe(@PathVariable(value = "id") Long id, Model model) {
model.addAttribute("receita", receitaRepository.findById(id).get());
return "detalhe-receita";
}

}
97 changes: 97 additions & 0 deletions src/main/java/br/com/codar/receitas/dto/RequisicaoNovaReceita.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
package br.com.codar.receitas.dto;

import java.util.List;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import br.com.codar.receitas.model.Ingredientes;
import br.com.codar.receitas.model.Receita;

public class RequisicaoNovaReceita {

@NotBlank
private String nome;

private String linkFoto;

@NotNull @Min(10) @Max(360)
private int tempoPreparo;

@NotNull @Min(1) @Max(50)
private int rendimento;

@NotEmpty
private List<Ingredientes> ingredientes;

@NotBlank @Size(min = 20)
private String modoPreparo;
private Boolean precisaRevisar;

public Receita toReceita() {
return new Receita(nome, linkFoto, tempoPreparo, rendimento, ingredientes, modoPreparo, precisaRevisar);
}

public String getNome() {
return nome;
}

public void setNome(String nome) {
this.nome = nome;
}

public String getLinkFoto() {
return linkFoto;
}

public void setLinkFoto(String linkFoto) {
this.linkFoto = linkFoto;
}

public int getTempoPreparo() {
return tempoPreparo;
}

public void setTempoPreparo(int tempoPreparo) {
this.tempoPreparo = tempoPreparo;
}

public int getRendimento() {
return rendimento;
}

public void setRendimento(int rendimento) {
this.rendimento = rendimento;
}

public String getModoPreparo() {
return modoPreparo;
}

public void setModoPreparo(String modoPreparo) {
this.modoPreparo = modoPreparo;
}

public Boolean getPrecisaRevisar() {
return precisaRevisar;
}

public void setPrecisaRevisar(Boolean precisaRevisar) {
this.precisaRevisar = precisaRevisar;
}

public List<Ingredientes> getIngredientes() {
return ingredientes;
}

public void setIngredientes(List<Ingredientes> ingredientes) {
this.ingredientes = ingredientes;
}



}
70 changes: 70 additions & 0 deletions src/main/java/br/com/codar/receitas/model/Ingredientes.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package br.com.codar.receitas.model;

import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

@Entity
public class Ingredientes {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull @NotEmpty
private String nome;
@Min(1) @Max(1000)
private int quantidade;

@ManyToOne
private Receita receita;

@NotNull
@Enumerated(EnumType.STRING)
private Medida medida;

public Ingredientes() {

}

public Ingredientes(String nome, int quantidade, Medida medida) {
setNome(nome);
setQuantidade(quantidade);
setMedida(medida);
}


public String getNome() {
return nome;
}

public void setNome(String nome) {
this.nome = nome;
}

public int getQuantidade() {
return quantidade;
}

public void setQuantidade(int quantidade) {
this.quantidade = quantidade;
}

public Medida getMedida() {
return medida;
}

public void setMedida(Medida medida) {
this.medida = medida;
}



}
5 changes: 5 additions & 0 deletions src/main/java/br/com/codar/receitas/model/Medida.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package br.com.codar.receitas.model;

public enum Medida {
GRAMA, MILILITRO, UNIDADE;
}
121 changes: 121 additions & 0 deletions src/main/java/br/com/codar/receitas/model/Receita.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
package br.com.codar.receitas.model;

import java.time.LocalDateTime;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;

@Entity
public class Receita {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String nome;
private String linkFoto;
private int tempoPreparo;
private int rendimento;
private LocalDateTime dataPublicacao = LocalDateTime.now();
private String modoPreparo;
private Boolean precisaRevisar;

@OneToMany(mappedBy = "receita")
private List<Ingredientes> ingredientes;

public Receita() {

}

public Receita(String nome, String linkFoto, int tempoPreparo, int rendimento, List<Ingredientes> ingredientes, String modoPreparo,
Boolean precisaRevisar) {
setNome(nome);
setLinkFoto(linkFoto);
setTempoPreparo(tempoPreparo);
setRendimento(rendimento);
setIngrediente(ingredientes);
setModoPreparo(modoPreparo);
setPrecisaRevisar(precisaRevisar);
}



public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public List<Ingredientes> getIngredientes() {
return ingredientes;
}

public void setIngredientes(List<Ingredientes> ingredientes) {
this.ingredientes = ingredientes;
}

public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getLinkFoto() {
return linkFoto;
}
public void setLinkFoto(String linkFoto) {
this.linkFoto = linkFoto;
}
public int getTempoPreparo() {
return tempoPreparo;
}
public void setTempoPreparo(int tempoPreparo) {
this.tempoPreparo = tempoPreparo;
}
public int getRendimento() {
return rendimento;
}
public void setRendimento(int rendimento) {
this.rendimento = rendimento;
}
public LocalDateTime getDataPublicacao() {
return dataPublicacao;
}
public void setDataPublicacao(LocalDateTime dataPublicacao) {
this.dataPublicacao = dataPublicacao;
}

public String getModoPreparo() {
return modoPreparo;
}

public void setModoPreparo(String modoPreparo) {
this.modoPreparo = modoPreparo;
}

public List<Ingredientes> getIngrediente() {
return ingredientes;
}

public void setIngrediente(List<Ingredientes> ingredientes) {
this.ingredientes = ingredientes;
}

public Boolean getPrecisaRevisar() {
return precisaRevisar;
}

public void setPrecisaRevisar(Boolean precisaRevisar) {
this.precisaRevisar = precisaRevisar;
}



}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package br.com.codar.receitas.repository;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import br.com.codar.receitas.model.Receita;

@Repository
public interface ReceitaRepository extends JpaRepository<Receita, Long> {
List<Receita> findAllByOrderByDataPublicacaoDesc();
}
Loading