package br.com.itexto.springforum.controladoras;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpSession;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import br.com.itexto.springforum.dao.DAOTema;
import br.com.itexto.springforum.dao.DAOUsuario;
import br.com.itexto.springforum.entidades.Usuario;
@Controller
public class HomeController {
@Autowired
private DAOUsuario daoUsuario;
@Autowired
private DAOTema daoTema;
@RequestMapping("/")
public String index(Map<String, Object> model) {
model.put("temas", getDaoTema().list(0, 100));
model.put("usuarios", getDaoUsuario().list(0, 100));
return "index";
}
@RequestMapping("/registro")
public String registro(Map<String, Object> model) {
if (model.get("usuario") == null) {
Usuario usr = new Usuario();
model.put("usuario", usr);
}
return "registro";
}
@RequestMapping(value = "/executarRegistro", method = RequestMethod.POST)
public String executarRegistro(
@Valid Usuario usuario,
BindingResult bindingResult,
HttpSession session,
@RequestParam(value = "avatar", required = false) MultipartFile avatar) {
if (bindingResult.hasErrors()) {
Map<String, Object> model = new HashMap<String, Object>();
model.put("usuario", usuario);
return registro(model);
}
getDaoUsuario().persist(usuario);
if (!avatar.isEmpty()) {
processarAvatar(usuario, avatar);
}
session.setAttribute("usuario", usuario);
return "redirect:/";
}
private void processarAvatar(Usuario usuario, MultipartFile avatar) {
File diretorio = new File("springForum/avatares");
if (!diretorio.exists()) {
diretorio.mkdirs();
}
try {
FileOutputStream archivo = new FileOutputStream(
diretorio.getAbsolutePath() + "/" + usuario.getLogin()
+ ".png");
archivo.write(avatar.getBytes());
archivo.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
public DAOUsuario getDaoUsuario() {
return daoUsuario;
}
public void setDaoUsuario(DAOUsuario daoUsuario) {
this.daoUsuario = daoUsuario;
}
public DAOTema getDaoTema() {
return daoTema;
}
public void setDaoTema(DAOTema daoTema) {
this.daoTema = daoTema;
}
}