feat (user): add block and active
This commit is contained in:
No files matched your search
@@ -54,7 +54,15 @@ func SetRoutes() http.Handler {
|
|||||||
// r.HandleFunc("POST /v1/authentication/logout", auth.Logout)
|
// r.HandleFunc("POST /v1/authentication/logout", auth.Logout)
|
||||||
hk.Route("POST /v1/authentication/logout", r, auth.GuardMW, auth.Logout)
|
hk.Route("POST /v1/authentication/logout", r, auth.GuardMW, auth.Logout)
|
||||||
|
|
||||||
hc.RegCrud(r, "/v1/user", user.O)
|
hk.GroupRoutes("/v1/user", r, hk.MapHandlerFunc{
|
||||||
|
"GET /": user.O.GetList,
|
||||||
|
"GET /{id}": user.O.GetDetail,
|
||||||
|
"POST /": user.O.Create,
|
||||||
|
"PATCH /{id}": user.O.Update,
|
||||||
|
"DELETE /{id}": user.O.Delete,
|
||||||
|
"PATCH /{id}/block": user.O.Block,
|
||||||
|
"PATCH /{id}/active": user.O.Active,
|
||||||
|
})
|
||||||
|
|
||||||
/******************** sources ********************/
|
/******************** sources ********************/
|
||||||
hc.RegCrud(r, "/v1/division", division.O)
|
hc.RegCrud(r, "/v1/division", division.O)
|
||||||
|
|||||||
@@ -69,3 +69,27 @@ func (obj myBase) Delete(w http.ResponseWriter, r *http.Request) {
|
|||||||
res, err := u.Delete(dto)
|
res, err := u.Delete(dto)
|
||||||
rw.DataResponse(w, res, err)
|
rw.DataResponse(w, res, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (obj myBase) Block(w http.ResponseWriter, r *http.Request) {
|
||||||
|
id := rw.ValidateInt(w, "id", r.PathValue("id"))
|
||||||
|
if id <= 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
dto := e.ReadDetailDto{}
|
||||||
|
dto.Id = uint(id)
|
||||||
|
res, err := u.Block(dto)
|
||||||
|
rw.DataResponse(w, res, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (obj myBase) Active(w http.ResponseWriter, r *http.Request) {
|
||||||
|
id := rw.ValidateInt(w, "id", r.PathValue("id"))
|
||||||
|
if id <= 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
dto := e.ReadDetailDto{}
|
||||||
|
dto.Id = uint(id)
|
||||||
|
res, err := u.Active(dto)
|
||||||
|
rw.DataResponse(w, res, err)
|
||||||
|
}
|
||||||
@@ -1,16 +1,18 @@
|
|||||||
package user
|
package user
|
||||||
|
|
||||||
import (
|
import (
|
||||||
e "simrs-vx/internal/domain/main-entities/user"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
dg "github.com/karincake/apem/db-gorm-pg"
|
"gorm.io/gorm"
|
||||||
d "github.com/karincake/dodol"
|
|
||||||
|
e "simrs-vx/internal/domain/main-entities/user"
|
||||||
|
erc "simrs-vx/internal/domain/references/common"
|
||||||
|
|
||||||
pl "simrs-vx/pkg/logger"
|
pl "simrs-vx/pkg/logger"
|
||||||
pu "simrs-vx/pkg/use-case-helper"
|
pu "simrs-vx/pkg/use-case-helper"
|
||||||
|
|
||||||
"gorm.io/gorm"
|
dg "github.com/karincake/apem/db-gorm-pg"
|
||||||
|
d "github.com/karincake/dodol"
|
||||||
)
|
)
|
||||||
|
|
||||||
const source = "user"
|
const source = "user"
|
||||||
@@ -273,3 +275,95 @@ func Delete(input e.DeleteDto) (*d.Data, error) {
|
|||||||
}, nil
|
}, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Block(input e.ReadDetailDto) (*d.Data, error) {
|
||||||
|
rdDto := e.ReadDetailDto{Id: input.Id}
|
||||||
|
var data *e.User
|
||||||
|
var err error
|
||||||
|
|
||||||
|
event := pl.Event{
|
||||||
|
Feature: "Block",
|
||||||
|
Source: source,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start log
|
||||||
|
pl.SetLogInfo(&event, input, "started", "update")
|
||||||
|
|
||||||
|
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||||
|
pl.SetLogInfo(&event, rdDto, "started", "DBReadDetail")
|
||||||
|
if data, err = ReadDetailData(rdDto, &event, tx); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if data != nil {
|
||||||
|
pl.SetLogInfo(&event, rdDto, "started", "DBUpdate")
|
||||||
|
data.Status_Code = erc.SCBlocked
|
||||||
|
if err := tx.Save(&data).Error; err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pl.SetLogInfo(&event, nil, "complete")
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &d.Data{
|
||||||
|
Meta: d.IS{
|
||||||
|
"source": source,
|
||||||
|
"structure": "single-data",
|
||||||
|
"status": "updated",
|
||||||
|
},
|
||||||
|
Data: data.ToResponse(),
|
||||||
|
}, nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func Active(input e.ReadDetailDto) (*d.Data, error) {
|
||||||
|
rdDto := e.ReadDetailDto{Id: input.Id}
|
||||||
|
var data *e.User
|
||||||
|
var err error
|
||||||
|
|
||||||
|
event := pl.Event{
|
||||||
|
Feature: "Active",
|
||||||
|
Source: source,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start log
|
||||||
|
pl.SetLogInfo(&event, input, "started", "update")
|
||||||
|
|
||||||
|
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||||
|
pl.SetLogInfo(&event, rdDto, "started", "DBReadDetail")
|
||||||
|
if data, err = ReadDetailData(rdDto, &event, tx); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if data != nil {
|
||||||
|
pl.SetLogInfo(&event, rdDto, "started", "DBUpdate")
|
||||||
|
data.Status_Code = erc.SCActive
|
||||||
|
if err := tx.Save(&data).Error; err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pl.SetLogInfo(&event, nil, "complete")
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &d.Data{
|
||||||
|
Meta: d.IS{
|
||||||
|
"source": source,
|
||||||
|
"structure": "single-data",
|
||||||
|
"status": "updated",
|
||||||
|
},
|
||||||
|
Data: data.ToResponse(),
|
||||||
|
}, nil
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user