Exemple #1
0
        public List <MobileTour> GetMobileTour(IEnumerable <int> vehiculos, string codigoInicio, string codigoFin, DateTime inicio, DateTime fin, int radio, bool ocultarHuerfanos)
        {
            var results = GetTourEvents(vehiculos, codigoInicio, codigoFin, inicio, fin);

            var list = new List <MobileTour>(results.Count / 2);

            var        cocheDao = new CocheDAO();
            MobileTour tour     = null;

            foreach (var result in results)
            {
                var distancia = tour != null?Distancias.Loxodromica(tour.LatitudInicio, tour.LongitudInicio, result.Latitud, result.Longitud) : 0;

                var dentro = distancia <= radio;
                if (tour == null || tour.IdMovil != result.Coche.Id || !dentro)
                {
                    if (result.Mensaje.Codigo == codigoInicio)
                    {
                        tour = new MobileTour
                        {
                            Entrada        = result.Fecha.ToDisplayDateTime(),
                            IdMovil        = result.Coche.Id,
                            Interno        = cocheDao.FindById(result.Coche.Id).Interno,
                            LatitudInicio  = result.Latitud,
                            LongitudInicio = result.Longitud
                        };
                        list.Add(tour);
                    }
                    else if (result.Mensaje.Codigo == codigoFin)
                    {
                        tour = new MobileTour
                        {
                            Salida      = result.Fecha.ToDisplayDateTime(),
                            IdMovil     = result.Coche.Id,
                            Interno     = cocheDao.FindById(result.Coche.Id).Interno,
                            LatitudFin  = result.Latitud,
                            LongitudFin = result.Longitud
                        };
                        list.Add(tour);
                    }
                }
                else if (result.Mensaje.Codigo == codigoFin && (tour.IdMovil == result.Coche.Id))
                {
                    tour.Salida      = result.Fecha.ToDisplayDateTime();
                    tour.LatitudFin  = result.Latitud;
                    tour.LongitudFin = result.Longitud;
                }
            }

            if (ocultarHuerfanos)
            {
                list = list.Where(t => t.Entrada != DateTime.MinValue && t.Salida != DateTime.MinValue).ToList();
            }

            return(list);
        }
Exemple #2
0
        public List <MobileTour> GetMobileTour(IEnumerable <int> vehiculos, string codigoInicio, string codigoFin, DateTime inicio, DateTime fin, TimeSpan duracion)
        {
            var results = GetTourEvents(vehiculos, codigoInicio, codigoFin, inicio, fin);

            var list = new List <MobileTour>(results.Count / 2);

            var        cocheDao = new CocheDAO();
            MobileTour tour     = null;

            foreach (var result in results)
            {
                if (result.Mensaje.Codigo == codigoInicio && (tour == null || tour.IdMovil != result.Coche.Id))
                {
                    tour = new MobileTour
                    {
                        Entrada        = result.Fecha,
                        IdMovil        = result.Coche.Id,
                        Interno        = cocheDao.FindById(result.Coche.Id).Interno,
                        LatitudInicio  = result.Latitud,
                        LongitudInicio = result.Longitud
                    };
                }
                else if (result.Mensaje.Codigo == codigoFin && (tour != null && tour.IdMovil == result.Coche.Id))
                {
                    tour.Salida      = result.Fecha;
                    tour.LatitudFin  = result.Latitud;
                    tour.LongitudFin = result.Longitud;
                    if (tour.Duracion >= duracion)
                    {
                        list.Add(tour);
                    }
                    tour = null;
                }
            }

            return(list);
        }