//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 }
func guadarImagen(c *gin.Context, p *modelo.Prenda) { file, _, err := c.Request.FormFile("foto") if err != nil { c.String(http.StatusSeeOther, "Sin imagen") return } defer file.Close() data, _ := ioutil.ReadAll(file) ruta := "/img/foto" + p.ID.Hex() + ".png" p.Foto = ruta out, err := os.Create("public" + p.Foto) if err != nil { c.String(http.StatusTemporaryRedirect, err.Error()) return } _, err = out.Write(data) if err != nil { c.String(http.StatusTemporaryRedirect, err.Error()) return } defer out.Close() }
//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 } }