main.go 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. package main
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "log"
  6. "net/http"
  7. "text/template"
  8. _ "github.com/go-sql-driver/mysql"
  9. )
  10. func conexionDB() (conexion *sql.DB) {
  11. Driver := "mysql"
  12. Usuario := "root"
  13. Contraseña := ""
  14. Nombre := "sistema"
  15. conexion, err := sql.Open(Driver, Usuario+":"+Contraseña+"@tcp(127.0.0.1)/"+Nombre)
  16. if err != nil {
  17. panic(err.Error())
  18. }
  19. return conexion
  20. }
  21. var plantillas = template.Must(template.ParseGlob("plantillas/*"))
  22. func main() {
  23. http.HandleFunc("/", Inicio)
  24. http.HandleFunc("/formulario", Formulario)
  25. http.HandleFunc("/insertar", Insertar)
  26. http.HandleFunc("/borrar", Borrar)
  27. http.HandleFunc("/editar", Editar)
  28. http.HandleFunc("/actualizar", Actualizar)
  29. log.Println("Servidor corriendo")
  30. http.ListenAndServe(":8080", nil)
  31. }
  32. func Borrar(w http.ResponseWriter, r *http.Request) {
  33. idRegistro := r.URL.Query().Get("id")
  34. fmt.Println(idRegistro)
  35. conexionEstablecida := conexionDB()
  36. borrarRegistro, err := conexionEstablecida.Prepare("UPDATE registros SET deleted_at = NOW() WHERE id = ?")
  37. if err != nil {
  38. panic(err.Error())
  39. }
  40. borrarRegistro.Exec(idRegistro)
  41. http.Redirect(w, r, "/", http.StatusSeeOther)
  42. }
  43. type Registro struct {
  44. Id int
  45. Nombre string
  46. FechaNacimiento string
  47. Genero string
  48. NivelSocieconomico string
  49. Neurodivergente string
  50. GrupoEtnico string
  51. }
  52. func Inicio(w http.ResponseWriter, r *http.Request) {
  53. conexionEstablecida := conexionDB()
  54. registros, err := conexionEstablecida.Query("SELECT * FROM registros WHERE deleted_at IS NULL")
  55. if err != nil {
  56. log.Fatal(err)
  57. }
  58. registro := Registro{}
  59. arregloRegistro := []Registro{}
  60. for registros.Next() {
  61. var Id int
  62. var Nombre, Genero, NivelSocieconomico, Neurodivergente, GrupoEtnico, FechaNacimiento string
  63. var DeletedAt sql.NullTime
  64. err = registros.Scan(&Id, &Nombre, &FechaNacimiento, &Genero, &NivelSocieconomico, &Neurodivergente, &GrupoEtnico, &DeletedAt)
  65. if err != nil {
  66. log.Fatal(err)
  67. }
  68. registro.Id = Id
  69. registro.Nombre = Nombre
  70. registro.FechaNacimiento = FechaNacimiento
  71. registro.Genero = Genero
  72. registro.NivelSocieconomico = NivelSocieconomico
  73. registro.Neurodivergente = Neurodivergente
  74. registro.GrupoEtnico = GrupoEtnico
  75. arregloRegistro = append(arregloRegistro, registro)
  76. }
  77. fmt.Println(arregloRegistro)
  78. plantillas.ExecuteTemplate(w, "inicio", arregloRegistro)
  79. }
  80. func Editar(w http.ResponseWriter, r *http.Request) {
  81. idRegistro := r.URL.Query().Get("id")
  82. fmt.Println(idRegistro)
  83. conexionEstablecida := conexionDB()
  84. rows, err := conexionEstablecida.Query("SELECT Id, Nombre, FechaNacimiento, Genero, NivelSocieconomico, Neurodivergente, GrupoEtnico FROM registros WHERE Id=?", idRegistro)
  85. if err != nil {
  86. log.Fatal(err)
  87. }
  88. defer rows.Close()
  89. registro := Registro{}
  90. if rows.Next() {
  91. err = rows.Scan(&registro.Id, &registro.Nombre, &registro.FechaNacimiento, &registro.Genero, &registro.NivelSocieconomico, &registro.Neurodivergente, &registro.GrupoEtnico)
  92. if err != nil {
  93. log.Fatal(err)
  94. }
  95. }
  96. fmt.Println(registro)
  97. plantillas.ExecuteTemplate(w, "editar", registro)
  98. }
  99. func Formulario(w http.ResponseWriter, r *http.Request) {
  100. plantillas.ExecuteTemplate(w, "formulario", nil)
  101. }
  102. func Insertar(w http.ResponseWriter, r *http.Request) {
  103. if r.Method == "POST" {
  104. Id := r.FormValue("Id")
  105. Nombre := r.FormValue("nombre")
  106. FechaNacimiento := r.FormValue("fdn")
  107. Genero := r.FormValue("genero")
  108. NivelSocieconomico := r.FormValue("nivel_socioeconomico")
  109. Neurodivergente := r.FormValue("neurodivergente")
  110. GrupoEtnico := r.FormValue("grupo_etnico")
  111. conexionEstablecida := conexionDB()
  112. insertarRegistros, err := conexionEstablecida.Prepare("INSERT INTO registros (Id,Nombre, FechaNacimiento, Genero, NivelSocieconomico, Neurodivergente, GrupoEtnico) VALUES (?,?, ?, ?, ?, ?, ?)")
  113. if err != nil {
  114. http.Error(w, "Error al preparar la consulta: "+err.Error(), http.StatusInternalServerError)
  115. return
  116. }
  117. defer insertarRegistros.Close()
  118. _, err = insertarRegistros.Exec(Id, Nombre, FechaNacimiento, Genero, NivelSocieconomico, Neurodivergente, GrupoEtnico)
  119. if err != nil {
  120. http.Error(w, "Error al ejecutar la consulta: "+err.Error(), http.StatusInternalServerError)
  121. return
  122. }
  123. http.Redirect(w, r, "/", http.StatusSeeOther)
  124. } else {
  125. http.Error(w, "Método no permitido", http.StatusMethodNotAllowed)
  126. }
  127. }
  128. func Restaurar(w http.ResponseWriter, r *http.Request) {
  129. idRegistro := r.URL.Query().Get("id")
  130. fmt.Println(idRegistro)
  131. conexionEstablecida := conexionDB()
  132. restaurarRegistro, err := conexionEstablecida.Prepare("UPDATE registros SET deleted_at = NULL WHERE id = ?")
  133. if err != nil {
  134. panic(err.Error())
  135. }
  136. restaurarRegistro.Exec(idRegistro)
  137. http.Redirect(w, r, "/", http.StatusSeeOther)
  138. }
  139. func Actualizar(w http.ResponseWriter, r *http.Request) {
  140. if r.Method == "POST" {
  141. Id := r.FormValue("Id")
  142. Nombre := r.FormValue("nombre")
  143. FechaNacimiento := r.FormValue("fdn")
  144. Genero := r.FormValue("genero")
  145. NivelSocieconomico := r.FormValue("nivel_socioeconomico")
  146. Neurodivergente := r.FormValue("neurodivergente")
  147. GrupoEtnico := r.FormValue("grupo_etnico")
  148. if Id == "" || Nombre == "" || FechaNacimiento == "" || Genero == "" || NivelSocieconomico == "" || Neurodivergente == "" || GrupoEtnico == "" {
  149. http.Error(w, "Todos los campos son obligatorios", http.StatusBadRequest)
  150. return
  151. }
  152. conexionEstablecida := conexionDB()
  153. modificarRegistros, err := conexionEstablecida.Prepare(" UPDATE registros SET Nombre=?, FechaNacimiento=?, Genero=?, NivelSocieconomico=?, Neurodivergente=?, GrupoEtnico=? WHERE Id=?")
  154. if err != nil {
  155. http.Error(w, "Error al preparar la consulta: "+err.Error(), http.StatusInternalServerError)
  156. return
  157. }
  158. defer modificarRegistros.Close()
  159. _, err = modificarRegistros.Exec(Nombre, FechaNacimiento, Genero, NivelSocieconomico, Neurodivergente, GrupoEtnico, Id)
  160. if err != nil {
  161. http.Error(w, "Error al ejecutar la consulta: "+err.Error(), http.StatusInternalServerError)
  162. return
  163. }
  164. http.Redirect(w, r, "/", http.StatusSeeOther)
  165. } else {
  166. http.Error(w, "Método no permitido", http.StatusMethodNotAllowed)
  167. }
  168. }