Skip to content

Commit

Permalink
feat: adding get doctor and nurse
Browse files Browse the repository at this point in the history
  • Loading branch information
rulanugrh committed Mar 22, 2024
1 parent 2dd22b7 commit c20607b
Show file tree
Hide file tree
Showing 5 changed files with 115 additions and 0 deletions.
2 changes: 2 additions & 0 deletions api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ func (api *API) UserRoute(r *mux.Router) {
app.HandleFunc("/register", api.user.Register).Methods("POST")
app.HandleFunc("/login", api.user.Login).Methods("POST")
app.HandleFunc("/update", api.user.Update).Methods("PUT")
app.HandleFunc("/doctor", api.user.GotDoctor).Methods("GET")
app.HandleFunc("/nurse", api.user.GotNurse).Methods("GET")
}

func (api *API) KunjunganRoute(r *mux.Router) {
Expand Down
40 changes: 40 additions & 0 deletions api/http/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ type UserInterface interface {
Register(w http.ResponseWriter, r *http.Request)
Login(w http.ResponseWriter, r *http.Request)
Update(w http.ResponseWriter, r *http.Request)
GotDoctor(w http.ResponseWriter, r *http.Request)
GotNurse(w http.ResponseWriter, r *http.Request)
}

type user struct {
Expand Down Expand Up @@ -140,3 +142,41 @@ func(u *user) Update(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("success update user"))
return
}

func(u *user) GotDoctor(w http.ResponseWriter, r *http.Request) {
data, err := u.service.GotDoctor()
if err != nil {
u.gauge.UserHistory.With(prometheus.Labels{"code": "400", "method": "GET", "type": "get"}).Observe(time.Since(time.Now()).Seconds())

response := util.WriteJSON(util.BadRequest(err.Error()))
w.WriteHeader(400)
w.Write(response)
return
}

u.gauge.UserHistory.With(prometheus.Labels{"code": "200", "method": "GET", "type": "get"}).Observe(time.Since(time.Now()).Seconds())

response := util.WriteJSON(util.Created("success get doctor", data))
w.WriteHeader(200)
w.Write(response)
return
}

func(u *user) GotNurse(w http.ResponseWriter, r *http.Request) {
data, err := u.service.GotNurse()
if err != nil {
u.gauge.UserHistory.With(prometheus.Labels{"code": "400", "method": "GET", "type": "get"}).Observe(time.Since(time.Now()).Seconds())

response := util.WriteJSON(util.BadRequest(err.Error()))
w.WriteHeader(400)
w.Write(response)
return
}

u.gauge.UserHistory.With(prometheus.Labels{"code": "200", "method": "GET", "type": "get"}).Observe(time.Since(time.Now()).Seconds())

response := util.WriteJSON(util.Created("success get nurse", data))
w.WriteHeader(200)
w.Write(response)
return
}
1 change: 1 addition & 0 deletions internal/entity/domain/kunjungan.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import "gorm.io/gorm"
type Kunjungan struct {
gorm.Model
UserID uint `json:"user_id" form:"user_id" validate:"required"`
Doctor string `json:"doctor" from:"doctor" validate:"required"`
PenyakitID []uint `json:"penyakit_id" form:"penyakit_id" validate:"required"`
User User `json:"user" gorm:"foreignKey:UserID;references:ID"`
Penyakit []Penyakit `json:"penyakit" gorm:"foreignKey:PenyakitID;references:ID"`
Expand Down
24 changes: 24 additions & 0 deletions internal/repository/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import (
type UserInterface interface {
Create(req domain.UserRegister) (*domain.User, error)
Find(req domain.UserLogin) (*domain.User, error)
GetDoctor() (*[]domain.User, error)
GetNurse() (*[]domain.User, error)
Update(id uint, req domain.User) error
ListAll() (*[]domain.User, error)
Delete(id uint) error
Expand Down Expand Up @@ -88,3 +90,25 @@ func (u *user) Delete(id uint) error {

return nil
}

func(u *user) GetDoctor() (*[]domain.User, error) {
var model []domain.User
err := u.client.DB.Preload("Role").Where("id = ?", 2).Find(&model)

if err.RowsAffected == 0 {
return nil, util.NotFound()
}

return &model, nil
}

func(u *user) GetNurse() (*[]domain.User, error) {
var model []domain.User
err := u.client.DB.Preload("Role").Where("id = ?", 3).Find(&model)

if err.RowsAffected == 0 {
return nil, util.NotFound()
}

return &model, nil
}
48 changes: 48 additions & 0 deletions internal/service/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ type UserInterface interface {
Register(req domain.UserRegister) (*web.User, error)
Login(req domain.UserLogin) (*string, error)
Update(id uint, req domain.User) error
GotDoctor() (*[]web.User, error)
GotNurse() (*[]web.User, error)
}

type user struct {
Expand Down Expand Up @@ -100,3 +102,49 @@ func(u *user) Update(id uint, req domain.User) error {

return nil
}

func(u *user) GotDoctor() (*[]web.User, error) {
data, err := u.urepo.GetDoctor()
if err != nil {
return nil, util.Errors(err)
}

var response []web.User
for _, v := range *data {
result := web.User{
ID: v.ID,
Email: v.Email,
FName: v.FName,
LName: v.LName,
Age: v.Age,
Address: v.Address,
}

response = append(response, result)
}

return &response, nil
}

func(u *user) GotNurse() (*[]web.User, error) {
data, err := u.urepo.GetNurse()
if err != nil {
return nil, util.Errors(err)
}

var response []web.User
for _, v := range *data {
result := web.User{
ID: v.ID,
Email: v.Email,
FName: v.FName,
LName: v.LName,
Age: v.Age,
Address: v.Address,
}

response = append(response, result)
}

return &response, nil
}

0 comments on commit c20607b

Please sign in to comment.