package Users

import (
	"encoding/json"
	"net/http"
	"net/url"

	"git.tovijaeschke.xyz/tovi/Envelope/Backend/Database"
	"git.tovijaeschke.xyz/tovi/Envelope/Backend/Models"
)

// SearchUsers searches a for a user by username
func SearchUsers(w http.ResponseWriter, r *http.Request) {
	var (
		user        Models.User
		query       url.Values
		rawUsername []string
		username    string
		returnJSON  []byte
		ok          bool
		err         error
	)

	query = r.URL.Query()
	rawUsername, ok = query["username"]
	if !ok {
		http.Error(w, "Not Found", http.StatusNotFound)
		return
	}

	if len(rawUsername) != 1 {
		http.Error(w, "Not Found", http.StatusNotFound)
		return
	}

	username = rawUsername[0]

	user, err = Database.GetUserByUsername(username)
	if err != nil {
		http.Error(w, "Not Found", http.StatusNotFound)
		return
	}

	user.Password = ""
	user.AsymmetricPrivateKey = ""

	returnJSON, err = json.MarshalIndent(user, "", "  ")
	if err != nil {
		panic(err)
		http.Error(w, "Not Found", http.StatusNotFound)
		return
	}

	w.WriteHeader(http.StatusOK)
	w.Write(returnJSON)
}