public string ActualizarPunto(PuntoGrupo punto) { HttpCookie cookie = HttpContext.Current.Request.Cookies.Get("Usuario"); if (cookie != null && AutentificacionBD.VerificarToken(cookie.Values.Get("Token"))) { string cliente = new Codificador().Desencriptar(cookie.Values.Get("Cliente")); cliente = cliente.Replace("\0", string.Empty); if (PuntoGrupoBD.ActualizaPunto(punto,cliente)) { return "ok"; } else { return "errorBD"; } } else { return "error404"; } }
public string CrearPunto(PuntoGrupo punto) { HttpCookie Cookie = HttpContext.Current.Request.Cookies.Get("Usuario"); if (Cookie != null && AutentificacionBD.VerificarToken(Cookie.Values.Get("Token"))) { string cliente = new Codificador().Desencriptar(Cookie.Values.Get("Cliente")); cliente = cliente.Replace("\0", string.Empty); int id = PuntoGrupoBD.CrearPunto(punto,cliente); if ( id > -1) { return id.ToString(); } else { return "errorBD"; } } else { return "error404"; } }
/// <summary> /// Metodo para Actualizar un punto /// </summary> /// <param name="punto">Informacion para actualizar el punto</param> /// <param name="usuario">Usuario al cual pertenece el punto</param> /// <returns></returns> public static bool ActualizaPunto(PuntoGrupo punto, string usuario) { if (punto.Grupos.Count >0) { string query = "UPDATE Punto SET " + "Nombre = @nombre, " + "x = @x," + "y = @y," + "Direccion = @direccion," + "Horario = @horario," + "Email = @email," + "Pagina = @pagina," + "Telefono = @telefono, " + "Nota = @nota, " + "calle = @calle, " + "colonia = @colonia, " + "ciudad = @ciudad " + "WHERE PuntoID = @puntoID AND UsuarioID = @usuarioID " + "DELETE FROM grupo_punto WHERE PuntoID = @puntoID AND UsuarioID = @usuarioID; "; foreach (Grupo grupo in punto.Grupos) { query += "INSERT INTO Grupo_Punto (GrupoID,PuntoID,UsuarioID) VALUES (" + grupo.GrupoID + "," + punto.PuntoID + ",'" + usuario + "');"; } using (SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionStringBD"].ConnectionString)) { sqlConnection.Open(); using (SqlTransaction sqlTransaction = sqlConnection.BeginTransaction()) { try { using (SqlCommand sqlCommand = new SqlCommand(query, sqlConnection)) { sqlCommand.Transaction = sqlTransaction; sqlCommand.Parameters.AddWithValue("@puntoID", punto.PuntoID); sqlCommand.Parameters.AddWithValue("@nombre", punto.Nombre); sqlCommand.Parameters.AddWithValue("@x", punto.x); sqlCommand.Parameters.AddWithValue("@y", punto.y); sqlCommand.Parameters.AddWithValue("@direccion", punto.Direccion); sqlCommand.Parameters.AddWithValue("@horario", punto.Horario); sqlCommand.Parameters.AddWithValue("@email", punto.Email); sqlCommand.Parameters.AddWithValue("@pagina", punto.Pagina); sqlCommand.Parameters.AddWithValue("@telefono", punto.Telefono); sqlCommand.Parameters.AddWithValue("@nota", punto.Nota); sqlCommand.Parameters.AddWithValue("@usuarioID", usuario); sqlCommand.Parameters.AddWithValue("@calle", punto.Calle == null ? "N/A": punto.Calle); sqlCommand.Parameters.AddWithValue("@colonia", punto.Colonia == null ? "N/A" : punto.Colonia); sqlCommand.Parameters.AddWithValue("@ciudad", punto.Ciudad == null ? "N/A" :punto.Ciudad); sqlCommand.ExecuteNonQuery(); sqlTransaction.Commit(); return true; } } catch (Exception) { sqlTransaction.Rollback(); throw; } } } } return false; }
/// <summary> /// Metodo para Obtener los puntos pertenecientes a un grupo (Antes llamado Categoria) /// </summary> /// <param name="grupo">ID del grupo sobre el cual se realizara la busqueda</param> /// <param name="usuario">ID del usuario al cual corresponde el grupo</param> /// <returns></returns> public static List<PuntoGrupo> ObtenerPuntosPorGrupo(int grupo, string usuario) { List<PuntoGrupo> resultado = new List<PuntoGrupo>(); string query = "SELECT punto.puntoID, g.grupoID, punto.grupo_puntoID, punto.Nombre,punto.x,punto.y,punto.direccion,punto.horario,punto.email,punto.pagina,punto.telefono,punto.UsuarioID, punto.calle,punto.colonia,punto.ciudad "+ "FROM ( " + "SELECT p.PuntoID , gp.PuntoID AS gpPuntoID, gp.GrupoID,gp.grupo_puntoID, p.UsuarioID,p.Nombre,p.x,p.y,p.Direccion,p.Horario,p.Email,p.Pagina,p.Telefono,p.calle,p.colonia,p.ciudad FROM Punto p " + "LEFT JOIN Grupo_Punto gp " + "ON p.PuntoID = gp.PuntoID WHERE p.usuarioID = @usuario " + ") punto " + "LEFT JOIN grupo g ON g.grupoID = punto.grupoID "; if (grupo == -1) { query += "WHERE punto.grupoID is null ORDER BY punto.Nombre ASC"; } else { query += "WHERE punto.grupoID = @grupo ORDER BY punto.Nombre ASC"; } using (SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionStringBD"].ConnectionString)) { sqlConnection.Open(); using (SqlCommand sqlCommand = new SqlCommand(query, sqlConnection)) { sqlCommand.Parameters.AddWithValue("@grupo", grupo); sqlCommand.Parameters.AddWithValue("@usuario", usuario); using (SqlDataReader reader = sqlCommand.ExecuteReader()) { while (reader.Read()) { PuntoGrupo punto = new PuntoGrupo(); punto.PuntoID = (int)reader["PuntoID"]; punto.Nombre = (string)reader["Nombre"]; punto.x = (double)reader["x"]; punto.y = (double)reader["y"]; punto.Direccion = reader["Direccion"] == DBNull.Value ? string.Empty : (string)reader["Direccion"]; punto.Horario = reader["Horario"] == DBNull.Value ? string.Empty : (string)reader["Horario"]; punto.Email = reader["Email"] == DBNull.Value ? string.Empty : (string)reader["Email"]; punto.Pagina = reader["Pagina"] == DBNull.Value ? string.Empty : (string)reader["Pagina"]; punto.Telefono = reader["Telefono"] == DBNull.Value ? string.Empty : (string)reader["Telefono"]; punto.Calle = reader["Calle"] == DBNull.Value ? string.Empty : (string)reader["Calle"]; punto.Colonia = reader["Colonia"] == DBNull.Value ? string.Empty: (string)reader["colonia"]; punto.Ciudad = reader["Ciudad"] == DBNull.Value ? string.Empty : (string)reader["ciudad"]; resultado.Add(punto); } } } } return resultado; }
/// <summary> /// Se obtienen todos los puntos con sus categorias correspondientes. /// A diferencia de obtener "ObtenerPuntosPorGrupo", este trae todos los puntos pertenecientes al usuario y la relacion de cada punto con grupos /// </summary> /// <param name="usuario">Usuario al cual pertenecen los puntos</param> /// <returns>Lista de puntos</returns> public static List<PuntoGrupo> ObtenerPuntoConGrupos(string usuario) { List<PuntoGrupo> Resultado = new List<PuntoGrupo>(); string query = "SELECT punto.puntoID, g.grupoID,g.nombre,g.color, punto.grupo_puntoID, punto.Nombre,punto.x,punto.y,punto.direccion,punto.nota,punto.horario,punto.email,punto.pagina,punto.telefono, punto.calle, punto.colonia, punto.ciudad, punto.UsuarioID FROM ( " + "SELECT p.PuntoID , gp.PuntoID AS gpPuntoID, gp.grupoID,gp.grupo_puntoID, p.UsuarioID,p.Nombre,p.x,p.y,p.Direccion,p.nota,p.Horario,p.Email,p.Pagina,p.Telefono, p.calle, p.colonia, p.ciudad FROM Punto p " + "LEFT JOIN grupo_Punto gp " + "ON p.PuntoID = gp.PuntoID WHERE p.usuarioID = @usuario " + ") punto " + "LEFT JOIN grupo g ON g.grupoID = punto.grupoID " + "ORDER BY punto.Nombre ASC "; using (SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionStringBD"].ConnectionString)) { sqlConnection.Open(); using (SqlCommand sqlCommand = new SqlCommand(query, sqlConnection)) { sqlCommand.Parameters.AddWithValue("@usuario", usuario); using (SqlDataReader reader = sqlCommand.ExecuteReader()) { while (reader.Read()) { //primer lectura if (Resultado.Count == 0) { PuntoGrupo punto = new PuntoGrupo(); punto.PuntoID = (int)reader["puntoID"]; punto.Nombre = reader["Nombre"] == DBNull.Value ? string.Empty : (string)reader["Nombre"]; punto.x = reader["x"] == DBNull.Value ? double.NaN : (double)reader["x"]; punto.y = reader["y"] == DBNull.Value ? double.NaN : (double)reader["y"]; punto.Direccion = reader["direccion"] == DBNull.Value ? string.Empty : (string)reader["direccion"]; punto.Nota= reader["Nota"] == DBNull.Value ? string.Empty : (string)reader["Nota"]; punto.Horario = reader["horario"] == DBNull.Value ? string.Empty : (string)reader["horario"]; punto.Email = reader["email"] == DBNull.Value ? string.Empty : (string)reader["email"]; punto.Pagina = reader["pagina"] == DBNull.Value ? string.Empty : (string)reader["pagina"]; punto.Telefono = reader["telefono"] == DBNull.Value ? string.Empty : (string)reader["telefono"]; punto.Calle = reader["Calle"] == DBNull.Value ? string.Empty : (string)reader["Calle"]; punto.Colonia = reader["Colonia"] == DBNull.Value ? string.Empty : (string)reader["Colonia"]; punto.Ciudad = reader["Ciudad"] == DBNull.Value ? string.Empty : (string)reader["Ciudad"]; punto.Grupos = new List<Grupo>(); Grupo grupo = new Grupo(); grupo.GrupoID = reader["grupoID"] == DBNull.Value ? -1 : (int)reader["grupoID"];//Id grupo.Nombre = reader["nombre"] == DBNull.Value ? string.Empty : (string)reader["nombre"];//nombre grupo.Color = reader["color"] == DBNull.Value ? 0 : (int)reader["color"]; punto.Grupos.Add(grupo); Resultado.Add(punto); } //n lecturas else { PuntoGrupo punto = new PuntoGrupo(); punto.PuntoID = (int)reader["puntoID"]; if (Resultado.Any(p => p.PuntoID == punto.PuntoID) && reader["grupoID"] != DBNull.Value) { Grupo grupo = new Grupo(); grupo.GrupoID = reader["grupoID"] == DBNull.Value ? -1 : (int)reader["grupoID"];//Id grupo.Nombre = reader["nombre"] == DBNull.Value ? string.Empty : (string)reader["nombre"];//nombre grupo.Color = reader["color"] == DBNull.Value ? 0 : (int)reader["color"]; Resultado.Where(p => p.PuntoID == punto.PuntoID).First().Grupos.Add(grupo); } else { punto.Nombre = reader["Nombre"] == DBNull.Value ? string.Empty : (string)reader["Nombre"]; punto.x = reader["x"] == DBNull.Value ? double.NaN : (double)reader["x"]; punto.y = reader["y"] == DBNull.Value ? double.NaN : (double)reader["y"]; punto.Direccion = reader["direccion"] == DBNull.Value ? string.Empty : (string)reader["direccion"]; punto.Nota = reader["Nota"] == DBNull.Value ? string.Empty : (string)reader["Nota"]; punto.Horario = reader["horario"] == DBNull.Value ? string.Empty : (string)reader["horario"]; punto.Email = reader["email"] == DBNull.Value ? string.Empty : (string)reader["email"]; punto.Pagina = reader["pagina"] == DBNull.Value ? string.Empty : (string)reader["pagina"]; punto.Telefono = reader["telefono"] == DBNull.Value ? string.Empty : (string)reader["telefono"]; punto.Calle = reader["Calle"] == DBNull.Value ? string.Empty : (string)reader["Calle"]; punto.Colonia = reader["Colonia"] == DBNull.Value ? string.Empty : (string)reader["Colonia"]; punto.Ciudad = reader["Ciudad"] == DBNull.Value ? string.Empty : (string)reader["Ciudad"]; punto.Grupos = new List<Grupo>(); Grupo grupo = new Grupo(); grupo.GrupoID = reader["grupoID"] == DBNull.Value ? -1 : (int)reader["grupoID"];//Id grupo.Nombre = reader["nombre"] == DBNull.Value ? string.Empty : (string)reader["nombre"];//nombre grupo.Color = reader["color"] == DBNull.Value ? 0 : (int)reader["color"]; punto.Grupos.Add(grupo); Resultado.Add(punto); } } } } } } return Resultado; }
/// <summary> /// Metodo para Insertar un punto en la base de datos. Se debera crear el punto en la tabla "Punto" y de ahi se deben insertar las relaciones /// con grupos (antes llamadas Categorias) en la tabla "grupo_punto" /// </summary> /// <param name="punto">Informacion detallada del punto</param> /// <param name="usuario">ID del usuario al cual pertenecera el punto</param> /// <returns></returns> public static int CrearPunto(PuntoGrupo punto, string usuario) { if (punto.Grupos.Count>0) { string queryInsertPunto = "INSERT INTO Punto" + "(Nombre, x, y, Direccion, Horario, Email, Pagina, Telefono,usuarioID,Nota,calle,colonia,ciudad) " + "VALUES " + "(@nombre,@x,@y,@direccion,@horario,@email,@pagina,@telefono,@usuario,@nota,@calle,@colonia,@ciudad);" + "SELECT CAST(scope_identity() AS int);"; string queryInsertGrupos = ""; foreach (Grupo grupo in punto.Grupos) { queryInsertGrupos += "INSERT INTO grupo_Punto " + "(GrupoID, PuntoID, UsuarioID) " + "VALUES " + "(" + grupo.GrupoID + ",@punto,@usuario);"; } using (SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionStringBD"].ConnectionString)) { sqlConnection.Open(); using (SqlTransaction sqlTransaction = sqlConnection.BeginTransaction()) { try { int id = -1; using (SqlCommand sqlCommand = new SqlCommand(queryInsertPunto, sqlConnection)) { sqlCommand.Transaction = sqlTransaction; sqlCommand.Parameters.AddWithValue("@nombre", punto.Nombre); sqlCommand.Parameters.AddWithValue("@x", punto.x); sqlCommand.Parameters.AddWithValue("@y", punto.y); sqlCommand.Parameters.AddWithValue("@direccion", punto.Direccion); sqlCommand.Parameters.AddWithValue("@horario", punto.Horario); sqlCommand.Parameters.AddWithValue("@email", punto.Email); sqlCommand.Parameters.AddWithValue("@pagina", punto.Pagina); sqlCommand.Parameters.AddWithValue("@telefono", punto.Telefono); sqlCommand.Parameters.AddWithValue("@usuario", usuario); sqlCommand.Parameters.AddWithValue("@nota", punto.Nota); sqlCommand.Parameters.AddWithValue("@calle", punto.Calle); sqlCommand.Parameters.AddWithValue("@colonia",punto.Colonia); sqlCommand.Parameters.AddWithValue("@ciudad",punto.Ciudad); id = (int)sqlCommand.ExecuteScalar(); } if (id != -1) { using (SqlCommand sqlCommand = new SqlCommand(queryInsertGrupos, sqlConnection)) { sqlCommand.Transaction = sqlTransaction; sqlCommand.Parameters.AddWithValue("@punto", id); sqlCommand.Parameters.AddWithValue("@usuario", usuario); sqlCommand.ExecuteNonQuery(); sqlTransaction.Commit(); return id; } } } catch (Exception) { sqlTransaction.Rollback(); throw; } } } } return -1; }