|
|
@@ -0,0 +1,204 @@
|
|
|
+package main
|
|
|
+
|
|
|
+import (
|
|
|
+ "database/sql"
|
|
|
+ "fmt"
|
|
|
+ "log"
|
|
|
+ "net/http"
|
|
|
+ "text/template"
|
|
|
+
|
|
|
+ _ "github.com/go-sql-driver/mysql"
|
|
|
+)
|
|
|
+
|
|
|
+func conexionDB() (conexion *sql.DB) {
|
|
|
+ Driver := "mysql"
|
|
|
+ Usuario := "root"
|
|
|
+ Contraseña := ""
|
|
|
+ Nombre := "sistema"
|
|
|
+
|
|
|
+ conexion, err := sql.Open(Driver, Usuario+":"+Contraseña+"@tcp(127.0.0.1)/"+Nombre)
|
|
|
+ if err != nil {
|
|
|
+ panic(err.Error())
|
|
|
+ }
|
|
|
+ return conexion
|
|
|
+}
|
|
|
+
|
|
|
+var plantillas = template.Must(template.ParseGlob("plantillas/*"))
|
|
|
+
|
|
|
+func main() {
|
|
|
+ http.HandleFunc("/", Inicio)
|
|
|
+ http.HandleFunc("/formulario", Formulario)
|
|
|
+ http.HandleFunc("/insertar", Insertar)
|
|
|
+ http.HandleFunc("/borrar", Borrar)
|
|
|
+ http.HandleFunc("/editar", Editar)
|
|
|
+ http.HandleFunc("/actualizar", Actualizar)
|
|
|
+
|
|
|
+ log.Println("Servidor corriendo")
|
|
|
+ http.ListenAndServe(":8080", nil)
|
|
|
+}
|
|
|
+
|
|
|
+func Borrar(w http.ResponseWriter, r *http.Request) {
|
|
|
+ idRegistro := r.URL.Query().Get("id")
|
|
|
+ fmt.Println(idRegistro)
|
|
|
+
|
|
|
+ conexionEstablecida := conexionDB()
|
|
|
+ borrarRegistro, err := conexionEstablecida.Prepare("UPDATE registros SET deleted_at = NOW() WHERE id = ?")
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ panic(err.Error())
|
|
|
+ }
|
|
|
+
|
|
|
+ borrarRegistro.Exec(idRegistro)
|
|
|
+ http.Redirect(w, r, "/", http.StatusSeeOther)
|
|
|
+}
|
|
|
+
|
|
|
+type Registro struct {
|
|
|
+ Id int
|
|
|
+ Nombre string
|
|
|
+ FechaNacimiento string
|
|
|
+ Genero string
|
|
|
+ NivelSocieconomico string
|
|
|
+ Neurodivergente string
|
|
|
+ GrupoEtnico string
|
|
|
+}
|
|
|
+
|
|
|
+func Inicio(w http.ResponseWriter, r *http.Request) {
|
|
|
+
|
|
|
+ conexionEstablecida := conexionDB()
|
|
|
+ registros, err := conexionEstablecida.Query("SELECT * FROM registros WHERE deleted_at IS NULL")
|
|
|
+ if err != nil {
|
|
|
+ log.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ registro := Registro{}
|
|
|
+ arregloRegistro := []Registro{}
|
|
|
+
|
|
|
+ for registros.Next() {
|
|
|
+ var Id int
|
|
|
+ var Nombre, Genero, NivelSocieconomico, Neurodivergente, GrupoEtnico, FechaNacimiento string
|
|
|
+ var DeletedAt sql.NullTime
|
|
|
+ err = registros.Scan(&Id, &Nombre, &FechaNacimiento, &Genero, &NivelSocieconomico, &Neurodivergente, &GrupoEtnico, &DeletedAt)
|
|
|
+ if err != nil {
|
|
|
+ log.Fatal(err)
|
|
|
+ }
|
|
|
+ registro.Id = Id
|
|
|
+ registro.Nombre = Nombre
|
|
|
+ registro.FechaNacimiento = FechaNacimiento
|
|
|
+ registro.Genero = Genero
|
|
|
+ registro.NivelSocieconomico = NivelSocieconomico
|
|
|
+ registro.Neurodivergente = Neurodivergente
|
|
|
+ registro.GrupoEtnico = GrupoEtnico
|
|
|
+ arregloRegistro = append(arregloRegistro, registro)
|
|
|
+ }
|
|
|
+
|
|
|
+ fmt.Println(arregloRegistro)
|
|
|
+ plantillas.ExecuteTemplate(w, "inicio", arregloRegistro)
|
|
|
+}
|
|
|
+
|
|
|
+func Editar(w http.ResponseWriter, r *http.Request) {
|
|
|
+ idRegistro := r.URL.Query().Get("id")
|
|
|
+ fmt.Println(idRegistro)
|
|
|
+
|
|
|
+ conexionEstablecida := conexionDB()
|
|
|
+ rows, err := conexionEstablecida.Query("SELECT Id, Nombre, FechaNacimiento, Genero, NivelSocieconomico, Neurodivergente, GrupoEtnico FROM registros WHERE Id=?", idRegistro)
|
|
|
+ if err != nil {
|
|
|
+ log.Fatal(err)
|
|
|
+ }
|
|
|
+ defer rows.Close()
|
|
|
+
|
|
|
+ registro := Registro{}
|
|
|
+
|
|
|
+ if rows.Next() {
|
|
|
+ err = rows.Scan(®istro.Id, ®istro.Nombre, ®istro.FechaNacimiento, ®istro.Genero, ®istro.NivelSocieconomico, ®istro.Neurodivergente, ®istro.GrupoEtnico)
|
|
|
+ if err != nil {
|
|
|
+ log.Fatal(err)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ fmt.Println(registro)
|
|
|
+ plantillas.ExecuteTemplate(w, "editar", registro)
|
|
|
+}
|
|
|
+
|
|
|
+func Formulario(w http.ResponseWriter, r *http.Request) {
|
|
|
+ plantillas.ExecuteTemplate(w, "formulario", nil)
|
|
|
+}
|
|
|
+
|
|
|
+func Insertar(w http.ResponseWriter, r *http.Request) {
|
|
|
+ if r.Method == "POST" {
|
|
|
+
|
|
|
+ Id := r.FormValue("Id")
|
|
|
+ Nombre := r.FormValue("nombre")
|
|
|
+ FechaNacimiento := r.FormValue("fdn")
|
|
|
+ Genero := r.FormValue("genero")
|
|
|
+ NivelSocieconomico := r.FormValue("nivel_socioeconomico")
|
|
|
+ Neurodivergente := r.FormValue("neurodivergente")
|
|
|
+ GrupoEtnico := r.FormValue("grupo_etnico")
|
|
|
+
|
|
|
+ conexionEstablecida := conexionDB()
|
|
|
+
|
|
|
+ insertarRegistros, err := conexionEstablecida.Prepare("INSERT INTO registros (Id,Nombre, FechaNacimiento, Genero, NivelSocieconomico, Neurodivergente, GrupoEtnico) VALUES (?,?, ?, ?, ?, ?, ?)")
|
|
|
+ if err != nil {
|
|
|
+ http.Error(w, "Error al preparar la consulta: "+err.Error(), http.StatusInternalServerError)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer insertarRegistros.Close()
|
|
|
+
|
|
|
+ _, err = insertarRegistros.Exec(Id, Nombre, FechaNacimiento, Genero, NivelSocieconomico, Neurodivergente, GrupoEtnico)
|
|
|
+ if err != nil {
|
|
|
+ http.Error(w, "Error al ejecutar la consulta: "+err.Error(), http.StatusInternalServerError)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ http.Redirect(w, r, "/", http.StatusSeeOther)
|
|
|
+
|
|
|
+ } else {
|
|
|
+ http.Error(w, "Método no permitido", http.StatusMethodNotAllowed)
|
|
|
+ }
|
|
|
+}
|
|
|
+func Restaurar(w http.ResponseWriter, r *http.Request) {
|
|
|
+ idRegistro := r.URL.Query().Get("id")
|
|
|
+ fmt.Println(idRegistro)
|
|
|
+
|
|
|
+ conexionEstablecida := conexionDB()
|
|
|
+ restaurarRegistro, err := conexionEstablecida.Prepare("UPDATE registros SET deleted_at = NULL WHERE id = ?")
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ panic(err.Error())
|
|
|
+ }
|
|
|
+ restaurarRegistro.Exec(idRegistro)
|
|
|
+ http.Redirect(w, r, "/", http.StatusSeeOther)
|
|
|
+}
|
|
|
+
|
|
|
+func Actualizar(w http.ResponseWriter, r *http.Request) {
|
|
|
+ if r.Method == "POST" {
|
|
|
+ Id := r.FormValue("Id")
|
|
|
+ Nombre := r.FormValue("nombre")
|
|
|
+ FechaNacimiento := r.FormValue("fdn")
|
|
|
+ Genero := r.FormValue("genero")
|
|
|
+ NivelSocieconomico := r.FormValue("nivel_socioeconomico")
|
|
|
+ Neurodivergente := r.FormValue("neurodivergente")
|
|
|
+ GrupoEtnico := r.FormValue("grupo_etnico")
|
|
|
+
|
|
|
+ if Id == "" || Nombre == "" || FechaNacimiento == "" || Genero == "" || NivelSocieconomico == "" || Neurodivergente == "" || GrupoEtnico == "" {
|
|
|
+ http.Error(w, "Todos los campos son obligatorios", http.StatusBadRequest)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ conexionEstablecida := conexionDB()
|
|
|
+ modificarRegistros, err := conexionEstablecida.Prepare(" UPDATE registros SET Nombre=?, FechaNacimiento=?, Genero=?, NivelSocieconomico=?, Neurodivergente=?, GrupoEtnico=? WHERE Id=?")
|
|
|
+ if err != nil {
|
|
|
+ http.Error(w, "Error al preparar la consulta: "+err.Error(), http.StatusInternalServerError)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer modificarRegistros.Close()
|
|
|
+ _, err = modificarRegistros.Exec(Nombre, FechaNacimiento, Genero, NivelSocieconomico, Neurodivergente, GrupoEtnico, Id)
|
|
|
+ if err != nil {
|
|
|
+ http.Error(w, "Error al ejecutar la consulta: "+err.Error(), http.StatusInternalServerError)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ http.Redirect(w, r, "/", http.StatusSeeOther)
|
|
|
+
|
|
|
+ } else {
|
|
|
+ http.Error(w, "Método no permitido", http.StatusMethodNotAllowed)
|
|
|
+ }
|
|
|
+}
|