feat: update userRoles, userLevels, users, swagger

This commit is contained in:
hanif salafi 2024-03-31 18:59:32 +07:00
parent 7d5057289e
commit 871b66359f
26 changed files with 1640 additions and 303 deletions

View File

@ -3,13 +3,13 @@ package entity
import "time" import "time"
type UserLevels struct { type UserLevels struct {
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"` ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
Name string `json:"name" gorm:"type:varchar"` Name string `json:"name" gorm:"type:varchar"`
AliasName string `json:"alias_name" gorm:"type:varchar"` AliasName string `json:"alias_name" gorm:"type:varchar"`
LevelNumber int `json:"level_number" gorm:"type:int4"` LevelNumber int `json:"level_number" gorm:"type:int4"`
ParentLevelId int `json:"parent_level_id" gorm:"type:int4"` ParentLevelId int `json:"parent_level_id" gorm:"type:int4"`
ProvinceId int `json:"province_id" gorm:"type:int4"` ProvinceId int `json:"province_id" gorm:"type:int4"`
IsActive bool `json:"is_active" gorm:"type:bool"` IsActive *bool `json:"is_active" gorm:"type:bool"`
CreatedAt time.Time `json:"created_at" gorm:"default:now()"` CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"` UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
} }

View File

@ -3,14 +3,14 @@ package entity
import "time" import "time"
type UserRoles struct { type UserRoles struct {
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"` ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
Name string `json:"name" gorm:"type:varchar"` Name string `json:"name" gorm:"type:varchar"`
Description string `json:"description" gorm:"type:varchar"` Description string `json:"description" gorm:"type:varchar"`
Code string `json:"code" gorm:"type:varchar"` Code string `json:"code" gorm:"type:varchar"`
LevelNumber int `json:"level_number" gorm:"type:int4"` LevelNumber int `json:"level_number" gorm:"type:int4"`
StatusId int `json:"status_id" gorm:"type:int4"` StatusId *int `json:"status_id" gorm:"type:int4"`
CreatedById int `json:"created_by_id" gorm:"type:int4"` CreatedById *int `json:"created_by_id" gorm:"type:int4"`
IsActive bool `json:"is_active" gorm:"type:bool"` IsActive *bool `json:"is_active" gorm:"type:bool"`
CreatedAt time.Time `json:"created_at" gorm:"default:now()"` CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"` UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
} }

View File

@ -3,25 +3,25 @@ package entity
import "time" import "time"
type Users struct { type Users struct {
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"` ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
Username string `json:"username" gorm:"type:varchar"` Username string `json:"username" gorm:"type:varchar"`
Email string `json:"email" gorm:"type:varchar"` Email string `json:"email" gorm:"type:varchar"`
Fullname string `json:"fullname" gorm:"type:varchar"` Fullname string `json:"fullname" gorm:"type:varchar"`
Address string `json:"address" gorm:"type:varchar"` Address string `json:"address" gorm:"type:varchar"`
PhoneNumber string `json:"phone_number" gorm:"type:varchar"` PhoneNumber string `json:"phone_number" gorm:"type:varchar"`
WorkType string `json:"work_type" gorm:"type:varchar"` WorkType string `json:"work_type" gorm:"type:varchar"`
GenderType string `json:"gender_type" gorm:"type:varchar"` GenderType string `json:"gender_type" gorm:"type:varchar"`
IdentityType string `json:"identity_type" gorm:"type:varchar"` IdentityType string `json:"identity_type" gorm:"type:varchar"`
IdentityNumber string `json:"identity_number" gorm:"type:varchar"` IdentityNumber string `json:"identity_number" gorm:"type:varchar"`
DateOfBirth string `json:"date_of_birth" gorm:"type:varchar"` DateOfBirth string `json:"date_of_birth" gorm:"type:varchar"`
LastEducation string `json:"last_education" gorm:"type:varchar"` LastEducation string `json:"last_education" gorm:"type:varchar"`
KeycloakId string `json:"keycloak_id" gorm:"type:varchar"` UserRoleId int `json:"user_role_id" gorm:"type:int4"`
UserRoleId int `json:"user_role_id" gorm:"type:int4"` UserLevelsId int `json:"user_levels_id" gorm:"type:int4"`
StatusId int `json:"status_id" gorm:"type:int4"` KeycloakId *string `json:"keycloak_id" gorm:"type:varchar"`
UserLevelsId int `json:"user_levels_id" gorm:"type:int4"` StatusId *int `json:"status_id" gorm:"type:int4"`
CreatedById int `json:"created_by_id" gorm:"type:int4"` CreatedById *int `json:"created_by_id" gorm:"type:int4"`
ProfilePicturePath string `json:"profile_picture_path" gorm:"type:varchar"` ProfilePicturePath *string `json:"profile_picture_path" gorm:"type:varchar"`
IsActive bool `json:"is_active" gorm:"type:bool"` IsActive *bool `json:"is_active" gorm:"type:bool"`
CreatedAt time.Time `json:"created_at" gorm:"default:now()"` CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"` UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
} }

View File

@ -16,7 +16,6 @@ type ArticleCategoriesQueryRequest struct {
ThumbnailPath string `json:"thumbnail_path" validate:"required"` ThumbnailPath string `json:"thumbnail_path" validate:"required"`
ThumbnailUrl string `json:"thumbnail_url" validate:"required"` ThumbnailUrl string `json:"thumbnail_url" validate:"required"`
ParentId int `json:"parent_id" validate:"required"` ParentId int `json:"parent_id" validate:"required"`
CreatedById int `json:"created_by_id" validate:"required"`
StatusId int `json:"status_id" validate:"required"` StatusId int `json:"status_id" validate:"required"`
IsPublish bool `json:"is_publish" validate:"required"` IsPublish bool `json:"is_publish" validate:"required"`
PublishedAt time.Time `json:"published_at" validate:"required"` PublishedAt time.Time `json:"published_at" validate:"required"`

View File

@ -7,7 +7,6 @@ import (
"go-humas-be/app/module/master_statuses/request" "go-humas-be/app/module/master_statuses/request"
"go-humas-be/app/module/master_statuses/response" "go-humas-be/app/module/master_statuses/response"
"go-humas-be/utils/paginator" "go-humas-be/utils/paginator"
"time"
) )
// MasterStatusesService // MasterStatusesService

View File

@ -29,11 +29,12 @@ func NewUserLevelsController(userLevelsService service.UserLevelsService) UserLe
} }
} }
// All get all UserLevels // All UserLevels
// @Summary Get all UserLevels // @Summary Get all UserLevels
// @Description API for getting all UserLevels // @Description API for getting all UserLevels
// @Tags Task // @Tags UserLevels
// @Security Bearer // @Security Bearer
// @Param req query request.UserLevelsQueryRequest false "query parameters"
// @Success 200 {object} response.Response // @Success 200 {object} response.Response
// @Failure 401 {object} response.Response // @Failure 401 {object} response.Response
// @Failure 404 {object} response.Response // @Failure 404 {object} response.Response
@ -46,7 +47,13 @@ func (_i *userLevelsController) All(c *fiber.Ctx) error {
return err return err
} }
var req request.UserLevelsQueryRequest reqContext := request.UserLevelsQueryRequestContext{
Name: c.Query("name"),
LevelNumber: c.Query("levelNumber"),
ParentLevelId: c.Query("parentLevelId"),
ProvinceId: c.Query("provinceId"),
}
req := reqContext.ToParamRequest()
req.Pagination = paginate req.Pagination = paginate
userLevelsData, paging, err := _i.userLevelsService.All(req) userLevelsData, paging, err := _i.userLevelsService.All(req)
@ -55,16 +62,17 @@ func (_i *userLevelsController) All(c *fiber.Ctx) error {
} }
return utilRes.Resp(c, utilRes.Response{ return utilRes.Resp(c, utilRes.Response{
Success: true,
Messages: utilRes.Messages{"UserLevels list successfully retrieved"}, Messages: utilRes.Messages{"UserLevels list successfully retrieved"},
Data: userLevelsData, Data: userLevelsData,
Meta: paging, Meta: paging,
}) })
} }
// Show get one UserLevels // Show UserLevels
// @Summary Get one UserLevels // @Summary Get one UserLevels
// @Description API for getting one UserLevels // @Description API for getting one UserLevels
// @Tags Task // @Tags UserLevels
// @Security Bearer // @Security Bearer
// @Param id path int true "UserLevels ID" // @Param id path int true "UserLevels ID"
// @Success 200 {object} response.Response // @Success 200 {object} response.Response
@ -90,12 +98,12 @@ func (_i *userLevelsController) Show(c *fiber.Ctx) error {
}) })
} }
// Save create UserLevels // Save UserLevels
// @Summary Create UserLevels // @Summary Create UserLevels
// @Description API for create UserLevels // @Description API for create UserLevels
// @Tags Task // @Tags UserLevels
// @Security Bearer // @Security Bearer
// @Body request.UserLevelsCreateRequest // @Param payload body request.UserLevelsCreateRequest true "Required payload"
// @Success 200 {object} response.Response // @Success 200 {object} response.Response
// @Failure 401 {object} response.Response // @Failure 401 {object} response.Response
// @Failure 404 {object} response.Response // @Failure 404 {object} response.Response
@ -114,16 +122,17 @@ func (_i *userLevelsController) Save(c *fiber.Ctx) error {
} }
return utilRes.Resp(c, utilRes.Response{ return utilRes.Resp(c, utilRes.Response{
Success: true,
Messages: utilRes.Messages{"UserLevels successfully created"}, Messages: utilRes.Messages{"UserLevels successfully created"},
}) })
} }
// Update update UserLevels // Update UserLevels
// @Summary update UserLevels // @Summary update UserLevels
// @Description API for update UserLevels // @Description API for update UserLevels
// @Tags Task // @Tags UserLevels
// @Security Bearer // @Security Bearer
// @Body request.UserLevelsUpdateRequest // @Param payload body request.UserLevelsUpdateRequest true "Required payload"
// @Param id path int true "UserLevels ID" // @Param id path int true "UserLevels ID"
// @Success 200 {object} response.Response // @Success 200 {object} response.Response
// @Failure 401 {object} response.Response // @Failure 401 {object} response.Response
@ -148,14 +157,15 @@ func (_i *userLevelsController) Update(c *fiber.Ctx) error {
} }
return utilRes.Resp(c, utilRes.Response{ return utilRes.Resp(c, utilRes.Response{
Success: true,
Messages: utilRes.Messages{"UserLevels successfully updated"}, Messages: utilRes.Messages{"UserLevels successfully updated"},
}) })
} }
// Delete delete UserLevels // Delete UserLevels
// @Summary delete UserLevels // @Summary delete UserLevels
// @Description API for delete UserLevels // @Description API for delete UserLevels
// @Tags Task // @Tags UserLevels
// @Security Bearer // @Security Bearer
// @Param id path int true "UserLevels ID" // @Param id path int true "UserLevels ID"
// @Success 200 {object} response.Response // @Success 200 {object} response.Response

View File

@ -5,6 +5,7 @@ import (
"go-humas-be/app/database/entity" "go-humas-be/app/database/entity"
"go-humas-be/app/module/user_levels/request" "go-humas-be/app/module/user_levels/request"
"go-humas-be/utils/paginator" "go-humas-be/utils/paginator"
"strings"
) )
type userLevelsRepository struct { type userLevelsRepository struct {
@ -31,9 +32,23 @@ func (_i *userLevelsRepository) GetAll(req request.UserLevelsQueryRequest) (user
var count int64 var count int64
query := _i.DB.DB.Model(&entity.UserLevels{}) query := _i.DB.DB.Model(&entity.UserLevels{})
query = query.Where("is_active = ?", true)
if req.Name != nil && *req.Name != "" {
name := strings.ToLower(*req.Name)
query = query.Where("LOWER(name) LIKE ?", "%"+strings.ToLower(name)+"%")
}
if req.LevelNumber != nil {
query = query.Where("level_number = ?", req.LevelNumber)
}
if req.ParentLevelId != nil {
query = query.Where("parent_level_id = ?", req.ParentLevelId)
}
if req.ProvinceId != nil {
query = query.Where("province_id = ?", req.ProvinceId)
}
query.Count(&count) query.Count(&count)
req.Pagination.Count = count
req.Pagination = paginator.Paging(req.Pagination) req.Pagination = paginator.Paging(req.Pagination)
err = query.Offset(req.Pagination.Offset).Limit(req.Pagination.Limit).Find(&userLevelss).Error err = query.Offset(req.Pagination.Offset).Limit(req.Pagination.Limit).Find(&userLevelss).Error

View File

@ -3,6 +3,7 @@ package request
import ( import (
"go-humas-be/app/database/entity" "go-humas-be/app/database/entity"
"go-humas-be/utils/paginator" "go-humas-be/utils/paginator"
"strconv"
"time" "time"
) )
@ -11,22 +12,20 @@ type UserLevelsGeneric interface {
} }
type UserLevelsQueryRequest struct { type UserLevelsQueryRequest struct {
Name string `json:"name" validate:"required"` Name *string `json:"name"`
AliasName string `json:"alias_name" validate:"required"` LevelNumber *int `json:"levelNumber"`
LevelNumber int `json:"level_number" validate:"required"` ParentLevelId *int `json:"parentLevelId"`
ParentLevelId int `json:"parent_level_id" validate:"required"` ProvinceId *int `json:"provinceId"`
ProvinceId int `json:"province_id" validate:"required"`
IsActive bool `json:"is_active" validate:"required"`
Pagination *paginator.Pagination `json:"pagination"` Pagination *paginator.Pagination `json:"pagination"`
} }
type UserLevelsCreateRequest struct { type UserLevelsCreateRequest struct {
Name string `json:"name" validate:"required"` Name string `json:"name" validate:"required"`
AliasName string `json:"alias_name" validate:"required"` AliasName string `json:"aliasName" validate:"required"`
LevelNumber int `json:"level_number" validate:"required"` LevelNumber int `json:"levelNumber" validate:"required"`
ParentLevelId int `json:"parent_level_id" validate:"required"` ParentLevelId int `json:"parentLevelId" validate:"required"`
ProvinceId int `json:"province_id" validate:"required"` ProvinceId int `json:"provinceId" validate:"required"`
IsActive bool `json:"is_active" validate:"required"` IsActive *bool `json:"is_active"`
} }
func (req UserLevelsCreateRequest) ToEntity() *entity.UserLevels { func (req UserLevelsCreateRequest) ToEntity() *entity.UserLevels {
@ -41,27 +40,55 @@ func (req UserLevelsCreateRequest) ToEntity() *entity.UserLevels {
} }
type UserLevelsUpdateRequest struct { type UserLevelsUpdateRequest struct {
ID uint `json:"id" validate:"required"` Name string `json:"name" validate:"required"`
Name string `json:"name" validate:"required"` AliasName string `json:"aliasName" validate:"required"`
AliasName string `json:"alias_name" validate:"required"` LevelNumber int `json:"levelNumber" validate:"required"`
LevelNumber int `json:"level_number" validate:"required"` ParentLevelId int `json:"parentLevelId" validate:"required"`
ParentLevelId int `json:"parent_level_id" validate:"required"` ProvinceId int `json:"provinceId" validate:"required"`
ProvinceId int `json:"province_id" validate:"required"`
IsActive bool `json:"is_active" validate:"required"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
} }
func (req UserLevelsUpdateRequest) ToEntity() *entity.UserLevels { func (req UserLevelsUpdateRequest) ToEntity() *entity.UserLevels {
return &entity.UserLevels{ return &entity.UserLevels{
ID: req.ID,
Name: req.Name, Name: req.Name,
AliasName: req.AliasName, AliasName: req.AliasName,
LevelNumber: req.LevelNumber, LevelNumber: req.LevelNumber,
ParentLevelId: req.ParentLevelId, ParentLevelId: req.ParentLevelId,
ProvinceId: req.ProvinceId, ProvinceId: req.ProvinceId,
IsActive: req.IsActive, UpdatedAt: time.Now(),
CreatedAt: req.CreatedAt,
UpdatedAt: req.UpdatedAt,
} }
} }
type UserLevelsQueryRequestContext struct {
Name string `json:"name"`
LevelNumber string `json:"levelNumber"`
ParentLevelId string `json:"parentLevelId"`
ProvinceId string `json:"provinceId"`
}
func (req UserLevelsQueryRequestContext) ToParamRequest() UserLevelsQueryRequest {
var request UserLevelsQueryRequest
if name := req.Name; name != "" {
request.Name = &name
}
if levelNumberStr := req.LevelNumber; levelNumberStr != "" {
LevelNumber, err := strconv.Atoi(levelNumberStr)
if err == nil {
request.LevelNumber = &LevelNumber
}
}
if parentLevelIdStr := req.ParentLevelId; parentLevelIdStr != "" {
parentLevelId, err := strconv.Atoi(parentLevelIdStr)
if err == nil {
request.ParentLevelId = &parentLevelId
}
}
if provinceIdStr := req.ProvinceId; provinceIdStr != "" {
provinceId, err := strconv.Atoi(provinceIdStr)
if err == nil {
request.ProvinceId = &provinceId
}
}
return request
}

View File

@ -68,5 +68,12 @@ func (_i *userLevelsService) Update(id uint, req request.UserLevelsUpdateRequest
} }
func (_i *userLevelsService) Delete(id uint) error { func (_i *userLevelsService) Delete(id uint) error {
return _i.Repo.Delete(id) result, err := _i.Repo.FindOne(id)
if err != nil {
return err
}
isActive := false
result.IsActive = &isActive
return _i.Repo.Update(id, result)
} }

View File

@ -1,13 +1,16 @@
package controller package controller
import "go-humas-be/app/module/user_roles/service" import (
"github.com/rs/zerolog"
"go-humas-be/app/module/user_roles/service"
)
type Controller struct { type Controller struct {
UserRoles UserRolesController UserRoles UserRolesController
} }
func NewController(UserRolesService service.UserRolesService) *Controller { func NewController(UserRolesService service.UserRolesService, log zerolog.Logger) *Controller {
return &Controller{ return &Controller{
UserRoles: NewUserRolesController(UserRolesService), UserRoles: NewUserRolesController(UserRolesService, log),
} }
} }

View File

@ -2,17 +2,18 @@ package controller
import ( import (
"github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2"
"github.com/rs/zerolog"
"go-humas-be/app/module/user_roles/request" "go-humas-be/app/module/user_roles/request"
"go-humas-be/app/module/user_roles/service" "go-humas-be/app/module/user_roles/service"
"go-humas-be/utils/paginator" "go-humas-be/utils/paginator"
"strconv"
utilRes "go-humas-be/utils/response" utilRes "go-humas-be/utils/response"
utilVal "go-humas-be/utils/validator" utilVal "go-humas-be/utils/validator"
"strconv"
) )
type userRolesController struct { type userRolesController struct {
userRolesService service.UserRolesService userRolesService service.UserRolesService
Log zerolog.Logger
} }
type UserRolesController interface { type UserRolesController interface {
@ -23,17 +24,19 @@ type UserRolesController interface {
Delete(c *fiber.Ctx) error Delete(c *fiber.Ctx) error
} }
func NewUserRolesController(userRolesService service.UserRolesService) UserRolesController { func NewUserRolesController(userRolesService service.UserRolesService, log zerolog.Logger) UserRolesController {
return &userRolesController{ return &userRolesController{
userRolesService: userRolesService, userRolesService: userRolesService,
Log: log,
} }
} }
// All get all UserRoles // All UserRoles
// @Summary Get all UserRoles // @Summary Get all UserRoles
// @Description API for getting all UserRoles // @Description API for getting all UserRoles
// @Tags Task // @Tags UserRoles
// @Security Bearer // @Security Bearer
// @Param req query request.UserRolesQueryRequest false "query parameters"
// @Success 200 {object} response.Response // @Success 200 {object} response.Response
// @Failure 401 {object} response.Response // @Failure 401 {object} response.Response
// @Failure 404 {object} response.Response // @Failure 404 {object} response.Response
@ -46,7 +49,14 @@ func (_i *userRolesController) All(c *fiber.Ctx) error {
return err return err
} }
var req request.UserRolesQueryRequest reqContext := request.UserRolesQueryRequestContext{
Name: c.Query("name"),
Description: c.Query("description"),
Code: c.Query("code"),
LevelNumber: c.Query("levelNumber"),
StatusId: c.Query("statusId"),
}
req := reqContext.ToParamRequest()
req.Pagination = paginate req.Pagination = paginate
userRolesData, paging, err := _i.userRolesService.All(req) userRolesData, paging, err := _i.userRolesService.All(req)
@ -55,16 +65,17 @@ func (_i *userRolesController) All(c *fiber.Ctx) error {
} }
return utilRes.Resp(c, utilRes.Response{ return utilRes.Resp(c, utilRes.Response{
Success: true,
Messages: utilRes.Messages{"UserRoles list successfully retrieved"}, Messages: utilRes.Messages{"UserRoles list successfully retrieved"},
Data: userRolesData, Data: userRolesData,
Meta: paging, Meta: paging,
}) })
} }
// Show get one UserRoles // Show UserRoles
// @Summary Get one UserRoles // @Summary Get one UserRoles
// @Description API for getting one UserRoles // @Description API for getting one UserRoles
// @Tags Task // @Tags UserRoles
// @Security Bearer // @Security Bearer
// @Param id path int true "UserRoles ID" // @Param id path int true "UserRoles ID"
// @Success 200 {object} response.Response // @Success 200 {object} response.Response
@ -85,17 +96,18 @@ func (_i *userRolesController) Show(c *fiber.Ctx) error {
} }
return utilRes.Resp(c, utilRes.Response{ return utilRes.Resp(c, utilRes.Response{
Success: true,
Messages: utilRes.Messages{"UserRoles successfully retrieved"}, Messages: utilRes.Messages{"UserRoles successfully retrieved"},
Data: userRolesData, Data: userRolesData,
}) })
} }
// Save create UserRoles // Save UserRoles
// @Summary Create UserRoles // @Summary Create UserRoles
// @Description API for create UserRoles // @Description API for create UserRoles
// @Tags Task // @Tags UserRoles
// @Security Bearer // @Security Bearer
// @Body request.UserRolesCreateRequest // @Param payload body request.UserRolesCreateRequest true "Required payload"
// @Success 200 {object} response.Response // @Success 200 {object} response.Response
// @Failure 401 {object} response.Response // @Failure 401 {object} response.Response
// @Failure 404 {object} response.Response // @Failure 404 {object} response.Response
@ -114,16 +126,17 @@ func (_i *userRolesController) Save(c *fiber.Ctx) error {
} }
return utilRes.Resp(c, utilRes.Response{ return utilRes.Resp(c, utilRes.Response{
Success: true,
Messages: utilRes.Messages{"UserRoles successfully created"}, Messages: utilRes.Messages{"UserRoles successfully created"},
}) })
} }
// Update update UserRoles // Update UserRoles
// @Summary update UserRoles // @Summary update UserRoles
// @Description API for update UserRoles // @Description API for update UserRoles
// @Tags Task // @Tags UserRoles
// @Security Bearer // @Security Bearer
// @Body request.UserRolesUpdateRequest // @Param payload body request.UserRolesUpdateRequest true "Required payload"
// @Param id path int true "UserRoles ID" // @Param id path int true "UserRoles ID"
// @Success 200 {object} response.Response // @Success 200 {object} response.Response
// @Failure 401 {object} response.Response // @Failure 401 {object} response.Response
@ -148,14 +161,15 @@ func (_i *userRolesController) Update(c *fiber.Ctx) error {
} }
return utilRes.Resp(c, utilRes.Response{ return utilRes.Resp(c, utilRes.Response{
Success: true,
Messages: utilRes.Messages{"UserRoles successfully updated"}, Messages: utilRes.Messages{"UserRoles successfully updated"},
}) })
} }
// Delete delete UserRoles // Delete UserRoles
// @Summary delete UserRoles // @Summary delete UserRoles
// @Description API for delete UserRoles // @Description API for delete UserRoles
// @Tags Task // @Tags UserRoles
// @Security Bearer // @Security Bearer
// @Param id path int true "UserRoles ID" // @Param id path int true "UserRoles ID"
// @Success 200 {object} response.Response // @Success 200 {object} response.Response
@ -176,6 +190,7 @@ func (_i *userRolesController) Delete(c *fiber.Ctx) error {
} }
return utilRes.Resp(c, utilRes.Response{ return utilRes.Resp(c, utilRes.Response{
Success: true,
Messages: utilRes.Messages{"UserRoles successfully deleted"}, Messages: utilRes.Messages{"UserRoles successfully deleted"},
}) })
} }

View File

@ -1,14 +1,18 @@
package repository package repository
import ( import (
"github.com/rs/zerolog"
"go-humas-be/app/database" "go-humas-be/app/database"
"go-humas-be/app/database/entity" "go-humas-be/app/database/entity"
"go-humas-be/app/module/user_roles/request" "go-humas-be/app/module/user_roles/request"
"go-humas-be/utils/paginator" "go-humas-be/utils/paginator"
"strings"
"time"
) )
type userRolesRepository struct { type userRolesRepository struct {
DB *database.Database DB *database.Database
Log zerolog.Logger
} }
// UserRolesRepository define interface of IUserRolesRepository // UserRolesRepository define interface of IUserRolesRepository
@ -20,9 +24,10 @@ type UserRolesRepository interface {
Delete(id uint) (err error) Delete(id uint) (err error)
} }
func NewUserRolesRepository(db *database.Database) UserRolesRepository { func NewUserRolesRepository(db *database.Database, log zerolog.Logger) UserRolesRepository {
return &userRolesRepository{ return &userRolesRepository{
DB: db, DB: db,
Log: log,
} }
} }
@ -31,8 +36,27 @@ func (_i *userRolesRepository) GetAll(req request.UserRolesQueryRequest) (userRo
var count int64 var count int64
query := _i.DB.DB.Model(&entity.UserRoles{}) query := _i.DB.DB.Model(&entity.UserRoles{})
query = query.Where("is_active = ?", true)
if req.Name != nil && *req.Name != "" {
name := strings.ToLower(*req.Name)
query = query.Where("LOWER(name) LIKE ?", "%"+strings.ToLower(name)+"%")
}
if req.Code != nil {
query = query.Where("code = ?", req.Code)
}
if req.LevelNumber != nil {
query = query.Where("level_number = ?", req.LevelNumber)
}
if req.StatusId != nil {
query = query.Where("status_id = ?", req.StatusId)
}
query.Count(&count) query.Count(&count)
_i.Log.Info().Str("timestamp", time.Now().
Format(time.RFC3339)).Str("Service:userRolesRepository", "UserRoles:GetAll").
Interface("req query", req).Msg("")
req.Pagination.Count = count req.Pagination.Count = count
req.Pagination = paginator.Paging(req.Pagination) req.Pagination = paginator.Paging(req.Pagination)

View File

@ -3,6 +3,7 @@ package request
import ( import (
"go-humas-be/app/database/entity" "go-humas-be/app/database/entity"
"go-humas-be/utils/paginator" "go-humas-be/utils/paginator"
"strconv"
"time" "time"
) )
@ -11,13 +12,11 @@ type UserRolesGeneric interface {
} }
type UserRolesQueryRequest struct { type UserRolesQueryRequest struct {
Name string `json:"name" validate:"required"` Name *string `json:"name"`
Description string `json:"description" validate:"required"` Description *string `json:"description"`
Code string `json:"code" validate:"required"` Code *string `json:"code"`
LevelNumber int `json:"level_number" validate:"required"` LevelNumber *int `json:"levelNumber"`
StatusId int `json:"status_id" validate:"required"` StatusId *int `json:"statusId"`
CreatedById int `json:"created_by_id" validate:"required"`
IsActive bool `json:"is_active" validate:"required"`
Pagination *paginator.Pagination `json:"pagination"` Pagination *paginator.Pagination `json:"pagination"`
} }
@ -26,9 +25,9 @@ type UserRolesCreateRequest struct {
Description string `json:"description" validate:"required"` Description string `json:"description" validate:"required"`
Code string `json:"code" validate:"required"` Code string `json:"code" validate:"required"`
LevelNumber int `json:"level_number" validate:"required"` LevelNumber int `json:"level_number" validate:"required"`
StatusId int `json:"status_id" validate:"required"` StatusId *int `json:"status_id"`
CreatedById int `json:"created_by_id" validate:"required"` CreatedById *int `json:"created_by_id"`
IsActive bool `json:"is_active" validate:"required"` IsActive *bool `json:"is_active"`
} }
func (req UserRolesCreateRequest) ToEntity() *entity.UserRoles { func (req UserRolesCreateRequest) ToEntity() *entity.UserRoles {
@ -44,29 +43,53 @@ func (req UserRolesCreateRequest) ToEntity() *entity.UserRoles {
} }
type UserRolesUpdateRequest struct { type UserRolesUpdateRequest struct {
ID uint `json:"id" validate:"required"` Name string `json:"name" validate:"required"`
Name string `json:"name" validate:"required"` Description string `json:"description" validate:"required"`
Description string `json:"description" validate:"required"` Code string `json:"code" validate:"required"`
Code string `json:"code" validate:"required"` LevelNumber int `json:"level_number" validate:"required"`
LevelNumber int `json:"level_number" validate:"required"` StatusId *int `json:"status_id"`
StatusId int `json:"status_id" validate:"required"`
CreatedById int `json:"created_by_id" validate:"required"`
IsActive bool `json:"is_active" validate:"required"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
} }
func (req UserRolesUpdateRequest) ToEntity() *entity.UserRoles { func (req UserRolesUpdateRequest) ToEntity() *entity.UserRoles {
return &entity.UserRoles{ return &entity.UserRoles{
ID: req.ID,
Name: req.Name, Name: req.Name,
Description: req.Description, Description: req.Description,
Code: req.Code, Code: req.Code,
LevelNumber: req.LevelNumber, LevelNumber: req.LevelNumber,
StatusId: req.StatusId, StatusId: req.StatusId,
CreatedById: req.CreatedById, UpdatedAt: time.Now(),
IsActive: req.IsActive,
CreatedAt: req.CreatedAt,
UpdatedAt: req.UpdatedAt,
} }
} }
type UserRolesQueryRequestContext struct {
Name string `json:"name"`
Description string `json:"description"`
Code string `json:"code"`
LevelNumber string `json:"levelNumber"`
StatusId string `json:"statusId"`
}
func (req UserRolesQueryRequestContext) ToParamRequest() UserRolesQueryRequest {
var request UserRolesQueryRequest
if name := req.Name; name != "" {
request.Name = &name
}
if code := req.Code; code != "" {
request.Code = &code
}
if levelNumberStr := req.LevelNumber; levelNumberStr != "" {
levelNumber, err := strconv.Atoi(levelNumberStr)
if err == nil {
request.LevelNumber = &levelNumber
}
}
if statusIdStr := req.StatusId; statusIdStr != "" {
statusId, err := strconv.Atoi(statusIdStr)
if err == nil {
request.StatusId = &statusId
}
}
return request
}

View File

@ -3,14 +3,14 @@ package response
import "time" import "time"
type UserRolesResponse struct { type UserRolesResponse struct {
ID uint `json:"id"` ID uint `json:"id"`
Name string `json:"name"` Name string `json:"name"`
Description string `json:"description"` Description string `json:"description"`
Code string `json:"code"` Code string `json:"code"`
LevelNumber int `json:"level_number"` LevelNumber int `json:"level_number"`
StatusId int `json:"status_id"` StatusId *int `json:"status_id"`
CreatedById int `json:"created_by_id"` CreatedById *int `json:"created_by_id"`
IsActive bool `json:"is_active"` IsActive *bool `json:"is_active"`
CreatedAt time.Time `json:"created_at"` CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"` UpdatedAt time.Time `json:"updated_at"`
} }

View File

@ -36,6 +36,7 @@ func NewUserRolesService(repo repository.UserRolesRepository, log zerolog.Logger
// All implement interface of UserRolesService // All implement interface of UserRolesService
func (_i *userRolesService) All(req request.UserRolesQueryRequest) (userRoless []*response.UserRolesResponse, paging paginator.Pagination, err error) { func (_i *userRolesService) All(req request.UserRolesQueryRequest) (userRoless []*response.UserRolesResponse, paging paginator.Pagination, err error) {
results, paging, err := _i.Repo.GetAll(req) results, paging, err := _i.Repo.GetAll(req)
if err != nil { if err != nil {
return return
} }
@ -67,6 +68,13 @@ func (_i *userRolesService) Update(id uint, req request.UserRolesUpdateRequest)
return _i.Repo.Update(id, req.ToEntity()) return _i.Repo.Update(id, req.ToEntity())
} }
func (_i *userRolesService) Delete(id uint) error { func (_i *userRolesService) Delete(id uint) (err error) {
return _i.Repo.Delete(id) result, err := _i.Repo.FindOne(id)
if err != nil {
return err
}
isActive := false
result.IsActive = &isActive
return _i.Repo.Update(id, result)
} }

View File

@ -29,11 +29,12 @@ func NewUsersController(usersService service.UsersService) UsersController {
} }
} }
// All get all Users // All Users
// @Summary Get all Users // @Summary Get all Users
// @Description API for getting all Users // @Description API for getting all Users
// @Tags Task // @Tags Users
// @Security Bearer // @Security Bearer
// @Param req query request.UsersQueryRequest false "query parameters"
// @Success 200 {object} response.Response // @Success 200 {object} response.Response
// @Failure 401 {object} response.Response // @Failure 401 {object} response.Response
// @Failure 404 {object} response.Response // @Failure 404 {object} response.Response
@ -46,7 +47,17 @@ func (_i *usersController) All(c *fiber.Ctx) error {
return err return err
} }
var req request.UsersQueryRequest reqContext := request.UsersQueryRequestContext{
Username: c.Query("username"),
Email: c.Query("email"),
Fullname: c.Query("fullname"),
Address: c.Query("address"),
PhoneNumber: c.Query("phoneNumber"),
IdentityNumber: c.Query("identityNumber"),
UserRoleId: c.Query("userRoleId"),
StatusId: c.Query("statusId"),
}
req := reqContext.ToParamRequest()
req.Pagination = paginate req.Pagination = paginate
usersData, paging, err := _i.usersService.All(req) usersData, paging, err := _i.usersService.All(req)
@ -55,16 +66,17 @@ func (_i *usersController) All(c *fiber.Ctx) error {
} }
return utilRes.Resp(c, utilRes.Response{ return utilRes.Resp(c, utilRes.Response{
Success: true,
Messages: utilRes.Messages{"Users list successfully retrieved"}, Messages: utilRes.Messages{"Users list successfully retrieved"},
Data: usersData, Data: usersData,
Meta: paging, Meta: paging,
}) })
} }
// Show get one Users // Show Users
// @Summary Get one Users // @Summary Get one Users
// @Description API for getting one Users // @Description API for getting one Users
// @Tags Task // @Tags Users
// @Security Bearer // @Security Bearer
// @Param id path int true "Users ID" // @Param id path int true "Users ID"
// @Success 200 {object} response.Response // @Success 200 {object} response.Response
@ -85,17 +97,18 @@ func (_i *usersController) Show(c *fiber.Ctx) error {
} }
return utilRes.Resp(c, utilRes.Response{ return utilRes.Resp(c, utilRes.Response{
Success: true,
Messages: utilRes.Messages{"Users successfully retrieved"}, Messages: utilRes.Messages{"Users successfully retrieved"},
Data: usersData, Data: usersData,
}) })
} }
// Save create Users // Save Users
// @Summary Create Users // @Summary Create Users
// @Description API for create Users // @Description API for create Users
// @Tags Task // @Tags Users
// @Security Bearer // @Security Bearer
// @Body request.UsersCreateRequest // @Param payload body request.UsersCreateRequest true "Required payload"
// @Success 200 {object} response.Response // @Success 200 {object} response.Response
// @Failure 401 {object} response.Response // @Failure 401 {object} response.Response
// @Failure 404 {object} response.Response // @Failure 404 {object} response.Response
@ -114,16 +127,17 @@ func (_i *usersController) Save(c *fiber.Ctx) error {
} }
return utilRes.Resp(c, utilRes.Response{ return utilRes.Resp(c, utilRes.Response{
Success: true,
Messages: utilRes.Messages{"Users successfully created"}, Messages: utilRes.Messages{"Users successfully created"},
}) })
} }
// Update update Users // Update Users
// @Summary update Users // @Summary update Users
// @Description API for update Users // @Description API for update Users
// @Tags Task // @Tags Users
// @Security Bearer // @Security Bearer
// @Body request.UsersUpdateRequest // @Param payload body request.UsersUpdateRequest true "Required payload"
// @Param id path int true "Users ID" // @Param id path int true "Users ID"
// @Success 200 {object} response.Response // @Success 200 {object} response.Response
// @Failure 401 {object} response.Response // @Failure 401 {object} response.Response
@ -148,14 +162,15 @@ func (_i *usersController) Update(c *fiber.Ctx) error {
} }
return utilRes.Resp(c, utilRes.Response{ return utilRes.Resp(c, utilRes.Response{
Success: true,
Messages: utilRes.Messages{"Users successfully updated"}, Messages: utilRes.Messages{"Users successfully updated"},
}) })
} }
// Delete delete Users // Delete Users
// @Summary delete Users // @Summary delete Users
// @Description API for delete Users // @Description API for delete Users
// @Tags Task // @Tags Users
// @Security Bearer // @Security Bearer
// @Param id path int true "Users ID" // @Param id path int true "Users ID"
// @Success 200 {object} response.Response // @Success 200 {object} response.Response

View File

@ -1,14 +1,17 @@
package repository package repository
import ( import (
"github.com/rs/zerolog"
"go-humas-be/app/database" "go-humas-be/app/database"
"go-humas-be/app/database/entity" "go-humas-be/app/database/entity"
"go-humas-be/app/module/users/request" "go-humas-be/app/module/users/request"
"go-humas-be/utils/paginator" "go-humas-be/utils/paginator"
"strings"
) )
type usersRepository struct { type usersRepository struct {
DB *database.Database DB *database.Database
Log zerolog.Logger
} }
// UsersRepository define interface of IUsersRepository // UsersRepository define interface of IUsersRepository
@ -20,9 +23,10 @@ type UsersRepository interface {
Delete(id uint) (err error) Delete(id uint) (err error)
} }
func NewUsersRepository(db *database.Database) UsersRepository { func NewUsersRepository(db *database.Database, log zerolog.Logger) UsersRepository {
return &usersRepository{ return &usersRepository{
DB: db, DB: db,
Log: log,
} }
} }
@ -31,6 +35,31 @@ func (_i *usersRepository) GetAll(req request.UsersQueryRequest) (userss []*enti
var count int64 var count int64
query := _i.DB.DB.Model(&entity.Users{}) query := _i.DB.DB.Model(&entity.Users{})
query = query.Where("is_active = ?", true)
if req.Username != nil && *req.Username != "" {
username := strings.ToLower(*req.Username)
query = query.Where("LOWER(username) LIKE ?", "%"+strings.ToLower(username)+"%")
}
if req.Fullname != nil && *req.Fullname != "" {
fullname := strings.ToLower(*req.Fullname)
query = query.Where("LOWER(fullname) LIKE ?", "%"+strings.ToLower(fullname)+"%")
}
if req.Email != nil && *req.Email != "" {
query = query.Where("email = ?", req.Email)
}
if req.PhoneNumber != nil && *req.PhoneNumber != "" {
query = query.Where("phone_number = ?", req.PhoneNumber)
}
if req.IdentityNumber != nil && *req.IdentityNumber != "" {
query = query.Where("identity_number = ?", req.IdentityNumber)
}
if req.UserRoleId != nil {
query = query.Where("user_role_id = ?", req.UserRoleId)
}
if req.StatusId != nil {
query = query.Where("status_id = ?", req.StatusId)
}
query.Count(&count) query.Count(&count)
req.Pagination.Count = count req.Pagination.Count = count

View File

@ -3,6 +3,7 @@ package request
import ( import (
"go-humas-be/app/database/entity" "go-humas-be/app/database/entity"
"go-humas-be/utils/paginator" "go-humas-be/utils/paginator"
"strconv"
"time" "time"
) )
@ -11,46 +12,35 @@ type UsersGeneric interface {
} }
type UsersQueryRequest struct { type UsersQueryRequest struct {
Username string `json:"username" validate:"required,lowercase"` Username *string `json:"username"`
Email string `json:"email" validate:"required,email"` Email *string `json:"email"`
Fullname string `json:"fullname" validate:"required"` Fullname *string `json:"fullname"`
Address string `json:"address" validate:"required"` PhoneNumber *string `json:"phoneNumber"`
PhoneNumber string `json:"phone_number" validate:"required"` IdentityNumber *string `json:"identityNumber"`
WorkType string `json:"work_type" validate:"required"` UserRoleId *int `json:"userRoleId"`
GenderType string `json:"gender_type" validate:"required"` StatusId *int `json:"statusId"`
IdentityType string `json:"identity_type" validate:"required"` Pagination *paginator.Pagination `json:"pagination"`
IdentityNumber string `json:"identity_number" validate:"required"`
DateOfBirth string `json:"date_of_birth" validate:"required"`
LastEducation string `json:"last_education" validate:"required"`
KeycloakId string `json:"keycloak_id" validate:"required"`
UserRoleId int `json:"user_role_id" validate:"required"`
StatusId int `json:"status_id" validate:"required"`
UserLevelsId int `json:"user_levels_id" validate:"required"`
CreatedById int `json:"created_by_id" validate:"required"`
ProfilePicturePath string `json:"profile_picture_path" validate:"required"`
IsActive bool `json:"is_active" validate:"required"`
Pagination *paginator.Pagination `json:"pagination"`
} }
type UsersCreateRequest struct { type UsersCreateRequest struct {
Username string `json:"username" validate:"required,lowercase"` Username string `json:"username" validate:"required,lowercase"`
Email string `json:"email" validate:"required,email"` Email string `json:"email" validate:"required,email"`
Fullname string `json:"fullname" validate:"required"` Fullname string `json:"fullname" validate:"required"`
Address string `json:"address" validate:"required"` Address string `json:"address" validate:"required"`
PhoneNumber string `json:"phone_number" validate:"required"` PhoneNumber string `json:"phoneNumber" validate:"required"`
WorkType string `json:"work_type" validate:"required"` WorkType string `json:"workType" validate:"required"`
GenderType string `json:"gender_type" validate:"required"` GenderType string `json:"genderType" validate:"required"`
IdentityType string `json:"identity_type" validate:"required"` IdentityType string `json:"identityType" validate:"required"`
IdentityNumber string `json:"identity_number" validate:"required"` IdentityNumber string `json:"identityNumber" validate:"required"`
DateOfBirth string `json:"date_of_birth" validate:"required"` DateOfBirth string `json:"dateOfBirth" validate:"required"`
LastEducation string `json:"last_education" validate:"required"` LastEducation string `json:"lastEducation" validate:"required"`
KeycloakId string `json:"keycloak_id" validate:"required"` UserRoleId int `json:"userRoleId" validate:"required"`
UserRoleId int `json:"user_role_id" validate:"required"` UserLevelsId int `json:"userLevelsId" validate:"required"`
StatusId int `json:"status_id" validate:"required"` KeycloakId *string `json:"keycloakId"`
UserLevelsId int `json:"user_levels_id" validate:"required"` StatusId *int `json:"statusId"`
CreatedById int `json:"created_by_id" validate:"required"` CreatedById *int `json:"createdById"`
ProfilePicturePath string `json:"profile_picture_path" validate:"required"` ProfilePicturePath *string `json:"profilePicturePath"`
IsActive bool `json:"is_active" validate:"required"` IsActive *bool `json:"isActive"`
} }
func (req UsersCreateRequest) ToEntity() *entity.Users { func (req UsersCreateRequest) ToEntity() *entity.Users {
@ -77,32 +67,25 @@ func (req UsersCreateRequest) ToEntity() *entity.Users {
} }
type UsersUpdateRequest struct { type UsersUpdateRequest struct {
ID uint `json:"id" validate:"required"` Username string `json:"username" validate:"required,lowercase"`
Username string `json:"username" validate:"required,lowercase"` Email string `json:"email" validate:"required,email"`
Email string `json:"email" validate:"required,email"` Fullname string `json:"fullname" validate:"required"`
Fullname string `json:"fullname" validate:"required"` Address string `json:"address" validate:"required"`
Address string `json:"address" validate:"required"` PhoneNumber string `json:"phoneNumber" validate:"required"`
PhoneNumber string `json:"phone_number" validate:"required"` WorkType string `json:"workType" validate:"required"`
WorkType string `json:"work_type" validate:"required"` GenderType string `json:"genderType" validate:"required"`
GenderType string `json:"gender_type" validate:"required"` IdentityType string `json:"identityType" validate:"required"`
IdentityType string `json:"identity_type" validate:"required"` IdentityNumber string `json:"identityNumber" validate:"required"`
IdentityNumber string `json:"identity_number" validate:"required"` DateOfBirth string `json:"dateOfBirth" validate:"required"`
DateOfBirth string `json:"date_of_birth" validate:"required"` LastEducation string `json:"lastEducation" validate:"required"`
LastEducation string `json:"last_education" validate:"required"` UserRoleId int `json:"userRoleId" validate:"required"`
KeycloakId string `json:"keycloak_id" validate:"required"` UserLevelsId int `json:"userLevelsId" validate:"required"`
UserRoleId int `json:"user_role_id" validate:"required"` ProfilePicturePath *string `json:"profile_picture_path"`
StatusId int `json:"status_id" validate:"required"` StatusId *int `json:"status_id"`
UserLevelsId int `json:"user_levels_id" validate:"required"`
CreatedById int `json:"created_by_id" validate:"required"`
ProfilePicturePath string `json:"profile_picture_path" validate:"required"`
IsActive bool `json:"is_active" validate:"required"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
} }
func (req UsersUpdateRequest) ToEntity() *entity.Users { func (req UsersUpdateRequest) ToEntity() *entity.Users {
return &entity.Users{ return &entity.Users{
ID: req.ID,
Username: req.Username, Username: req.Username,
Email: req.Email, Email: req.Email,
Fullname: req.Fullname, Fullname: req.Fullname,
@ -114,14 +97,55 @@ func (req UsersUpdateRequest) ToEntity() *entity.Users {
IdentityNumber: req.IdentityNumber, IdentityNumber: req.IdentityNumber,
DateOfBirth: req.DateOfBirth, DateOfBirth: req.DateOfBirth,
LastEducation: req.LastEducation, LastEducation: req.LastEducation,
KeycloakId: req.KeycloakId,
UserRoleId: req.UserRoleId, UserRoleId: req.UserRoleId,
StatusId: req.StatusId, StatusId: req.StatusId,
UserLevelsId: req.UserLevelsId, UserLevelsId: req.UserLevelsId,
CreatedById: req.CreatedById,
ProfilePicturePath: req.ProfilePicturePath, ProfilePicturePath: req.ProfilePicturePath,
IsActive: req.IsActive, UpdatedAt: time.Now(),
CreatedAt: req.CreatedAt,
UpdatedAt: req.UpdatedAt,
} }
} }
type UsersQueryRequestContext struct {
Username string `json:"username"`
Email string `json:"email"`
Fullname string `json:"fullname"`
Address string `json:"address"`
PhoneNumber string `json:"phoneNumber"`
IdentityNumber string `json:"identityNumber"`
UserRoleId string `json:"userRoleId"`
StatusId string `json:"statusId"`
}
func (req UsersQueryRequestContext) ToParamRequest() UsersQueryRequest {
var request UsersQueryRequest
if username := req.Username; username != "" {
request.Username = &username
}
if email := req.Email; email != "" {
request.Email = &email
}
if fullname := req.Fullname; fullname != "" {
request.Fullname = &fullname
}
if phoneNumber := req.PhoneNumber; phoneNumber != "" {
request.PhoneNumber = &phoneNumber
}
if identityNumber := req.IdentityNumber; identityNumber != "" {
request.IdentityNumber = &identityNumber
}
if userRoleIdStr := req.UserRoleId; userRoleIdStr != "" {
userRoleId, err := strconv.Atoi(userRoleIdStr)
if err == nil {
request.UserRoleId = &userRoleId
}
}
if statusIdStr := req.StatusId; statusIdStr != "" {
statusId, err := strconv.Atoi(statusIdStr)
if err == nil {
request.StatusId = &statusId
}
}
return request
}

View File

@ -3,25 +3,25 @@ package response
import "time" import "time"
type UsersResponse struct { type UsersResponse struct {
ID uint `json:"id"` ID uint `json:"id"`
Username string `json:"username"` Username string `json:"username"`
Email string `json:"email"` Email string `json:"email"`
Fullname string `json:"fullname"` Fullname string `json:"fullname"`
Address string `json:"address"` Address string `json:"address"`
PhoneNumber string `json:"phone_number"` PhoneNumber string `json:"phone_number"`
WorkType string `json:"work_type"` WorkType string `json:"work_type"`
GenderType string `json:"gender_type"` GenderType string `json:"gender_type"`
IdentityType string `json:"identity_type"` IdentityType string `json:"identity_type"`
IdentityNumber string `json:"identity_number"` IdentityNumber string `json:"identity_number"`
DateOfBirth string `json:"date_of_birth"` DateOfBirth string `json:"date_of_birth"`
LastEducation string `json:"last_education"` LastEducation string `json:"last_education"`
KeycloakId string `json:"keycloak_id"` KeycloakId *string `json:"keycloak_id"`
UserRoleId int `json:"user_role_id"` UserRoleId int `json:"user_role_id"`
StatusId int `json:"status_id"` StatusId *int `json:"status_id"`
UserLevelsId int `json:"user_levels_id"` UserLevelsId int `json:"user_levels_id"`
CreatedById int `json:"created_by_id"` CreatedById *int `json:"created_by_id"`
ProfilePicturePath string `json:"profile_picture_path"` ProfilePicturePath *string `json:"profile_picture_path"`
IsActive bool `json:"is_active"` IsActive *bool `json:"is_active"`
CreatedAt time.Time `json:"created_at"` CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"` UpdatedAt time.Time `json:"updated_at"`
} }

View File

@ -34,14 +34,14 @@ func NewUsersService(repo repository.UsersRepository, log zerolog.Logger) UsersS
} }
// All implement interface of UsersService // All implement interface of UsersService
func (_i *usersService) All(req request.UsersQueryRequest) (userss []*response.UsersResponse, paging paginator.Pagination, err error) { func (_i *usersService) All(req request.UsersQueryRequest) (users []*response.UsersResponse, paging paginator.Pagination, err error) {
results, paging, err := _i.Repo.GetAll(req) results, paging, err := _i.Repo.GetAll(req)
if err != nil { if err != nil {
return return
} }
for _, result := range results { for _, result := range results {
userss = append(userss, mapper.UsersResponseMapper(result)) users = append(users, mapper.UsersResponseMapper(result))
} }
return return
@ -68,5 +68,12 @@ func (_i *usersService) Update(id uint, req request.UsersUpdateRequest) (err err
} }
func (_i *usersService) Delete(id uint) error { func (_i *usersService) Delete(id uint) error {
return _i.Repo.Delete(id) result, err := _i.Repo.FindOne(id)
if err != nil {
return err
}
isActive := false
result.IsActive = &isActive
return _i.Repo.Update(id, result)
} }

View File

@ -119,4 +119,5 @@ func (r *Router) Register() {
r.UserLevelsRouter.RegisterUserLevelsRoutes() r.UserLevelsRouter.RegisterUserLevelsRoutes()
r.UserRoleAccessesRouter.RegisterUserRoleAccessesRoutes() r.UserRoleAccessesRouter.RegisterUserRoleAccessesRoutes()
r.UsersRouter.RegisterUsersRoutes() r.UsersRouter.RegisterUsersRoutes()
r.UserRolesRouter.RegisterUserRolesRoutes()
} }

View File

@ -9,7 +9,7 @@ production = false
[db.postgres] [db.postgres]
dsn = "postgresql://humas_polri:P@ssw0rd.1@103.82.242.92:5432/humas_polri" # <driver>://<username>:<password>@<host>:<port>/<database> dsn = "postgresql://humas_polri:P@ssw0rd.1@103.82.242.92:5432/humas_polri" # <driver>://<username>:<password>@<host>:<port>/<database>
migrate = true migrate = false
seed = false seed = false
[logger] [logger]

View File

@ -3948,9 +3948,31 @@ const docTemplate = `{
], ],
"description": "API for getting all UserLevels", "description": "API for getting all UserLevels",
"tags": [ "tags": [
"Task" "UserLevels"
], ],
"summary": "Get all UserLevels", "summary": "Get all UserLevels",
"parameters": [
{
"type": "integer",
"name": "levelNumber",
"in": "query"
},
{
"type": "string",
"name": "name",
"in": "query"
},
{
"type": "integer",
"name": "parentLevelId",
"in": "query"
},
{
"type": "integer",
"name": "provinceId",
"in": "query"
}
],
"responses": { "responses": {
"200": { "200": {
"description": "OK", "description": "OK",
@ -3992,9 +4014,20 @@ const docTemplate = `{
], ],
"description": "API for create UserLevels", "description": "API for create UserLevels",
"tags": [ "tags": [
"Task" "UserLevels"
], ],
"summary": "Create UserLevels", "summary": "Create UserLevels",
"parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UserLevelsCreateRequest"
}
}
],
"responses": { "responses": {
"200": { "200": {
"description": "OK", "description": "OK",
@ -4038,7 +4071,7 @@ const docTemplate = `{
], ],
"description": "API for getting one UserLevels", "description": "API for getting one UserLevels",
"tags": [ "tags": [
"Task" "UserLevels"
], ],
"summary": "Get one UserLevels", "summary": "Get one UserLevels",
"parameters": [ "parameters": [
@ -4091,10 +4124,19 @@ const docTemplate = `{
], ],
"description": "API for update UserLevels", "description": "API for update UserLevels",
"tags": [ "tags": [
"Task" "UserLevels"
], ],
"summary": "update UserLevels", "summary": "update UserLevels",
"parameters": [ "parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UserLevelsUpdateRequest"
}
},
{ {
"type": "integer", "type": "integer",
"description": "UserLevels ID", "description": "UserLevels ID",
@ -4144,7 +4186,7 @@ const docTemplate = `{
], ],
"description": "API for delete UserLevels", "description": "API for delete UserLevels",
"tags": [ "tags": [
"Task" "UserLevels"
], ],
"summary": "delete UserLevels", "summary": "delete UserLevels",
"parameters": [ "parameters": [
@ -4450,9 +4492,36 @@ const docTemplate = `{
], ],
"description": "API for getting all UserRoles", "description": "API for getting all UserRoles",
"tags": [ "tags": [
"Task" "UserRoles"
], ],
"summary": "Get all UserRoles", "summary": "Get all UserRoles",
"parameters": [
{
"type": "string",
"name": "code",
"in": "query"
},
{
"type": "string",
"name": "description",
"in": "query"
},
{
"type": "integer",
"name": "levelNumber",
"in": "query"
},
{
"type": "string",
"name": "name",
"in": "query"
},
{
"type": "integer",
"name": "statusId",
"in": "query"
}
],
"responses": { "responses": {
"200": { "200": {
"description": "OK", "description": "OK",
@ -4494,9 +4563,20 @@ const docTemplate = `{
], ],
"description": "API for create UserRoles", "description": "API for create UserRoles",
"tags": [ "tags": [
"Task" "UserRoles"
], ],
"summary": "Create UserRoles", "summary": "Create UserRoles",
"parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UserRolesCreateRequest"
}
}
],
"responses": { "responses": {
"200": { "200": {
"description": "OK", "description": "OK",
@ -4540,7 +4620,7 @@ const docTemplate = `{
], ],
"description": "API for getting one UserRoles", "description": "API for getting one UserRoles",
"tags": [ "tags": [
"Task" "UserRoles"
], ],
"summary": "Get one UserRoles", "summary": "Get one UserRoles",
"parameters": [ "parameters": [
@ -4593,10 +4673,19 @@ const docTemplate = `{
], ],
"description": "API for update UserRoles", "description": "API for update UserRoles",
"tags": [ "tags": [
"Task" "UserRoles"
], ],
"summary": "update UserRoles", "summary": "update UserRoles",
"parameters": [ "parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UserRolesUpdateRequest"
}
},
{ {
"type": "integer", "type": "integer",
"description": "UserRoles ID", "description": "UserRoles ID",
@ -4646,7 +4735,7 @@ const docTemplate = `{
], ],
"description": "API for delete UserRoles", "description": "API for delete UserRoles",
"tags": [ "tags": [
"Task" "UserRoles"
], ],
"summary": "delete UserRoles", "summary": "delete UserRoles",
"parameters": [ "parameters": [
@ -4701,9 +4790,46 @@ const docTemplate = `{
], ],
"description": "API for getting all Users", "description": "API for getting all Users",
"tags": [ "tags": [
"Task" "Users"
], ],
"summary": "Get all Users", "summary": "Get all Users",
"parameters": [
{
"type": "string",
"name": "email",
"in": "query"
},
{
"type": "string",
"name": "fullname",
"in": "query"
},
{
"type": "string",
"name": "identityNumber",
"in": "query"
},
{
"type": "string",
"name": "phoneNumber",
"in": "query"
},
{
"type": "integer",
"name": "statusId",
"in": "query"
},
{
"type": "integer",
"name": "userRoleId",
"in": "query"
},
{
"type": "string",
"name": "username",
"in": "query"
}
],
"responses": { "responses": {
"200": { "200": {
"description": "OK", "description": "OK",
@ -4745,9 +4871,20 @@ const docTemplate = `{
], ],
"description": "API for create Users", "description": "API for create Users",
"tags": [ "tags": [
"Task" "Users"
], ],
"summary": "Create Users", "summary": "Create Users",
"parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UsersCreateRequest"
}
}
],
"responses": { "responses": {
"200": { "200": {
"description": "OK", "description": "OK",
@ -4791,7 +4928,7 @@ const docTemplate = `{
], ],
"description": "API for getting one Users", "description": "API for getting one Users",
"tags": [ "tags": [
"Task" "Users"
], ],
"summary": "Get one Users", "summary": "Get one Users",
"parameters": [ "parameters": [
@ -4844,10 +4981,19 @@ const docTemplate = `{
], ],
"description": "API for update Users", "description": "API for update Users",
"tags": [ "tags": [
"Task" "Users"
], ],
"summary": "update Users", "summary": "update Users",
"parameters": [ "parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UsersUpdateRequest"
}
},
{ {
"type": "integer", "type": "integer",
"description": "Users ID", "description": "Users ID",
@ -4897,7 +5043,7 @@ const docTemplate = `{
], ],
"description": "API for delete Users", "description": "API for delete Users",
"tags": [ "tags": [
"Task" "Users"
], ],
"summary": "delete Users", "summary": "delete Users",
"parameters": [ "parameters": [
@ -4945,6 +5091,29 @@ const docTemplate = `{
} }
}, },
"definitions": { "definitions": {
"paginator.Pagination": {
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"limit": {
"type": "integer"
},
"nextPage": {
"type": "integer"
},
"page": {
"type": "integer"
},
"previousPage": {
"type": "integer"
},
"totalPage": {
"type": "integer"
}
}
},
"request.ArticleCategoriesCreateRequest": { "request.ArticleCategoriesCreateRequest": {
"type": "object", "type": "object",
"required": [ "required": [
@ -5030,6 +5199,260 @@ const docTemplate = `{
} }
} }
}, },
"request.UserLevelsCreateRequest": {
"type": "object",
"required": [
"aliasName",
"levelNumber",
"name",
"parentLevelId",
"provinceId"
],
"properties": {
"aliasName": {
"type": "string"
},
"is_active": {
"type": "boolean"
},
"levelNumber": {
"type": "integer"
},
"name": {
"type": "string"
},
"parentLevelId": {
"type": "integer"
},
"provinceId": {
"type": "integer"
}
}
},
"request.UserLevelsUpdateRequest": {
"type": "object",
"required": [
"aliasName",
"levelNumber",
"name",
"parentLevelId",
"provinceId"
],
"properties": {
"aliasName": {
"type": "string"
},
"levelNumber": {
"type": "integer"
},
"name": {
"type": "string"
},
"parentLevelId": {
"type": "integer"
},
"provinceId": {
"type": "integer"
}
}
},
"request.UserRolesCreateRequest": {
"type": "object",
"required": [
"code",
"description",
"level_number",
"name"
],
"properties": {
"code": {
"type": "string"
},
"created_by_id": {
"type": "integer"
},
"description": {
"type": "string"
},
"is_active": {
"type": "boolean"
},
"level_number": {
"type": "integer"
},
"name": {
"type": "string"
},
"status_id": {
"type": "integer"
}
}
},
"request.UserRolesUpdateRequest": {
"type": "object",
"required": [
"code",
"description",
"level_number",
"name"
],
"properties": {
"code": {
"type": "string"
},
"description": {
"type": "string"
},
"level_number": {
"type": "integer"
},
"name": {
"type": "string"
},
"status_id": {
"type": "integer"
}
}
},
"request.UsersCreateRequest": {
"type": "object",
"required": [
"address",
"dateOfBirth",
"email",
"fullname",
"genderType",
"identityNumber",
"identityType",
"lastEducation",
"phoneNumber",
"userLevelsId",
"userRoleId",
"username",
"workType"
],
"properties": {
"address": {
"type": "string"
},
"createdById": {
"type": "integer"
},
"dateOfBirth": {
"type": "string"
},
"email": {
"type": "string"
},
"fullname": {
"type": "string"
},
"genderType": {
"type": "string"
},
"identityNumber": {
"type": "string"
},
"identityType": {
"type": "string"
},
"isActive": {
"type": "boolean"
},
"keycloakId": {
"type": "string"
},
"lastEducation": {
"type": "string"
},
"phoneNumber": {
"type": "string"
},
"profilePicturePath": {
"type": "string"
},
"statusId": {
"type": "integer"
},
"userLevelsId": {
"type": "integer"
},
"userRoleId": {
"type": "integer"
},
"username": {
"type": "string"
},
"workType": {
"type": "string"
}
}
},
"request.UsersUpdateRequest": {
"type": "object",
"required": [
"address",
"dateOfBirth",
"email",
"fullname",
"genderType",
"identityNumber",
"identityType",
"lastEducation",
"phoneNumber",
"userLevelsId",
"userRoleId",
"username",
"workType"
],
"properties": {
"address": {
"type": "string"
},
"dateOfBirth": {
"type": "string"
},
"email": {
"type": "string"
},
"fullname": {
"type": "string"
},
"genderType": {
"type": "string"
},
"identityNumber": {
"type": "string"
},
"identityType": {
"type": "string"
},
"lastEducation": {
"type": "string"
},
"phoneNumber": {
"type": "string"
},
"profile_picture_path": {
"type": "string"
},
"status_id": {
"type": "integer"
},
"userLevelsId": {
"type": "integer"
},
"userRoleId": {
"type": "integer"
},
"username": {
"type": "string"
},
"workType": {
"type": "string"
}
}
},
"response.Response": { "response.Response": {
"type": "object", "type": "object",
"properties": { "properties": {

View File

@ -3937,9 +3937,31 @@
], ],
"description": "API for getting all UserLevels", "description": "API for getting all UserLevels",
"tags": [ "tags": [
"Task" "UserLevels"
], ],
"summary": "Get all UserLevels", "summary": "Get all UserLevels",
"parameters": [
{
"type": "integer",
"name": "levelNumber",
"in": "query"
},
{
"type": "string",
"name": "name",
"in": "query"
},
{
"type": "integer",
"name": "parentLevelId",
"in": "query"
},
{
"type": "integer",
"name": "provinceId",
"in": "query"
}
],
"responses": { "responses": {
"200": { "200": {
"description": "OK", "description": "OK",
@ -3981,9 +4003,20 @@
], ],
"description": "API for create UserLevels", "description": "API for create UserLevels",
"tags": [ "tags": [
"Task" "UserLevels"
], ],
"summary": "Create UserLevels", "summary": "Create UserLevels",
"parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UserLevelsCreateRequest"
}
}
],
"responses": { "responses": {
"200": { "200": {
"description": "OK", "description": "OK",
@ -4027,7 +4060,7 @@
], ],
"description": "API for getting one UserLevels", "description": "API for getting one UserLevels",
"tags": [ "tags": [
"Task" "UserLevels"
], ],
"summary": "Get one UserLevels", "summary": "Get one UserLevels",
"parameters": [ "parameters": [
@ -4080,10 +4113,19 @@
], ],
"description": "API for update UserLevels", "description": "API for update UserLevels",
"tags": [ "tags": [
"Task" "UserLevels"
], ],
"summary": "update UserLevels", "summary": "update UserLevels",
"parameters": [ "parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UserLevelsUpdateRequest"
}
},
{ {
"type": "integer", "type": "integer",
"description": "UserLevels ID", "description": "UserLevels ID",
@ -4133,7 +4175,7 @@
], ],
"description": "API for delete UserLevels", "description": "API for delete UserLevels",
"tags": [ "tags": [
"Task" "UserLevels"
], ],
"summary": "delete UserLevels", "summary": "delete UserLevels",
"parameters": [ "parameters": [
@ -4439,9 +4481,36 @@
], ],
"description": "API for getting all UserRoles", "description": "API for getting all UserRoles",
"tags": [ "tags": [
"Task" "UserRoles"
], ],
"summary": "Get all UserRoles", "summary": "Get all UserRoles",
"parameters": [
{
"type": "string",
"name": "code",
"in": "query"
},
{
"type": "string",
"name": "description",
"in": "query"
},
{
"type": "integer",
"name": "levelNumber",
"in": "query"
},
{
"type": "string",
"name": "name",
"in": "query"
},
{
"type": "integer",
"name": "statusId",
"in": "query"
}
],
"responses": { "responses": {
"200": { "200": {
"description": "OK", "description": "OK",
@ -4483,9 +4552,20 @@
], ],
"description": "API for create UserRoles", "description": "API for create UserRoles",
"tags": [ "tags": [
"Task" "UserRoles"
], ],
"summary": "Create UserRoles", "summary": "Create UserRoles",
"parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UserRolesCreateRequest"
}
}
],
"responses": { "responses": {
"200": { "200": {
"description": "OK", "description": "OK",
@ -4529,7 +4609,7 @@
], ],
"description": "API for getting one UserRoles", "description": "API for getting one UserRoles",
"tags": [ "tags": [
"Task" "UserRoles"
], ],
"summary": "Get one UserRoles", "summary": "Get one UserRoles",
"parameters": [ "parameters": [
@ -4582,10 +4662,19 @@
], ],
"description": "API for update UserRoles", "description": "API for update UserRoles",
"tags": [ "tags": [
"Task" "UserRoles"
], ],
"summary": "update UserRoles", "summary": "update UserRoles",
"parameters": [ "parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UserRolesUpdateRequest"
}
},
{ {
"type": "integer", "type": "integer",
"description": "UserRoles ID", "description": "UserRoles ID",
@ -4635,7 +4724,7 @@
], ],
"description": "API for delete UserRoles", "description": "API for delete UserRoles",
"tags": [ "tags": [
"Task" "UserRoles"
], ],
"summary": "delete UserRoles", "summary": "delete UserRoles",
"parameters": [ "parameters": [
@ -4690,9 +4779,46 @@
], ],
"description": "API for getting all Users", "description": "API for getting all Users",
"tags": [ "tags": [
"Task" "Users"
], ],
"summary": "Get all Users", "summary": "Get all Users",
"parameters": [
{
"type": "string",
"name": "email",
"in": "query"
},
{
"type": "string",
"name": "fullname",
"in": "query"
},
{
"type": "string",
"name": "identityNumber",
"in": "query"
},
{
"type": "string",
"name": "phoneNumber",
"in": "query"
},
{
"type": "integer",
"name": "statusId",
"in": "query"
},
{
"type": "integer",
"name": "userRoleId",
"in": "query"
},
{
"type": "string",
"name": "username",
"in": "query"
}
],
"responses": { "responses": {
"200": { "200": {
"description": "OK", "description": "OK",
@ -4734,9 +4860,20 @@
], ],
"description": "API for create Users", "description": "API for create Users",
"tags": [ "tags": [
"Task" "Users"
], ],
"summary": "Create Users", "summary": "Create Users",
"parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UsersCreateRequest"
}
}
],
"responses": { "responses": {
"200": { "200": {
"description": "OK", "description": "OK",
@ -4780,7 +4917,7 @@
], ],
"description": "API for getting one Users", "description": "API for getting one Users",
"tags": [ "tags": [
"Task" "Users"
], ],
"summary": "Get one Users", "summary": "Get one Users",
"parameters": [ "parameters": [
@ -4833,10 +4970,19 @@
], ],
"description": "API for update Users", "description": "API for update Users",
"tags": [ "tags": [
"Task" "Users"
], ],
"summary": "update Users", "summary": "update Users",
"parameters": [ "parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UsersUpdateRequest"
}
},
{ {
"type": "integer", "type": "integer",
"description": "Users ID", "description": "Users ID",
@ -4886,7 +5032,7 @@
], ],
"description": "API for delete Users", "description": "API for delete Users",
"tags": [ "tags": [
"Task" "Users"
], ],
"summary": "delete Users", "summary": "delete Users",
"parameters": [ "parameters": [
@ -4934,6 +5080,29 @@
} }
}, },
"definitions": { "definitions": {
"paginator.Pagination": {
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"limit": {
"type": "integer"
},
"nextPage": {
"type": "integer"
},
"page": {
"type": "integer"
},
"previousPage": {
"type": "integer"
},
"totalPage": {
"type": "integer"
}
}
},
"request.ArticleCategoriesCreateRequest": { "request.ArticleCategoriesCreateRequest": {
"type": "object", "type": "object",
"required": [ "required": [
@ -5019,6 +5188,260 @@
} }
} }
}, },
"request.UserLevelsCreateRequest": {
"type": "object",
"required": [
"aliasName",
"levelNumber",
"name",
"parentLevelId",
"provinceId"
],
"properties": {
"aliasName": {
"type": "string"
},
"is_active": {
"type": "boolean"
},
"levelNumber": {
"type": "integer"
},
"name": {
"type": "string"
},
"parentLevelId": {
"type": "integer"
},
"provinceId": {
"type": "integer"
}
}
},
"request.UserLevelsUpdateRequest": {
"type": "object",
"required": [
"aliasName",
"levelNumber",
"name",
"parentLevelId",
"provinceId"
],
"properties": {
"aliasName": {
"type": "string"
},
"levelNumber": {
"type": "integer"
},
"name": {
"type": "string"
},
"parentLevelId": {
"type": "integer"
},
"provinceId": {
"type": "integer"
}
}
},
"request.UserRolesCreateRequest": {
"type": "object",
"required": [
"code",
"description",
"level_number",
"name"
],
"properties": {
"code": {
"type": "string"
},
"created_by_id": {
"type": "integer"
},
"description": {
"type": "string"
},
"is_active": {
"type": "boolean"
},
"level_number": {
"type": "integer"
},
"name": {
"type": "string"
},
"status_id": {
"type": "integer"
}
}
},
"request.UserRolesUpdateRequest": {
"type": "object",
"required": [
"code",
"description",
"level_number",
"name"
],
"properties": {
"code": {
"type": "string"
},
"description": {
"type": "string"
},
"level_number": {
"type": "integer"
},
"name": {
"type": "string"
},
"status_id": {
"type": "integer"
}
}
},
"request.UsersCreateRequest": {
"type": "object",
"required": [
"address",
"dateOfBirth",
"email",
"fullname",
"genderType",
"identityNumber",
"identityType",
"lastEducation",
"phoneNumber",
"userLevelsId",
"userRoleId",
"username",
"workType"
],
"properties": {
"address": {
"type": "string"
},
"createdById": {
"type": "integer"
},
"dateOfBirth": {
"type": "string"
},
"email": {
"type": "string"
},
"fullname": {
"type": "string"
},
"genderType": {
"type": "string"
},
"identityNumber": {
"type": "string"
},
"identityType": {
"type": "string"
},
"isActive": {
"type": "boolean"
},
"keycloakId": {
"type": "string"
},
"lastEducation": {
"type": "string"
},
"phoneNumber": {
"type": "string"
},
"profilePicturePath": {
"type": "string"
},
"statusId": {
"type": "integer"
},
"userLevelsId": {
"type": "integer"
},
"userRoleId": {
"type": "integer"
},
"username": {
"type": "string"
},
"workType": {
"type": "string"
}
}
},
"request.UsersUpdateRequest": {
"type": "object",
"required": [
"address",
"dateOfBirth",
"email",
"fullname",
"genderType",
"identityNumber",
"identityType",
"lastEducation",
"phoneNumber",
"userLevelsId",
"userRoleId",
"username",
"workType"
],
"properties": {
"address": {
"type": "string"
},
"dateOfBirth": {
"type": "string"
},
"email": {
"type": "string"
},
"fullname": {
"type": "string"
},
"genderType": {
"type": "string"
},
"identityNumber": {
"type": "string"
},
"identityType": {
"type": "string"
},
"lastEducation": {
"type": "string"
},
"phoneNumber": {
"type": "string"
},
"profile_picture_path": {
"type": "string"
},
"status_id": {
"type": "integer"
},
"userLevelsId": {
"type": "integer"
},
"userRoleId": {
"type": "integer"
},
"username": {
"type": "string"
},
"workType": {
"type": "string"
}
}
},
"response.Response": { "response.Response": {
"type": "object", "type": "object",
"properties": { "properties": {

View File

@ -1,4 +1,19 @@
definitions: definitions:
paginator.Pagination:
properties:
count:
type: integer
limit:
type: integer
nextPage:
type: integer
page:
type: integer
previousPage:
type: integer
totalPage:
type: integer
type: object
request.ArticleCategoriesCreateRequest: request.ArticleCategoriesCreateRequest:
properties: properties:
created_by_id: created_by_id:
@ -59,6 +74,186 @@ definitions:
- id - id
- prov_id - prov_id
type: object type: object
request.UserLevelsCreateRequest:
properties:
aliasName:
type: string
is_active:
type: boolean
levelNumber:
type: integer
name:
type: string
parentLevelId:
type: integer
provinceId:
type: integer
required:
- aliasName
- levelNumber
- name
- parentLevelId
- provinceId
type: object
request.UserLevelsUpdateRequest:
properties:
aliasName:
type: string
levelNumber:
type: integer
name:
type: string
parentLevelId:
type: integer
provinceId:
type: integer
required:
- aliasName
- levelNumber
- name
- parentLevelId
- provinceId
type: object
request.UserRolesCreateRequest:
properties:
code:
type: string
created_by_id:
type: integer
description:
type: string
is_active:
type: boolean
level_number:
type: integer
name:
type: string
status_id:
type: integer
required:
- code
- description
- level_number
- name
type: object
request.UserRolesUpdateRequest:
properties:
code:
type: string
description:
type: string
level_number:
type: integer
name:
type: string
status_id:
type: integer
required:
- code
- description
- level_number
- name
type: object
request.UsersCreateRequest:
properties:
address:
type: string
createdById:
type: integer
dateOfBirth:
type: string
email:
type: string
fullname:
type: string
genderType:
type: string
identityNumber:
type: string
identityType:
type: string
isActive:
type: boolean
keycloakId:
type: string
lastEducation:
type: string
phoneNumber:
type: string
profilePicturePath:
type: string
statusId:
type: integer
userLevelsId:
type: integer
userRoleId:
type: integer
username:
type: string
workType:
type: string
required:
- address
- dateOfBirth
- email
- fullname
- genderType
- identityNumber
- identityType
- lastEducation
- phoneNumber
- userLevelsId
- userRoleId
- username
- workType
type: object
request.UsersUpdateRequest:
properties:
address:
type: string
dateOfBirth:
type: string
email:
type: string
fullname:
type: string
genderType:
type: string
identityNumber:
type: string
identityType:
type: string
lastEducation:
type: string
phoneNumber:
type: string
profile_picture_path:
type: string
status_id:
type: integer
userLevelsId:
type: integer
userRoleId:
type: integer
username:
type: string
workType:
type: string
required:
- address
- dateOfBirth
- email
- fullname
- genderType
- identityNumber
- identityType
- lastEducation
- phoneNumber
- userLevelsId
- userRoleId
- username
- workType
type: object
response.Response: response.Response:
properties: properties:
code: code:
@ -2579,6 +2774,19 @@ paths:
/user-levels: /user-levels:
get: get:
description: API for getting all UserLevels description: API for getting all UserLevels
parameters:
- in: query
name: levelNumber
type: integer
- in: query
name: name
type: string
- in: query
name: parentLevelId
type: integer
- in: query
name: provinceId
type: integer
responses: responses:
"200": "200":
description: OK description: OK
@ -2604,9 +2812,16 @@ paths:
- Bearer: [] - Bearer: []
summary: Get all UserLevels summary: Get all UserLevels
tags: tags:
- Task - UserLevels
post: post:
description: API for create UserLevels description: API for create UserLevels
parameters:
- description: Required payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/request.UserLevelsCreateRequest'
responses: responses:
"200": "200":
description: OK description: OK
@ -2632,7 +2847,7 @@ paths:
- Bearer: [] - Bearer: []
summary: Create UserLevels summary: Create UserLevels
tags: tags:
- Task - UserLevels
/user-levels/{id}: /user-levels/{id}:
delete: delete:
description: API for delete UserLevels description: API for delete UserLevels
@ -2667,7 +2882,7 @@ paths:
- Bearer: [] - Bearer: []
summary: delete UserLevels summary: delete UserLevels
tags: tags:
- Task - UserLevels
get: get:
description: API for getting one UserLevels description: API for getting one UserLevels
parameters: parameters:
@ -2701,10 +2916,16 @@ paths:
- Bearer: [] - Bearer: []
summary: Get one UserLevels summary: Get one UserLevels
tags: tags:
- Task - UserLevels
put: put:
description: API for update UserLevels description: API for update UserLevels
parameters: parameters:
- description: Required payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/request.UserLevelsUpdateRequest'
- description: UserLevels ID - description: UserLevels ID
in: path in: path
name: id name: id
@ -2735,7 +2956,7 @@ paths:
- Bearer: [] - Bearer: []
summary: update UserLevels summary: update UserLevels
tags: tags:
- Task - UserLevels
/user-role-accesses: /user-role-accesses:
get: get:
description: API for getting all UserRoleAccesses description: API for getting all UserRoleAccesses
@ -2899,6 +3120,22 @@ paths:
/user-roles: /user-roles:
get: get:
description: API for getting all UserRoles description: API for getting all UserRoles
parameters:
- in: query
name: code
type: string
- in: query
name: description
type: string
- in: query
name: levelNumber
type: integer
- in: query
name: name
type: string
- in: query
name: statusId
type: integer
responses: responses:
"200": "200":
description: OK description: OK
@ -2924,9 +3161,16 @@ paths:
- Bearer: [] - Bearer: []
summary: Get all UserRoles summary: Get all UserRoles
tags: tags:
- Task - UserRoles
post: post:
description: API for create UserRoles description: API for create UserRoles
parameters:
- description: Required payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/request.UserRolesCreateRequest'
responses: responses:
"200": "200":
description: OK description: OK
@ -2952,7 +3196,7 @@ paths:
- Bearer: [] - Bearer: []
summary: Create UserRoles summary: Create UserRoles
tags: tags:
- Task - UserRoles
/user-roles/{id}: /user-roles/{id}:
delete: delete:
description: API for delete UserRoles description: API for delete UserRoles
@ -2987,7 +3231,7 @@ paths:
- Bearer: [] - Bearer: []
summary: delete UserRoles summary: delete UserRoles
tags: tags:
- Task - UserRoles
get: get:
description: API for getting one UserRoles description: API for getting one UserRoles
parameters: parameters:
@ -3021,10 +3265,16 @@ paths:
- Bearer: [] - Bearer: []
summary: Get one UserRoles summary: Get one UserRoles
tags: tags:
- Task - UserRoles
put: put:
description: API for update UserRoles description: API for update UserRoles
parameters: parameters:
- description: Required payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/request.UserRolesUpdateRequest'
- description: UserRoles ID - description: UserRoles ID
in: path in: path
name: id name: id
@ -3055,10 +3305,32 @@ paths:
- Bearer: [] - Bearer: []
summary: update UserRoles summary: update UserRoles
tags: tags:
- Task - UserRoles
/users: /users:
get: get:
description: API for getting all Users description: API for getting all Users
parameters:
- in: query
name: email
type: string
- in: query
name: fullname
type: string
- in: query
name: identityNumber
type: string
- in: query
name: phoneNumber
type: string
- in: query
name: statusId
type: integer
- in: query
name: userRoleId
type: integer
- in: query
name: username
type: string
responses: responses:
"200": "200":
description: OK description: OK
@ -3084,9 +3356,16 @@ paths:
- Bearer: [] - Bearer: []
summary: Get all Users summary: Get all Users
tags: tags:
- Task - Users
post: post:
description: API for create Users description: API for create Users
parameters:
- description: Required payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/request.UsersCreateRequest'
responses: responses:
"200": "200":
description: OK description: OK
@ -3112,7 +3391,7 @@ paths:
- Bearer: [] - Bearer: []
summary: Create Users summary: Create Users
tags: tags:
- Task - Users
/users/{id}: /users/{id}:
delete: delete:
description: API for delete Users description: API for delete Users
@ -3147,7 +3426,7 @@ paths:
- Bearer: [] - Bearer: []
summary: delete Users summary: delete Users
tags: tags:
- Task - Users
get: get:
description: API for getting one Users description: API for getting one Users
parameters: parameters:
@ -3181,10 +3460,16 @@ paths:
- Bearer: [] - Bearer: []
summary: Get one Users summary: Get one Users
tags: tags:
- Task - Users
put: put:
description: API for update Users description: API for update Users
parameters: parameters:
- description: Required payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/request.UsersUpdateRequest'
- description: Users ID - description: Users ID
in: path in: path
name: id name: id
@ -3215,5 +3500,5 @@ paths:
- Bearer: [] - Bearer: []
summary: update Users summary: update Users
tags: tags:
- Task - Users
swagger: "2.0" swagger: "2.0"

View File

@ -15,10 +15,10 @@ type Pagination struct {
Limit int `json:"limit,omitempty"` Limit int `json:"limit,omitempty"`
Offset int `json:"-"` Offset int `json:"-"`
Page int `json:"page,omitempty"` Page int `json:"page,omitempty"`
NextPage int `json:"next_page,omitempty"` NextPage int `json:"nextPage,omitempty"`
PreviousPage int `json:"previous_page,omitempty"` PreviousPage int `json:"previousPage,omitempty"`
Count int64 `json:"count,omitempty"` Count int64 `json:"count,omitempty"`
TotalPage int `json:"total_page,omitempty"` TotalPage int `json:"totalPage,omitempty"`
} }
func Paging(p *Pagination) *Pagination { func Paging(p *Pagination) *Pagination {