Exemple #1
0
        public ActionResult Create([Bind(Include = "Id,Nombre,NumeroVehiculos,NumeroOperadores,ModuloCombustible,ModuloMantencion")] PackServicio packServicio)
        {
            if (ModelState.IsValid)
            {
                db.PackServicios.Add(packServicio);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(packServicio));
        }
        void ReparacionBaseDeDatos()
        {
            List <Auto>    autos    = db.Autos.ToList();
            List <Usuario> usuarios = db.Usuarios.ToList();

            foreach (Auto a in autos)
            {
                if (a.Operador != null)
                {
                    a.OperadorId = a.Operador.Id;

                    a.Operador.Autos.Clear();
                    a.Operador.Autos.Add(a);
                }
            }
            foreach (Usuario u in usuarios)
            {
                if (u.Operador != null)
                {
                    u.OperadorId       = u.Operador.Id;
                    u.Operador.Usuario = u;
                }
            }

            db.SaveChanges();
        }
Exemple #3
0
        //POST: odata/Usuarios/CrearCuentaUsuario
        //Parametros: Nombre, Email, Password
        public RespuestaOdata CrearCuentaUsuario(ODataActionParameters parameters)
        {
            if (parameters == null)
            {
                return(new RespuestaOdata()
                {
                    Id = -1, Mensaje = "error"
                });
            }

            string nombre    = (string)parameters["Nombre"];
            string emailUser = (string)parameters["Email"];
            string pass      = (string)parameters["Password"];

            string passEncriptada = PasswordHash.CreateHash(pass.Trim());

            Usuario repetido = db.Usuarios.Where(u => u.Email == emailUser).FirstOrDefault();

            if (repetido != null)
            {
                return new RespuestaOdata()
                       {
                           Id = -1, Mensaje = "Email ingresado ya se encuentra ocupado."
                       }
            }
            ;

            Usuario nuevoUser = new Usuario()
            {
                Nombre   = nombre,
                Email    = emailUser,
                Password = passEncriptada,
                Rol      = Usuario.RolUsuario.AdminDeFlota
            };

            db.Usuarios.Add(nuevoUser);
            db.SaveChanges();

            return(new RespuestaOdata()
            {
                Id = 0, Mensaje = "Cuenta creada correctamente."
            });
        }
Exemple #4
0
        // PUT: odata/Flotas(5)
        public IHttpActionResult Put([FromODataUri] int key, Delta <Flota> patch)
        {
            Validate(patch.GetEntity());

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Flota flota = db.Flotas.Find(key);

            if (flota == null)
            {
                return(NotFound());
            }

            patch.Put(flota);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!FlotaExists(key))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(Updated(flota));
        }
        // PUT: odata/HistorialVelocidades(5)
        public IHttpActionResult Put([FromODataUri] int key, Delta <HistorialVelocidad> patch)
        {
            Validate(patch.GetEntity());

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            HistorialVelocidad historialVelocidad = db.HistorialesVelocidad.Find(key);

            if (historialVelocidad == null)
            {
                return(NotFound());
            }

            patch.Put(historialVelocidad);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!HistorialVelocidadExists(key))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(Updated(historialVelocidad));
        }
Exemple #6
0
        public ActionResult CrearPrimerUsuario([Bind(Include = "Id,Nombre,Password,ConfirmPassword,Email")] CreacionUsuario model)
        {
            if (ModelState.IsValid == false)
            {
                return(View("PrimerUsuario", model));
            }


            string passEncriptada = PasswordHash.CreateHash(model.Password.Trim());

            Usuario u = new Usuario()
            {
                Nombre   = model.Nombre,
                Email    = model.Email,
                Password = passEncriptada,
                Rol      = Usuario.RolUsuario.SuperAdmin
            };

            db.Usuarios.Add(u);
            db.SaveChanges();

            return(RedirectToAction("Index"));
        }
Exemple #7
0
        public Ruta(ProyectoAutoContext _db, List <HistorialPosicion> _puntos, HistorialDiario _histDia)
        {
            if (_puntos.Count == 0)
            {
                return;
            }

            List <HistorialPosicion> puntos = _puntos.OrderBy(p => p.FechaHora).ToList();

            #region Filtro SPIKES

            //la suma de los dos siguientes segmentos
            //noo deberia ser mayor a la distancia del primer a tercer punto x 3

            //En este filtro el primer punto es aceptado por default
            //A partir del "indexOrigen", se evalua si se agrega al filtro el "indexOrigen" + 1

            float multiploLimite            = 1.5f;
            List <HistorialPosicion> filtro = new List <HistorialPosicion>();
            filtro.Add(puntos[0]);

            //int indexOrigen = 0;
            for (int i = 0; i < puntos.Count; i++)
            {
                if (i < puntos.Count - 2)
                {
                    var origen  = new GeoCoordinate(puntos[i].Latitud, puntos[i].Longitud);
                    var evaluar = new GeoCoordinate(puntos[i + 1].Latitud, puntos[i + 1].Longitud);
                    var final   = new GeoCoordinate(puntos[i + 2].Latitud, puntos[i + 2].Longitud);

                    if (puntos[i + 1].GPSOffBool == true)
                    {
                        continue;
                    }

                    double de1a2 = origen.GetDistanceTo(evaluar);
                    double de2a3 = evaluar.GetDistanceTo(final);
                    double de1a3 = origen.GetDistanceTo(final);

                    double suma = de1a2 + de2a3;

                    if (suma <= de1a3 * multiploLimite)
                    {
                        filtro.Add(puntos[i + 1]);
                    }
                }
                else if (i == puntos.Count - 2)
                {
                    filtro.Add(puntos[i + 1]);
                }
            }
            filtro = filtro.OrderBy(h => h.FechaHora).ToList();

            #endregion
            puntos = filtro;

            #region Filtro distancia

            float distanciaLimite = 150; //metros
            float distanciaMinima = 6;
            List <HistorialPosicion> filtroDistancia = new List <HistorialPosicion>();
            //int indexOrigen = 0;
            for (int i = 0; i < puntos.Count - 1; i++)
            {
                if (puntos[i].GPSOffBool == true)
                {
                    continue;
                }

                var origen = new GeoCoordinate(puntos[i].Latitud, puntos[i].Longitud);
                var final  = new GeoCoordinate(puntos[i + 1].Latitud, puntos[i + 1].Longitud);

                double distancia = origen.GetDistanceTo(final);

                if (distancia <= distanciaLimite && distancia >= distanciaMinima)
                {
                    filtroDistancia.Add(puntos[i]);
                }
            }
            filtroDistancia = filtroDistancia.OrderBy(h => h.FechaHora).ToList();

            #endregion
            puntos = filtroDistancia;


            if (puntos.Count == 0)
            {
                Puntos = new List <HistorialPosicion>();
                return;
            }


            Puntos = puntos;
            double metrosRecorridos = 0;
            for (int i = 0; i < puntos.Count - 1; i++)
            {
                var sCoord = new GeoCoordinate(puntos[i].Latitud, puntos[i].Longitud);
                var eCoord = new GeoCoordinate(puntos[i + 1].Latitud, puntos[i + 1].Longitud);

                metrosRecorridos += sCoord.GetDistanceTo(eCoord);
            }
            double km = metrosRecorridos / 1000f;
            KilometrosRecorridos = Math.Round(km, 2, MidpointRounding.AwayFromZero);

            DateTime desde = puntos.First().FechaHora;
            DateTime hasta = puntos.Last().FechaHora;

            List <float> filtroVelocidades = new List <float>();
            float        sumaVelocidades   = 0;
            foreach (HistorialVelocidad hv in _histDia.historialesVelocidad)
            {
                if (hv.HoraRegistro >= desde && hv.HoraRegistro <= hasta)
                {
                    filtroVelocidades.Add(hv.ValorInicio);
                    sumaVelocidades += hv.ValorInicio;

                    filtroVelocidades.Add(hv.ValorUnCuarto);
                    sumaVelocidades += hv.ValorUnCuarto;

                    filtroVelocidades.Add(hv.ValorMitad);
                    sumaVelocidades += hv.ValorMitad;

                    filtroVelocidades.Add(hv.ValorTresCuartos);
                    sumaVelocidades += hv.ValorTresCuartos;

                    filtroVelocidades.Add(hv.ValorFinal);
                    sumaVelocidades += hv.ValorFinal;

                    filtroVelocidades.Add(hv.ValorMayor);
                    sumaVelocidades += hv.ValorMayor;

                    filtroVelocidades.Add(hv.ValorMenor);
                    sumaVelocidades += hv.ValorMenor;
                }
            }

            if (filtroVelocidades.Count > 0)
            {
                VelocidadPromedio = sumaVelocidades / filtroVelocidades.Count;
            }

            HistorialPosicion inicioHP = puntos.First();
            HistorialPosicion finalHP  = puntos.Last();

            if (inicioHP.NombreCalle == null)
            {
                inicioHP.NombreCalle = "";
            }
            if (inicioHP.NombreLocalidad == null)
            {
                inicioHP.NombreLocalidad = "";
            }
            if (finalHP.NombreCalle == null)
            {
                finalHP.NombreLocalidad = "";
            }
            if (finalHP.NombreLocalidad == null)
            {
                finalHP.NombreLocalidad = "";
            }

            if (inicioHP.NombreCalle == "" || inicioHP.NombreLocalidad == "")
            {
                List <Placemark> datosInicio = Posicion.ObtenerDatosPosición(puntos.First().Latitud, puntos.First().Longitud);
                if (datosInicio != null)
                {
                    if (inicioHP.NombreCalle == "")
                    {
                        inicioHP.NombreCalle = datosInicio[0].ThoroughfareName;
                    }

                    if (inicioHP.NombreLocalidad == "")
                    {
                        inicioHP.NombreLocalidad = datosInicio[0].LocalityName;
                    }
                }
            }

            if (finalHP.NombreCalle == "" || finalHP.NombreLocalidad == "")
            {
                List <Placemark> datosFinal = Posicion.ObtenerDatosPosición(puntos.Last().Latitud, puntos.Last().Longitud);

                if (datosFinal != null)
                {
                    if (finalHP.NombreCalle == "")
                    {
                        finalHP.NombreCalle = datosFinal[0].ThoroughfareName;
                    }
                    if (finalHP.NombreLocalidad == "")
                    {
                        finalHP.NombreLocalidad = datosFinal[0].LocalityName;
                    }
                }
            }
            _db.SaveChanges();

            NombreCalleInicio  = inicioHP.NombreCalle;
            NombreCiudadInicio = inicioHP.NombreLocalidad;

            NombreCalleFinal  = finalHP.NombreCalle;
            NombreCiudadFinal = finalHP.NombreLocalidad;

            //NombreCalleInicio = "";
            //NombreCiudadInicio = "";
            //NombreCalleFinal = "";
            //NombreCiudadFinal = "";

            //List<Placemark> datosInicio = Posicion.ObtenerDatosPosición(puntos.First().Latitud, puntos.First().Longitud);
            //if (datosInicio != null)
            //{
            //    NombreCalleInicio = datosInicio[0].ThoroughfareName;
            //    NombreCiudadInicio = datosInicio[0].LocalityName;
            //}

            //List<Placemark> datosFinal = Posicion.ObtenerDatosPosición(puntos.Last().Latitud, puntos.Last().Longitud);

            //if(datosFinal != null)
            //{
            //    NombreCalleFinal = datosFinal[0].ThoroughfareName;
            //    NombreCiudadFinal = datosFinal[0].LocalityName;
            //}
        }
Exemple #8
0
        //POST: odata/Autos/ActualizarVelocidadLista
        //Parametros: Id,Registros
        //(FechaHora,Valor)
        public string ActualizarVelocidadListaDX(ODataActionParameters parameters)
        {
            if (parameters == null)
            {
                return("Error");
            }

            try
            {
                int size = 10;

                int id        = (int)parameters["Id"];
                var registros = parameters["Registros"] as IEnumerable <RegistroHistorial>;
                List <RegistroHistorial> listaRegistros = registros.ToList();

                if (listaRegistros.Count == 1)
                {
                    return("Ok");
                }

                //SE CREAN GRUPOS DE 10 EN 10 O DEPENDE DE "size"
                List <List <RegistroHistorial> > gruposDeRegistros = new List <List <RegistroHistorial> >();

                for (int i = 0; i < listaRegistros.Count; i += size)
                {
                    gruposDeRegistros.Add(listaRegistros.GetRange(i, Math.Min(size, listaRegistros.Count - i)));
                }


                Auto auto = db.Autos.Where(a => a.Id == id).FirstOrDefault();
                if (auto == null)
                {
                    return("Error");
                }


                List <HistorialVelocidad> historialesVelocidadCreados = new List <HistorialVelocidad>();

                //SE RECORREN LOS GRUPOS Y SE CREA UN HISTORIAL VELOCIDAD POR CADA UNO,
                //Se agrega a la lista

                for (int r = 0; r < gruposDeRegistros.Count; r++)
                {
                    List <RegistroHistorial> grupoActual = gruposDeRegistros[r];

                    for (int i = 0; i < grupoActual.Count; i++)
                    {
                        //Se recorren los registros y se le asigna la fecha correspondiente

                        string   horaRegistroString = grupoActual[i].FechaHora;
                        DateTime horaRegistro;
                        bool     result = DateTime.TryParseExact(horaRegistroString,
                                                                 FormatoFecha.formato, FormatoFecha.provider, DateTimeStyles.None, out horaRegistro);

                        if (result == false)
                        {
                            return("Error");
                        }

                        grupoActual[i].FechaDateTime = horaRegistro;
                    }

                    grupoActual = grupoActual.OrderBy(u => u.FechaDateTime).ToList();

                    RegistroHistorial registroInicio   = grupoActual.First();
                    RegistroHistorial registroFinal    = grupoActual.Last();
                    RegistroHistorial registro1Cuarto  = null;
                    RegistroHistorial registroMitad    = null;
                    RegistroHistorial registro3Cuartos = null;
                    RegistroHistorial registroMayor    = null;
                    RegistroHistorial registrosMenor   = null;

                    float valorMayor    = 0;
                    float valorMenor    = float.MaxValue;
                    float valor1Cuarto  = (grupoActual.Count / 4);
                    float valorMitad    = (grupoActual.Count / 2);
                    float valor3Cuartos = (grupoActual.Count / 4) * 3;


                    for (int i = 0; i < grupoActual.Count; i++)
                    {
                        RegistroHistorial regActual = grupoActual[i];

                        if (regActual.Valor >= valorMayor)
                        {
                            registroMayor = regActual;
                            valorMayor    = regActual.Valor;
                        }

                        if (regActual.Valor <= valorMenor)
                        {
                            registrosMenor = regActual;
                            valorMenor     = regActual.Valor;
                        }

                        if (registro1Cuarto == null && i >= valor1Cuarto)
                        {
                            registro1Cuarto = regActual;
                        }

                        if (registroMitad == null && i >= valorMitad)
                        {
                            registroMitad = regActual;
                        }

                        if (registro3Cuartos == null && i >= valor3Cuartos)
                        {
                            registro3Cuartos = regActual;
                        }
                    }

                    HistorialVelocidad nuevoHistorial = new HistorialVelocidad();
                    nuevoHistorial.HoraRegistro    = DateTime.Now;
                    nuevoHistorial.HoraInicio      = registroInicio.FechaDateTime;
                    nuevoHistorial.HoraFinal       = registroFinal.FechaDateTime;
                    nuevoHistorial.HoraMenor       = registrosMenor.FechaDateTime;
                    nuevoHistorial.HoraMayor       = registroMayor.FechaDateTime;
                    nuevoHistorial.HoraMitad       = registroMitad.FechaDateTime;
                    nuevoHistorial.HoraUnCuarto    = registro1Cuarto.FechaDateTime;
                    nuevoHistorial.HoraTresCuartos = registro3Cuartos.FechaDateTime;

                    nuevoHistorial.ValorInicio      = registroInicio.Valor;
                    nuevoHistorial.ValorFinal       = registroFinal.Valor;
                    nuevoHistorial.ValorMayor       = registroMayor.Valor;
                    nuevoHistorial.ValorMenor       = registrosMenor.Valor;
                    nuevoHistorial.ValorMitad       = registroMitad.Valor;
                    nuevoHistorial.ValorUnCuarto    = registro1Cuarto.Valor;
                    nuevoHistorial.ValorTresCuartos = registro3Cuartos.Valor;

                    historialesVelocidadCreados.Add(nuevoHistorial);
                }


                List <HistorialDiario> HistDiarioEnRango = CrearHistorialesDiariosEnRango(historialesVelocidadCreados.First().HoraInicio, historialesVelocidadCreados.Last().HoraFinal, auto);


                //Se registran en la base de datos los historiales creados
                for (int i = 0; i < historialesVelocidadCreados.Count; i++)
                {
                    HistorialDiario histCorrespondiente = HistDiarioEnRango.Where(h => h.Fecha.Year == historialesVelocidadCreados[i].HoraMitad.Year &&
                                                                                  h.Fecha.Month == historialesVelocidadCreados[i].HoraMitad.Month &&
                                                                                  h.Fecha.Day == historialesVelocidadCreados[i].HoraMitad.Day).FirstOrDefault();

                    histCorrespondiente.historialesVelocidad.Add(historialesVelocidadCreados[i]);
                }


                db.SaveChanges();

                return("Ok");
            }
            catch
            {
                return("CatchWebService");
            }
        }