dijalmasilva.controllers.ControladorUser.java Source code

Java tutorial

Introduction

Here is the source code for dijalmasilva.controllers.ControladorUser.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package dijalmasilva.controllers;

import dijalmasilva.core.service.UsuarioService;
import dijalmasilva.core.service.VisitaService;
import dijalmasilva.entidades.Usuario;
import dijalmasilva.entidades.Visita;
import dijalmasilva.form.UsuarioForm;
import java.io.IOException;
import java.sql.Date;
import java.time.LocalDate;
import java.util.List;
import javax.inject.Inject;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;

/**
 *
 * @author dijalma
 */
@Controller
@RequestMapping("/user")
public class ControladorUser {

    @Inject
    private UsuarioService serviceUser;
    @Inject
    private VisitaService serviceVisita;

    @RequestMapping("/home")
    public String home(HttpServletRequest req) {
        Usuario user = (Usuario) req.getSession().getAttribute("user");
        List<Usuario> visitas = serviceUser.visitaramSeuPerfil(user.getId());
        req.setAttribute("visitantes", visitas);
        return "home";
    }

    @RequestMapping("/otherUser/{id}")
    public String otherUser(@PathVariable Long id, HttpServletRequest req) {
        Usuario outroUsuario = serviceUser.findById(id);
        Usuario user = (Usuario) req.getSession().getAttribute("user");
        req.setAttribute("outroUsuario", outroUsuario);
        serviceVisita.visitou(user.getId(), id);
        return "otherUser";
    }

    @RequestMapping("/logout")
    public void logout(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        req.getSession().invalidate();
        resp.sendRedirect("/home");
    }

    @RequestMapping(value = { "/login" }, method = RequestMethod.POST)
    public String login(String login, String senha, HttpServletRequest req) {
        Usuario user = null;
        user = serviceUser.login(login, senha);
        if (user == null) {
            req.setAttribute("result", "Nome de usurio ou senha invlidos.");
            return "index";
        } else {
            List<Usuario> visitaramSeuPerfil = serviceUser.visitaramSeuPerfil(user.getId());
            for (Usuario usuario : visitaramSeuPerfil) {
                System.out.println(usuario.getNome());
            }
            req.getSession().setAttribute("user", user);
            req.setAttribute("visitantes", visitaramSeuPerfil);
            req.setAttribute("result", "Bem vindo!");
        }
        return "home";
    }

    @RequestMapping(value = { "/new" }, method = RequestMethod.POST)
    public String newUser(UsuarioForm u, HttpServletRequest req, Date dataDeNascimento, MultipartFile foto)
            throws IOException {
        Usuario usuario = this.convertToUsuario(u, dataDeNascimento.toLocalDate());
        usuario.setConta("ATIVADA");
        if (foto.getSize() != 0) {
            usuario.setFoto(foto.getBytes());
        }
        Usuario user = serviceUser.salvarUsuario(usuario);
        if (user == null) {
            req.setAttribute("result", "No foi possvel criar a conta, verifique se todos os campos foram"
                    + " preenchidos corretamente!");
        } else {
            req.setAttribute("result", "Usurio cadastrado com sucesso." + "\n Faa login e aproveite!");
        }

        return "/index";
    }

    @RequestMapping("/disable/{id}")
    public String cancelUser(@PathVariable Long id, HttpServletRequest req) throws IOException {
        serviceUser.desativarConta(id);
        req.getSession().invalidate();
        req.setAttribute("result", "Sua conta foi desativada.");

        return "redirect:/home";
    }

    @RequestMapping(value = { "/update" })
    public String atualizarPerfil(UsuarioForm u, HttpServletRequest req, MultipartFile foto) throws IOException {
        Usuario usuario = this.convertToUsuario(u, null);
        Usuario user = (Usuario) req.getSession().getAttribute("user");
        atualizaUsuario(user, usuario);
        if (foto.getSize() != 0) {
            user.setFoto(foto.getBytes());
        }
        user = serviceUser.atualizarPerfil(user);
        if (user == null) {
            req.setAttribute("result", "No foi possvel atualizar seu perfil, verifique se todos os campos foram"
                    + " preenchidos corretamente!");
        } else {
            req.setAttribute("result", "Perfil atualizado com sucesso.");
        }

        return "redirect:/user/home";
    }

    @RequestMapping(value = { "/follow/{id}" }, method = RequestMethod.GET)
    public String adicionarAmigo(@PathVariable Long id, HttpServletRequest req) {
        Usuario user = (Usuario) req.getSession().getAttribute("user");
        user = serviceUser.seguirAmigo(user.getId(), id);
        if (user == null) {
            return "erro";
        } else {
            req.getSession().setAttribute("user", user);
        }

        return "redirect:/user/otherUser/" + id;
    }

    @RequestMapping(value = { "/unfollow/{id}" }, method = RequestMethod.GET)
    public String removerAmigo(@PathVariable Long id, HttpServletRequest req) {
        Usuario user = (Usuario) req.getSession().getAttribute("user");
        user = serviceUser.deixarDeSeguirAmigo(user.getId(), id);
        if (user == null) {
            return "erro";
        } else {
            req.getSession().setAttribute("user", user);
        }

        return "redirect:/user/otherUser/" + id;
    }

    @RequestMapping(value = { "/searchUsers" })
    public String buscarUsuario(String nome, HttpServletRequest req) {
        Usuario user = (Usuario) req.getSession().getAttribute("user");
        List<Usuario> usuarios = serviceUser.buscarUsuariosComIdDiferenteAndNaoDesativada(nome, user.getId());
        if (usuarios.isEmpty()) {
            req.setAttribute("result", "Nenhum usurio encontrado com esse nome.");
        }

        req.getSession().setAttribute("usuariosEncontrados", usuarios);

        return "usersfind";
    }

    @RequestMapping("/otherUsers")
    public String listarUsuarios(HttpServletRequest req) {
        List<Usuario> usuarios = serviceUser.listarTodos();
        req.setAttribute("todosusuarios", usuarios);

        return "listartodos";
    }

    @RequestMapping("/image/{id}")
    public void carregaImagem(@PathVariable Long id, HttpServletResponse resp) {
        ServletOutputStream out = null;
        try {
            Usuario usuario = serviceUser.findById(id);
            out = resp.getOutputStream();
            out.write(usuario.getFoto());
            out.flush();
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            try {
                out.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }

    private Usuario convertToUsuario(UsuarioForm u, LocalDate data) {
        Usuario usuario = new Usuario();
        if (data != null) {
            usuario.setDataDeNascimento(data);
        }
        usuario.setEmail(u.getEmail());
        usuario.setNome(u.getNome());
        usuario.setSenha(u.getSenha());
        usuario.setSobrenome(u.getSobrenome());
        usuario.setUsername(u.getUsername());

        return usuario;
    }

    @RequestMapping("/editProfile")
    public String editarPerfil() {
        return "editProfile";
    }

    @RequestMapping("/following")
    public String seguindo() {
        return "following";
    }

    private void atualizaUsuario(Usuario user, Usuario usuarioNovo) {
        user.setNome(usuarioNovo.getNome());
        user.setSobrenome(usuarioNovo.getSobrenome());
        user.setSenha(usuarioNovo.getSenha());
    }
}