feat/authentication
+ moved pkg/auth-helper to internal/lib/auth + update AuthInfo + cleaning
This commit is contained in:
No files matched your search
@@ -5,7 +5,8 @@
|
|||||||
"payload-bad": "struktur data tidak sesuai standar",
|
"payload-bad": "struktur data tidak sesuai standar",
|
||||||
|
|
||||||
"auth-required": "butuh autentikasi",
|
"auth-required": "butuh autentikasi",
|
||||||
"auth-missingHeader": "Header autentikasi tidak ditemukan",
|
"auth-getData-failed": "gagal mengambil data user",
|
||||||
|
"auth-missingHeader": "header autentikasi tidak ditemukan",
|
||||||
"auth-forbidden": "tidak diijinkan",
|
"auth-forbidden": "tidak diijinkan",
|
||||||
"auth-login-success": "login berhasil",
|
"auth-login-success": "login berhasil",
|
||||||
"auth-login-incorrect": "Username atau Password Tidak Sesuai",
|
"auth-login-incorrect": "Username atau Password Tidak Sesuai",
|
||||||
|
|||||||
@@ -1,13 +1,16 @@
|
|||||||
package adime
|
package adime
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
// std
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
// internal - lib
|
||||||
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
|
// internal - domain
|
||||||
ecore "simrs-vx/internal/domain/base-entities/core"
|
ecore "simrs-vx/internal/domain/base-entities/core"
|
||||||
eem "simrs-vx/internal/domain/main-entities/employee"
|
eem "simrs-vx/internal/domain/main-entities/employee"
|
||||||
ee "simrs-vx/internal/domain/main-entities/encounter"
|
ee "simrs-vx/internal/domain/main-entities/encounter"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type CreateDto struct {
|
type CreateDto struct {
|
||||||
|
|||||||
@@ -1,16 +1,20 @@
|
|||||||
package chemo
|
package chemo
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
// std
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
// internal - lib
|
||||||
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
|
// internal - domain - references
|
||||||
|
erc "simrs-vx/internal/domain/references/common"
|
||||||
|
|
||||||
|
// internal - domain - main-entities
|
||||||
ecore "simrs-vx/internal/domain/base-entities/core"
|
ecore "simrs-vx/internal/domain/base-entities/core"
|
||||||
ee "simrs-vx/internal/domain/main-entities/encounter"
|
ee "simrs-vx/internal/domain/main-entities/encounter"
|
||||||
eun "simrs-vx/internal/domain/main-entities/unit"
|
eun "simrs-vx/internal/domain/main-entities/unit"
|
||||||
eus "simrs-vx/internal/domain/main-entities/user"
|
eus "simrs-vx/internal/domain/main-entities/user"
|
||||||
|
|
||||||
erc "simrs-vx/internal/domain/references/common"
|
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type CreateDto struct {
|
type CreateDto struct {
|
||||||
|
|||||||
@@ -1,14 +1,19 @@
|
|||||||
package consultation
|
package consultation
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
// std
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
// internal - lib
|
||||||
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
|
// internal - domain - base-entities
|
||||||
ecore "simrs-vx/internal/domain/base-entities/core"
|
ecore "simrs-vx/internal/domain/base-entities/core"
|
||||||
|
|
||||||
|
// internal - domain - main-entities
|
||||||
ed "simrs-vx/internal/domain/main-entities/doctor"
|
ed "simrs-vx/internal/domain/main-entities/doctor"
|
||||||
ee "simrs-vx/internal/domain/main-entities/encounter"
|
ee "simrs-vx/internal/domain/main-entities/encounter"
|
||||||
eu "simrs-vx/internal/domain/main-entities/unit"
|
eu "simrs-vx/internal/domain/main-entities/unit"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type CreateDto struct {
|
type CreateDto struct {
|
||||||
|
|||||||
@@ -1,13 +1,18 @@
|
|||||||
package deviceorder
|
package deviceorder
|
||||||
|
|
||||||
import (
|
import (
|
||||||
ecore "simrs-vx/internal/domain/base-entities/core"
|
// internal - lib
|
||||||
ed "simrs-vx/internal/domain/main-entities/doctor"
|
pa "simrs-vx/internal/lib/auth"
|
||||||
ee "simrs-vx/internal/domain/main-entities/encounter"
|
|
||||||
|
|
||||||
|
// internal - domain - base-entities
|
||||||
|
ecore "simrs-vx/internal/domain/base-entities/core"
|
||||||
|
|
||||||
|
// internal - domain - references
|
||||||
erc "simrs-vx/internal/domain/references/common"
|
erc "simrs-vx/internal/domain/references/common"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
// internal - domain - main-entities
|
||||||
|
ed "simrs-vx/internal/domain/main-entities/doctor"
|
||||||
|
ee "simrs-vx/internal/domain/main-entities/encounter"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CreateDto struct {
|
type CreateDto struct {
|
||||||
|
|||||||
@@ -1,9 +1,20 @@
|
|||||||
package encounter
|
package encounter
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
// std
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
// internal - lib
|
||||||
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
|
// internal - domain - base-entities
|
||||||
ecore "simrs-vx/internal/domain/base-entities/core"
|
ecore "simrs-vx/internal/domain/base-entities/core"
|
||||||
|
|
||||||
|
// internal - domain - references
|
||||||
|
erc "simrs-vx/internal/domain/references/common"
|
||||||
|
ere "simrs-vx/internal/domain/references/encounter"
|
||||||
|
|
||||||
|
// internal - domain - main-entities
|
||||||
evs "simrs-vx/internal/domain/bpjs-entities/vclaim-sep"
|
evs "simrs-vx/internal/domain/bpjs-entities/vclaim-sep"
|
||||||
ea "simrs-vx/internal/domain/main-entities/appointment"
|
ea "simrs-vx/internal/domain/main-entities/appointment"
|
||||||
ed "simrs-vx/internal/domain/main-entities/doctor"
|
ed "simrs-vx/internal/domain/main-entities/doctor"
|
||||||
@@ -13,11 +24,6 @@ import (
|
|||||||
es "simrs-vx/internal/domain/main-entities/specialist"
|
es "simrs-vx/internal/domain/main-entities/specialist"
|
||||||
ess "simrs-vx/internal/domain/main-entities/subspecialist"
|
ess "simrs-vx/internal/domain/main-entities/subspecialist"
|
||||||
eu "simrs-vx/internal/domain/main-entities/unit"
|
eu "simrs-vx/internal/domain/main-entities/unit"
|
||||||
|
|
||||||
erc "simrs-vx/internal/domain/references/common"
|
|
||||||
ere "simrs-vx/internal/domain/references/encounter"
|
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type CreateDto struct {
|
type CreateDto struct {
|
||||||
@@ -48,6 +54,8 @@ type ReadListDto struct {
|
|||||||
FilterDto
|
FilterDto
|
||||||
Includes string `json:"includes"`
|
Includes string `json:"includes"`
|
||||||
Pagination ecore.Pagination
|
Pagination ecore.Pagination
|
||||||
|
|
||||||
|
pa.AuthInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
type FilterDto struct {
|
type FilterDto struct {
|
||||||
|
|||||||
@@ -1,13 +1,18 @@
|
|||||||
package materialorder
|
package materialorder
|
||||||
|
|
||||||
import (
|
import (
|
||||||
ecore "simrs-vx/internal/domain/base-entities/core"
|
// internal - lib
|
||||||
ed "simrs-vx/internal/domain/main-entities/doctor"
|
pa "simrs-vx/internal/lib/auth"
|
||||||
ee "simrs-vx/internal/domain/main-entities/encounter"
|
|
||||||
|
|
||||||
|
// internal - domain - base-entities
|
||||||
|
ecore "simrs-vx/internal/domain/base-entities/core"
|
||||||
|
|
||||||
|
// internal - domain - references
|
||||||
erc "simrs-vx/internal/domain/references/common"
|
erc "simrs-vx/internal/domain/references/common"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
// internal - domain - main-entities
|
||||||
|
ed "simrs-vx/internal/domain/main-entities/doctor"
|
||||||
|
ee "simrs-vx/internal/domain/main-entities/encounter"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CreateDto struct {
|
type CreateDto struct {
|
||||||
|
|||||||
@@ -1,15 +1,22 @@
|
|||||||
package mcuorder
|
package mcuorder
|
||||||
|
|
||||||
import (
|
import (
|
||||||
ecore "simrs-vx/internal/domain/base-entities/core"
|
// std
|
||||||
ed "simrs-vx/internal/domain/main-entities/doctor"
|
|
||||||
ee "simrs-vx/internal/domain/main-entities/encounter"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
// internal - lib
|
||||||
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
|
// internal - domain - base-entities
|
||||||
|
ecore "simrs-vx/internal/domain/base-entities/core"
|
||||||
|
|
||||||
|
// internal - domain - references
|
||||||
ercl "simrs-vx/internal/domain/references/clinical"
|
ercl "simrs-vx/internal/domain/references/clinical"
|
||||||
erc "simrs-vx/internal/domain/references/common"
|
erc "simrs-vx/internal/domain/references/common"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
// internal - domain - main-entities
|
||||||
|
ed "simrs-vx/internal/domain/main-entities/doctor"
|
||||||
|
ee "simrs-vx/internal/domain/main-entities/encounter"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CreateDto struct {
|
type CreateDto struct {
|
||||||
@@ -20,7 +27,7 @@ type CreateDto struct {
|
|||||||
ExaminationDate *time.Time `json:"examinationDate"`
|
ExaminationDate *time.Time `json:"examinationDate"`
|
||||||
Number uint8 `json:"number"`
|
Number uint8 `json:"number"`
|
||||||
Temperature float64 `json:"temperature"`
|
Temperature float64 `json:"temperature"`
|
||||||
McuUrgencyLevel_Code ercl.McuUrgencyLevelCode `json:"mcuUrgencyLevel_code""`
|
McuUrgencyLevel_Code ercl.McuUrgencyLevelCode `json:"mcuUrgencyLevel_code"`
|
||||||
|
|
||||||
pa.AuthInfo
|
pa.AuthInfo
|
||||||
}
|
}
|
||||||
@@ -39,7 +46,7 @@ type FilterDto struct {
|
|||||||
ExaminationDate *time.Time `json:"examinationDate"`
|
ExaminationDate *time.Time `json:"examinationDate"`
|
||||||
Number uint8 `json:"number"`
|
Number uint8 `json:"number"`
|
||||||
Temperature float64 `json:"temperature"`
|
Temperature float64 `json:"temperature"`
|
||||||
McuUrgencyLevel_Code ercl.McuUrgencyLevelCode `json:"mcuUrgencyLevel-code""`
|
McuUrgencyLevel_Code ercl.McuUrgencyLevelCode `json:"mcuUrgencyLevel-code"`
|
||||||
}
|
}
|
||||||
type ReadDetailDto struct {
|
type ReadDetailDto struct {
|
||||||
Id uint `json:"id"`
|
Id uint `json:"id"`
|
||||||
|
|||||||
@@ -1,12 +1,17 @@
|
|||||||
package medicationitem
|
package medicationitem
|
||||||
|
|
||||||
import (
|
import (
|
||||||
ecore "simrs-vx/internal/domain/base-entities/core"
|
// std
|
||||||
emi "simrs-vx/internal/domain/main-entities/medication-item"
|
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
|
||||||
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
// internal - lib
|
||||||
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
|
// internal - domain - base-entities
|
||||||
|
ecore "simrs-vx/internal/domain/base-entities/core"
|
||||||
|
|
||||||
|
// internal - domain - main-entities
|
||||||
|
emi "simrs-vx/internal/domain/main-entities/medication-item"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CreateDto struct {
|
type CreateDto struct {
|
||||||
|
|||||||
@@ -1,15 +1,21 @@
|
|||||||
package medication
|
package medication
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
// std
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
ecore "simrs-vx/internal/domain/base-entities/core"
|
// internal - lib
|
||||||
ee "simrs-vx/internal/domain/main-entities/encounter"
|
pa "simrs-vx/internal/lib/auth"
|
||||||
ep "simrs-vx/internal/domain/main-entities/pharmacist"
|
|
||||||
|
|
||||||
|
// internal - domain - base-entities
|
||||||
|
ecore "simrs-vx/internal/domain/base-entities/core"
|
||||||
|
|
||||||
|
// internal - domain - references
|
||||||
erc "simrs-vx/internal/domain/references/common"
|
erc "simrs-vx/internal/domain/references/common"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
// internal - domain - main-entities
|
||||||
|
ee "simrs-vx/internal/domain/main-entities/encounter"
|
||||||
|
ep "simrs-vx/internal/domain/main-entities/pharmacist"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CreateDto struct {
|
type CreateDto struct {
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import (
|
|||||||
ed "simrs-vx/internal/domain/main-entities/doctor"
|
ed "simrs-vx/internal/domain/main-entities/doctor"
|
||||||
ee "simrs-vx/internal/domain/main-entities/encounter"
|
ee "simrs-vx/internal/domain/main-entities/encounter"
|
||||||
|
|
||||||
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
erc "simrs-vx/internal/domain/references/common"
|
erc "simrs-vx/internal/domain/references/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -15,6 +17,8 @@ type CreateDto struct {
|
|||||||
Doctor_Id *uint `json:"doctor_id"`
|
Doctor_Id *uint `json:"doctor_id"`
|
||||||
IssuedAt *time.Time `json:"issuedAt"`
|
IssuedAt *time.Time `json:"issuedAt"`
|
||||||
Status_Code erc.DataStatusCode `json:"status_code"`
|
Status_Code erc.DataStatusCode `json:"status_code"`
|
||||||
|
|
||||||
|
pa.AuthInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
type ReadListDto struct {
|
type ReadListDto struct {
|
||||||
|
|||||||
@@ -1,13 +1,18 @@
|
|||||||
package sbar
|
package sbar
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
// std
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
// internal - lib
|
||||||
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
|
// internal - domain - base-entities
|
||||||
ecore "simrs-vx/internal/domain/base-entities/core"
|
ecore "simrs-vx/internal/domain/base-entities/core"
|
||||||
|
|
||||||
|
// internal - domain - main-entities
|
||||||
eem "simrs-vx/internal/domain/main-entities/employee"
|
eem "simrs-vx/internal/domain/main-entities/employee"
|
||||||
ee "simrs-vx/internal/domain/main-entities/encounter"
|
ee "simrs-vx/internal/domain/main-entities/encounter"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type CreateDto struct {
|
type CreateDto struct {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
|
|
||||||
erc "simrs-vx/internal/domain/references/clinical"
|
erc "simrs-vx/internal/domain/references/clinical"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
pa "simrs-vx/internal/lib/auth"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CreateDto struct {
|
type CreateDto struct {
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
e "simrs-vx/internal/domain/main-entities/adime"
|
e "simrs-vx/internal/domain/main-entities/adime"
|
||||||
u "simrs-vx/internal/use-case/main-use-case/adime"
|
u "simrs-vx/internal/use-case/main-use-case/adime"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
d "github.com/karincake/dodol"
|
d "github.com/karincake/dodol"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import (
|
|||||||
m "simrs-vx/internal/domain/main-entities/user"
|
m "simrs-vx/internal/domain/main-entities/user"
|
||||||
s "simrs-vx/internal/use-case/main-use-case/authentication"
|
s "simrs-vx/internal/use-case/main-use-case/authentication"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
pa "simrs-vx/internal/lib/auth"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Login(w http.ResponseWriter, r *http.Request) {
|
func Login(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import (
|
|||||||
|
|
||||||
u "simrs-vx/internal/use-case/main-use-case/chemo"
|
u "simrs-vx/internal/use-case/main-use-case/chemo"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
d "github.com/karincake/dodol"
|
d "github.com/karincake/dodol"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
e "simrs-vx/internal/domain/main-entities/consultation"
|
e "simrs-vx/internal/domain/main-entities/consultation"
|
||||||
u "simrs-vx/internal/use-case/main-use-case/consultation"
|
u "simrs-vx/internal/use-case/main-use-case/consultation"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
d "github.com/karincake/dodol"
|
d "github.com/karincake/dodol"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
e "simrs-vx/internal/domain/main-entities/device-order"
|
e "simrs-vx/internal/domain/main-entities/device-order"
|
||||||
u "simrs-vx/internal/use-case/main-use-case/device-order"
|
u "simrs-vx/internal/use-case/main-use-case/device-order"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
d "github.com/karincake/dodol"
|
d "github.com/karincake/dodol"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import (
|
|||||||
u "simrs-vx/internal/use-case/main-use-case/encounter"
|
u "simrs-vx/internal/use-case/main-use-case/encounter"
|
||||||
|
|
||||||
erc "simrs-vx/internal/domain/references/common"
|
erc "simrs-vx/internal/domain/references/common"
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
d "github.com/karincake/dodol"
|
d "github.com/karincake/dodol"
|
||||||
)
|
)
|
||||||
@@ -36,7 +36,12 @@ func (obj myBase) Create(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (obj myBase) GetList(w http.ResponseWriter, r *http.Request) {
|
func (obj myBase) GetList(w http.ResponseWriter, r *http.Request) {
|
||||||
|
authInfo, err := pa.GetAuthInfo(r)
|
||||||
|
if err != nil {
|
||||||
|
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": err.Error()}, nil)
|
||||||
|
}
|
||||||
dto := e.ReadListDto{}
|
dto := e.ReadListDto{}
|
||||||
|
dto.AuthInfo = *authInfo
|
||||||
sf.UrlQueryParam(&dto, *r.URL)
|
sf.UrlQueryParam(&dto, *r.URL)
|
||||||
res, err := u.ReadList(dto)
|
res, err := u.ReadList(dto)
|
||||||
rw.DataResponse(w, res, err)
|
rw.DataResponse(w, res, err)
|
||||||
|
|||||||
@@ -135,6 +135,19 @@ func SetRoutes() http.Handler {
|
|||||||
hc.RegCrud(r, "/v1/prescription-item", prescriptionitem.O)
|
hc.RegCrud(r, "/v1/prescription-item", prescriptionitem.O)
|
||||||
hc.RegCrud(r, "/v1/device-order-item", deviceorderitem.O)
|
hc.RegCrud(r, "/v1/device-order-item", deviceorderitem.O)
|
||||||
hc.RegCrud(r, "/v1/material-order-item", materialorderitem.O)
|
hc.RegCrud(r, "/v1/material-order-item", materialorderitem.O)
|
||||||
|
|
||||||
|
hk.GroupRoutes("/v1/encounter", r, auth.GuardMW, hk.MapHandlerFunc{
|
||||||
|
"GET /": encounter.O.GetList,
|
||||||
|
"GET /{id}": encounter.O.GetDetail,
|
||||||
|
"POST /": encounter.O.Create,
|
||||||
|
"PATCH /{id}": encounter.O.Update,
|
||||||
|
"DELETE /{id}": encounter.O.Delete,
|
||||||
|
"PATCH /{id}/checkout": encounter.O.CheckOut,
|
||||||
|
"PATCH /{id}/proccess": encounter.O.Process,
|
||||||
|
"PATCH /{id}/cancel": encounter.O.Cancel,
|
||||||
|
"PATCH /{id}/reject": encounter.O.Reject,
|
||||||
|
"PATCH /{id}/skip": encounter.O.Skip,
|
||||||
|
})
|
||||||
hk.GroupRoutes("/v1/mcu-order", r, auth.GuardMW, hk.MapHandlerFunc{
|
hk.GroupRoutes("/v1/mcu-order", r, auth.GuardMW, hk.MapHandlerFunc{
|
||||||
"GET /": mcuorder.O.GetList,
|
"GET /": mcuorder.O.GetList,
|
||||||
"GET /{id}": mcuorder.O.GetDetail,
|
"GET /{id}": mcuorder.O.GetDetail,
|
||||||
@@ -153,7 +166,7 @@ func SetRoutes() http.Handler {
|
|||||||
"PATCH /{id}/complete": mcuorderitem.O.Complete,
|
"PATCH /{id}/complete": mcuorderitem.O.Complete,
|
||||||
"PATCH /{id}/set-schedule": mcuorderitem.O.SetSchedule,
|
"PATCH /{id}/set-schedule": mcuorderitem.O.SetSchedule,
|
||||||
})
|
})
|
||||||
hk.GroupRoutes("/v1/prescription", r, hk.MapHandlerFunc{
|
hk.GroupRoutes("/v1/prescription", r, auth.GuardMW, hk.MapHandlerFunc{
|
||||||
"GET /": prescription.O.GetList,
|
"GET /": prescription.O.GetList,
|
||||||
"GET /{id}": prescription.O.GetDetail,
|
"GET /{id}": prescription.O.GetDetail,
|
||||||
"POST /": prescription.O.Create,
|
"POST /": prescription.O.Create,
|
||||||
@@ -161,7 +174,7 @@ func SetRoutes() http.Handler {
|
|||||||
"DELETE /{id}": prescription.O.Delete,
|
"DELETE /{id}": prescription.O.Delete,
|
||||||
"PATCH /{id}/approve": prescription.O.Approve,
|
"PATCH /{id}/approve": prescription.O.Approve,
|
||||||
})
|
})
|
||||||
hk.GroupRoutes("/v1/mcu-order-sub-item", r, hk.MapHandlerFunc{
|
hk.GroupRoutes("/v1/mcu-order-sub-item", r, auth.GuardMW, hk.MapHandlerFunc{
|
||||||
"GET /": mcuordersubitem.O.GetList,
|
"GET /": mcuordersubitem.O.GetList,
|
||||||
"GET /{id}": mcuordersubitem.O.GetDetail,
|
"GET /{id}": mcuordersubitem.O.GetDetail,
|
||||||
"POST /": mcuordersubitem.O.Create,
|
"POST /": mcuordersubitem.O.Create,
|
||||||
@@ -169,18 +182,6 @@ func SetRoutes() http.Handler {
|
|||||||
"DELETE /{id}": mcuordersubitem.O.Delete,
|
"DELETE /{id}": mcuordersubitem.O.Delete,
|
||||||
"PATCH /{id}/complete": mcuordersubitem.O.Complete,
|
"PATCH /{id}/complete": mcuordersubitem.O.Complete,
|
||||||
})
|
})
|
||||||
hk.GroupRoutes("/v1/encounter", r, auth.GuardMW, hk.MapHandlerFunc{
|
|
||||||
"GET /": encounter.O.GetList,
|
|
||||||
"GET /{id}": encounter.O.GetDetail,
|
|
||||||
"POST /": encounter.O.Create,
|
|
||||||
"PATCH /{id}": encounter.O.Update,
|
|
||||||
"DELETE /{id}": encounter.O.Delete,
|
|
||||||
"PATCH /{id}/checkout": encounter.O.CheckOut,
|
|
||||||
"PATCH /{id}/proccess": encounter.O.Process,
|
|
||||||
"PATCH /{id}/cancel": encounter.O.Cancel,
|
|
||||||
"PATCH /{id}/reject": encounter.O.Reject,
|
|
||||||
"PATCH /{id}/skip": encounter.O.Skip,
|
|
||||||
})
|
|
||||||
hk.GroupRoutes("/v1/medication", r, auth.GuardMW, hk.MapHandlerFunc{
|
hk.GroupRoutes("/v1/medication", r, auth.GuardMW, hk.MapHandlerFunc{
|
||||||
"GET /": medication.O.GetList,
|
"GET /": medication.O.GetList,
|
||||||
"GET /{id}": medication.O.GetDetail,
|
"GET /{id}": medication.O.GetDetail,
|
||||||
@@ -190,7 +191,7 @@ func SetRoutes() http.Handler {
|
|||||||
"PATCH /{id}/complete": medication.O.Complete,
|
"PATCH /{id}/complete": medication.O.Complete,
|
||||||
})
|
})
|
||||||
|
|
||||||
hk.GroupRoutes("/v1/medication-item", r, hk.MapHandlerFunc{
|
hk.GroupRoutes("/v1/medication-item", r, auth.GuardMW, hk.MapHandlerFunc{
|
||||||
"GET /": medicationitem.O.GetList,
|
"GET /": medicationitem.O.GetList,
|
||||||
"GET /{id}": medicationitem.O.GetDetail,
|
"GET /{id}": medicationitem.O.GetDetail,
|
||||||
"POST /": medicationitem.O.Create,
|
"POST /": medicationitem.O.Create,
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
e "simrs-vx/internal/domain/main-entities/material-order"
|
e "simrs-vx/internal/domain/main-entities/material-order"
|
||||||
u "simrs-vx/internal/use-case/main-use-case/material-order"
|
u "simrs-vx/internal/use-case/main-use-case/material-order"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
d "github.com/karincake/dodol"
|
d "github.com/karincake/dodol"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
e "simrs-vx/internal/domain/main-entities/mcu-order"
|
e "simrs-vx/internal/domain/main-entities/mcu-order"
|
||||||
u "simrs-vx/internal/use-case/main-use-case/mcu-order"
|
u "simrs-vx/internal/use-case/main-use-case/mcu-order"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
d "github.com/karincake/dodol"
|
d "github.com/karincake/dodol"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
rw "github.com/karincake/risoles"
|
rw "github.com/karincake/risoles"
|
||||||
sf "github.com/karincake/semprit"
|
sf "github.com/karincake/semprit"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
e "simrs-vx/internal/domain/main-entities/medication-item-dist"
|
e "simrs-vx/internal/domain/main-entities/medication-item-dist"
|
||||||
u "simrs-vx/internal/use-case/main-use-case/medication-item-dist"
|
u "simrs-vx/internal/use-case/main-use-case/medication-item-dist"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
rw "github.com/karincake/risoles"
|
rw "github.com/karincake/risoles"
|
||||||
sf "github.com/karincake/semprit"
|
sf "github.com/karincake/semprit"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
e "simrs-vx/internal/domain/main-entities/medication"
|
e "simrs-vx/internal/domain/main-entities/medication"
|
||||||
u "simrs-vx/internal/use-case/main-use-case/medication"
|
u "simrs-vx/internal/use-case/main-use-case/medication"
|
||||||
|
|||||||
@@ -7,6 +7,9 @@ import (
|
|||||||
sf "github.com/karincake/semprit"
|
sf "github.com/karincake/semprit"
|
||||||
|
|
||||||
// ua "github.com/karincake/tumpeng/auth/svc"
|
// ua "github.com/karincake/tumpeng/auth/svc"
|
||||||
|
d "github.com/karincake/dodol"
|
||||||
|
|
||||||
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
e "simrs-vx/internal/domain/main-entities/prescription"
|
e "simrs-vx/internal/domain/main-entities/prescription"
|
||||||
u "simrs-vx/internal/use-case/main-use-case/prescription"
|
u "simrs-vx/internal/use-case/main-use-case/prescription"
|
||||||
@@ -21,6 +24,11 @@ func (obj myBase) Create(w http.ResponseWriter, r *http.Request) {
|
|||||||
if res := rw.ValidateStructByIOR(w, r.Body, &dto); !res {
|
if res := rw.ValidateStructByIOR(w, r.Body, &dto); !res {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
authInfo, err := pa.GetAuthInfo(r)
|
||||||
|
if err != nil {
|
||||||
|
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": err.Error()}, nil)
|
||||||
|
}
|
||||||
|
dto.AuthInfo = *authInfo
|
||||||
res, err := u.Create(dto)
|
res, err := u.Create(dto)
|
||||||
rw.DataResponse(w, res, err)
|
rw.DataResponse(w, res, err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
e "simrs-vx/internal/domain/main-entities/sbar"
|
e "simrs-vx/internal/domain/main-entities/sbar"
|
||||||
u "simrs-vx/internal/use-case/main-use-case/sbar"
|
u "simrs-vx/internal/use-case/main-use-case/sbar"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
d "github.com/karincake/dodol"
|
d "github.com/karincake/dodol"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
e "simrs-vx/internal/domain/main-entities/soapi"
|
e "simrs-vx/internal/domain/main-entities/soapi"
|
||||||
u "simrs-vx/internal/use-case/main-use-case/soapi"
|
u "simrs-vx/internal/use-case/main-use-case/soapi"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
pa "simrs-vx/internal/lib/auth"
|
||||||
|
|
||||||
d "github.com/karincake/dodol"
|
d "github.com/karincake/dodol"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -6,16 +6,23 @@ import (
|
|||||||
|
|
||||||
type AuthKey struct{}
|
type AuthKey struct{}
|
||||||
|
|
||||||
|
// const AuthKey = struct{}{}
|
||||||
type AuthInfo struct {
|
type AuthInfo struct {
|
||||||
Uuid string
|
Uuid string
|
||||||
User_Id uint
|
User_Id uint
|
||||||
User_Name string
|
User_Name string
|
||||||
User_ContractPosition_code string
|
User_ContractPosition_code string
|
||||||
Employee_Position_Code *string
|
Employee_Position_Code *string
|
||||||
|
Employee_Id *int
|
||||||
|
Doctor_Id *int
|
||||||
|
Nurse_Id *int
|
||||||
|
Midwife_Id *int
|
||||||
|
Nutritionist_Id *int
|
||||||
|
Laborant_Id *int
|
||||||
|
Pharmachist_Id *int
|
||||||
Intern_Position_Code *string
|
Intern_Position_Code *string
|
||||||
User_DivisionPositions []DivisionPosition
|
Roles []string
|
||||||
// User_DivisionPositions []DivisionPosition
|
// User_DivisionPositions []DivisionPosition
|
||||||
// User_Position_Code string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type DivisionPosition struct {
|
type DivisionPosition struct {
|
||||||
@@ -13,12 +13,13 @@ import (
|
|||||||
"simrs-vx/internal/domain/main-entities/intern"
|
"simrs-vx/internal/domain/main-entities/intern"
|
||||||
eu "simrs-vx/internal/domain/main-entities/user"
|
eu "simrs-vx/internal/domain/main-entities/user"
|
||||||
|
|
||||||
pa "simrs-vx/pkg/auth-helper"
|
pa "simrs-vx/internal/lib/auth"
|
||||||
el "simrs-vx/pkg/logger"
|
el "simrs-vx/pkg/logger"
|
||||||
p "simrs-vx/pkg/password"
|
p "simrs-vx/pkg/password"
|
||||||
|
|
||||||
ed "simrs-vx/internal/domain/main-entities/doctor"
|
ed "simrs-vx/internal/domain/main-entities/doctor"
|
||||||
ee "simrs-vx/internal/domain/main-entities/employee"
|
ee "simrs-vx/internal/domain/main-entities/employee"
|
||||||
|
em "simrs-vx/internal/domain/main-entities/midwife"
|
||||||
en "simrs-vx/internal/domain/main-entities/nurse"
|
en "simrs-vx/internal/domain/main-entities/nurse"
|
||||||
erc "simrs-vx/internal/domain/references/common"
|
erc "simrs-vx/internal/domain/references/common"
|
||||||
erg "simrs-vx/internal/domain/references/organization"
|
erg "simrs-vx/internal/domain/references/organization"
|
||||||
@@ -147,13 +148,21 @@ func GenToken(input eu.LoginDto) (*d.Data, error) {
|
|||||||
outputData["subspecialist_id"] = doctor.Subspecialist_Id
|
outputData["subspecialist_id"] = doctor.Subspecialist_Id
|
||||||
}
|
}
|
||||||
case erg.EPCNur:
|
case erg.EPCNur:
|
||||||
nurse := en.Nurse{}
|
empData := en.Nurse{}
|
||||||
dg.I.Where("\"Employee_Id\" = ?", employee.Id).First(&nurse)
|
dg.I.Where("\"Employee_Id\" = ?", employee.Id).First(&empData)
|
||||||
if nurse.Id == 0 {
|
if empData.Id == 0 {
|
||||||
return nil, d.FieldErrors{"authentication": d.FieldError{Code: "auth-noNurse", Message: el.GenMessage("auth-noNurse")}}
|
return nil, d.FieldErrors{"authentication": d.FieldError{Code: "auth-noNurse", Message: el.GenMessage("auth-noNurse")}}
|
||||||
}
|
}
|
||||||
atClaims["nurse_id"] = nurse.Id
|
atClaims["nurse_id"] = empData.Id
|
||||||
outputData["nurse_id"] = nurse.Id
|
outputData["nurse_id"] = empData.Id
|
||||||
|
case erg.EPCMwi:
|
||||||
|
empData := em.Midwife{}
|
||||||
|
dg.I.Where("\"Employee_Id\" = ?", employee.Id).First(&empData)
|
||||||
|
if empData.Id == 0 {
|
||||||
|
return nil, d.FieldErrors{"authentication": d.FieldError{Code: "auth-noNurse", Message: el.GenMessage("auth-noNurse")}}
|
||||||
|
}
|
||||||
|
atClaims["nurse_id"] = empData.Id
|
||||||
|
outputData["nurse_id"] = empData.Id
|
||||||
}
|
}
|
||||||
|
|
||||||
errorGetPosition := d.FieldErrors{"authentication": d.FieldError{Code: "auth-getData-failed", Message: el.GenMessage("auth-getData-failed")}}
|
errorGetPosition := d.FieldErrors{"authentication": d.FieldError{Code: "auth-getData-failed", Message: el.GenMessage("auth-getData-failed")}}
|
||||||
@@ -289,43 +298,22 @@ func ExtractToken(r *http.Request, tokenType TokenType) (data *pa.AuthInfo, err
|
|||||||
if accessUuidRedis.String() == "" {
|
if accessUuidRedis.String() == "" {
|
||||||
return nil, d.FieldError{Code: "token-unidentified", Message: el.GenMessage("token-unidentified")}
|
return nil, d.FieldError{Code: "token-unidentified", Message: el.GenMessage("token-unidentified")}
|
||||||
}
|
}
|
||||||
user_name := fmt.Sprintf("%v", claims["user_name"])
|
|
||||||
// user_email := ""
|
|
||||||
// if v, exist := claims["user_email"]; exist && v != nil {
|
|
||||||
// user_email = v.(string)
|
|
||||||
// }
|
|
||||||
// ref_id := 0
|
|
||||||
// if v, exist := claims["user_ref_id"]; exist && v != nil {
|
|
||||||
// tmp := v.(float64)
|
|
||||||
// ref_id = int(tmp)
|
|
||||||
// }
|
|
||||||
// position_code := ""
|
|
||||||
// if v, exist := claims["user_position_code"]; exist && v != nil {
|
|
||||||
// position_code = v.(string)
|
|
||||||
// }
|
|
||||||
// data = &AuthInfo{
|
|
||||||
// Uuid: accessUuid,
|
|
||||||
// User_Id: int(user_id),
|
|
||||||
// User_Name: user_name,
|
|
||||||
// User_Email: user_email,
|
|
||||||
// User_Ref_Id: ref_id,
|
|
||||||
// User_Position_Code: position_code,
|
|
||||||
contractPosition_code := ""
|
|
||||||
if v, exist := claims["contractPosition_code"]; exist && v != nil {
|
|
||||||
contractPosition_code = v.(string)
|
|
||||||
}
|
|
||||||
employee_position_code := ""
|
|
||||||
if v, exist := claims["employee_position_code"]; exist && v != nil {
|
|
||||||
employee_position_code = v.(string)
|
|
||||||
}
|
|
||||||
|
|
||||||
data = &pa.AuthInfo{
|
data = &pa.AuthInfo{
|
||||||
Uuid: accessUuid,
|
Uuid: accessUuid,
|
||||||
User_Id: uint(user_id),
|
User_Id: uint(user_id),
|
||||||
User_Name: user_name,
|
User_Name: fmt.Sprintf("%v", claims["user_name"]),
|
||||||
User_ContractPosition_code: contractPosition_code,
|
|
||||||
Employee_Position_Code: &employee_position_code,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data.User_ContractPosition_code = checkStrClaims(claims, "contractPosition_code")
|
||||||
|
data.Employee_Position_Code = checkStrPtrClaims(claims, "employee_position_code")
|
||||||
|
data.Doctor_Id = checkIntPtrClaims(claims, "doctor_id")
|
||||||
|
data.Nurse_Id = checkIntPtrClaims(claims, "nurse_id")
|
||||||
|
data.Midwife_Id = checkIntPtrClaims(claims, "midwife_id")
|
||||||
|
data.Nutritionist_Id = checkIntPtrClaims(claims, "nutritionist_id")
|
||||||
|
data.Laborant_Id = checkIntPtrClaims(claims, "laborant_id")
|
||||||
|
data.Pharmachist_Id = checkIntPtrClaims(claims, "pharmachist_id")
|
||||||
|
data.Intern_Position_Code = checkStrPtrClaims(claims, "intern_position_code")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
return nil, d.FieldError{Code: "token", Message: "token-invalid"}
|
return nil, d.FieldError{Code: "token", Message: "token-invalid"}
|
||||||
@@ -334,3 +322,33 @@ func ExtractToken(r *http.Request, tokenType TokenType) (data *pa.AuthInfo, err
|
|||||||
func GetConfig() {
|
func GetConfig() {
|
||||||
a.ParseCfg(&authCfg)
|
a.ParseCfg(&authCfg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func checkStrClaims(claim map[string]interface{}, key string) string {
|
||||||
|
if v, exist := claim[key]; exist && v != nil {
|
||||||
|
return v.(string)
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkStrPtrClaims(claim map[string]interface{}, key string) *string {
|
||||||
|
if v, exist := claim[key]; exist && v != nil {
|
||||||
|
val := v.(string)
|
||||||
|
return &val
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkIntClaims(claim map[string]interface{}, key string) int {
|
||||||
|
if v, exist := claim[key]; exist && v != nil {
|
||||||
|
return v.(int)
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkIntPtrClaims(claim map[string]interface{}, key string) *int {
|
||||||
|
if v, exist := claim[key]; exist && v != nil {
|
||||||
|
val := int(v.(float64))
|
||||||
|
return &val
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -28,10 +28,6 @@ func getAndCheck(input, condition any) (eCode string) {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func getDocName(id uint) string {
|
|
||||||
return "authentication"
|
|
||||||
}
|
|
||||||
|
|
||||||
func getDivisionPosition(employee_id uint) ([]string, error) {
|
func getDivisionPosition(employee_id uint) ([]string, error) {
|
||||||
var result []string
|
var result []string
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,21 @@
|
|||||||
package encounter
|
package encounter
|
||||||
|
|
||||||
import (
|
import (
|
||||||
e "simrs-vx/internal/domain/main-entities/encounter"
|
// std
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
// external
|
||||||
|
dg "github.com/karincake/apem/db-gorm-pg"
|
||||||
|
gh "github.com/karincake/getuk"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
|
||||||
|
// pkg
|
||||||
plh "simrs-vx/pkg/lib-helper"
|
plh "simrs-vx/pkg/lib-helper"
|
||||||
pl "simrs-vx/pkg/logger"
|
pl "simrs-vx/pkg/logger"
|
||||||
pu "simrs-vx/pkg/use-case-helper"
|
pu "simrs-vx/pkg/use-case-helper"
|
||||||
|
|
||||||
dg "github.com/karincake/apem/db-gorm-pg"
|
// internal
|
||||||
gh "github.com/karincake/getuk"
|
e "simrs-vx/internal/domain/main-entities/encounter"
|
||||||
"gorm.io/gorm"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func CreateData(input e.CreateDto, event *pl.Event, dbx ...*gorm.DB) (*e.Encounter, error) {
|
func CreateData(input e.CreateDto, event *pl.Event, dbx ...*gorm.DB) (*e.Encounter, error) {
|
||||||
@@ -34,6 +40,10 @@ func CreateData(input e.CreateDto, event *pl.Event, dbx ...*gorm.DB) (*e.Encount
|
|||||||
}
|
}
|
||||||
|
|
||||||
func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Encounter, *e.MetaDto, error) {
|
func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Encounter, *e.MetaDto, error) {
|
||||||
|
if input.AuthInfo.User_Id == 0 {
|
||||||
|
return nil, nil, plh.HandleListError(input, event, errors.New("user_id is required"))
|
||||||
|
}
|
||||||
|
|
||||||
pl.SetLogInfo(event, input, "started", "DBReadList")
|
pl.SetLogInfo(event, input, "started", "DBReadList")
|
||||||
data := []e.Encounter{}
|
data := []e.Encounter{}
|
||||||
pagination := gh.Pagination{}
|
pagination := gh.Pagination{}
|
||||||
@@ -46,10 +56,13 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.En
|
|||||||
} else {
|
} else {
|
||||||
tx = dg.I
|
tx = dg.I
|
||||||
}
|
}
|
||||||
|
tx = tx.Model(&e.Encounter{})
|
||||||
|
|
||||||
tx = tx.
|
if input.AuthInfo.Doctor_Id != nil {
|
||||||
Model(&e.Encounter{}).
|
tx.Where("\"Responsible_Doctor_Id\" = ?", *input.AuthInfo.Doctor_Id)
|
||||||
Scopes(gh.Preload(input.Includes)).
|
}
|
||||||
|
|
||||||
|
tx.Scopes(gh.Preload(input.Includes)).
|
||||||
Scopes(gh.Filter(input.FilterDto)).
|
Scopes(gh.Filter(input.FilterDto)).
|
||||||
Count(&count).
|
Count(&count).
|
||||||
Scopes(gh.Paginate(input, &pagination)).
|
Scopes(gh.Paginate(input, &pagination)).
|
||||||
|
|||||||
Reference in New Issue
Block a user