예제 #1
0
        public long UpdateRouting(TramoDto dto)
        {
            long result = _service.UpdateRouting(dto);

            SimpleCache.CleanCache();
            return(result);
        }
        public static List <CoordenadaModel> GetListCoordenadas(this TramoDto dto)
        {
            var result = new List <CoordenadaModel>();

            if (string.IsNullOrEmpty(dto.Coordenadas))
            {
                return(result);
            }

            string[] coordSplit = dto.Coordenadas.Split('/');
            foreach (var itemCoordenada in coordSplit)
            {
                if (itemCoordenada.Split(',').Length != 2)
                {
                    continue;
                }

                var coordenadaToAdd = new CoordenadaModel();
                coordenadaToAdd.Latitud  = itemCoordenada.Split(',')[0];
                coordenadaToAdd.Longitud = itemCoordenada.Split(',')[1];
                result.Add(coordenadaToAdd);
            }

            return(result);
        }
예제 #3
0
        public long CreateOrUpdate(TramoDto dto)
        {
            long result = _service.CreateOrUpdate(dto);

            SimpleCache.CleanCache();
            return(result);
        }
예제 #4
0
        public long UpdateRouting(TramoDto dto)
        {
            long result = default(long);

            try
            {
                TramoEntity tramoDb = _dbContext.TramoDataSet.FirstOrDefault(x => x.IdTramo == dto.IdTramo);
                if (tramoDb != null)
                {
                    tramoDb.JsonRouting = dto.JsonRouting;
                    _dbContext.SaveChanges();
                }
                result = tramoDb.IdTramo;
            }
            catch (DbEntityValidationException ex)
            {
                foreach (var eve in ex.EntityValidationErrors)
                {
                    foreach (var ve in eve.ValidationErrors)
                    {
                        _logger.Error("ServiceTramo.UpdateRouting", $"PropertyName: {ve.PropertyName} - ErrorMessage: {ve.ErrorMessage}", ex);
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error("ServiceTramo.CreateOrUpdate", ex.Message, ex);
            }
            return(result);
        }
예제 #5
0
        public long CreateOrUpdate(TramoDto dto)
        {
            long result = default(long);

            try
            {
                using (var dbContext = new VialidadContext())
                {
                    TramoEntity tramoDb = dbContext.TramoDataSet.AsNoTracking().FirstOrDefault(x =>
                                                                                               x.IdProvincia == dto.IdProvincia &&
                                                                                               x.IdRuta == dto.IdRuta &&
                                                                                               x.TramoNormalizado.ToUpper() == dto.TramoNormalizado.ToUpper());

                    if (tramoDb == null)
                    {
                        tramoDb           = MapDtoToEntity.Map(dto);
                        tramoDb.FechaAlta = DateTime.Now;
                        tramoDb.Activo    = false;

                        dbContext.TramoDataSet.Add(tramoDb);
                    }
                    else
                    {
                        tramoDb.IdCalzada           = dto.IdCalzada;
                        tramoDb.Detalle             = dto.Detalle;
                        tramoDb.Observaciones       = dto.Observaciones;
                        tramoDb.FechaActualizacion  = dto.FechaActualizacion;
                        tramoDb.TramoDesnormalizado = dto.TramoDesnormalizado;

                        var exist = dbContext.Set <TramoEntity>().Find(tramoDb.IdTramo);
                        if (exist != null)
                        {
                            dbContext.Entry <TramoEntity>(exist).CurrentValues.SetValues(tramoDb);
                        }
                    }

                    dbContext.SaveChanges();
                    result = tramoDb.IdTramo;
                }
            }
            catch (DbEntityValidationException ex)
            {
                foreach (var eve in ex.EntityValidationErrors)
                {
                    foreach (var ve in eve.ValidationErrors)
                    {
                        _logger.Error("ServiceTramo.CreateOrUpdate", $"PropertyName: {ve.PropertyName} - ErrorMessage: {ve.ErrorMessage}", ex);
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error("ServiceTramo.CreateOrUpdate", ex.Message, ex);
            }
            return(result);
        }
        public static List <ReferenciaModel> GetListReferencias(this TramoDto dto, IEnumerable <ReferenciaDto> referencias)
        {
            var result = new List <ReferenciaModel>();

            var detalleFull = $"{dto.Detalle} {dto.Observaciones}";

            detalleFull = NormalizerKey.Normalize(detalleFull);

            foreach (var itemReferencia in referencias)
            {
                if (string.IsNullOrEmpty(itemReferencia.PalabrasClaves))
                {
                    continue;
                }

                var keys = itemReferencia.PalabrasClaves.Split('|');
                foreach (var itemKey in keys)
                {
                    if (!detalleFull.Contains(itemKey))
                    {
                        continue;
                    }

                    var referenciaExists = result.FirstOrDefault(x => x.ImageName == itemReferencia.Imagen);
                    if (referenciaExists == null)
                    {
                        var imageName = itemReferencia.Imagen;
                        if (imageName.EndsWith(".png"))
                        {
                            imageName = imageName.Split('.')[0];
                            imageName = $"{imageName}_transparent.png";
                        }
                        var imagePath = $"images/referencias/{itemReferencia.Tipo.ToLower()}/{imageName}";

                        var referenciaToAdd = new ReferenciaModel();
                        referenciaToAdd.ImageName   = itemReferencia.Imagen;
                        referenciaToAdd.ImagePath   = imagePath;
                        referenciaToAdd.ImageDesc   = itemReferencia.Nombre;
                        referenciaToAdd.ImageWidth  = itemReferencia.Ancho;
                        referenciaToAdd.ImageHeight = itemReferencia.Alto;
                        result.Add(referenciaToAdd);
                    }
                    else if (!referenciaExists.ImageDesc.Contains(itemReferencia.Nombre))
                    {
                        referenciaExists.ImageDesc = $"{referenciaExists.ImageDesc} - {itemReferencia.Nombre}";
                    }
                }
            }

            return(result);
        }
        public static string GetColorFechaActualizacion(this TramoDto dto)
        {
            string color = "#00AF2A";

            if (dto.FechaActualizacion < DateTime.Now.AddDays(-20))
            {
                color = "#FF0000";
            }
            else if (dto.FechaActualizacion < DateTime.Now.AddDays(-10))
            {
                color = "#FFA600";
            }
            return(color);
        }
        public IHttpActionResult GetRouting(string profile, string coordinates, bool overview = false, bool alternatives = false, bool steps = false, string hints = "")
        {
            coordinates = coordinates.Replace(";", "/").Trim();
            TramoDto tramo       = _serviceTramo.GetByCoordinates(coordinates);
            string   jsonRouting = (tramo != null) ? tramo.JsonRouting : string.Empty;
            JObject  jsonObj     = null;

            if (!string.IsNullOrEmpty(jsonRouting))
            {
                jsonObj = JObject.Parse(jsonRouting);
            }
            Result result = new Result(jsonObj);

            return(result.CreateResponse(this));
        }
        public static string GetColorRuta(this TramoDto dto)
        {
            var _replaces = new Dictionary <string, string>();

            _replaces.Add("Á", "A");
            _replaces.Add("É", "E");
            _replaces.Add("Í", "I");
            _replaces.Add("Ó", "O");
            _replaces.Add("Ú", "U");

            var _keyWords = new Dictionary <string, List <string> >();

            _keyWords.Add("#00AF2A", new List <string>()
            {
                "NORMAL", "TRANSITABLE", "BUENO", "PRECAUCION", "SIN DEMARCACION", "INCOMPLETO", "NIEBLA", "HUMEDA", "LLUVIA", "PRECIPITACIONES"
            });
            //_keyWords.Add("#FFE000", new List<string>() { "PRECAUCION", "SIN DEMARCACION", "INCOMPLETO", "NIEBLA", "HUMEDA", "LLUVIA", "PRECIPITACIONES" });
            _keyWords.Add("#FFA600", new List <string>()
            {
                "REGULAR", "DETERIORADA", "POCEADA", "BACHES", "MALO", "CORTE PARCIAL", "COMPROMETIDO", "MAXIMA PRECAUCION", "DESVIO", "ALERTA"
            });
            _keyWords.Add("#FF0000", new List <string>()
            {
                "INTRANSITABLE", "INTERRUMPIDA", "CLAUSURADA", "4X4"
            });                                                                                                    //"HUELLONES"

            string desc = dto.Detalle.ToUpper();

            foreach (var itemReplace in _replaces)
            {
                desc = desc.Replace(itemReplace.Key, itemReplace.Value);
            }

            string color = "#00AF2A";

            foreach (var itemKeyWord in _keyWords)
            {
                foreach (var item in itemKeyWord.Value)
                {
                    if (desc.Contains(item))
                    {
                        color = itemKeyWord.Key;
                    }
                }
            }

            return(color);
        }
예제 #10
0
        public static TramoEntity Map(TramoDto entidadDto)
        {
            var entity = new TramoEntity();

            entity.IdTramo             = entidadDto.IdTramo;
            entity.IdProvincia         = entidadDto.IdProvincia;
            entity.IdRuta              = entidadDto.IdRuta;
            entity.IdCalzada           = entidadDto.IdCalzada;
            entity.TramoNormalizado    = entidadDto.TramoNormalizado;
            entity.TramoDesnormalizado = entidadDto.TramoDesnormalizado;
            entity.Coordenadas         = entidadDto.Coordenadas;
            entity.Detalle             = entidadDto.Detalle;
            entity.Observaciones       = entidadDto.Observaciones;
            entity.FechaActualizacion  = entidadDto.FechaActualizacion;
            entity.Orden = entidadDto.Orden;
            return(entity);
        }
예제 #11
0
        public static TramoModel Map(TramoDto entidadDto)
        {
            var model = new TramoModel();

            model.IdTramo            = entidadDto.IdTramo;
            model.IdProvincia        = entidadDto.IdProvincia;
            model.IdRuta             = entidadDto.IdRuta;
            model.IdCalzada          = entidadDto.IdCalzada;
            model.Tramo              = entidadDto.TramoNormalizado.ToTitleCase();
            model.Detalle            = entidadDto.Detalle.ToTitleCase();
            model.Observaciones      = entidadDto.Observaciones.ToTitleCase();
            model.FechaActualizacion = entidadDto.FechaActualizacion.GetValueOrDefault(DateTime.MinValue).ToString("dd/MM/yyyy HH:mm");
            model.Orden              = entidadDto.Orden;
            model.Coordenadas        = entidadDto.GetListCoordenadas();
            //model.Referencias = entidadDto.GetListReferencias();
            model.ColorRuta = entidadDto.GetColorRuta();
            model.ColorFechaActualizacion = entidadDto.GetColorFechaActualizacion();
            return(model);
        }
        private void NormalizeInfoVM(IEnumerable <TramoDto> tramos, IEnumerable <TramoModel> tramosVM)
        {
            IList <TramoModel> result = new List <TramoModel>();

            IEnumerable <ProvinciaDto>  provincias  = _serviceProvincia.GetAll(false);
            IEnumerable <RutaDto>       rutas       = _serviceRuta.GetAll(false);
            IEnumerable <CalzadaDto>    calzadas    = _serviceCalzada.GetAll(false);
            IEnumerable <ReferenciaDto> referencias = _serviceReferencia.GetAll();

            foreach (var itemTramoVM in tramosVM)
            {
                TramoDto tramoDto = tramos.SingleOrDefault(x => x.IdTramo == itemTramoVM.IdTramo);
                if (tramoDto == null)
                {
                    continue;
                }

                itemTramoVM.Provincia   = provincias.SingleOrDefault(x => x.Id == itemTramoVM.IdProvincia)?.Nombre;
                itemTramoVM.Ruta        = rutas.SingleOrDefault(x => x.Id == itemTramoVM.IdRuta)?.Nombre;
                itemTramoVM.Calzada     = calzadas.SingleOrDefault(x => x.Id == itemTramoVM.IdCalzada)?.Nombre;
                itemTramoVM.Referencias = tramoDto.GetListReferencias(referencias);
            }
        }
예제 #13
0
        public TramoDto GetByCoordinates(string coordinates)
        {
            TramoDto result = null;

            try
            {
                TramoEntity tramo = _dbContext.TramoDataSet
                                    .OrderByDescending(x => x.FechaActualizacion)
                                    .ThenBy(x => x.Orden)
                                    .FirstOrDefault(x =>
                                                    x.Coordenadas == coordinates &&
                                                    x.Activo);

                if (tramo != null)
                {
                    result = MapEntityToDto.Map(tramo);
                }
            }
            catch (Exception ex)
            {
                _logger.Error("ServiceTramo.GetByCoordinates", ex.Message, ex);
            }
            return(result);
        }
예제 #14
0
        public override void SaveData(List<TramoImport> info)
        {
            var provincias = _serviceProvincia.GetAll(false);
            var rutas = _serviceRuta.GetAll(false);
            var calzadas = _serviceCalzada.GetAll(false);

            foreach (var itemTramo in info)
            {
                if (string.IsNullOrEmpty(itemTramo.TramoDesnormalizado))
                    continue;

                try
                {
                    //Verificamos información de la provincia
                    var provinciaKey = NormalizerKey.Normalize(itemTramo.Provincia);
                    if (provinciaKey == "bahia-blanca")
                        provinciaKey = "buenos-aires";
                    var provinciaDto = provincias.SingleOrDefault(x => x.Key == provinciaKey);
                    if (provinciaDto == null)
                    {
                        provinciaDto = new ProvinciaDto();
                        provinciaDto.Nombre = itemTramo.Provincia;
                        provinciaDto.Key = provinciaKey;
                        provinciaDto.Id = _serviceProvincia.Create(provinciaDto);
                    }

                    //Verificamos información de la ruta
                    var rutaKey = NormalizerKey.Normalize(itemTramo.Ruta);
                    var rutaDto = rutas.SingleOrDefault(x => x.Key == rutaKey);
                    if (rutaDto == null)
                    {
                        rutaDto = new RutaDto();
                        rutaDto.Nombre = itemTramo.Ruta;
                        rutaDto.Key = rutaKey;
                        rutaDto.Id = _serviceRuta.Create(rutaDto);
                    }

                    //Verificamos información de la calzada
                    var calzadaKey = NormalizerKey.Normalize(itemTramo.Calzada);
                    if (calzadaKey.StartsWith("pavimento-flexible"))
                        calzadaKey = "pavimento-flexible";
                    var calzadaDto = calzadas.SingleOrDefault(x => x.Key == calzadaKey);
                    if (calzadaDto == null)
                    {
                        if (!string.IsNullOrEmpty(itemTramo.Calzada))
                        {
                            calzadaDto = new CalzadaDto();
                            calzadaDto.Nombre = itemTramo.Calzada;
                            calzadaDto.Key = calzadaKey;
                            calzadaDto.Id = _serviceCalzada.Create(calzadaDto);
                        }
                        else
                        {
                            //Valor default
                            calzadaDto = new CalzadaDto();
                            calzadaDto.Id = 1;
                        }
                    }

                    //Mapeamos dto
                    TramoDto tramoDto = new TramoDto();
                    tramoDto.IdProvincia = provinciaDto.Id;
                    tramoDto.IdRuta = rutaDto.Id;
                    tramoDto.IdCalzada = calzadaDto.Id;
                    tramoDto.TramoNormalizado = itemTramo.TramoNormalizado;
                    tramoDto.TramoDesnormalizado = itemTramo.TramoDesnormalizado;
                    tramoDto.Detalle = itemTramo.Detalle;
                    tramoDto.Observaciones = itemTramo.Observaciones;
                    tramoDto.FechaActualizacion = itemTramo.Actualizacion;
                    tramoDto.Coordenadas = itemTramo.Coordenadas;

                    //Grabamos información del tramo
                    _serviceTramo.CreateOrUpdate(tramoDto);
                }
                catch (Exception ex)
                {
                    _logger.Error("DownloadDb.SaveData", ex.Message, ex);
                }
            }

            _logger.Info("DownloadDb.SaveData", $"{info.Count} registros grabados.");
        }