ConvocatoriaController.java 4.82 KB
Newer Older
1 2 3
package com.roshka.controller;

import com.roshka.modelo.ConvocatoriaCargo;
4
import com.roshka.modelo.EstadoConvocatoria;
5 6 7
import com.roshka.repositorio.CargoRepository;
import com.roshka.repositorio.ConvocatoriaRepository;
import org.springframework.beans.factory.annotation.Autowired;
8 9 10 11
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
12 13 14
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
15
import org.springframework.web.bind.annotation.*;
16
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
17

18 19
import java.util.Date;

20 21 22 23 24 25 26 27 28 29 30 31 32
@Controller
public class ConvocatoriaController {

    CargoRepository cargoRepo;
    ConvocatoriaRepository convoRepo;

    @Autowired
    public ConvocatoriaController(CargoRepository cargoRepo, ConvocatoriaRepository convoRepo) {
        this.cargoRepo = cargoRepo;
        this.convoRepo = convoRepo;
    }

    @RequestMapping("/convocatorias")
33
    public String menuConvocatorias(Model model,RedirectAttributes redirectAttrs,
34
                            @RequestParam(required = false) Long cargoId,
35
                            @RequestParam(required = false) EstadoConvocatoria estado,//1: true, 0: false
36
                            @RequestParam(defaultValue = "0")Integer nroPagina
37 38
                            ) {

39
        final Integer CANTIDAD_POR_PAGINA = 10;
40
        Pageable page = PageRequest.of(nroPagina,CANTIDAD_POR_PAGINA,Sort.by("id"));
41
        model.addAttribute("cargos", cargoRepo.findAll());
42
        Page<ConvocatoriaCargo> convoPag=convoRepo.findByCargoAndEstado(cargoId,estado,page);
43 44
        model.addAttribute("convocatorias", convoPag.getContent());
        model.addAttribute("pages", convoPag.getTotalPages());
45
        model.addAttribute("estados", EstadoConvocatoria.values());
46 47 48 49
        
        //model.addAttribute("convocatorias",cargoId==null? convoRepo.findAll() : convoRepo.findByCargoId(cargoId));
        return "convocatorias";
    }
50
    
51
    @PostMapping("/convocatoria")
52 53 54 55 56 57 58
    public String guardarConvocatoria(@ModelAttribute ConvocatoriaCargo convocatoria, BindingResult result,RedirectAttributes redirectAttributes) {
        for (ConvocatoriaCargo conv:convoRepo.findByCargoId(convocatoria.getCargoId())) {
            if(conv.getEstado()==EstadoConvocatoria.abierto){
                redirectAttributes.addFlashAttribute("SUCCESS_MESSAGE", "Ya existe una convocatoria Abierta con ese cargo");
                return "redirect:/convocatorias";
           }
        }
59 60 61 62 63 64
        if(result.hasErrors()); 
        convocatoria.setFechaInicio(new Date());
        convocatoria.setEstado(EstadoConvocatoria.abierto);
        convoRepo.save(convocatoria);
        return "redirect:/convocatorias";
    }
65 66 67 68 69 70 71 72 73
    @RequestMapping("/convocatoria/crear/{id}")
    public String guardarConvocatoriaa(@PathVariable(required = false) Long id) {
        ConvocatoriaCargo convocatoria=new ConvocatoriaCargo();  
        convocatoria.setCargo(cargoRepo.findByIdCargo(id));
        convocatoria.setCargoId(cargoRepo.findByIdCargo(id).getId());
        convocatoria.setFechaInicio(new Date());
        convocatoria.setEstado(EstadoConvocatoria.abierto);
        convocatoria.getCargo().setExisteConvocatoria(true);
        convoRepo.save(convocatoria);
Joel Florentin committed
74
        
75 76 77
        
        return "redirect:/convocatorias";
    }
78

79
   /* @RequestMapping("/convocatoria/{id}")
80 81
    public String formConvocatoria(Model model,@PathVariable(required = false) Long id) {
        model.addAttribute("cargos", cargoRepo.findAll());
82 83 84 85
        if(id == null){
             model.addAttribute("convocatoria", new ConvocatoriaCargo());
             model.addAttribute("listaConvocatoria", convoRepo.findAll());
        }
86 87 88 89 90 91
        else {
            ConvocatoriaCargo cc = convoRepo.getById(id);
            cc.setFechaFinS(new SimpleDateFormat("yyyy-MM-dd").format((cc.getFechaFin())));
            cc.setFechaInicioS(new SimpleDateFormat("yyyy-MM-dd").format((cc.getFechaInicio())));
            
            model.addAttribute("convocatoria", cc);
92
            model.addAttribute("listaConvocatoria", convoRepo.findAll());
93 94 95
        }
        
        return "convocatoria-form";
96
    }*/
97

98
    @RequestMapping("/convocatoria/{id}")
99
    public String guardarConvocatoria(@ModelAttribute ConvocatoriaCargo convocatoria, BindingResult result, @PathVariable(required = false) Long id,Model model) {
100
        if(id != null) convocatoria.setId(id);
101 102 103
        convocatoria=convoRepo.findByIdConvocatoriaCargo(id);
        convocatoria.setEstado(EstadoConvocatoria.cerrado);
        convocatoria.setFechaFin(new Date());
104
        convocatoria.getCargo().setExisteConvocatoria(false);
105
        convoRepo.save(convocatoria);
Joel Florentin committed
106
        
107 108

        
109 110 111
        return "redirect:/convocatorias";
    }
}