feat: update userRoles, userLevels, users, swagger

This commit is contained in:
hanif salafi 2024-03-31 18:59:32 +07:00
parent 1ce9323d77
commit 17b32d68f4
26 changed files with 1640 additions and 303 deletions

View File

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

View File

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

View File

@ -3,25 +3,25 @@ package entity
import "time"
type Users struct {
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
Username string `json:"username" gorm:"type:varchar"`
Email string `json:"email" gorm:"type:varchar"`
Fullname string `json:"fullname" gorm:"type:varchar"`
Address string `json:"address" gorm:"type:varchar"`
PhoneNumber string `json:"phone_number" gorm:"type:varchar"`
WorkType string `json:"work_type" gorm:"type:varchar"`
GenderType string `json:"gender_type" gorm:"type:varchar"`
IdentityType string `json:"identity_type" gorm:"type:varchar"`
IdentityNumber string `json:"identity_number" gorm:"type:varchar"`
DateOfBirth string `json:"date_of_birth" 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"`
StatusId int `json:"status_id" gorm:"type:int4"`
UserLevelsId int `json:"user_levels_id" gorm:"type:int4"`
CreatedById int `json:"created_by_id" gorm:"type:int4"`
ProfilePicturePath string `json:"profile_picture_path" gorm:"type:varchar"`
IsActive bool `json:"is_active" gorm:"type:bool"`
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
Username string `json:"username" gorm:"type:varchar"`
Email string `json:"email" gorm:"type:varchar"`
Fullname string `json:"fullname" gorm:"type:varchar"`
Address string `json:"address" gorm:"type:varchar"`
PhoneNumber string `json:"phone_number" gorm:"type:varchar"`
WorkType string `json:"work_type" gorm:"type:varchar"`
GenderType string `json:"gender_type" gorm:"type:varchar"`
IdentityType string `json:"identity_type" gorm:"type:varchar"`
IdentityNumber string `json:"identity_number" gorm:"type:varchar"`
DateOfBirth string `json:"date_of_birth" gorm:"type:varchar"`
LastEducation string `json:"last_education" gorm:"type:varchar"`
UserRoleId int `json:"user_role_id" gorm:"type:int4"`
UserLevelsId int `json:"user_levels_id" gorm:"type:int4"`
KeycloakId *string `json:"keycloak_id" gorm:"type:varchar"`
StatusId *int `json:"status_id" gorm:"type:int4"`
CreatedById *int `json:"created_by_id" gorm:"type:int4"`
ProfilePicturePath *string `json:"profile_picture_path" gorm:"type:varchar"`
IsActive *bool `json:"is_active" gorm:"type:bool"`
CreatedAt time.Time `json:"created_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"`
ThumbnailUrl string `json:"thumbnail_url" validate:"required"`
ParentId int `json:"parent_id" validate:"required"`
CreatedById int `json:"created_by_id" validate:"required"`
StatusId int `json:"status_id" validate:"required"`
IsPublish bool `json:"is_publish" 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/response"
"go-humas-be/utils/paginator"
"time"
)
// MasterStatusesService

View File

@ -29,11 +29,12 @@ func NewUserLevelsController(userLevelsService service.UserLevelsService) UserLe
}
}
// All get all UserLevels
// All UserLevels
// @Summary Get all UserLevels
// @Description API for getting all UserLevels
// @Tags Task
// @Tags UserLevels
// @Security Bearer
// @Param req query request.UserLevelsQueryRequest false "query parameters"
// @Success 200 {object} response.Response
// @Failure 401 {object} response.Response
// @Failure 404 {object} response.Response
@ -46,7 +47,13 @@ func (_i *userLevelsController) All(c *fiber.Ctx) error {
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
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{
Success: true,
Messages: utilRes.Messages{"UserLevels list successfully retrieved"},
Data: userLevelsData,
Meta: paging,
})
}
// Show get one UserLevels
// Show UserLevels
// @Summary Get one UserLevels
// @Description API for getting one UserLevels
// @Tags Task
// @Tags UserLevels
// @Security Bearer
// @Param id path int true "UserLevels ID"
// @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
// @Description API for create UserLevels
// @Tags Task
// @Tags UserLevels
// @Security Bearer
// @Body request.UserLevelsCreateRequest
// @Param payload body request.UserLevelsCreateRequest true "Required payload"
// @Success 200 {object} response.Response
// @Failure 401 {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{
Success: true,
Messages: utilRes.Messages{"UserLevels successfully created"},
})
}
// Update update UserLevels
// Update UserLevels
// @Summary update UserLevels
// @Description API for update UserLevels
// @Tags Task
// @Tags UserLevels
// @Security Bearer
// @Body request.UserLevelsUpdateRequest
// @Param payload body request.UserLevelsUpdateRequest true "Required payload"
// @Param id path int true "UserLevels ID"
// @Success 200 {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{
Success: true,
Messages: utilRes.Messages{"UserLevels successfully updated"},
})
}
// Delete delete UserLevels
// Delete UserLevels
// @Summary delete UserLevels
// @Description API for delete UserLevels
// @Tags Task
// @Tags UserLevels
// @Security Bearer
// @Param id path int true "UserLevels ID"
// @Success 200 {object} response.Response

View File

@ -5,6 +5,7 @@ import (
"go-humas-be/app/database/entity"
"go-humas-be/app/module/user_levels/request"
"go-humas-be/utils/paginator"
"strings"
)
type userLevelsRepository struct {
@ -31,9 +32,23 @@ func (_i *userLevelsRepository) GetAll(req request.UserLevelsQueryRequest) (user
var count int64
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)
req.Pagination.Count = count
req.Pagination = paginator.Paging(req.Pagination)
err = query.Offset(req.Pagination.Offset).Limit(req.Pagination.Limit).Find(&userLevelss).Error

View File

@ -3,6 +3,7 @@ package request
import (
"go-humas-be/app/database/entity"
"go-humas-be/utils/paginator"
"strconv"
"time"
)
@ -11,22 +12,20 @@ type UserLevelsGeneric interface {
}
type UserLevelsQueryRequest struct {
Name string `json:"name" validate:"required"`
AliasName string `json:"alias_name" validate:"required"`
LevelNumber int `json:"level_number" validate:"required"`
ParentLevelId int `json:"parent_level_id" validate:"required"`
ProvinceId int `json:"province_id" validate:"required"`
IsActive bool `json:"is_active" validate:"required"`
Name *string `json:"name"`
LevelNumber *int `json:"levelNumber"`
ParentLevelId *int `json:"parentLevelId"`
ProvinceId *int `json:"provinceId"`
Pagination *paginator.Pagination `json:"pagination"`
}
type UserLevelsCreateRequest struct {
Name string `json:"name" validate:"required"`
AliasName string `json:"alias_name" validate:"required"`
LevelNumber int `json:"level_number" validate:"required"`
ParentLevelId int `json:"parent_level_id" validate:"required"`
ProvinceId int `json:"province_id" validate:"required"`
IsActive bool `json:"is_active" validate:"required"`
AliasName string `json:"aliasName" validate:"required"`
LevelNumber int `json:"levelNumber" validate:"required"`
ParentLevelId int `json:"parentLevelId" validate:"required"`
ProvinceId int `json:"provinceId" validate:"required"`
IsActive *bool `json:"is_active"`
}
func (req UserLevelsCreateRequest) ToEntity() *entity.UserLevels {
@ -41,27 +40,55 @@ func (req UserLevelsCreateRequest) ToEntity() *entity.UserLevels {
}
type UserLevelsUpdateRequest struct {
ID uint `json:"id" validate:"required"`
Name string `json:"name" validate:"required"`
AliasName string `json:"alias_name" validate:"required"`
LevelNumber int `json:"level_number" validate:"required"`
ParentLevelId int `json:"parent_level_id" 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"`
Name string `json:"name" validate:"required"`
AliasName string `json:"aliasName" validate:"required"`
LevelNumber int `json:"levelNumber" validate:"required"`
ParentLevelId int `json:"parentLevelId" validate:"required"`
ProvinceId int `json:"provinceId" validate:"required"`
}
func (req UserLevelsUpdateRequest) ToEntity() *entity.UserLevels {
return &entity.UserLevels{
ID: req.ID,
Name: req.Name,
AliasName: req.AliasName,
LevelNumber: req.LevelNumber,
ParentLevelId: req.ParentLevelId,
ProvinceId: req.ProvinceId,
IsActive: req.IsActive,
CreatedAt: req.CreatedAt,
UpdatedAt: req.UpdatedAt,
UpdatedAt: time.Now(),
}
}
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 {
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
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 {
UserRoles UserRolesController
}
func NewController(UserRolesService service.UserRolesService) *Controller {
func NewController(UserRolesService service.UserRolesService, log zerolog.Logger) *Controller {
return &Controller{
UserRoles: NewUserRolesController(UserRolesService),
UserRoles: NewUserRolesController(UserRolesService, log),
}
}

View File

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

View File

@ -1,14 +1,18 @@
package repository
import (
"github.com/rs/zerolog"
"go-humas-be/app/database"
"go-humas-be/app/database/entity"
"go-humas-be/app/module/user_roles/request"
"go-humas-be/utils/paginator"
"strings"
"time"
)
type userRolesRepository struct {
DB *database.Database
DB *database.Database
Log zerolog.Logger
}
// UserRolesRepository define interface of IUserRolesRepository
@ -20,9 +24,10 @@ type UserRolesRepository interface {
Delete(id uint) (err error)
}
func NewUserRolesRepository(db *database.Database) UserRolesRepository {
func NewUserRolesRepository(db *database.Database, log zerolog.Logger) UserRolesRepository {
return &userRolesRepository{
DB: db,
DB: db,
Log: log,
}
}
@ -31,8 +36,27 @@ func (_i *userRolesRepository) GetAll(req request.UserRolesQueryRequest) (userRo
var count int64
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)
_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 = paginator.Paging(req.Pagination)

View File

@ -3,6 +3,7 @@ package request
import (
"go-humas-be/app/database/entity"
"go-humas-be/utils/paginator"
"strconv"
"time"
)
@ -11,13 +12,11 @@ type UserRolesGeneric interface {
}
type UserRolesQueryRequest struct {
Name string `json:"name" validate:"required"`
Description string `json:"description" validate:"required"`
Code string `json:"code" validate:"required"`
LevelNumber int `json:"level_number" validate:"required"`
StatusId int `json:"status_id" validate:"required"`
CreatedById int `json:"created_by_id" validate:"required"`
IsActive bool `json:"is_active" validate:"required"`
Name *string `json:"name"`
Description *string `json:"description"`
Code *string `json:"code"`
LevelNumber *int `json:"levelNumber"`
StatusId *int `json:"statusId"`
Pagination *paginator.Pagination `json:"pagination"`
}
@ -26,9 +25,9 @@ type UserRolesCreateRequest struct {
Description string `json:"description" validate:"required"`
Code string `json:"code" validate:"required"`
LevelNumber int `json:"level_number" validate:"required"`
StatusId int `json:"status_id" validate:"required"`
CreatedById int `json:"created_by_id" validate:"required"`
IsActive bool `json:"is_active" validate:"required"`
StatusId *int `json:"status_id"`
CreatedById *int `json:"created_by_id"`
IsActive *bool `json:"is_active"`
}
func (req UserRolesCreateRequest) ToEntity() *entity.UserRoles {
@ -44,29 +43,53 @@ func (req UserRolesCreateRequest) ToEntity() *entity.UserRoles {
}
type UserRolesUpdateRequest struct {
ID uint `json:"id" validate:"required"`
Name string `json:"name" validate:"required"`
Description string `json:"description" validate:"required"`
Code string `json:"code" validate:"required"`
LevelNumber int `json:"level_number" validate:"required"`
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"`
Name string `json:"name" validate:"required"`
Description string `json:"description" validate:"required"`
Code string `json:"code" validate:"required"`
LevelNumber int `json:"level_number" validate:"required"`
StatusId *int `json:"status_id"`
}
func (req UserRolesUpdateRequest) ToEntity() *entity.UserRoles {
return &entity.UserRoles{
ID: req.ID,
Name: req.Name,
Description: req.Description,
Code: req.Code,
LevelNumber: req.LevelNumber,
StatusId: req.StatusId,
CreatedById: req.CreatedById,
IsActive: req.IsActive,
CreatedAt: req.CreatedAt,
UpdatedAt: req.UpdatedAt,
UpdatedAt: time.Now(),
}
}
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"
type UserRolesResponse struct {
ID uint `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
Code string `json:"code"`
LevelNumber int `json:"level_number"`
StatusId int `json:"status_id"`
CreatedById int `json:"created_by_id"`
IsActive bool `json:"is_active"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
ID uint `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
Code string `json:"code"`
LevelNumber int `json:"level_number"`
StatusId *int `json:"status_id"`
CreatedById *int `json:"created_by_id"`
IsActive *bool `json:"is_active"`
CreatedAt time.Time `json:"created_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
func (_i *userRolesService) All(req request.UserRolesQueryRequest) (userRoless []*response.UserRolesResponse, paging paginator.Pagination, err error) {
results, paging, err := _i.Repo.GetAll(req)
if err != nil {
return
}
@ -67,6 +68,13 @@ func (_i *userRolesService) Update(id uint, req request.UserRolesUpdateRequest)
return _i.Repo.Update(id, req.ToEntity())
}
func (_i *userRolesService) Delete(id uint) error {
return _i.Repo.Delete(id)
func (_i *userRolesService) Delete(id uint) (err error) {
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
// @Description API for getting all Users
// @Tags Task
// @Tags Users
// @Security Bearer
// @Param req query request.UsersQueryRequest false "query parameters"
// @Success 200 {object} response.Response
// @Failure 401 {object} response.Response
// @Failure 404 {object} response.Response
@ -46,7 +47,17 @@ func (_i *usersController) All(c *fiber.Ctx) error {
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
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{
Success: true,
Messages: utilRes.Messages{"Users list successfully retrieved"},
Data: usersData,
Meta: paging,
})
}
// Show get one Users
// Show Users
// @Summary Get one Users
// @Description API for getting one Users
// @Tags Task
// @Tags Users
// @Security Bearer
// @Param id path int true "Users ID"
// @Success 200 {object} response.Response
@ -85,17 +97,18 @@ func (_i *usersController) Show(c *fiber.Ctx) error {
}
return utilRes.Resp(c, utilRes.Response{
Success: true,
Messages: utilRes.Messages{"Users successfully retrieved"},
Data: usersData,
})
}
// Save create Users
// Save Users
// @Summary Create Users
// @Description API for create Users
// @Tags Task
// @Tags Users
// @Security Bearer
// @Body request.UsersCreateRequest
// @Param payload body request.UsersCreateRequest true "Required payload"
// @Success 200 {object} response.Response
// @Failure 401 {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{
Success: true,
Messages: utilRes.Messages{"Users successfully created"},
})
}
// Update update Users
// Update Users
// @Summary update Users
// @Description API for update Users
// @Tags Task
// @Tags Users
// @Security Bearer
// @Body request.UsersUpdateRequest
// @Param payload body request.UsersUpdateRequest true "Required payload"
// @Param id path int true "Users ID"
// @Success 200 {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{
Success: true,
Messages: utilRes.Messages{"Users successfully updated"},
})
}
// Delete delete Users
// Delete Users
// @Summary delete Users
// @Description API for delete Users
// @Tags Task
// @Tags Users
// @Security Bearer
// @Param id path int true "Users ID"
// @Success 200 {object} response.Response

View File

@ -1,14 +1,17 @@
package repository
import (
"github.com/rs/zerolog"
"go-humas-be/app/database"
"go-humas-be/app/database/entity"
"go-humas-be/app/module/users/request"
"go-humas-be/utils/paginator"
"strings"
)
type usersRepository struct {
DB *database.Database
DB *database.Database
Log zerolog.Logger
}
// UsersRepository define interface of IUsersRepository
@ -20,9 +23,10 @@ type UsersRepository interface {
Delete(id uint) (err error)
}
func NewUsersRepository(db *database.Database) UsersRepository {
func NewUsersRepository(db *database.Database, log zerolog.Logger) 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
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)
req.Pagination.Count = count

View File

@ -3,6 +3,7 @@ package request
import (
"go-humas-be/app/database/entity"
"go-humas-be/utils/paginator"
"strconv"
"time"
)
@ -11,46 +12,35 @@ type UsersGeneric interface {
}
type UsersQueryRequest struct {
Username string `json:"username" validate:"required,lowercase"`
Email string `json:"email" validate:"required,email"`
Fullname string `json:"fullname" validate:"required"`
Address string `json:"address" validate:"required"`
PhoneNumber string `json:"phone_number" validate:"required"`
WorkType string `json:"work_type" validate:"required"`
GenderType string `json:"gender_type" validate:"required"`
IdentityType string `json:"identity_type" validate:"required"`
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"`
Username *string `json:"username"`
Email *string `json:"email"`
Fullname *string `json:"fullname"`
PhoneNumber *string `json:"phoneNumber"`
IdentityNumber *string `json:"identityNumber"`
UserRoleId *int `json:"userRoleId"`
StatusId *int `json:"statusId"`
Pagination *paginator.Pagination `json:"pagination"`
}
type UsersCreateRequest struct {
Username string `json:"username" validate:"required,lowercase"`
Email string `json:"email" validate:"required,email"`
Fullname string `json:"fullname" validate:"required"`
Address string `json:"address" validate:"required"`
PhoneNumber string `json:"phone_number" validate:"required"`
WorkType string `json:"work_type" validate:"required"`
GenderType string `json:"gender_type" validate:"required"`
IdentityType string `json:"identity_type" validate:"required"`
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"`
Username string `json:"username" validate:"required,lowercase"`
Email string `json:"email" validate:"required,email"`
Fullname string `json:"fullname" validate:"required"`
Address string `json:"address" validate:"required"`
PhoneNumber string `json:"phoneNumber" validate:"required"`
WorkType string `json:"workType" validate:"required"`
GenderType string `json:"genderType" validate:"required"`
IdentityType string `json:"identityType" validate:"required"`
IdentityNumber string `json:"identityNumber" validate:"required"`
DateOfBirth string `json:"dateOfBirth" validate:"required"`
LastEducation string `json:"lastEducation" validate:"required"`
UserRoleId int `json:"userRoleId" validate:"required"`
UserLevelsId int `json:"userLevelsId" validate:"required"`
KeycloakId *string `json:"keycloakId"`
StatusId *int `json:"statusId"`
CreatedById *int `json:"createdById"`
ProfilePicturePath *string `json:"profilePicturePath"`
IsActive *bool `json:"isActive"`
}
func (req UsersCreateRequest) ToEntity() *entity.Users {
@ -77,32 +67,25 @@ func (req UsersCreateRequest) ToEntity() *entity.Users {
}
type UsersUpdateRequest struct {
ID uint `json:"id" validate:"required"`
Username string `json:"username" validate:"required,lowercase"`
Email string `json:"email" validate:"required,email"`
Fullname string `json:"fullname" validate:"required"`
Address string `json:"address" validate:"required"`
PhoneNumber string `json:"phone_number" validate:"required"`
WorkType string `json:"work_type" validate:"required"`
GenderType string `json:"gender_type" validate:"required"`
IdentityType string `json:"identity_type" validate:"required"`
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"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
Username string `json:"username" validate:"required,lowercase"`
Email string `json:"email" validate:"required,email"`
Fullname string `json:"fullname" validate:"required"`
Address string `json:"address" validate:"required"`
PhoneNumber string `json:"phoneNumber" validate:"required"`
WorkType string `json:"workType" validate:"required"`
GenderType string `json:"genderType" validate:"required"`
IdentityType string `json:"identityType" validate:"required"`
IdentityNumber string `json:"identityNumber" validate:"required"`
DateOfBirth string `json:"dateOfBirth" validate:"required"`
LastEducation string `json:"lastEducation" validate:"required"`
UserRoleId int `json:"userRoleId" validate:"required"`
UserLevelsId int `json:"userLevelsId" validate:"required"`
ProfilePicturePath *string `json:"profile_picture_path"`
StatusId *int `json:"status_id"`
}
func (req UsersUpdateRequest) ToEntity() *entity.Users {
return &entity.Users{
ID: req.ID,
Username: req.Username,
Email: req.Email,
Fullname: req.Fullname,
@ -114,14 +97,55 @@ func (req UsersUpdateRequest) ToEntity() *entity.Users {
IdentityNumber: req.IdentityNumber,
DateOfBirth: req.DateOfBirth,
LastEducation: req.LastEducation,
KeycloakId: req.KeycloakId,
UserRoleId: req.UserRoleId,
StatusId: req.StatusId,
UserLevelsId: req.UserLevelsId,
CreatedById: req.CreatedById,
ProfilePicturePath: req.ProfilePicturePath,
IsActive: req.IsActive,
CreatedAt: req.CreatedAt,
UpdatedAt: req.UpdatedAt,
UpdatedAt: time.Now(),
}
}
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"
type UsersResponse struct {
ID uint `json:"id"`
Username string `json:"username"`
Email string `json:"email"`
Fullname string `json:"fullname"`
Address string `json:"address"`
PhoneNumber string `json:"phone_number"`
WorkType string `json:"work_type"`
GenderType string `json:"gender_type"`
IdentityType string `json:"identity_type"`
IdentityNumber string `json:"identity_number"`
DateOfBirth string `json:"date_of_birth"`
LastEducation string `json:"last_education"`
KeycloakId string `json:"keycloak_id"`
UserRoleId int `json:"user_role_id"`
StatusId int `json:"status_id"`
UserLevelsId int `json:"user_levels_id"`
CreatedById int `json:"created_by_id"`
ProfilePicturePath string `json:"profile_picture_path"`
IsActive bool `json:"is_active"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
ID uint `json:"id"`
Username string `json:"username"`
Email string `json:"email"`
Fullname string `json:"fullname"`
Address string `json:"address"`
PhoneNumber string `json:"phone_number"`
WorkType string `json:"work_type"`
GenderType string `json:"gender_type"`
IdentityType string `json:"identity_type"`
IdentityNumber string `json:"identity_number"`
DateOfBirth string `json:"date_of_birth"`
LastEducation string `json:"last_education"`
KeycloakId *string `json:"keycloak_id"`
UserRoleId int `json:"user_role_id"`
StatusId *int `json:"status_id"`
UserLevelsId int `json:"user_levels_id"`
CreatedById *int `json:"created_by_id"`
ProfilePicturePath *string `json:"profile_picture_path"`
IsActive *bool `json:"is_active"`
CreatedAt time.Time `json:"created_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
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)
if err != nil {
return
}
for _, result := range results {
userss = append(userss, mapper.UsersResponseMapper(result))
users = append(users, mapper.UsersResponseMapper(result))
}
return
@ -68,5 +68,12 @@ func (_i *usersService) Update(id uint, req request.UsersUpdateRequest) (err err
}
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.UserRoleAccessesRouter.RegisterUserRoleAccessesRoutes()
r.UsersRouter.RegisterUsersRoutes()
r.UserRolesRouter.RegisterUserRolesRoutes()
}

View File

@ -9,7 +9,7 @@ production = false
[db.postgres]
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
[logger]

View File

@ -3948,9 +3948,31 @@ const docTemplate = `{
],
"description": "API for getting all UserLevels",
"tags": [
"Task"
"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": {
"200": {
"description": "OK",
@ -3992,9 +4014,20 @@ const docTemplate = `{
],
"description": "API for create UserLevels",
"tags": [
"Task"
"UserLevels"
],
"summary": "Create UserLevels",
"parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UserLevelsCreateRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
@ -4038,7 +4071,7 @@ const docTemplate = `{
],
"description": "API for getting one UserLevels",
"tags": [
"Task"
"UserLevels"
],
"summary": "Get one UserLevels",
"parameters": [
@ -4091,10 +4124,19 @@ const docTemplate = `{
],
"description": "API for update UserLevels",
"tags": [
"Task"
"UserLevels"
],
"summary": "update UserLevels",
"parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UserLevelsUpdateRequest"
}
},
{
"type": "integer",
"description": "UserLevels ID",
@ -4144,7 +4186,7 @@ const docTemplate = `{
],
"description": "API for delete UserLevels",
"tags": [
"Task"
"UserLevels"
],
"summary": "delete UserLevels",
"parameters": [
@ -4450,9 +4492,36 @@ const docTemplate = `{
],
"description": "API for getting all UserRoles",
"tags": [
"Task"
"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": {
"200": {
"description": "OK",
@ -4494,9 +4563,20 @@ const docTemplate = `{
],
"description": "API for create UserRoles",
"tags": [
"Task"
"UserRoles"
],
"summary": "Create UserRoles",
"parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UserRolesCreateRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
@ -4540,7 +4620,7 @@ const docTemplate = `{
],
"description": "API for getting one UserRoles",
"tags": [
"Task"
"UserRoles"
],
"summary": "Get one UserRoles",
"parameters": [
@ -4593,10 +4673,19 @@ const docTemplate = `{
],
"description": "API for update UserRoles",
"tags": [
"Task"
"UserRoles"
],
"summary": "update UserRoles",
"parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UserRolesUpdateRequest"
}
},
{
"type": "integer",
"description": "UserRoles ID",
@ -4646,7 +4735,7 @@ const docTemplate = `{
],
"description": "API for delete UserRoles",
"tags": [
"Task"
"UserRoles"
],
"summary": "delete UserRoles",
"parameters": [
@ -4701,9 +4790,46 @@ const docTemplate = `{
],
"description": "API for getting all Users",
"tags": [
"Task"
"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": {
"200": {
"description": "OK",
@ -4745,9 +4871,20 @@ const docTemplate = `{
],
"description": "API for create Users",
"tags": [
"Task"
"Users"
],
"summary": "Create Users",
"parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UsersCreateRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
@ -4791,7 +4928,7 @@ const docTemplate = `{
],
"description": "API for getting one Users",
"tags": [
"Task"
"Users"
],
"summary": "Get one Users",
"parameters": [
@ -4844,10 +4981,19 @@ const docTemplate = `{
],
"description": "API for update Users",
"tags": [
"Task"
"Users"
],
"summary": "update Users",
"parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UsersUpdateRequest"
}
},
{
"type": "integer",
"description": "Users ID",
@ -4897,7 +5043,7 @@ const docTemplate = `{
],
"description": "API for delete Users",
"tags": [
"Task"
"Users"
],
"summary": "delete Users",
"parameters": [
@ -4945,6 +5091,29 @@ const docTemplate = `{
}
},
"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": {
"type": "object",
"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": {
"type": "object",
"properties": {

View File

@ -3937,9 +3937,31 @@
],
"description": "API for getting all UserLevels",
"tags": [
"Task"
"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": {
"200": {
"description": "OK",
@ -3981,9 +4003,20 @@
],
"description": "API for create UserLevels",
"tags": [
"Task"
"UserLevels"
],
"summary": "Create UserLevels",
"parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UserLevelsCreateRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
@ -4027,7 +4060,7 @@
],
"description": "API for getting one UserLevels",
"tags": [
"Task"
"UserLevels"
],
"summary": "Get one UserLevels",
"parameters": [
@ -4080,10 +4113,19 @@
],
"description": "API for update UserLevels",
"tags": [
"Task"
"UserLevels"
],
"summary": "update UserLevels",
"parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UserLevelsUpdateRequest"
}
},
{
"type": "integer",
"description": "UserLevels ID",
@ -4133,7 +4175,7 @@
],
"description": "API for delete UserLevels",
"tags": [
"Task"
"UserLevels"
],
"summary": "delete UserLevels",
"parameters": [
@ -4439,9 +4481,36 @@
],
"description": "API for getting all UserRoles",
"tags": [
"Task"
"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": {
"200": {
"description": "OK",
@ -4483,9 +4552,20 @@
],
"description": "API for create UserRoles",
"tags": [
"Task"
"UserRoles"
],
"summary": "Create UserRoles",
"parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UserRolesCreateRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
@ -4529,7 +4609,7 @@
],
"description": "API for getting one UserRoles",
"tags": [
"Task"
"UserRoles"
],
"summary": "Get one UserRoles",
"parameters": [
@ -4582,10 +4662,19 @@
],
"description": "API for update UserRoles",
"tags": [
"Task"
"UserRoles"
],
"summary": "update UserRoles",
"parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UserRolesUpdateRequest"
}
},
{
"type": "integer",
"description": "UserRoles ID",
@ -4635,7 +4724,7 @@
],
"description": "API for delete UserRoles",
"tags": [
"Task"
"UserRoles"
],
"summary": "delete UserRoles",
"parameters": [
@ -4690,9 +4779,46 @@
],
"description": "API for getting all Users",
"tags": [
"Task"
"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": {
"200": {
"description": "OK",
@ -4734,9 +4860,20 @@
],
"description": "API for create Users",
"tags": [
"Task"
"Users"
],
"summary": "Create Users",
"parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UsersCreateRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
@ -4780,7 +4917,7 @@
],
"description": "API for getting one Users",
"tags": [
"Task"
"Users"
],
"summary": "Get one Users",
"parameters": [
@ -4833,10 +4970,19 @@
],
"description": "API for update Users",
"tags": [
"Task"
"Users"
],
"summary": "update Users",
"parameters": [
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.UsersUpdateRequest"
}
},
{
"type": "integer",
"description": "Users ID",
@ -4886,7 +5032,7 @@
],
"description": "API for delete Users",
"tags": [
"Task"
"Users"
],
"summary": "delete Users",
"parameters": [
@ -4934,6 +5080,29 @@
}
},
"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": {
"type": "object",
"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": {
"type": "object",
"properties": {

View File

@ -1,4 +1,19 @@
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:
properties:
created_by_id:
@ -59,6 +74,186 @@ definitions:
- id
- prov_id
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:
properties:
code:
@ -2579,6 +2774,19 @@ paths:
/user-levels:
get:
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:
"200":
description: OK
@ -2604,9 +2812,16 @@ paths:
- Bearer: []
summary: Get all UserLevels
tags:
- Task
- UserLevels
post:
description: API for create UserLevels
parameters:
- description: Required payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/request.UserLevelsCreateRequest'
responses:
"200":
description: OK
@ -2632,7 +2847,7 @@ paths:
- Bearer: []
summary: Create UserLevels
tags:
- Task
- UserLevels
/user-levels/{id}:
delete:
description: API for delete UserLevels
@ -2667,7 +2882,7 @@ paths:
- Bearer: []
summary: delete UserLevels
tags:
- Task
- UserLevels
get:
description: API for getting one UserLevels
parameters:
@ -2701,10 +2916,16 @@ paths:
- Bearer: []
summary: Get one UserLevels
tags:
- Task
- UserLevels
put:
description: API for update UserLevels
parameters:
- description: Required payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/request.UserLevelsUpdateRequest'
- description: UserLevels ID
in: path
name: id
@ -2735,7 +2956,7 @@ paths:
- Bearer: []
summary: update UserLevels
tags:
- Task
- UserLevels
/user-role-accesses:
get:
description: API for getting all UserRoleAccesses
@ -2899,6 +3120,22 @@ paths:
/user-roles:
get:
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:
"200":
description: OK
@ -2924,9 +3161,16 @@ paths:
- Bearer: []
summary: Get all UserRoles
tags:
- Task
- UserRoles
post:
description: API for create UserRoles
parameters:
- description: Required payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/request.UserRolesCreateRequest'
responses:
"200":
description: OK
@ -2952,7 +3196,7 @@ paths:
- Bearer: []
summary: Create UserRoles
tags:
- Task
- UserRoles
/user-roles/{id}:
delete:
description: API for delete UserRoles
@ -2987,7 +3231,7 @@ paths:
- Bearer: []
summary: delete UserRoles
tags:
- Task
- UserRoles
get:
description: API for getting one UserRoles
parameters:
@ -3021,10 +3265,16 @@ paths:
- Bearer: []
summary: Get one UserRoles
tags:
- Task
- UserRoles
put:
description: API for update UserRoles
parameters:
- description: Required payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/request.UserRolesUpdateRequest'
- description: UserRoles ID
in: path
name: id
@ -3055,10 +3305,32 @@ paths:
- Bearer: []
summary: update UserRoles
tags:
- Task
- UserRoles
/users:
get:
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:
"200":
description: OK
@ -3084,9 +3356,16 @@ paths:
- Bearer: []
summary: Get all Users
tags:
- Task
- Users
post:
description: API for create Users
parameters:
- description: Required payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/request.UsersCreateRequest'
responses:
"200":
description: OK
@ -3112,7 +3391,7 @@ paths:
- Bearer: []
summary: Create Users
tags:
- Task
- Users
/users/{id}:
delete:
description: API for delete Users
@ -3147,7 +3426,7 @@ paths:
- Bearer: []
summary: delete Users
tags:
- Task
- Users
get:
description: API for getting one Users
parameters:
@ -3181,10 +3460,16 @@ paths:
- Bearer: []
summary: Get one Users
tags:
- Task
- Users
put:
description: API for update Users
parameters:
- description: Required payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/request.UsersUpdateRequest'
- description: Users ID
in: path
name: id
@ -3215,5 +3500,5 @@ paths:
- Bearer: []
summary: update Users
tags:
- Task
- Users
swagger: "2.0"

View File

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