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); }
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); }