Ejemplo n.º 1
0
        /// <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;
            }
        }