예제 #1
0
        public bool checkPuntualidad(HorasLaborales horas, bool incluirAnticipo) // 0 Solo extra 1 Extra y anticipo
        {
            //TimeSpan span = TimeSpan.Parse("0");

            /*
             * foreach (TiemposDia t in this.Dias)
             * {
             *  if (t.entrada1.status == "RETARDO")
             *  {
             *      span += t.entrada1.Hora.Subtract(horas.entrada1);
             *  }
             *
             *  if (t.entrada2.status == "RETARDO")
             *  {
             *      span += t.entrada2.Hora.Subtract(horas.entrada2);
             *  }
             * }
             */
            if (!incluirAnticipo)
            {
                if (getRetardoTotal(horas).TotalMinutes >= horas.limiteRetardo.TotalMinutes)
                {
                    return(false);
                }
            }
            else
            {
                if ((getRetardoTotal(horas).TotalMinutes + getAnticipoTotal(horas).TotalMinutes) >= horas.limiteRetardo.TotalMinutes)
                {
                    return(false);
                }
            }

            return(true);
        }
예제 #2
0
        // No es necesario contructor

        // Metodos Publicos ------------------------------------
        public List <Empleado> getEmpleados(string texto, HorasLaborales horarioLaboral)
        {
            // Busca fecha de inicio
            string toBeSearched = "Desde:";
            string sFechaIni    = texto.Substring(texto.IndexOf(toBeSearched) + toBeSearched.Length + 1, 10);

            toBeSearched = "Hasta:";
            string sFechaFin = texto.Substring(texto.IndexOf(toBeSearched) + toBeSearched.Length + 1, 10);

            // Asigna fechas a objeto
            this.fechaInicio = DateTime.Parse(sFechaIni);
            this.fechaFin    = DateTime.Parse(sFechaFin);

            // Busca la cantidad de personas, crea los objetos y asigna su información.
            toBeSearched = ")";
            string[] tokens = texto.Split(new[] { ")" }, StringSplitOptions.None);

            Empleado[] empleados = new Empleado[tokens.Length - 1];

            for (int i = 1; i < tokens.Length; i++)
            {
                empleados[i - 1] = new Empleado(tokens[i], i - 1, horarioLaboral);

                // Analiza el status de cada dia
                foreach (TiemposDia t in empleados[i - 1].Dias)
                {
                    t.checkStatus();
                }
            }

            return(empleados.ToList());
        }
예제 #3
0
        public TimeSpan getRetardoDia(HorasLaborales horas, int index)
        {
            TimeSpan span = TimeSpan.Parse("0");

            if (this.Dias[index].entrada1.Hora.TimeOfDay > horas.entrada1.TimeOfDay)
            {
                span += this.Dias[index].entrada1.Hora.Subtract(horas.entrada1);
            }

            if (this.Dias[index].entrada2.Hora.TimeOfDay > horas.entrada2.TimeOfDay)
            {
                span += this.Dias[index].entrada2.Hora.Subtract(horas.entrada2);
            }

            return(span);
        }
예제 #4
0
        public TimeSpan getRetardoTotal(HorasLaborales horas)
        {
            TimeSpan span = TimeSpan.Parse("0");

            foreach (TiemposDia t in this.Dias)
            {
                if (t.entrada1.Hora.TimeOfDay > horas.entrada1.TimeOfDay)
                {
                    span += t.entrada1.Hora.Subtract(horas.entrada1);
                }

                if (t.entrada2.Hora.TimeOfDay > horas.entrada2.TimeOfDay)
                {
                    span += t.entrada2.Hora.Subtract(horas.entrada2);
                }
            }

            return(span);
        }
예제 #5
0
        // Constructor -----------------------------------
        public Empleado(string atributos, int identifier, HorasLaborales horarioLaboral)
        {
            this.listaAtributos = atributos;
            string[] tokens = atributos.Split(new[] { "\n" }, StringSplitOptions.None);

            // ID para facilitar modificación de los objetos
            this.ID = identifier;
            // Extrae el nombre del empleado
            this.Nombre = tokens[0];
            // Elimina informacion no util y agrupa los días por fila
            tokens = groupDias(tokens);
            // Extrae los dias
            Dias = extraerDiasDeTokens(tokens);
            Dias = borrarDiasDuplicados(Dias);
            // Obtiene si fue puntual
            Puntualidad = this.checkPuntualidad(horarioLaboral, false);
            // Obtiene asistencia
            Asistencia = this.checkAsistencia();
        }
예제 #6
0
        public TimeSpan getAnticipoTotal(HorasLaborales horas)
        {
            TimeSpan span = TimeSpan.Parse("0");

            foreach (TiemposDia t in this.Dias)
            {
                if ((t.salida1.Hora.TimeOfDay < horas.salida1.TimeOfDay) && (t.salida1.Hora.TimeOfDay != TimeSpan.Parse("00:00:00"))) // NOREGISTRO para no tomar en cuenta dias donde no se registró
                {
                    span += horas.salida1.Subtract(t.salida1.Hora);
                }

                if ((t.salida2.Hora.TimeOfDay < horas.salida2.TimeOfDay) && (t.salida2.Hora.TimeOfDay != TimeSpan.Parse("00:00:00")))
                {
                    span += horas.salida2.Subtract(t.salida2.Hora);
                }
            }

            return(span);
        }
예제 #7
0
        public TimeSpan getExtraTotal(HorasLaborales horas)
        {
            TimeSpan span = TimeSpan.Parse("0");

            foreach (TiemposDia t in this.Dias)
            {
                if (t.salida1.Hora > horas.salida1)
                {
                    span += t.salida1.Hora.Subtract(horas.salida1);
                }

                if (t.salida2.Hora > horas.salida2)
                {
                    span += t.salida2.Hora.Subtract(horas.salida2);
                }
            }

            return(span);
        }