//GenerarMejorCombinacion se encarga de buscar cada una de las prendas por color y birllo para generar una combinacion. func GenerarMejorCombinacion(usuarioID string) (prendas [][]modelo.Prenda) { u := modelo.Usuario{ID: bson.ObjectIdHex(usuarioID)} u.BuscarPorID() mejores := genetico.Genetico(u.ConsultarColoresPrendas()) for _, mejor := range mejores { var combinacion []modelo.Prenda for i, color := range mejor.Genotipo { prenda := modelo.Prenda{} prenda.Brillo = color.Brillo prenda.Color.Tono = color.Tono switch i { case 0: prenda.TipoPrenda.Nombre = "Calzado" case 1: prenda.TipoPrenda.Nombre = "Pantalon/Falda" case 2: prenda.TipoPrenda.Nombre = "Playera" case 3: prenda.TipoPrenda.Nombre = "Chamarra" } prenda.BuscarPorBrilloTono(u.Prendas) combinacion = append(combinacion, prenda) } prendas = append(prendas, combinacion) } return prendas }
//Login es la función que se encarga de comprobar las credenciales de los usuarios. func Login(html *template.Template) gin.HandlerFunc { return func(c *gin.Context) { session := sessions.Default(c) usuario := modelo.Usuario{} c.Bind(&usuario) isOk := usuario.IniciarSesion() if !isOk { session.Set("UsuarioID", "0") } session.Set("UsuarioID", usuario.ID.Hex()) session.Save() c.Redirect(http.StatusSeeOther, "/") return } }
//RegistroUsuario procesa los datos recibidos del formulario. func RegistroUsuario() gin.HandlerFunc { return func(c *gin.Context) { var u modelo.Usuario if c.Bind(&u) == nil { if u.Registrar() { //Correcto session := sessions.Default(c) session.Set("UsuarioID", u.ID.Hex()) session.Save() c.Redirect(http.StatusSeeOther, "/") return } //Algo salio mal c.String(http.StatusInternalServerError, "No se pudo registrar") fmt.Println("No registrado ", u) } else { c.Redirect(http.StatusSeeOther, "/") fmt.Println("Datos incorrectos") } } }
//RegistroPrendaPOST recibe el formulario y se encarga de registrarlo en la BD. func RegistroPrendaPOST() gin.HandlerFunc { return func(c *gin.Context) { usuarioID := GetSession(sessions.Default(c).Get("UsuarioID")) if usuarioID != "0" { var p modelo.Prenda if c.Bind(&p) == nil { u := modelo.Usuario{ID: usuarioID} if u.BuscarPorID() { p.ID = bson.NewObjectId() p.Color.BuscarPorTono() p.Clima.ID = bson.ObjectIdHex(convertirID(c.PostForm("clima"))) p.Clima.BuscarPorID() p.TipoPrenda.ID = bson.ObjectIdHex(convertirID(c.PostForm("tipoPrenda"))) p.TipoPrenda.BuscarPorID() p.Ocasion.ID = bson.ObjectIdHex(convertirID(c.PostForm("ocasion"))) p.Ocasion.BuscarPorID() guadarImagen(c, &p) u.Prendas = append(u.Prendas, p) if u.Modificar() { //BIEN fmt.Println(u) } else { fmt.Println("ALGO MAL", u) } } else { //No se encontró el usuario D: fmt.Println(u) } } else { fmt.Println("Algo salió mal") } return } c.Redirect(302, "/") return } }