es.fdi.reservas.reserva.web.EdificioController.java Source code

Java tutorial

Introduction

Here is the source code for es.fdi.reservas.reserva.web.EdificioController.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.reserva.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.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import es.fdi.reservas.reserva.business.boundary.EdificioService;
import es.fdi.reservas.reserva.business.entity.Edificio;
import es.fdi.reservas.reserva.business.entity.EstadoReserva;
import es.fdi.reservas.users.business.entity.User;

@Controller
public class EdificioController {

    private EdificioService edificio_service;

    @Autowired
    public EdificioController(EdificioService es) {
        edificio_service = es;
    }

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

    @RequestMapping(value = "/admin/administrar/edificios/page/{pageNumber}", method = RequestMethod.GET)
    public String misEdificiosPaginados(@PathVariable Integer pageNumber, Model model) {

        User u = edificio_service.getCurrentUser();

        PageRequest pageRequest = new PageRequest(pageNumber - 1, 5);
        Page<Edificio> currentResults = edificio_service.getEdificiosPaginados(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",
                edificio_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/administrar_edificios");

        return "index";
    }

    @RequestMapping(value = "/admin/administrar/edificios/restaurar/page/{numPag}")
    public String restaurarEdificios(@PathVariable("numPag") Integer numPag, Model model) {

        User u = edificio_service.getCurrentUser();

        PageRequest pageRequest = new PageRequest(numPag - 1, 5);
        Page<Edificio> currentResults = edificio_service.getEdificiosEliminadosPaginados(pageRequest);

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

        model.addAttribute("currentResults", currentResults);
        model.addAttribute("reservasPendientes",
                edificio_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("pagina", numPag);
        model.addAttribute("view", "admin/papelera_edificios");
        return "index";

    }

    /*
     * Filtrar por nombre
     */
    @RequestMapping(value = "/admin/administrar/edificios/nombre/{nombre}/page/{pageNumber}", method = RequestMethod.GET)
    public String misEdificiosPaginadosPorNombre(@PathVariable Integer pageNumber, Model model,
            @PathVariable String nombre) {

        User u = edificio_service.getCurrentUser();

        PageRequest pageRequest = new PageRequest(pageNumber - 1, 5);
        Page<Edificio> currentResults = edificio_service.getEdificiosPaginadosPorNombre(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",
                edificio_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_edificios");

        return "index";
    }

    @RequestMapping(value = "/admin/administrar/edificios/restaurar/nombre/{nombre}/page/{pageNumber}", method = RequestMethod.GET)
    public String misEdificiosPaginadosPorNombreRestaurar(@PathVariable Integer pageNumber, Model model,
            @PathVariable String nombre) {

        User u = edificio_service.getCurrentUser();

        PageRequest pageRequest = new PageRequest(pageNumber - 1, 5);
        Page<Edificio> currentResults = edificio_service.getEdificiosEliminadosPorTagName(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",
                edificio_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_edificios");

        return "index";
    }

    /*
     * Filtrar por Direccion
     */
    @RequestMapping(value = "/admin/administrar/edificios/direccion/{nombre}/page/{pageNumber}", method = RequestMethod.GET)
    public String misEdificiosPaginadosPorDireccion(@PathVariable Integer pageNumber, Model model,
            @PathVariable String nombre) {

        User u = edificio_service.getCurrentUser();

        PageRequest pageRequest = new PageRequest(pageNumber - 1, 5);
        Page<Edificio> currentResults = edificio_service.getEdificiosPaginadosPorDireccion(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",
                edificio_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_edificios");

        return "index";
    }

    @RequestMapping(value = "/admin/administrar/edificios/restaurar/direccion/{nombre}/page/{pageNumber}", method = RequestMethod.GET)
    public String misEdificiosPaginadosPorDireccionRestaurar(@PathVariable Integer pageNumber, Model model,
            @PathVariable String nombre) {

        User u = edificio_service.getCurrentUser();

        PageRequest pageRequest = new PageRequest(pageNumber - 1, 5);
        Page<Edificio> currentResults = edificio_service.getEdificiosEliminadosPorDireccion(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",
                edificio_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_edificios");

        return "index";
    }

    /*
     * Filtrar por facultad
     */
    @RequestMapping(value = "/admin/administrar/edificios/facultad/{nombre}/page/{pageNumber}", method = RequestMethod.GET)
    public String misEdificiosPaginadosPorFacultad(@PathVariable Integer pageNumber, Model model,
            @PathVariable String nombre) {

        User u = edificio_service.getCurrentUser();

        PageRequest pageRequest = new PageRequest(pageNumber - 1, 5);
        Page<Edificio> currentResults = edificio_service.getEdificiosPaginadosPorFacultad(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",
                edificio_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_edificios");

        return "index";
    }

    @RequestMapping(value = "/admin/administrar/edificios/restaurar/facultad/{nombre}/page/{pageNumber}", method = RequestMethod.GET)
    public String misEdificiosPaginadosPorFacultadRestaurar(@PathVariable Integer pageNumber, Model model,
            @PathVariable String nombre) {

        User u = edificio_service.getCurrentUser();

        PageRequest pageRequest = new PageRequest(pageNumber - 1, 5);
        Page<Edificio> currentResults = edificio_service.getEdificiosEliminadosPorFacultad(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",
                edificio_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_edificios");

        return "index";
    }

    @RequestMapping(value = "/admin/administrar/edificios/editar/{idEdificio}", method = RequestMethod.GET)
    public String editarEdificio(@PathVariable("idEdificio") long idEdificio, Model model) {

        model.addAttribute("edificio", edificio_service.getEdificio(idEdificio));
        model.addAttribute("facultades", edificio_service.getFacultades());
        model.addAttribute("reservasPendientes", edificio_service
                .reservasPendientesUsuario(edificio_service.getCurrentUser().getId(), EstadoReserva.PENDIENTE)
                .size());
        model.addAttribute("User", edificio_service.getCurrentUser());
        model.addAttribute("edificio", edificio_service.getEdificio(idEdificio));
        model.addAttribute("view", "admin/editarEdificio");
        return "index";
    }

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

        User u = edificio_service.getCurrentUser();

        model.addAttribute("User", u);
        model.addAttribute("Edificio", new Edificio());
        model.addAttribute("view", "admin/nuevoEdificio");
        model.addAttribute("reservasPendientes",
                edificio_service.reservasPendientesUsuario(u.getId(), EstadoReserva.PENDIENTE).size());
        model.addAttribute("facultades", edificio_service.getFacultades());
        return "index";
    }

    @RequestMapping(value = "/edificio/tag/{tagName}", method = RequestMethod.GET)
    public List<EdificioDTO> edificiosFiltro(@PathVariable("tagName") String tagName) {

        List<EdificioDTO> result = new ArrayList<>();
        List<Edificio> edificios = new ArrayList<>();

        edificios = edificio_service.getEdificiosPorTagName(tagName);

        for (Edificio u : edificios) {
            result.add(EdificioDTO.fromEdificioDTOAutocompletar(u));
        }

        return result;
    }
}