public IHttpActionResult GetAllInfo()
        {
            IEnumerable <RutaDto>      rutas   = _serviceRuta.GetAll(false);
            IEnumerable <InfoMapModel> rutasVM = MapDtoToViewModel.MapInfo(rutas);
            Result result = new Result(rutasVM);

            return(result.CreateResponse(this));
        }
        public IEnumerable <RutaDto> GetAll(bool withTramos)
        {
            string cacheKey = string.Format("ServiceRuta@GetAll@{0}", withTramos ? "ConTramos" : "SinTramos");

            return(SimpleCache.GetCache(cacheKey, () =>
            {
                return _service.GetAll(withTramos);
            }));
        }
        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);
            }
        }
        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.");
        }