public void addTZInterval(int v_TZnum, TZInterval v_Interval) { if (!TZDefinition.ContainsKey(v_TZnum)) { TZDefinition.Add(v_TZnum, new List<TZInterval>()); } TZDefinition[v_TZnum].Add(v_Interval); }
// Chequea si el acceso esta incluido en el intervalo especificado private bool incluidoEnIntervalo(TZInterval v_intervalo, DateTime fechaHora, int v_OrgID) { bool res = false; if (!incluidoEnHolidays(fechaHora, v_OrgID, v_intervalo)) // Si no estamos en una de las vacaciones definidas para la organizacion { DateTime RangoInicio = GenerarRango(v_intervalo.horaIni, v_intervalo.minIni); DateTime RangoFin = GenerarRango(v_intervalo.horaFin, v_intervalo.minFin); string listadias = v_intervalo.obtenerListaDias(); // Devuelve la lista de dias del intervalo, separados por coma. if (listadias.Contains(((int)fechaHora.DayOfWeek).ToString()) ) // Estamos en uno de los dias de la semana del intervalo? { DateTime fechaAComparar = new DateTime(1, 1, 1, fechaHora.Hour, fechaHora.Minute, 0); if ((RangoInicio.CompareTo(fechaAComparar) <= 0) && (RangoFin.CompareTo(fechaAComparar) >= 0)) { res = true; } } } return res; }
// Chequea si el acceso esta incluido en las Holidays. private bool incluidoEnHolidays(DateTime fechaHoraAcceso, int v_OrgID, TZInterval intervalo) { Dictionary<int, List<HolidayData>> ListaHolidays = AccessLevelLogic.ListaHolidays; bool res = false; if (ListaHolidays.ContainsKey(v_OrgID)) { List<int> tiposHol = intervalo.obtenerListaTiposHoilidays(); // Obtengo las holidays de la organizacion List<HolidayData> LENELHolidays = ListaHolidays[v_OrgID]; foreach (int tipoToAdd in tiposHol) { foreach (HolidayData holi in LENELHolidays) { if (holi.contieneBit(tipoToAdd)) { DateTime FechaIni = new DateTime(holi.año,holi.mes,holi.dia); DateTime FechaFin = FechaIni.AddDays(holi.cantDias); if ((FechaIni.CompareTo(fechaHoraAcceso) <= 0) && (FechaFin.CompareTo(fechaHoraAcceso) >= 0)) { res = true; } } } } } return res; }