package web

import (
	"io"
	"net/http"

	"github.com/gorilla/mux"

	"github.com/bouncepaw/mycorrhiza/shroom"
	"github.com/bouncepaw/mycorrhiza/user"
	"github.com/bouncepaw/mycorrhiza/util"
	"github.com/bouncepaw/mycorrhiza/l18n"
	"github.com/bouncepaw/mycorrhiza/views"
)

func initSearch(r *mux.Router) {
	r.HandleFunc("/title-search/", handlerTitleSearch)
	r.HandleFunc("/title-search-json/", handlerTitleSearchJSON)
}

func handlerTitleSearch(w http.ResponseWriter, rq *http.Request) {
	util.PrepareRq(rq)
	_ = rq.ParseForm()
	var (
		query = rq.FormValue("q")
		u     = user.FromRequest(rq)
		lc    = l18n.FromRequest(rq)
	)
	w.WriteHeader(http.StatusOK)
	_, _ = io.WriteString(
		w,
		views.BaseHTML(
			lc.Get("ui.title_search_title", &l18n.Replacements{"query": query}),
			views.TitleSearchHTML(query, shroom.YieldHyphaNamesContainingString, lc),
			lc,
			u,
		),
	)
}

func handlerTitleSearchJSON(w http.ResponseWriter, rq *http.Request) {
	util.PrepareRq(rq)
	_ = rq.ParseForm()
	query := rq.FormValue("q")
	w.WriteHeader(http.StatusOK)
	_, _ = io.WriteString(
		w,
		views.TitleSearchJSON(query, shroom.YieldHyphaNamesContainingString),
	)
}