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>()); } }
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); } }
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); } }