Files
ris-backend-go/services/staff/staff.routes.go
2024-12-12 09:53:29 +07:00

62 lines
1.6 KiB
Go

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)
}