コード例 #1
0
        public List <Track_Vertices> GetVerticesZona(int idZona)
        {
            try
            {
                List <Track_Vertices> _listVertices = new List <Track_Vertices>();

                //_listVertices = _context.Track_Vertices.Where(C => C.IdZona == idZona).OrderBy(C => C.IdPunto).ToList();

                List <Track_GetVerticesZona_Result> _vertices = _context.Track_GetVerticesZona(idZona).ToList();

                for (int i = 0; i < _vertices.Count; i++)
                {
                    Track_Vertices vertice = new Track_Vertices();

                    vertice.IdZona   = _vertices[i].IdZona;
                    vertice.IdPunto  = _vertices[i].IdPunto;
                    vertice.Latitud  = _vertices[i].Latitud;
                    vertice.Longitud = _vertices[i].Longitud;

                    _listVertices.Add(vertice);
                }

                //_listVertices.RemoveAt(_listVertices.Count - 1);

                return(_listVertices);
            }
            catch (Exception)
            {
                return(new List <Track_Vertices>());
            }
        }
コード例 #2
0
        public string EditarZona(int idZona, string nombreZona, int idTipoZona, string clientesAsociados, List <Tuple <decimal, decimal> > vertices, int radio, int idUsuario)
        {
            try
            {
                decimal promLat = 0;
                decimal promLon = 0;

                Track_Zonas _zona = _context.Track_Zonas.Where(C => C.IdZona == idZona).FirstOrDefault();

                if (_zona == null)
                {
                    return("El Id de Zona no existe.");
                }

                _zona.NombreZona = nombreZona;
                _zona.IdTipoZona = idTipoZona;
                _zona.Radio      = radio;

                List <Track_Vertices> _vertices = _context.Track_Vertices.Where(C => C.IdZona == idZona).ToList();

                for (int i = 0; i < _vertices.Count; i++)
                {
                    _context.Track_Vertices.Remove(_vertices[i]);
                }

                for (int i = 0; i < vertices.Count; i++)
                {
                    promLat += vertices[i].Item1;
                    promLon += vertices[i].Item2;

                    Track_Vertices _vertice = new Track_Vertices();
                    _vertice.IdZona   = _zona.IdZona;
                    _vertice.IdPunto  = (i + 1);
                    _vertice.Latitud  = vertices[i].Item1;
                    _vertice.Longitud = vertices[i].Item2;

                    _context.Track_Vertices.Add(_vertice);
                }

                Track_Vertices _ultVertice = new Track_Vertices();
                _ultVertice.IdZona   = _zona.IdZona;
                _ultVertice.IdPunto  = vertices.Count + 1;
                _ultVertice.Latitud  = vertices[0].Item1;
                _ultVertice.Longitud = vertices[0].Item2;

                _context.Track_Vertices.Add(_ultVertice);

                promLat = promLat / vertices.Count;
                promLon = promLon / vertices.Count;

                _zona.Latitud  = promLat;
                _zona.Longitud = promLon;

                _context.SaveChanges();

                string response = _context.Track_UpdateCodZonaIdZona(clientesAsociados, idZona).FirstOrDefault().Respuesta;

                Methods_User _user = new Methods_User();
                //////_user.guardarlog(idUsuario, "Edición de zona: " + idZona.ToString());

                return(response);
            }
            catch (Exception e)
            {
                return("Se ha producido un error. Methods_Zonas.EditarZona. " + e.InnerException);
            }
        }
コード例 #3
0
        public string NuevaZona(string nombreZona, int idTipoZona, string clientesAsociados, List <Tuple <decimal, decimal> > vertices, int radio, int idUsuario)
        {
            try
            {
                decimal promLat    = 0;
                decimal promLon    = 0;
                bool    existeZona = false;

                //Track_Zonas _zona = _context.Track_Zonas.Where(C => C.IdZona == idZona).FirstOrDefault().IdZona;
                int newIdZona = (from c in _context.Track_Zonas orderby c.IdZona descending select c.IdZona).FirstOrDefault() + 1;
                if (newIdZona <= 100000000)
                {
                    newIdZona = 100000001;
                }

                Track_Zonas _zona = new Track_Zonas();

                _zona.IdZona     = newIdZona;
                _zona.NombreZona = nombreZona;
                _zona.IdTipoZona = idTipoZona;
                _zona.Radio      = radio;

                for (int i = 0; i < vertices.Count; i++)
                {
                    promLat += vertices[i].Item1;
                    promLon += vertices[i].Item2;

                    Track_Vertices _vertice = new Track_Vertices();
                    _vertice.IdZona   = _zona.IdZona;
                    _vertice.IdPunto  = (i + 1);
                    _vertice.Latitud  = vertices[i].Item1;
                    _vertice.Longitud = vertices[i].Item2;

                    _context.Track_Vertices.Add(_vertice);

                    if (_context.Track_ExisteZonaEnPunto(vertices[i].Item1.ToString().Replace(",", "."), vertices[i].Item2.ToString().Replace(",", "."), idTipoZona).First().Value > 0)
                    {
                        existeZona = true;
                    }
                }

                Track_Vertices _ultVertice = new Track_Vertices();
                _ultVertice.IdZona   = _zona.IdZona;
                _ultVertice.IdPunto  = vertices.Count + 1;
                _ultVertice.Latitud  = vertices[0].Item1;
                _ultVertice.Longitud = vertices[0].Item2;

                _context.Track_Vertices.Add(_ultVertice);

                promLat = promLat / vertices.Count;
                promLon = promLon / vertices.Count;

                _zona.Latitud  = promLat;
                _zona.Longitud = promLon;

                int existeName = 0;
                try { existeName = (from c in _context.Track_Zonas where c.NombreZona.ToLower() == nombreZona.ToLower() select c).Count(); } catch { existeName = 0; }

                if (_context.Track_ExisteZonaEnPunto(promLat.ToString().Replace(",", "."), promLon.ToString().Replace(",", "."), idTipoZona).First().Value > 0)
                {
                    existeZona = true;
                }

                _context.Track_Zonas.Add(_zona);

                if (existeName > 0)
                {
                    return("Ya existe una zona con ese Nombre, favor utilice otro");
                }
                else
                {
                    _context.SaveChanges();

                    string response = _context.Track_UpdateCodZonaIdZona(clientesAsociados, newIdZona).FirstOrDefault().Respuesta;

                    if (existeZona)
                    {
                        return("Ya existe una zona en los puntos seleccionados, de todas formas la zona fue agregada satisfactoriamente. IdZona generado: " + newIdZona.ToString());
                    }
                    else
                    {
                        Methods_User _user = new Methods_User();
                        /////_user.guardarlog(idUsuario, "Creación de zona: " + newIdZona.ToString());

                        return("Zona agregada satisfactoriamente. IdZona generado: " + newIdZona.ToString());
                    }
                }
            }
            catch (Exception e)
            {
                return("Se ha producido un error. Methods_Zonas.NuevaZona. " + e.InnerException);
            }
        }