public List <PresupuestoMaterialBE> PresupuestosFerreterias(int IdObra, decimal Area, string Latitud, string Longitud, int IdEstablecimiento)
        {
            try
            {
                var lista  = new List <PresupuestoMaterialBE>();
                var reader = db.Database.SqlQuery <sp_PresupuestoMaterial_Result>("sp_PresupuestoMaterial @param1, @param2, @param3,@param4",
                                                                                  new SqlParameter("param1", Area),
                                                                                  new SqlParameter("param2", IdObra),
                                                                                  new SqlParameter("param3", Latitud),
                                                                                  new SqlParameter("param4", Longitud)
                                                                                  );
                foreach (var item in reader)
                {
                    var PresupuestoMaterialBE = new PresupuestoMaterialBE()
                    {
                        EstablecimientoBE = new EstablecimientoBE()
                        {
                            IdEstablecimiento = item.IdEstablecimiento, NombreComercial = item.NombreComercial, RazonSocial = item.RazonSocial, Direccion = item.Direccion, Latitud = item.Latitud, Longitud = item.Longitud, RUC = item.RUC
                        },
                        SubTotal = (decimal)item.SubTotal,
                    };

                    lista.Add(PresupuestoMaterialBE);
                }

                List <PresupuestoMaterialBE> lista2 = new List <PresupuestoMaterialBE>();

                if (IdEstablecimiento == 0)
                {
                    float lat    = float.Parse(Latitud, CultureInfo.InvariantCulture);
                    float longit = float.Parse(Longitud, CultureInfo.InvariantCulture);
                    lista2 = lista.OrderBy(t => Extensiones.DistanciaKm(new Posicion(lat, longit), new Posicion(float.Parse(t.EstablecimientoBE.Latitud, CultureInfo.InvariantCulture), float.Parse(t.EstablecimientoBE.Longitud, CultureInfo.InvariantCulture)))).Take(5).ToList();
                }
                else
                {
                    lista2 = lista.Where(t => t.EstablecimientoBE.IdEstablecimiento == IdEstablecimiento).ToList();
                }



                return(lista2.OrderBy(t => t.SubTotal).ToList());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public List <EstablecimientoBE> Listar(string Latitud, string Longitud)
        {
            float lat    = float.Parse(Latitud, CultureInfo.InvariantCulture);
            float longit = float.Parse(Longitud, CultureInfo.InvariantCulture);

            var lista = (from t in db.SG_Establecimiento
                         where (t.Latitud != null && !t.Latitud.Equals("")) && (t.Longitud != null && !t.Longitud.Equals(""))
                         select new EstablecimientoBE()
            {
                IdEstablecimiento = t.IdEstablecimiento,
                RazonSocial = t.RazonSocial,
                NombreComercial = t.NombreComercial,
                Latitud = t.Latitud,
                Longitud = t.Longitud,
                Direccion = t.Direccion,
            }).ToList();

            var lista2 = lista.Where(t => Extensiones.DistanciaKm(new Posicion(lat, longit), new Posicion(float.Parse(t.Latitud, CultureInfo.InvariantCulture), float.Parse(t.Longitud, CultureInfo.InvariantCulture))) < 7).ToList();



            return(lista2);
        }