/*
* 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 mx.edu.um.mateo.rh.service.impl;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Map;
import mx.edu.um.mateo.general.dao.BaseDao;
import mx.edu.um.mateo.general.model.Usuario;
import mx.edu.um.mateo.rh.dao.DiaFeriadoDao;
import mx.edu.um.mateo.rh.dao.SolicitudVacacionesEmpleadoDao;
import mx.edu.um.mateo.rh.dao.VacacionesEmpleadoDao;
import mx.edu.um.mateo.rh.model.SolicitudVacacionesEmpleado;
import mx.edu.um.mateo.rh.service.SolicitudVacacionesEmpleadoManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
*
* @author develop
*/
@Transactional
@Service
public class SolicitudVacacionesEmpleadoManagerImpl extends BaseDao implements SolicitudVacacionesEmpleadoManager {
@Autowired
private SolicitudVacacionesEmpleadoDao dao;
@Autowired
private DiaFeriadoDao feriadoDao;
/**
* Regresa una lista de vacaciones.
*
* @param params
* @return
*/
public Map<String, Object> lista(Map<String, Object> params) {
return dao.lista(params);
}
/**
* Obtiene una vacaciones
*
* @param id
* @return
*/
public SolicitudVacacionesEmpleado obtiene(final Long id) {
return dao.obtiene(id);
}
/**
* graba informacion sobre las vacaciones de algun empleado
*
* @param vacaciones the object to be saved
* @param usuario
*/
public void graba(SolicitudVacacionesEmpleado vacaciones, Usuario usuario) {
Date fechaInicio = vacaciones.getFechaInicio();
Date fechaFinal = vacaciones.getFechaFinal();
GregorianCalendar cal = new GregorianCalendar();
Calendar c = Calendar.getInstance();
c.setTime(fechaInicio);
int sabDom = 0;
Date prueba;
int contador = 1;
do {
c.add(Calendar.DATE, 1);
prueba = c.getTime();
cal.setTime(prueba);
int numDia = cal.get(Calendar.DAY_OF_WEEK);
String dia = diaSemana(numDia);
if (numDia == 1 || numDia == 7 || feriadoDao.esFeriado(prueba)) {
sabDom++;
}
contador++;
c.setTime(prueba);
} while (!fechaFinal.equals(prueba));
int diasT = contador - sabDom;
dao.graba(vacaciones, usuario);
}
/**
* Elimina las vacaciones
*
* @param id el id de vacaciones
* @return
*/
public String elimina(final Long id) {
return dao.elimina(id);
}
public String diaSemana(int numDia) {
switch (numDia) {
case 1:
return "domingo";
case 2:
return "lunes";
case 3:
return "martes";
case 4:
return "miercoles";
case 5:
return "jueves";
case 6:
return "viernes";
case 7:
return "sabado";
}
return "ningundia";
}
}