package staff import ( "fmt" "net/http" "github.com/go-playground/validator/v10" "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.StaffStore authStore types.OauthStore } func NewHandler(store types.StaffStore, authStore types.OauthStore) *Handler { return &Handler{store: store, authStore: authStore} } func (h *Handler) RegisterRoutes(router *mux.Router) { staffRoute := router.PathPrefix("/staff").Subrouter() staffRoute.Use(auth.WithAuthStore(h.authStore)) staffRoute.HandleFunc("/getstaff", h.handelGetStaff).Methods(http.MethodPost) staffRoute.HandleFunc("/", h.coba).Methods(http.MethodPost) } func (h *Handler) coba(w http.ResponseWriter, r *http.Request) { var payload types.GetStaffPayload if err := utils.ParseJSON(r, &payload); err != nil { utils.WriteError(w, http.StatusBadRequest, err) return } fmt.Printf("payload: %+v\n", payload) fmt.Printf("COBA") utils.WriteJSON(w, http.StatusOK, payload) } func (h *Handler) handelGetStaff(w http.ResponseWriter, r *http.Request) { var payload types.GetStaffPayload if err := utils.ParseJSON(r, &payload); err != nil { utils.WriteError(w, http.StatusBadRequest, err) return } if err := utils.Validate.Struct(payload); err != nil { erros := err.(validator.ValidationErrors) utils.WriteError(w, http.StatusBadRequest, fmt.Errorf("invalid payload: %v", erros)) return } response, err := h.store.GetStaff(payload.StaffName) if err != nil { utils.WriteError(w, http.StatusInternalServerError, err) return } utils.WriteJSON(w, http.StatusOK, response) }