es.fdi.reservas.users.web.UserController.java Source code

Java tutorial

Introduction

Here is the source code for es.fdi.reservas.users.web.UserController.java

Source

/**
 * This file is part of reservas Maven Webapp.
 *
 * reservas Maven Webapp is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * reservas Maven Webapp is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with reservas Maven Webapp.  If not, see <http://www.gnu.org/licenses/>.
 */
package es.fdi.reservas.users.web;

import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
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.servlet.ModelAndView;
import es.fdi.reservas.reserva.business.entity.EstadoReserva;
import es.fdi.reservas.users.business.boundary.UserService;
import es.fdi.reservas.users.business.entity.User;

@Controller
public class UserController {

    private UserService user_service;

    @Autowired
    public UserController(UserService us) {
        user_service = us;
    }

    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public String login() {
        return "login";
    }

    @RequestMapping(value = "/login-error", method = RequestMethod.GET)
    public String loginError(Model model) {
        model.addAttribute("loginError", true);
        return "login";
    }

    @RequestMapping(value = "/registro", method = RequestMethod.GET)
    public String registro() {
        return "registro";
    }

    @RequestMapping(value = "/registro-error", method = RequestMethod.GET)
    public String registroError(Model model) {
        model.addAttribute("registroError", true);
        return "registro";
    }

    @RequestMapping(value = "/registroUser", method = RequestMethod.POST)
    public String crearUsuarioLogin(@ModelAttribute User user) {

        User newUser = user_service.addNewUserLogin(user);

        if (newUser == null) {
            return "redirect:/registro-error";
        }

        return "redirect:/login";
    }

    @RequestMapping(value = "/admin/administrar/usuarios")
    public String usuarios() {
        return "redirect:/admin/administrar/usuarios/page/1";
    }

    @RequestMapping(value = "/admin/nuevoUsuario", method = RequestMethod.GET)
    public String nuevoUsuario(Model model) {

        User u = user_service.getCurrentUser();
        model.addAttribute("User", u);
        model.addAttribute("reservasPendientes",
                user_service.reservasPendientesUsuario(u.getId(), EstadoReserva.PENDIENTE).size());
        model.addAttribute("us", new User());
        model.addAttribute("view", "admin/nuevoUsuario");
        return "index";
    }

    @RequestMapping(value = "usuario/tag/{tagName}", method = RequestMethod.GET)
    public List<UserDTO> usuariosFiltro(@PathVariable("tagName") String tagName) {

        List<UserDTO> result = new ArrayList<>();
        List<User> usuarios = new ArrayList<>();

        usuarios = user_service.getUsuariosPorTagName(tagName);

        for (User u : usuarios) {
            result.add(UserDTO.fromUserDTO(u));
        }

        return result;

    }

    //@PreAuthorize("hasRole('ROLE_ADMIN')")
    @RequestMapping(value = "/admin/administrar", method = RequestMethod.GET)
    public ModelAndView administrar() {
        ModelAndView model = new ModelAndView("index");
        User u = user_service.getCurrentUser();
        model.addObject("User", u);
        model.addObject("reservasPendientes",
                user_service.reservasPendientesUsuario(u.getId(), EstadoReserva.PENDIENTE).size());
        model.addObject("userList", user_service.getUsuarios());
        model.addObject("view", "administrar_usuarios");
        model.addObject("url", "/administrar/usuarios");

        model.addObject("view", "admin/administrar");

        return model;
    }

    @RequestMapping(value = "/admin/administrar/usuarios/page/{pageNumber}", method = RequestMethod.GET)
    public String misUsuariosPaginados(@PathVariable Integer pageNumber, Model model) {
        User u = user_service.getCurrentUser();

        PageRequest pageRequest = new PageRequest(pageNumber - 1, 5);
        Page<User> currentResults = user_service.getUsuariosPaginados(pageRequest);

        model.addAttribute("currentResults", currentResults);

        int current = currentResults.getNumber() + 1;
        int begin = Math.max(1, current - 5);
        int end = Math.min(begin + 10, currentResults.getTotalPages());

        model.addAttribute("reservasPendientes",
                user_service.reservasPendientesUsuario(u.getId(), EstadoReserva.PENDIENTE).size());

        model.addAttribute("beginIndex", begin);
        model.addAttribute("endIndex", end);
        model.addAttribute("currentIndex", current);
        model.addAttribute("totalPages", currentResults.getTotalPages());
        model.addAttribute("User", u);
        model.addAttribute("view", "admin/administrar_usuarios");

        return "index";
    }

    /*
     * Filtro por nombre
     */

    @RequestMapping(value = "/admin/administrar/usuarios/nombre/{nombre}/page/{pageNumber}", method = RequestMethod.GET)
    public String misUsuariosPaginadosPorNombre(@PathVariable Integer pageNumber, Model model,
            @PathVariable String nombre) {
        User u = user_service.getCurrentUser();

        PageRequest pageRequest = new PageRequest(pageNumber - 1, 5);
        Page<User> currentResults = user_service.getUsuariosPorNombre(nombre, pageRequest);

        model.addAttribute("currentResults", currentResults);

        int current = currentResults.getNumber() + 1;
        int begin = Math.max(1, current - 5);
        int end = Math.min(begin + 10, currentResults.getTotalPages());

        model.addAttribute("reservasPendientes",
                user_service.reservasPendientesUsuario(u.getId(), EstadoReserva.PENDIENTE).size());

        model.addAttribute("beginIndex", begin);
        model.addAttribute("endIndex", end);
        model.addAttribute("currentIndex", current);
        model.addAttribute("User", u);
        model.addAttribute("view", "admin/filtrar_usuarios");

        return "index";
    }

    @RequestMapping(value = "/admin/administrar/usuarios/restaurar/nombre/{nombre}/page/{pageNumber}", method = RequestMethod.GET)
    public String misUsuariosPaginadosPorNombreRest(@PathVariable Integer pageNumber, Model model,
            @PathVariable String nombre) {
        User u = user_service.getCurrentUser();

        PageRequest pageRequest = new PageRequest(pageNumber - 1, 5);
        Page<User> currentResults = user_service.getUsuariosEliminadosPorNombre(nombre, pageRequest);

        model.addAttribute("currentResults", currentResults);

        int current = currentResults.getNumber() + 1;
        int begin = Math.max(1, current - 5);
        int end = Math.min(begin + 10, currentResults.getTotalPages());

        model.addAttribute("reservasPendientes",
                user_service.reservasPendientesUsuario(u.getId(), EstadoReserva.PENDIENTE).size());

        model.addAttribute("beginIndex", begin);
        model.addAttribute("endIndex", end);
        model.addAttribute("currentIndex", current);
        model.addAttribute("User", u);
        model.addAttribute("view", "admin/papelera_usuarios");

        return "index";
    }

    /*
     * Filtrar por email
     */

    @RequestMapping(value = "/admin/administrar/usuarios/email/{nombre}/page/{pageNumber}", method = RequestMethod.GET)
    public String misUsuariosPaginadosPorEmail(@PathVariable Integer pageNumber, Model model,
            @PathVariable String nombre) {
        User u = user_service.getCurrentUser();

        PageRequest pageRequest = new PageRequest(pageNumber - 1, 5);
        Page<User> currentResults = user_service.getUsuariosPorEmail(nombre, pageRequest);

        model.addAttribute("currentResults", currentResults);

        int current = currentResults.getNumber() + 1;
        int begin = Math.max(1, current - 5);
        int end = Math.min(begin + 10, currentResults.getTotalPages());

        model.addAttribute("reservasPendientes",
                user_service.reservasPendientesUsuario(u.getId(), EstadoReserva.PENDIENTE).size());
        model.addAttribute("beginIndex", begin);
        model.addAttribute("endIndex", end);
        model.addAttribute("currentIndex", current);
        model.addAttribute("User", u);
        model.addAttribute("view", "admin/filtrar_usuarios");

        return "index";
    }

    @RequestMapping(value = "/admin/administrar/usuarios/restaurar/email/{nombre}/page/{pageNumber}", method = RequestMethod.GET)
    public String misUsuariosPaginadosPorEmailRest(@PathVariable Integer pageNumber, Model model,
            @PathVariable String nombre) {
        User u = user_service.getCurrentUser();

        PageRequest pageRequest = new PageRequest(pageNumber - 1, 5);
        Page<User> currentResults = user_service.getUsuariosEliminadosPorEmail(nombre, pageRequest);

        model.addAttribute("currentResults", currentResults);

        int current = currentResults.getNumber() + 1;
        int begin = Math.max(1, current - 5);
        int end = Math.min(begin + 10, currentResults.getTotalPages());

        model.addAttribute("reservasPendientes",
                user_service.reservasPendientesUsuario(u.getId(), EstadoReserva.PENDIENTE).size());
        model.addAttribute("beginIndex", begin);
        model.addAttribute("endIndex", end);
        model.addAttribute("currentIndex", current);
        model.addAttribute("User", u);
        model.addAttribute("view", "admin/papelera_usuarios");

        return "index";
    }

    /*
     * Filtrar por facultad
     */
    @RequestMapping(value = "/admin/administrar/usuarios/facultad/{nombre}/page/{pageNumber}", method = RequestMethod.GET)
    public String misUsuariosPaginadosPorFacultad(@PathVariable Integer pageNumber, Model model,
            @PathVariable String nombre) {
        User u = user_service.getCurrentUser();

        PageRequest pageRequest = new PageRequest(pageNumber - 1, 5);
        Page<User> currentResults = user_service.getUsuariosPorFacultad(nombre, pageRequest);

        model.addAttribute("currentResults", currentResults);

        int current = currentResults.getNumber() + 1;
        int begin = Math.max(1, current - 5);
        int end = Math.min(begin + 10, currentResults.getTotalPages());

        model.addAttribute("reservasPendientes",
                user_service.reservasPendientesUsuario(u.getId(), EstadoReserva.PENDIENTE).size());
        model.addAttribute("beginIndex", begin);
        model.addAttribute("endIndex", end);
        model.addAttribute("currentIndex", current);
        model.addAttribute("User", u);
        model.addAttribute("view", "admin/filtrar_usuarios");

        return "index";
    }

    @RequestMapping(value = "/admin/administrar/usuarios/restaurar/facultad/{nombre}/page/{pageNumber}", method = RequestMethod.GET)
    public String misUsuariosPaginadosPorFacultadRest(@PathVariable Integer pageNumber, Model model,
            @PathVariable String nombre) {
        User u = user_service.getCurrentUser();

        PageRequest pageRequest = new PageRequest(pageNumber - 1, 5);
        Page<User> currentResults = user_service.getUsuariosEliminadosPorFacultad(nombre, pageRequest);

        model.addAttribute("currentResults", currentResults);

        int current = currentResults.getNumber() + 1;
        int begin = Math.max(1, current - 5);
        int end = Math.min(begin + 10, currentResults.getTotalPages());

        model.addAttribute("reservasPendientes",
                user_service.reservasPendientesUsuario(u.getId(), EstadoReserva.PENDIENTE).size());
        model.addAttribute("beginIndex", begin);
        model.addAttribute("endIndex", end);
        model.addAttribute("currentIndex", current);
        model.addAttribute("User", u);
        model.addAttribute("view", "admin/papelera_usuarios");

        return "index";
    }

    @RequestMapping(value = "/admin/administrar/usuarios/editar/{idUser}", method = RequestMethod.GET)
    public String editarUsuario(@PathVariable("idUser") long idUser, Model model) {
        User u = user_service.getCurrentUser();

        model.addAttribute("User", u);
        model.addAttribute("usuario", user_service.getUser(idUser));
        //System.out.println(user_service.getUser(idUser).getUsername());
        model.addAttribute("reservasPendientes",
                user_service.reservasPendientesUsuario(u.getId(), EstadoReserva.PENDIENTE).size());
        model.addAttribute("view", "admin/editarUsuario");
        return "index";
    }

    @RequestMapping(value = "/admin/administrar/usuarios/restaurar/page/{numPag}", method = RequestMethod.GET)
    public String restaurarUsuarios(@PathVariable("numPag") Integer numPag, Model model) {

        User u = user_service.getCurrentUser();

        PageRequest pageRequest = new PageRequest(numPag - 1, 5);
        Page<User> currentResults = user_service.getUsuariosEliminadosPaginados(pageRequest);

        model.addAttribute("currentResults", currentResults);

        int current = currentResults.getNumber() + 1;
        int begin = Math.max(1, current - 5);
        int end = Math.min(begin + 10, currentResults.getTotalPages());

        model.addAttribute("User", u);
        model.addAttribute("reservasPendientes",
                user_service.reservasPendientesUsuario(u.getId(), EstadoReserva.PENDIENTE).size());
        model.addAttribute("pagina", numPag);
        model.addAttribute("beginIndex", begin);
        model.addAttribute("endIndex", end);
        model.addAttribute("currentIndex", current);
        model.addAttribute("view", "admin/papelera_usuarios");
        return "index";
    }

    @RequestMapping(value = "/perfil", method = RequestMethod.GET)
    public ModelAndView verPerfil() {
        ModelAndView model = new ModelAndView("index");
        User u = user_service.getCurrentUser();
        model.addObject("User", u);
        model.addObject("reservasPendientes",
                user_service.reservasPendientesUsuario(u.getId(), EstadoReserva.PENDIENTE).size());
        model.addObject("GruposReservas", user_service.getGruposUsuario(u.getId()));
        model.addObject("view", "perfil");

        return model;
    }

    @RequestMapping(value = "/perfil/editar", method = RequestMethod.GET)
    public ModelAndView editarPerfil() {
        ModelAndView model = new ModelAndView("index");
        User u = user_service.getCurrentUser();
        model.addObject("User", u);
        model.addObject("reservasPendientes",
                user_service.reservasPendientesUsuario(u.getId(), EstadoReserva.PENDIENTE).size());
        model.addObject("GruposReservas", user_service.getGruposUsuario(u.getId()));
        model.addObject("view", "editarPerfil");

        return model;
    }
}