Esempio n. 1
0
        public TimeTrackingVo(EventoViaje entrada, EventoViaje salida, EventoViaje anterior, int numeroViaje, DAOFactory daoFactory)
        {
            IdEntrada = entrada != null ? entrada.Id : 0;
            IdSalida  = salida != null ? salida.Id : 0;
            Viaje     = numeroViaje.ToString(CultureInfo.InvariantCulture);
            Tipo      = anterior == null && entrada == null && salida != null && salida.EsInicio ? 0
                : entrada != null && salida == null && entrada.EsFin ? 2
                : 1;
            var evento = entrada ?? salida;

            if (evento == null)
            {
                return;
            }
            Vehiculo             = evento.Vehiculo.Interno;
            Empleado             = evento.Empleado != null ? evento.Empleado.Entidad.Descripcion : string.Empty;
            ReferenciaGeografica = evento.ReferenciaGeografica.Descripcion;

            Fecha    = evento.Fecha.ToDisplayDateTime();
            Duracion = entrada != null && salida != null?salida.Fecha.Subtract(entrada.Fecha) : TimeSpan.Zero;

            TiempoViaje = entrada != null && anterior != null?entrada.Fecha.Subtract(anterior.Fecha) : TimeSpan.Zero;

            DaoFactory = daoFactory;
            IdVehiculo = evento.Vehiculo.Id;
            Anterior   = anterior;
        }
Esempio n. 2
0
        protected override List <TimeTrackingVo> GetResults()
        {
            var list = DAOFactory.EventoViajeDAO.GetList(cbEmpresa.SelectedValues, cbLinea.SelectedValues, cbVehiculo.SelectedValues, cbEmpleado.SelectedValues, dtDesde.SelectedDate.Value, dtHasta.SelectedDate.Value)
                       .OrderBy(v => v.Vehiculo)
                       .ThenBy(v => v.Fecha)
                       .ToList();

            var         viajes      = new List <TimeTrackingVo>(list.Count);
            var         numeroViaje = 0;
            EventoViaje anterior    = null;
            EventoViaje entrada     = null;
            var         iniciado    = false;
            var         start       = string.Empty;
            var         startDate   = DateTime.MinValue;
            var         vehiculo    = 0;

            foreach (var evento in list)
            {
                if (evento.Vehiculo.Id != vehiculo)
                {
                    anterior = null;
                    entrada  = null;
                    iniciado = false;
                    start    = string.Empty;
                    vehiculo = evento.Vehiculo.Id;
                }
                var inicio = !evento.EsEntrada && evento.EsInicio;
                var fin    = evento.EsEntrada && evento.EsFin;
                if (!inicio && !iniciado)
                {
                    continue;
                }
                if (inicio)
                {
                    var viaje = new TimeTrackingVo(null, evento, null, numeroViaje, DAOFactory);
                    iniciado  = true;
                    anterior  = evento;
                    entrada   = null;
                    start     = string.Format("{0}. De {1} a ", numeroViaje, evento.ReferenciaGeografica.Descripcion);
                    startDate = evento.Fecha;
                    viajes.Add(viaje);
                }
                else if (fin)
                {
                    var viaje = new TimeTrackingVo(evento, null, anterior, numeroViaje, DAOFactory);
                    iniciado = false;
                    anterior = null;
                    entrada  = null;
                    viajes.Add(viaje);

                    foreach (var v in viajes.Where(v => v.Viaje == numeroViaje.ToString(CultureInfo.InvariantCulture)))
                    {
                        var duracionTotal = evento.Fecha.Subtract(startDate);
                        v.Viaje      = start + evento.ReferenciaGeografica.Descripcion + " (" + duracionTotal.ToString() + ")";
                        v.FechaDesde = startDate;
                        v.FechaHasta = evento.Fecha;
                    }

                    numeroViaje++;
                }
                else if (evento.EsEntrada)
                {
                    entrada = evento;
                }
                else if (!evento.EsEntrada)
                {
                    if (entrada != null && evento.ReferenciaGeografica.Id == entrada.ReferenciaGeografica.Id)
                    {
                        var viaje = new TimeTrackingVo(entrada, evento, anterior, numeroViaje, DAOFactory);
                        viajes.Add(viaje);
                    }
                    anterior = evento;
                    entrada  = null;
                }
            }
            return(viajes);
        }