/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package mx.edu.um.mateo.colportor.web; import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.TimeZone; import java.util.TreeMap; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import mx.edu.um.mateo.general.utils.Constantes; import mx.edu.um.mateo.colportor.model.InformeMensualDetalle; import mx.edu.um.mateo.colportor.service.ReportesColportorManager; import mx.edu.um.mateo.general.model.Usuario; import mx.edu.um.mateo.general.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.validation.Errors; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.mvc.support.RedirectAttributes; /** * * @author gibrandemetrioo */ @Controller @RequestMapping("/colportaje/informes") public class InformesController extends BaseController { @Autowired private ReportesColportorManager rclpMgr; @RequestMapping({"/colportaje/informes"}) public String index() { log.debug("Mostrando menu de colportaje/informes"); return "colportaje/informes/index"; } @RequestMapping({"informeMensualAsociado"}) public String informeMensualAsociado(HttpServletRequest request, HttpServletResponse response, @RequestParam(required = false) String filtro, @RequestParam(required = false) Long pagina, @RequestParam(required = false) String tipo, @RequestParam(required = false) String correo, @RequestParam(required = false) String order, @RequestParam(required = false) String sort, @RequestParam(required = false) Integer mes, //Mes a consultar @RequestParam(required = false) Integer year, //Year a consultar Usuario usuario, Errors errors, Model modelo, BindingResult bindingResult, RedirectAttributes redirectAttributes) { log.debug("Mostrando Informe Mensual del Asociado"); log.debug("mes {}",mes); log.debug("year {}",year); if(mes == null || year == null){ this.getMeses(modelo); modelo.addAttribute("mesElegido", 0); return Constantes.PATH_RPT_CLP_INFORMEMENSUALASOCIADO; } Map<String, Object> params = new HashMap<>(); params.put("asociado", ambiente.obtieneUsuario().getId()); params.put("empresa", ambiente.obtieneUsuario().getEmpresa().getId()); params.put("organizacion", ambiente.obtieneUsuario().getEmpresa().getOrganizacion().getId()); if(mes.compareTo(0) < 0 || mes.compareTo(11) > 0){ log.error("Error al intentar obtener el informe mensual del asociado: mes {} invalido ", mes); // errors.rejectValue("mes", "informeMensualAsociado.error.mesInvalido", // new String[]{"mes"}, null); return "redirect:/colportaje/reportes"; } params.put("mes", mes); params.put("year", year); try { params = rclpMgr.informeMensualAsociado(params); } catch (Exception ex) { log.error("Error al intentar obtener el informe mensual del asociado {}", ex); ex.printStackTrace(); redirectAttributes.addFlashAttribute("message", "error.generar.reporte"); return "redirect:/colportaje/reportes"; } modelo.addAttribute(Constantes.ASOCIADO_COLPORTOR, ambiente.obtieneUsuario()); modelo.addAttribute(Constantes.CONTAINSKEY_INFORMEMENSUALASOCIADO, params.get(Constantes.CONTAINSKEY_INFORMEMENSUALASOCIADO)); InformeMensualDetalle detalle = (InformeMensualDetalle)params.get(Constantes.CONTAINSKEY_INFORMEMENSUALASOCIADO_TOTALES); Calendar gcFecha = Calendar.getInstance(TimeZone.getTimeZone("America/Monterrey")); gcFecha.set(year, mes, 01); detalle.setFecha(gcFecha.getTime()); modelo.addAttribute(Constantes.CONTAINSKEY_INFORMEMENSUALASOCIADO_TOTALES, detalle); this.getMeses(modelo); modelo.addAttribute("mesElegido", mes); return Constantes.PATH_RPT_CLP_INFORMEMENSUALASOCIADO; } @RequestMapping({"informeConcentradoMensualAsociados"}) public String informeConcentradoMensualAsociados(HttpServletRequest request, HttpServletResponse response, @RequestParam(required = false) String filtro, @RequestParam(required = false) Long pagina, @RequestParam(required = false) String tipo, @RequestParam(required = false) String correo, @RequestParam(required = false) String order, @RequestParam(required = false) String sort, @RequestParam(required = false) Integer mes, //Mes a consultar @RequestParam(required = false) Integer year, //Year a consultar Usuario usuario, Errors errors, Model modelo, BindingResult bindingResult, RedirectAttributes redirectAttributes) { log.debug("Mostrando Informe Concentrado de Asociados"); log.debug("mes {}",mes); log.debug("year {}",year); if(mes == null || year == null){ this.getMeses(modelo); modelo.addAttribute("mesElegido", 0); return Constantes.PATH_RPT_CLP_INFORMECONCENTRADOASOCIADO; } Map<String, Object> params = new HashMap<>(); params.put("asociado", ambiente.obtieneUsuario().getId()); params.put("empresa", ambiente.obtieneUsuario().getEmpresa().getId()); params.put("organizacion", ambiente.obtieneUsuario().getEmpresa().getOrganizacion().getId()); if(mes.compareTo(0) < 0 || mes.compareTo(11) > 0){ log.error("Error al intentar obtener el informe concentrado de asociados: mes {} invalido ", mes); // errors.rejectValue("mes", "informeMensualAsociado.error.mesInvalido", // new String[]{"mes"}, null); return "redirect:/colportaje/reportes"; } params.put("mes", mes); params.put("year", year); try { params = rclpMgr.informeConcentradoAsociadosAsociacion(params); } catch (Exception ex) { log.error("Error al intentar obtener el informe concentrado de asociados {}", ex); ex.printStackTrace(); redirectAttributes.addFlashAttribute("message", "error.generar.reporte"); return "redirect:/colportaje/reportes"; } modelo.addAttribute(Constantes.ASOCIADO_COLPORTOR, ambiente.obtieneUsuario()); modelo.addAttribute(Constantes.CONTAINSKEY_INFORMEMENSUALASOCIADO, params.get(Constantes.CONTAINSKEY_INFORMEMENSUALASOCIADO)); InformeMensualDetalle detalle = (InformeMensualDetalle)params.get(Constantes.CONTAINSKEY_INFORMEMENSUALASOCIADO_TOTALES); Calendar gcFecha = Calendar.getInstance(TimeZone.getTimeZone("America/Monterrey")); gcFecha.set(year, mes, 01); detalle.setFecha(gcFecha.getTime()); modelo.addAttribute(Constantes.CONTAINSKEY_INFORMECONCENTRADOASOCIADO_TOTALES, detalle); this.getMeses(modelo); modelo.addAttribute("mesElegido", mes); return Constantes.PATH_RPT_CLP_INFORMECONCENTRADOASOCIADO; } private void getMeses(Model modelo){ Map <Integer, String> mMeses = new TreeMap<>(); mMeses.put(0,"Enero"); mMeses.put(1,"Febrero"); mMeses.put(2,"Marzo"); mMeses.put(3,"Abril"); mMeses.put(4,"Mayo"); mMeses.put(5,"Junio"); mMeses.put(6,"Julio"); mMeses.put(7,"Agosto"); mMeses.put(8,"Septiembre"); mMeses.put(9,"Octubre"); mMeses.put(10,"Noviembre"); mMeses.put(11,"Diciembre"); modelo.addAttribute("meses", mMeses); } }