/// <summary> /// Listar el calculo detallado en minutos de las asistencias de los candidatos /// </summary> /// <param name="anho">Año en formato yyyy</param> /// <param name="mes">Mes en el rango de 1 al 12</param> /// <returns></returns> public List <BE.UI.CandidatoAsistencia> ListarAsistencias(int anho, int mes) { var lstUiCandidatosAsistencias = new List <BE.UI.CandidatoAsistencia>(); try { if (this.lstBeFeriados == null) { this.lstBeFeriados = new DA.Feriado().ListarMes(anho, mes); } DataTable dtAsistencias = new DA.Recibo().ListarAsistencias(anho, mes); foreach (DataRow drItem in dtAsistencias.Rows) { #region Obtener datos de asistencia string codCandidato = drItem["Codigo"].ToString(); string nomCandidato = drItem["Candidato"].ToString(); DateTime fecha = DateTime.Parse(drItem["Fecha"].ToString()); int semana = int.Parse(drItem["Semana"].ToString()); DateTime fechaHoraNocturnoInicio = DateTime.Parse(drItem["FechaHoraNocheInicial"].ToString()); DateTime fechaHoraNocturnoFinal = DateTime.Parse(drItem["FechaHoraNocheFinal"].ToString()); //Fecha y Hora segun horario programado DateTime fechaHoraHorarioInicio = DateTime.Parse(drItem["FechaHoraHorarioInicial"].ToString()); DateTime fechaHoraHorarioFinal = DateTime.Parse(drItem["FechaHoraHorarioFinal"].ToString()); int horasHorario = int.Parse(drItem["HorasHorario"].ToString()); //Fecha y Hora segun horario Asistencia int horasAsistencia = int.Parse(drItem["HorasAsistencia"].ToString()); DateTime fechaHoraAsistenciaInicio = new DateTime(1900, 01, 01); DateTime fechaHoraAsistenciaFinal = new DateTime(1900, 01, 01); if (horasAsistencia > 0) //Si Asistio { fechaHoraAsistenciaInicio = DateTime.Parse(drItem["FechaHoraAsistenciaInicial"].ToString()); fechaHoraAsistenciaFinal = DateTime.Parse(drItem["FechaHoraAsistenciaFinal"].ToString()); } #endregion int minutosAsistenciaNormalesTotales = 0; int minutosAsistenciaNormalesDiurnas = 0; int minutosAsistenciaNormalesNocturnas = 0; int minutosAsistenciaNormalesDiurnasPrimerasExtras = 0; int minutosAsistenciaNormalesNocturnasPrimerasExtras = 0; int minutosAsistenciaNormalesDiurnasPosterioresExtras = 0; int minutosAsistenciaNormalesNocturnasPosterioresExtras = 0; int minutosTardanzaNormalesTotales = 0; int minutosTardanzaNormalesDiurnas = 0; int minutosTardanzaNormalesNocturnas = 0; int minutosAsistenciaFeriadosTotales = 0; int minutosAsistenciaFeriadosDiurnas = 0; int minutosAsistenciaFeriadosNocturnas = 0; int minutosAsistenciaFeriadosDiurnasPrimerasExtras = 0; int minutosAsistenciaFeriadosNocturnasPrimerasExtras = 0; int minutosAsistenciaFeriadosDiurnasPosterioresExtras = 0; int minutosAsistenciaFeriadosNocturnasPosterioresExtras = 0; int minutosTardanzaFeriadosTotales = 0; int minutosTardanzaFeriadosDiurnas = 0; int minutosTardanzaFeriadosNocturnas = 0; int minutosInasistenciasTotales = 0; int minutosInasistenciasNormales = 0; int minutosInasistenciasFeriados = 0; #region Calcular Horas Normales y Extras if (horasAsistencia > 0) { #region Calcular Minutos de Asistencias this.ObtenerMinutosAsistencia(fechaHoraNocturnoInicio, fechaHoraNocturnoFinal, fechaHoraHorarioInicio, fechaHoraHorarioFinal, out minutosAsistenciaNormalesDiurnas, out minutosAsistenciaNormalesNocturnas, out minutosAsistenciaNormalesDiurnasPrimerasExtras, out minutosAsistenciaNormalesNocturnasPrimerasExtras, out minutosAsistenciaNormalesDiurnasPosterioresExtras, out minutosAsistenciaNormalesNocturnasPosterioresExtras, out minutosAsistenciaFeriadosDiurnas, out minutosAsistenciaFeriadosNocturnas, out minutosAsistenciaFeriadosDiurnasPrimerasExtras, out minutosAsistenciaFeriadosNocturnasPrimerasExtras, out minutosAsistenciaFeriadosDiurnasPosterioresExtras, out minutosAsistenciaFeriadosNocturnasPosterioresExtras); minutosAsistenciaNormalesTotales = minutosAsistenciaNormalesDiurnas + minutosAsistenciaNormalesNocturnas + minutosAsistenciaNormalesDiurnasPrimerasExtras + minutosAsistenciaNormalesNocturnasPrimerasExtras + minutosAsistenciaNormalesDiurnasPosterioresExtras + minutosAsistenciaNormalesNocturnasPosterioresExtras; minutosAsistenciaFeriadosTotales = minutosAsistenciaFeriadosDiurnas + minutosAsistenciaFeriadosNocturnas + minutosAsistenciaFeriadosDiurnasPrimerasExtras + minutosAsistenciaFeriadosNocturnasPrimerasExtras + minutosAsistenciaFeriadosDiurnasPosterioresExtras + minutosAsistenciaFeriadosNocturnasPosterioresExtras; #endregion #region Calcular Minutos de Tardanza this.ObtenerMinutosTardanza(fechaHoraNocturnoInicio, fechaHoraNocturnoFinal, fechaHoraHorarioInicio, fechaHoraAsistenciaInicio, out minutosTardanzaNormalesDiurnas, out minutosTardanzaNormalesNocturnas, out minutosTardanzaFeriadosDiurnas, out minutosTardanzaFeriadosNocturnas); minutosTardanzaNormalesTotales = minutosTardanzaNormalesDiurnas + minutosTardanzaNormalesNocturnas; minutosTardanzaFeriadosTotales = minutosTardanzaFeriadosDiurnas + minutosTardanzaFeriadosNocturnas; #endregion } else { #region Calcular Minutos de Inasistencia this.ObtenerMinutosInasistencia(fechaHoraHorarioInicio, fechaHoraHorarioFinal, out minutosInasistenciasNormales, out minutosInasistenciasFeriados); minutosInasistenciasTotales = minutosInasistenciasNormales + minutosInasistenciasFeriados; #endregion } #endregion var uiCandidatoAsistencia = new BE.UI.CandidatoAsistencia(); uiCandidatoAsistencia.Codigo = codCandidato; uiCandidatoAsistencia.NombleCompleto = nomCandidato; uiCandidatoAsistencia.Fecha = fecha; uiCandidatoAsistencia.Semana = semana; uiCandidatoAsistencia.FechaHoraInicio = fechaHoraHorarioInicio; uiCandidatoAsistencia.FechaHoraFinal = fechaHoraHorarioFinal; //Asistencia Normales uiCandidatoAsistencia.AsistenciaNormalTotal = minutosAsistenciaNormalesTotales; uiCandidatoAsistencia.AsistenciaNormalDiurna = minutosAsistenciaNormalesDiurnas; uiCandidatoAsistencia.AsistenciaNormalNocturna = minutosAsistenciaNormalesNocturnas; uiCandidatoAsistencia.AsistenciaNormalDiurnaExtra1 = minutosAsistenciaNormalesDiurnasPrimerasExtras; uiCandidatoAsistencia.AsistenciaNormalNocturnaExtra1 = minutosAsistenciaNormalesNocturnasPrimerasExtras; uiCandidatoAsistencia.AsistenciaNormalDiurnaExtra2 = minutosAsistenciaNormalesDiurnasPosterioresExtras; uiCandidatoAsistencia.AsistenciaNormalNocturnaExtra2 = minutosAsistenciaNormalesNocturnasPosterioresExtras; //Tardanza Normales uiCandidatoAsistencia.TardanzaNormalTotal = minutosTardanzaNormalesTotales; uiCandidatoAsistencia.TardanzaNormalDiurna = minutosTardanzaNormalesDiurnas; uiCandidatoAsistencia.TardanzaNormalNocturna = minutosTardanzaNormalesNocturnas; //Asistencia Feriados uiCandidatoAsistencia.AsistenciaFeriadoTotal = minutosAsistenciaFeriadosTotales; uiCandidatoAsistencia.AsistenciaFeriadoDiurna = minutosAsistenciaFeriadosDiurnas; uiCandidatoAsistencia.AsistenciaFeriadoNocturna = minutosAsistenciaFeriadosNocturnas; uiCandidatoAsistencia.AsistenciaFeriadoDiurnaExtra1 = minutosAsistenciaFeriadosDiurnasPrimerasExtras; uiCandidatoAsistencia.AsistenciaFeriadoNocturnaExtra1 = minutosAsistenciaFeriadosNocturnasPrimerasExtras; uiCandidatoAsistencia.AsistenciaFeriadoDiurnaExtra2 = minutosAsistenciaFeriadosDiurnasPosterioresExtras; uiCandidatoAsistencia.AsistenciaFeriadoNocturnaExtra2 = minutosAsistenciaFeriadosNocturnasPosterioresExtras; //Tardanza Feriado uiCandidatoAsistencia.TardanzaFeriadoTotal = minutosTardanzaFeriadosTotales; uiCandidatoAsistencia.TardanzaFeriadoDiurna = minutosTardanzaFeriadosDiurnas; uiCandidatoAsistencia.TardanzaFeriadoNocturna = minutosTardanzaFeriadosNocturnas; //Tardanza Inasistencias uiCandidatoAsistencia.InasistenciaTotal = minutosInasistenciasTotales; uiCandidatoAsistencia.InasistenciaNormal = minutosInasistenciasNormales; uiCandidatoAsistencia.InasistenciaFeriado = minutosInasistenciasFeriados; lstUiCandidatosAsistencias.Add(uiCandidatoAsistencia); } return(lstUiCandidatosAsistencias); } catch (Exception ex) { throw ex; } }