58 lines
1.4 KiB
Go
58 lines
1.4 KiB
Go
package person
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"strconv"
|
|
|
|
"github.com/gorilla/mux"
|
|
"sismedika.com/sas/westone/services/auth"
|
|
"sismedika.com/sas/westone/types"
|
|
"sismedika.com/sas/westone/utils"
|
|
)
|
|
|
|
type Handler struct {
|
|
store types.PersonStore
|
|
terminology types.TerminologyStore
|
|
}
|
|
|
|
func NewHandler(store types.PersonStore, terminology types.TerminologyStore) *Handler {
|
|
return &Handler{store: store, terminology: terminology}
|
|
}
|
|
|
|
func (h *Handler) RegisterRoutes(router *mux.Router) {
|
|
personroute := router.PathPrefix("/mdperson").Subrouter()
|
|
personroute.Use(auth.AuthMiddleware)
|
|
|
|
personroute.HandleFunc("/get/{personID}", h.handleGetPersonByID).Methods(http.MethodGet)
|
|
}
|
|
|
|
func (h *Handler) handleGetPersonByID(w http.ResponseWriter, r *http.Request) {
|
|
vars := mux.Vars(r)
|
|
param, ok := vars["personID"]
|
|
if !ok {
|
|
utils.WriteError(w, http.StatusBadRequest, fmt.Errorf("missing params person id"))
|
|
return
|
|
}
|
|
|
|
personID, err := strconv.Atoi(param)
|
|
if err != nil {
|
|
utils.WriteError(w, http.StatusBadRequest, fmt.Errorf("invalid params person id"))
|
|
return
|
|
}
|
|
|
|
person, err := h.store.GetPersonByID(personID)
|
|
if err != nil {
|
|
utils.WriteError(w, http.StatusInternalServerError, err)
|
|
return
|
|
}
|
|
|
|
json, err := h.getDisplayTerminology(*person)
|
|
if err != nil {
|
|
utils.WriteError(w, http.StatusInternalServerError, err)
|
|
return
|
|
}
|
|
|
|
utils.WriteJSON(w, http.StatusOK, json)
|
|
}
|