feat: update user, user_role, user_level, article, article_categories, article_files, etc
This commit is contained in:
parent
107aafecea
commit
f62cf6d76a
|
|
@ -3,18 +3,18 @@ package entity
|
|||
import "time"
|
||||
|
||||
type ArticleCategories struct {
|
||||
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
|
||||
Title string `json:"title" gorm:"type:varchar"`
|
||||
Description string `json:"description" gorm:"type:varchar"`
|
||||
ThumbnailPath string `json:"thumbnail_path" gorm:"type:varchar"`
|
||||
ThumbnailUrl string `json:"thumbnail_url" gorm:"type:varchar"`
|
||||
ParentId int `json:"parent_id" gorm:"type:int4"`
|
||||
CreatedById int `json:"created_by_id" gorm:"type:int4"`
|
||||
StatusId int `json:"status_id" gorm:"type:int4"`
|
||||
IsPublish bool `json:"is_publish" gorm:"type:bool"`
|
||||
PublishedAt time.Time `json:"published_at" gorm:"type:timestamp"`
|
||||
IsEnabled bool `json:"is_enabled" gorm:"type:bool"`
|
||||
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"`
|
||||
Title string `json:"title" gorm:"type:varchar"`
|
||||
Description string `json:"description" gorm:"type:varchar"`
|
||||
ThumbnailPath *string `json:"thumbnail_path" gorm:"type:varchar"`
|
||||
ThumbnailUrl *string `json:"thumbnail_url" gorm:"type:varchar"`
|
||||
ParentId int `json:"parent_id" gorm:"type:int4"`
|
||||
CreatedById *int `json:"created_by_id" gorm:"type:int4"`
|
||||
StatusId *int `json:"status_id" gorm:"type:int4;default:1"`
|
||||
IsPublish *bool `json:"is_publish" gorm:"type:bool;default:false"`
|
||||
PublishedAt *time.Time `json:"published_at" gorm:"type:timestamp"`
|
||||
IsEnabled *bool `json:"is_enabled" gorm:"type:bool;default:false"`
|
||||
IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
|
||||
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
|
||||
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,9 +16,9 @@ type ArticleFiles struct {
|
|||
DownloadCount int `json:"download_count" gorm:"type:int4"`
|
||||
CreatedById int `json:"created_by_id" gorm:"type:int4"`
|
||||
StatusId int `json:"status_id" gorm:"type:int4"`
|
||||
IsPublish bool `json:"is_publish" gorm:"type:bool"`
|
||||
IsPublish bool `json:"is_publish" gorm:"type:bool;default:false"`
|
||||
PublishedAt time.Time `json:"published_at" gorm:"type:timestamp"`
|
||||
IsActive bool `json:"is_active" gorm:"type:bool"`
|
||||
IsActive bool `json:"is_active" gorm:"type:bool;default:true"`
|
||||
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
|
||||
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,9 +18,9 @@ type Articles struct {
|
|||
ViewCount *int `json:"view_count" gorm:"type:int4"`
|
||||
DownloadCount *int `json:"download_count" gorm:"type:int4"`
|
||||
StatusId *int `json:"status_id" gorm:"type:int4"`
|
||||
IsPublish *bool `json:"is_publish" gorm:"type:bool"`
|
||||
IsPublish *bool `json:"is_publish" gorm:"type:bool;default:false"`
|
||||
PublishedAt *time.Time `json:"published_at" gorm:"type:timestamp"`
|
||||
IsActive *bool `json:"is_active" gorm:"type:bool"`
|
||||
IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
|
||||
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
|
||||
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,15 +3,15 @@ package entity
|
|||
import "time"
|
||||
|
||||
type PpidDatas struct {
|
||||
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
|
||||
Title string `json:"title" gorm:"type:varchar"`
|
||||
Description string `json:"description" gorm:"type:varchar"`
|
||||
CategoryId int `json:"category_id" gorm:"type:int4"`
|
||||
CreatedById int `json:"created_by_id" gorm:"type:int4"`
|
||||
StatusId int `json:"status_id" gorm:"type:int4"`
|
||||
IsPublish bool `json:"is_publish" gorm:"type:bool"`
|
||||
PublishedAt time.Time `json:"published_at" gorm:"type:timestamp"`
|
||||
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"`
|
||||
Title string `json:"title" gorm:"type:varchar"`
|
||||
Description string `json:"description" gorm:"type:varchar"`
|
||||
CategoryId int `json:"category_id" gorm:"type:int4"`
|
||||
CreatedById int `json:"created_by_id" gorm:"type:int4"`
|
||||
StatusId int `json:"status_id" gorm:"type:int4"`
|
||||
IsPublish *bool `json:"is_publish" gorm:"type:bool;default:false"`
|
||||
PublishedAt *time.Time `json:"published_at" gorm:"type:timestamp"`
|
||||
IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
|
||||
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
|
||||
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
|
||||
}
|
||||
|
|
@ -12,7 +12,7 @@ type UserRoleAccesses struct {
|
|||
IsDeleteEnabled bool `json:"is_delete_enabled" gorm:"type:bool"`
|
||||
IsApprovalEnabled bool `json:"is_approval_enabled" gorm:"type:bool"`
|
||||
IsAdminEnabled bool `json:"is_admin_enabled" gorm:"type:bool"`
|
||||
IsActive bool `json:"is_active" gorm:"type:bool"`
|
||||
IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
|
||||
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
|
||||
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@ type UserRoles struct {
|
|||
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"`
|
||||
StatusId *int `json:"status_id" gorm:"type:int4;default:1"`
|
||||
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;default:true"`
|
||||
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
|
||||
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,10 +18,10 @@ type Users struct {
|
|||
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"`
|
||||
StatusId *int `json:"status_id" gorm:"type:int4;default:1"`
|
||||
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"`
|
||||
IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
|
||||
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
|
||||
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,16 +29,16 @@ func NewArticleCategoriesController(articleCategoriesService service.ArticleCate
|
|||
}
|
||||
}
|
||||
|
||||
// All get all ArticleCategories
|
||||
// All ArticleCategories
|
||||
// @Summary Get all ArticleCategories
|
||||
// @Description API for getting all ArticleCategories
|
||||
// @Tags Task
|
||||
// @Tags ArticleCategories
|
||||
// @Security Bearer
|
||||
// @Param req query request.ArticleCategoriesQueryRequest false "query parameters"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /article-categories [get]
|
||||
func (_i *articleCategoriesController) All(c *fiber.Ctx) error {
|
||||
paginate, err := paginator.Paginate(c)
|
||||
|
|
@ -46,7 +46,15 @@ func (_i *articleCategoriesController) All(c *fiber.Ctx) error {
|
|||
return err
|
||||
}
|
||||
|
||||
var req request.ArticleCategoriesQueryRequest
|
||||
reqContext := request.ArticleCategoriesQueryRequestContext{
|
||||
Title: c.Query("title"),
|
||||
Description: c.Query("description"),
|
||||
ParentId: c.Query("parentId"),
|
||||
IsEnabled: c.Query("isEnabled"),
|
||||
IsPublish: c.Query("isPublish"),
|
||||
StatusId: c.Query("statusId"),
|
||||
}
|
||||
req := reqContext.ToParamRequest()
|
||||
req.Pagination = paginate
|
||||
|
||||
articleCategoriesData, paging, err := _i.articleCategoriesService.All(req)
|
||||
|
|
@ -55,23 +63,23 @@ func (_i *articleCategoriesController) All(c *fiber.Ctx) error {
|
|||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Success: true,
|
||||
Messages: utilRes.Messages{"ArticleCategories list successfully retrieved"},
|
||||
Data: articleCategoriesData,
|
||||
Meta: paging,
|
||||
})
|
||||
}
|
||||
|
||||
// Show get one ArticleCategories
|
||||
// Show ArticleCategories
|
||||
// @Summary Get one ArticleCategories
|
||||
// @Description API for getting one ArticleCategories
|
||||
// @Tags Task
|
||||
// @Tags ArticleCategories
|
||||
// @Security Bearer
|
||||
// @Param id path int true "ArticleCategories ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /article-categories/{id} [get]
|
||||
func (_i *articleCategoriesController) Show(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
@ -85,22 +93,22 @@ func (_i *articleCategoriesController) Show(c *fiber.Ctx) error {
|
|||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Success: true,
|
||||
Messages: utilRes.Messages{"ArticleCategories successfully retrieved"},
|
||||
Data: articleCategoriesData,
|
||||
})
|
||||
}
|
||||
|
||||
// Save create ArticleCategories
|
||||
// Save ArticleCategories
|
||||
// @Summary Create ArticleCategories
|
||||
// @Description API for create ArticleCategories
|
||||
// @Tags Task
|
||||
// @Tags ArticleCategories
|
||||
// @Security Bearer
|
||||
// @Param payload body request.ArticleCategoriesCreateRequest true "Required payload"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /article-categories [post]
|
||||
func (_i *articleCategoriesController) Save(c *fiber.Ctx) error {
|
||||
req := new(request.ArticleCategoriesCreateRequest)
|
||||
|
|
@ -114,22 +122,22 @@ func (_i *articleCategoriesController) Save(c *fiber.Ctx) error {
|
|||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Success: true,
|
||||
Messages: utilRes.Messages{"ArticleCategories successfully created"},
|
||||
})
|
||||
}
|
||||
|
||||
// Update update ArticleCategories
|
||||
// Update ArticleCategories
|
||||
// @Summary update ArticleCategories
|
||||
// @Description API for update ArticleCategories
|
||||
// @Tags Task
|
||||
// @Tags ArticleCategories
|
||||
// @Security Bearer
|
||||
// @Param payload body request.ArticleCategoriesCreateRequest true "Required payload"
|
||||
// @Param payload body request.ArticleCategoriesUpdateRequest true "Required payload"
|
||||
// @Param id path int true "ArticleCategories ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /article-categories/{id} [put]
|
||||
func (_i *articleCategoriesController) Update(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
@ -148,21 +156,21 @@ func (_i *articleCategoriesController) Update(c *fiber.Ctx) error {
|
|||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Success: true,
|
||||
Messages: utilRes.Messages{"ArticleCategories successfully updated"},
|
||||
})
|
||||
}
|
||||
|
||||
// Delete delete ArticleCategories
|
||||
// Delete ArticleCategories
|
||||
// @Summary delete ArticleCategories
|
||||
// @Description API for delete ArticleCategories
|
||||
// @Tags Task
|
||||
// @Tags ArticleCategories
|
||||
// @Security Bearer
|
||||
// @Param id path int true "ArticleCategories ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /article-categories/{id} [delete]
|
||||
func (_i *articleCategoriesController) Delete(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
@ -176,6 +184,7 @@ func (_i *articleCategoriesController) Delete(c *fiber.Ctx) error {
|
|||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Success: true,
|
||||
Messages: utilRes.Messages{"ArticleCategories successfully deleted"},
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import (
|
|||
"go-humas-be/app/database/entity"
|
||||
"go-humas-be/app/module/article_categories/request"
|
||||
"go-humas-be/utils/paginator"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type articleCategoriesRepository struct {
|
||||
|
|
@ -31,6 +32,31 @@ func (_i *articleCategoriesRepository) GetAll(req request.ArticleCategoriesQuery
|
|||
var count int64
|
||||
|
||||
query := _i.DB.DB.Model(&entity.ArticleCategories{})
|
||||
query = query.Where("is_active = ?", true)
|
||||
|
||||
if req.Title != nil && *req.Title != "" {
|
||||
title := strings.ToLower(*req.Title)
|
||||
query = query.Where("LOWER(title) LIKE ?", "%"+strings.ToLower(title)+"%")
|
||||
}
|
||||
if req.Description != nil && *req.Description != "" {
|
||||
description := strings.ToLower(*req.Description)
|
||||
query = query.Where("LOWER(description) LIKE ?", "%"+strings.ToLower(description)+"%")
|
||||
}
|
||||
if req.ParentId != nil {
|
||||
query = query.Where("parent_id = ?", req.ParentId)
|
||||
}
|
||||
if req.CreatedById != nil {
|
||||
query = query.Where("created_by_id = ?", req.CreatedById)
|
||||
}
|
||||
if req.IsEnabled != nil {
|
||||
query = query.Where("is_enabled = ?", req.IsEnabled)
|
||||
}
|
||||
if req.IsPublish != nil {
|
||||
query = query.Where("is_publish = ?", req.IsPublish)
|
||||
}
|
||||
if req.StatusId != nil {
|
||||
query = query.Where("status_id = ?", req.StatusId)
|
||||
}
|
||||
query.Count(&count)
|
||||
|
||||
req.Pagination.Count = count
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package request
|
|||
import (
|
||||
"go-humas-be/app/database/entity"
|
||||
"go-humas-be/utils/paginator"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
|
@ -11,81 +12,108 @@ type ArticleCategoriesGeneric interface {
|
|||
}
|
||||
|
||||
type ArticleCategoriesQueryRequest struct {
|
||||
Title string `json:"title" validate:"required"`
|
||||
Description string `json:"description" validate:"required"`
|
||||
ThumbnailPath string `json:"thumbnail_path" validate:"required"`
|
||||
ThumbnailUrl string `json:"thumbnail_url" validate:"required"`
|
||||
ParentId int `json:"parent_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"`
|
||||
IsEnabled bool `json:"is_enabled" validate:"required"`
|
||||
IsActive bool `json:"is_active" validate:"required"`
|
||||
Pagination *paginator.Pagination `json:"pagination"`
|
||||
Title *string `json:"title"`
|
||||
Description *string `json:"description"`
|
||||
ParentId *int `json:"parentId"`
|
||||
StatusId *int `json:"statusId"`
|
||||
IsPublish *bool `json:"isPublish"`
|
||||
CreatedById *int `json:"createdById"`
|
||||
IsEnabled *bool `json:"isEnabled"`
|
||||
Pagination *paginator.Pagination `json:"pagination"`
|
||||
}
|
||||
|
||||
type ArticleCategoriesCreateRequest struct {
|
||||
Title string `json:"title" validate:"required"`
|
||||
Description string `json:"description" validate:"required"`
|
||||
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"`
|
||||
IsEnabled bool `json:"is_enabled" validate:"required"`
|
||||
IsActive bool `json:"is_active" validate:"required"`
|
||||
Title string `json:"title" validate:"required"`
|
||||
Description string `json:"description" validate:"required"`
|
||||
ParentId int `json:"parentId" validate:"required"`
|
||||
StatusId int `json:"statusId" validate:"required"`
|
||||
IsEnabled bool `json:"isEnabled" validate:"required"`
|
||||
}
|
||||
|
||||
func (req ArticleCategoriesCreateRequest) ToEntity() *entity.ArticleCategories {
|
||||
return &entity.ArticleCategories{
|
||||
Title: req.Title,
|
||||
Description: req.Description,
|
||||
ThumbnailPath: req.ThumbnailPath,
|
||||
ThumbnailUrl: req.ThumbnailUrl,
|
||||
ParentId: req.ParentId,
|
||||
CreatedById: req.CreatedById,
|
||||
StatusId: req.StatusId,
|
||||
IsPublish: req.IsPublish,
|
||||
PublishedAt: req.PublishedAt,
|
||||
IsEnabled: req.IsEnabled,
|
||||
IsActive: req.IsActive,
|
||||
Title: req.Title,
|
||||
Description: req.Description,
|
||||
ParentId: req.ParentId,
|
||||
}
|
||||
}
|
||||
|
||||
type ArticleCategoriesUpdateRequest struct {
|
||||
ID uint `json:"id" validate:"required"`
|
||||
Title string `json:"title" validate:"required"`
|
||||
Description string `json:"description" validate:"required"`
|
||||
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"`
|
||||
IsEnabled bool `json:"is_enabled" validate:"required"`
|
||||
IsActive bool `json:"is_active" validate:"required"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
ID uint `json:"id" validate:"required"`
|
||||
Title string `json:"title" validate:"required"`
|
||||
Description string `json:"description" validate:"required"`
|
||||
ThumbnailPath string `json:"thumbnailPath" validate:"required"`
|
||||
ThumbnailUrl string `json:"thumbnailUrl" validate:"required"`
|
||||
ParentId int `json:"parentId" validate:"required"`
|
||||
StatusId *int `json:"statusId"`
|
||||
IsPublish *bool `json:"isPublish"`
|
||||
PublishedAt *time.Time `json:"publishedAt"`
|
||||
IsEnabled *bool `json:"isEnabled"`
|
||||
}
|
||||
|
||||
func (req ArticleCategoriesUpdateRequest) ToEntity() *entity.ArticleCategories {
|
||||
return &entity.ArticleCategories{
|
||||
ID: req.ID,
|
||||
Title: req.Title,
|
||||
Description: req.Description,
|
||||
ThumbnailPath: req.ThumbnailPath,
|
||||
ThumbnailUrl: req.ThumbnailUrl,
|
||||
ParentId: req.ParentId,
|
||||
CreatedById: req.CreatedById,
|
||||
StatusId: req.StatusId,
|
||||
IsPublish: req.IsPublish,
|
||||
PublishedAt: req.PublishedAt,
|
||||
IsEnabled: req.IsEnabled,
|
||||
IsActive: req.IsActive,
|
||||
CreatedAt: req.CreatedAt,
|
||||
UpdatedAt: req.UpdatedAt,
|
||||
ID: req.ID,
|
||||
Title: req.Title,
|
||||
Description: req.Description,
|
||||
ParentId: req.ParentId,
|
||||
StatusId: req.StatusId,
|
||||
IsPublish: req.IsPublish,
|
||||
PublishedAt: req.PublishedAt,
|
||||
IsEnabled: req.IsEnabled,
|
||||
UpdatedAt: time.Now(),
|
||||
}
|
||||
}
|
||||
|
||||
type ArticleCategoriesQueryRequestContext struct {
|
||||
Title string `json:"title"`
|
||||
Description string `json:"description"`
|
||||
ParentId string `json:"parentId"`
|
||||
StatusId string `json:"statusId"`
|
||||
CreatedById string `json:"created_by_id"`
|
||||
IsPublish string `json:"isPublish"`
|
||||
IsEnabled string `json:"isEnabled"`
|
||||
}
|
||||
|
||||
func (req ArticleCategoriesQueryRequestContext) ToParamRequest() ArticleCategoriesQueryRequest {
|
||||
var request ArticleCategoriesQueryRequest
|
||||
|
||||
if title := req.Title; title != "" {
|
||||
request.Title = &title
|
||||
}
|
||||
if description := req.Description; description != "" {
|
||||
request.Description = &description
|
||||
}
|
||||
if parentIdStr := req.ParentId; parentIdStr != "" {
|
||||
parentId, err := strconv.Atoi(parentIdStr)
|
||||
if err == nil {
|
||||
request.ParentId = &parentId
|
||||
}
|
||||
}
|
||||
if isEnabledStr := req.IsEnabled; isEnabledStr != "" {
|
||||
isEnabled, err := strconv.ParseBool(isEnabledStr)
|
||||
if err == nil {
|
||||
request.IsEnabled = &isEnabled
|
||||
}
|
||||
}
|
||||
if isPublishStr := req.IsPublish; isPublishStr != "" {
|
||||
isPublish, err := strconv.ParseBool(isPublishStr)
|
||||
if err == nil {
|
||||
request.IsPublish = &isPublish
|
||||
}
|
||||
}
|
||||
if createdByIdStr := req.CreatedById; createdByIdStr != "" {
|
||||
createdById, err := strconv.Atoi(createdByIdStr)
|
||||
if err == nil {
|
||||
request.CreatedById = &createdById
|
||||
}
|
||||
}
|
||||
if statusIdStr := req.StatusId; statusIdStr != "" {
|
||||
statusId, err := strconv.Atoi(statusIdStr)
|
||||
if err == nil {
|
||||
request.StatusId = &statusId
|
||||
}
|
||||
}
|
||||
|
||||
return request
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,18 +3,18 @@ package response
|
|||
import "time"
|
||||
|
||||
type ArticleCategoriesResponse struct {
|
||||
ID uint `json:"id"`
|
||||
Title string `json:"title"`
|
||||
Description string `json:"description"`
|
||||
ThumbnailPath string `json:"thumbnail_path"`
|
||||
ThumbnailUrl string `json:"thumbnail_url"`
|
||||
ParentId int `json:"parent_id"`
|
||||
CreatedById int `json:"created_by_id"`
|
||||
StatusId int `json:"status_id"`
|
||||
IsPublish bool `json:"is_publish"`
|
||||
PublishedAt time.Time `json:"published_at"`
|
||||
IsEnabled bool `json:"is_enabled"`
|
||||
IsActive bool `json:"is_active"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
ID uint `json:"id"`
|
||||
Title string `json:"title"`
|
||||
Description string `json:"description"`
|
||||
ThumbnailPath *string `json:"thumbnail_path"`
|
||||
ThumbnailUrl *string `json:"thumbnail_url"`
|
||||
ParentId int `json:"parent_id"`
|
||||
CreatedById *int `json:"created_by_id"`
|
||||
StatusId *int `json:"status_id"`
|
||||
IsPublish *bool `json:"is_publish"`
|
||||
PublishedAt *time.Time `json:"published_at"`
|
||||
IsEnabled *bool `json:"is_enabled"`
|
||||
IsActive *bool `json:"is_active"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
|
@ -68,5 +68,12 @@ func (_i *articleCategoriesService) Update(id uint, req request.ArticleCategorie
|
|||
}
|
||||
|
||||
func (_i *articleCategoriesService) 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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,16 +29,15 @@ func NewArticleFilesController(articleFilesService service.ArticleFilesService)
|
|||
}
|
||||
}
|
||||
|
||||
// All get all ArticleFiles
|
||||
// All ArticleFiles
|
||||
// @Summary Get all ArticleFiles
|
||||
// @Description API for getting all ArticleFiles
|
||||
// @Tags ArticleFiles
|
||||
// @Security Bearer
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /article-files [get]
|
||||
func (_i *articleFilesController) All(c *fiber.Ctx) error {
|
||||
paginate, err := paginator.Paginate(c)
|
||||
|
|
@ -46,7 +45,13 @@ func (_i *articleFilesController) All(c *fiber.Ctx) error {
|
|||
return err
|
||||
}
|
||||
|
||||
var req request.ArticleFilesQueryRequest
|
||||
reqContext := request.ArticleFilesQueryRequestContext{
|
||||
ArticleId: c.Query("articleId"),
|
||||
FileName: c.Query("fileName"),
|
||||
StatusId: c.Query("statusId"),
|
||||
IsPublish: c.Query("isPublish"),
|
||||
}
|
||||
req := reqContext.ToParamRequest()
|
||||
req.Pagination = paginate
|
||||
|
||||
articleFilesData, paging, err := _i.articleFilesService.All(req)
|
||||
|
|
@ -62,17 +67,16 @@ func (_i *articleFilesController) All(c *fiber.Ctx) error {
|
|||
})
|
||||
}
|
||||
|
||||
// Show get one ArticleFiles
|
||||
// Show ArticleFiles
|
||||
// @Summary Get one ArticleFiles
|
||||
// @Description API for getting one ArticleFiles
|
||||
// @Tags ArticleFiles
|
||||
// @Security Bearer
|
||||
// @Param id path int true "ArticleFiles ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /article-files/{id} [get]
|
||||
func (_i *articleFilesController) Show(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
@ -101,10 +105,9 @@ func (_i *articleFilesController) Show(c *fiber.Ctx) error {
|
|||
// @Param files formData file true "Upload file"
|
||||
// @Param articleId path int true "Article ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /article-files/{articleId} [post]
|
||||
func (_i *articleFilesController) Save(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("articleId"), 10, 0)
|
||||
|
|
@ -131,10 +134,9 @@ func (_i *articleFilesController) Save(c *fiber.Ctx) error {
|
|||
// @Param payload body request.ArticleFilesUpdateRequest true "Required payload"
|
||||
// @Param id path int true "ArticleFiles ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /article-files/{id} [put]
|
||||
func (_i *articleFilesController) Update(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
@ -165,10 +167,9 @@ func (_i *articleFilesController) Update(c *fiber.Ctx) error {
|
|||
// @Security Bearer
|
||||
// @Param id path int true "ArticleFiles ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /article-files/{id} [delete]
|
||||
func (_i *articleFilesController) Delete(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
@ -194,10 +195,9 @@ func (_i *articleFilesController) Delete(c *fiber.Ctx) error {
|
|||
// @Security Bearer
|
||||
// @Param id path string true "Article File ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /article-files/viewer/{id} [get]
|
||||
func (_i *articleFilesController) Viewer(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import (
|
|||
"go-humas-be/app/database/entity"
|
||||
"go-humas-be/app/module/article_files/request"
|
||||
"go-humas-be/utils/paginator"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type articleFilesRepository struct {
|
||||
|
|
@ -31,6 +32,21 @@ func (_i *articleFilesRepository) GetAll(req request.ArticleFilesQueryRequest) (
|
|||
var count int64
|
||||
|
||||
query := _i.DB.DB.Model(&entity.ArticleFiles{})
|
||||
query = query.Where("is_active = ?", true)
|
||||
|
||||
if req.ArticleId != nil {
|
||||
query = query.Where("article_id = ?", req.ArticleId)
|
||||
}
|
||||
if req.FileName != nil && *req.FileName != "" {
|
||||
fileName := strings.ToLower(*req.FileName)
|
||||
query = query.Where("LOWER(file_name) LIKE ?", "%"+strings.ToLower(fileName)+"%")
|
||||
}
|
||||
if req.IsPublish != nil {
|
||||
query = query.Where("is_publish = ?", req.IsPublish)
|
||||
}
|
||||
if req.StatusId != nil {
|
||||
query = query.Where("status_id = ?", req.StatusId)
|
||||
}
|
||||
query.Count(&count)
|
||||
|
||||
req.Pagination.Count = count
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package request
|
|||
import (
|
||||
"go-humas-be/app/database/entity"
|
||||
"go-humas-be/utils/paginator"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
|
@ -11,40 +12,25 @@ type ArticleFilesGeneric interface {
|
|||
}
|
||||
|
||||
type ArticleFilesQueryRequest struct {
|
||||
ArticleId int `json:"article_id" validate:"required"`
|
||||
FilePath string `json:"file_path" validate:"required"`
|
||||
FileUrl string `json:"file_url" validate:"required"`
|
||||
FileName string `json:"file_name" validate:"required"`
|
||||
FileThumbnail string `json:"file_thumbnail" validate:"required"`
|
||||
FileAlt string `json:"file_alt" validate:"required"`
|
||||
WidthPixel string `json:"width_pixel" validate:"required"`
|
||||
HeightPixel string `json:"height_pixel" validate:"required"`
|
||||
Size string `json:"size" validate:"required"`
|
||||
DownloadCount int `json:"download_count" 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"`
|
||||
IsActive bool `json:"is_active" validate:"required"`
|
||||
Pagination *paginator.Pagination `json:"pagination"`
|
||||
ArticleId *int `json:"articleId"`
|
||||
FileName *string `json:"fileName"`
|
||||
StatusId *int `json:"statusId"`
|
||||
IsPublish *bool `json:"isPublish"`
|
||||
Pagination *paginator.Pagination `json:"pagination"`
|
||||
}
|
||||
|
||||
type ArticleFilesCreateRequest struct {
|
||||
ArticleId uint `json:"article_id" validate:"required"`
|
||||
FilePath string `json:"file_path" validate:"required"`
|
||||
FileUrl string `json:"file_url" validate:"required"`
|
||||
FileName string `json:"file_name" validate:"required"`
|
||||
FileThumbnail string `json:"file_thumbnail" validate:"required"`
|
||||
FileAlt string `json:"file_alt" validate:"required"`
|
||||
WidthPixel string `json:"width_pixel" validate:"required"`
|
||||
HeightPixel string `json:"height_pixel" validate:"required"`
|
||||
Size string `json:"size" validate:"required"`
|
||||
DownloadCount int `json:"download_count" 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"`
|
||||
IsActive bool `json:"is_active" validate:"required"`
|
||||
ArticleId uint `json:"articleId" validate:"required"`
|
||||
FilePath string `json:"filePath" validate:"required"`
|
||||
FileUrl string `json:"fileUrl" validate:"required"`
|
||||
FileName string `json:"fileName" validate:"required"`
|
||||
FileThumbnail string `json:"fileThumbnail" validate:"required"`
|
||||
FileAlt string `json:"fileAlt" validate:"required"`
|
||||
WidthPixel string `json:"widthPixel" validate:"required"`
|
||||
HeightPixel string `json:"heightPixel" validate:"required"`
|
||||
Size string `json:"size" validate:"required"`
|
||||
DownloadCount int `json:"downloadCount" validate:"required"`
|
||||
StatusId int `json:"statusId" validate:"required"`
|
||||
}
|
||||
|
||||
func (req ArticleFilesCreateRequest) ToEntity() *entity.ArticleFiles {
|
||||
|
|
@ -59,33 +45,27 @@ func (req ArticleFilesCreateRequest) ToEntity() *entity.ArticleFiles {
|
|||
HeightPixel: req.HeightPixel,
|
||||
Size: req.Size,
|
||||
DownloadCount: req.DownloadCount,
|
||||
CreatedById: req.CreatedById,
|
||||
StatusId: req.StatusId,
|
||||
IsPublish: req.IsPublish,
|
||||
PublishedAt: req.PublishedAt,
|
||||
IsActive: req.IsActive,
|
||||
IsPublish: false,
|
||||
}
|
||||
}
|
||||
|
||||
type ArticleFilesUpdateRequest struct {
|
||||
ID uint `json:"id" validate:"required"`
|
||||
ArticleId uint `json:"article_id" validate:"required"`
|
||||
FilePath string `json:"file_path" validate:"required"`
|
||||
FileUrl string `json:"file_url" validate:"required"`
|
||||
FileName string `json:"file_name" validate:"required"`
|
||||
FileThumbnail string `json:"file_thumbnail" validate:"required"`
|
||||
FileAlt string `json:"file_alt" validate:"required"`
|
||||
WidthPixel string `json:"width_pixel" validate:"required"`
|
||||
HeightPixel string `json:"height_pixel" validate:"required"`
|
||||
ArticleId uint `json:"articleId" validate:"required"`
|
||||
FilePath string `json:"filePath" validate:"required"`
|
||||
FileUrl string `json:"fileUrl" validate:"required"`
|
||||
FileName string `json:"fileName" validate:"required"`
|
||||
FileThumbnail string `json:"fileThumbnail" validate:"required"`
|
||||
FileAlt string `json:"fileAlt" validate:"required"`
|
||||
WidthPixel string `json:"widthPixel" validate:"required"`
|
||||
HeightPixel string `json:"heightPixel" validate:"required"`
|
||||
Size string `json:"size" validate:"required"`
|
||||
DownloadCount int `json:"download_count" 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"`
|
||||
IsActive bool `json:"is_active" validate:"required"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
DownloadCount int `json:"downloadCount" validate:"required"`
|
||||
CreatedById int `json:"createdById" validate:"required"`
|
||||
StatusId int `json:"statusId" validate:"required"`
|
||||
IsPublish bool `json:"isPublish" validate:"required"`
|
||||
PublishedAt time.Time `json:"publishedAt" validate:"required"`
|
||||
}
|
||||
|
||||
func (req ArticleFilesUpdateRequest) ToEntity() *entity.ArticleFiles {
|
||||
|
|
@ -105,8 +85,41 @@ func (req ArticleFilesUpdateRequest) ToEntity() *entity.ArticleFiles {
|
|||
StatusId: req.StatusId,
|
||||
IsPublish: req.IsPublish,
|
||||
PublishedAt: req.PublishedAt,
|
||||
IsActive: req.IsActive,
|
||||
CreatedAt: req.CreatedAt,
|
||||
UpdatedAt: req.UpdatedAt,
|
||||
UpdatedAt: time.Now(),
|
||||
}
|
||||
}
|
||||
|
||||
type ArticleFilesQueryRequestContext struct {
|
||||
ArticleId string `json:"articleId"`
|
||||
FileName string `json:"fileName"`
|
||||
StatusId string `json:"statusId"`
|
||||
IsPublish string `json:"isPublish"`
|
||||
}
|
||||
|
||||
func (req ArticleFilesQueryRequestContext) ToParamRequest() ArticleFilesQueryRequest {
|
||||
var request ArticleFilesQueryRequest
|
||||
|
||||
if articleIdStr := req.ArticleId; articleIdStr != "" {
|
||||
articleId, err := strconv.Atoi(articleIdStr)
|
||||
if err == nil {
|
||||
request.ArticleId = &articleId
|
||||
}
|
||||
}
|
||||
if fileName := req.FileName; fileName != "" {
|
||||
request.FileName = &fileName
|
||||
}
|
||||
if statusIdStr := req.StatusId; statusIdStr != "" {
|
||||
statusId, err := strconv.Atoi(statusIdStr)
|
||||
if err == nil {
|
||||
request.StatusId = &statusId
|
||||
}
|
||||
}
|
||||
if isPublishStr := req.IsPublish; isPublishStr != "" {
|
||||
isPublish, err := strconv.ParseBool(isPublishStr)
|
||||
if err == nil {
|
||||
request.IsPublish = &isPublish
|
||||
}
|
||||
}
|
||||
|
||||
return request
|
||||
}
|
||||
|
|
|
|||
|
|
@ -138,7 +138,13 @@ func (_i *articleFilesService) Update(id uint, req request.ArticleFilesUpdateReq
|
|||
}
|
||||
|
||||
func (_i *articleFilesService) Delete(id uint) error {
|
||||
return _i.Repo.Delete(id)
|
||||
result, err := _i.Repo.FindOne(id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
result.IsActive = false
|
||||
return _i.Repo.Update(id, result)
|
||||
}
|
||||
|
||||
func (_i *articleFilesService) Viewer(c *fiber.Ctx, id uint) (err error) {
|
||||
|
|
|
|||
|
|
@ -36,10 +36,9 @@ func NewArticlesController(articlesService service.ArticlesService) ArticlesCont
|
|||
// @Security Bearer
|
||||
// @Param req query request.ArticlesQueryRequest false "query parameters"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /articles [get]
|
||||
func (_i *articlesController) All(c *fiber.Ctx) error {
|
||||
paginate, err := paginator.Paginate(c)
|
||||
|
|
@ -47,7 +46,15 @@ func (_i *articlesController) All(c *fiber.Ctx) error {
|
|||
return err
|
||||
}
|
||||
|
||||
var req request.ArticlesQueryRequest
|
||||
reqContext := request.ArticlesQueryRequestContext{
|
||||
Title: c.Query("title"),
|
||||
Description: c.Query("description"),
|
||||
Tags: c.Query("tags"),
|
||||
TypeId: c.Query("typeId"),
|
||||
StatusId: c.Query("statusId"),
|
||||
IsPublish: c.Query("isPublish"),
|
||||
}
|
||||
req := reqContext.ToParamRequest()
|
||||
req.Pagination = paginate
|
||||
|
||||
articlesData, paging, err := _i.articlesService.All(req)
|
||||
|
|
@ -70,10 +77,9 @@ func (_i *articlesController) All(c *fiber.Ctx) error {
|
|||
// @Security Bearer
|
||||
// @Param id path int true "Articles ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /articles/{id} [get]
|
||||
func (_i *articlesController) Show(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
@ -100,10 +106,9 @@ func (_i *articlesController) Show(c *fiber.Ctx) error {
|
|||
// @Security Bearer
|
||||
// @Param payload body request.ArticlesCreateRequest true "Required payload"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /articles [post]
|
||||
func (_i *articlesController) Save(c *fiber.Ctx) error {
|
||||
req := new(request.ArticlesCreateRequest)
|
||||
|
|
@ -130,10 +135,9 @@ func (_i *articlesController) Save(c *fiber.Ctx) error {
|
|||
// @Param payload body request.ArticlesUpdateRequest true "Required payload"
|
||||
// @Param id path int true "Articles ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /articles/{id} [put]
|
||||
func (_i *articlesController) Update(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
@ -164,10 +168,9 @@ func (_i *articlesController) Update(c *fiber.Ctx) error {
|
|||
// @Security Bearer
|
||||
// @Param id path int true "Articles ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /articles/{id} [delete]
|
||||
func (_i *articlesController) Delete(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
|
|||
|
|
@ -45,9 +45,6 @@ func (_i *articlesRepository) GetAll(req request.ArticlesQueryRequest) (articles
|
|||
description := strings.ToLower(*req.Description)
|
||||
query = query.Where("LOWER(description) LIKE ?", "%"+strings.ToLower(description)+"%")
|
||||
}
|
||||
if req.TypeId != nil {
|
||||
query = query.Where("type_id = ?", req.TypeId)
|
||||
}
|
||||
if req.Tags != nil && *req.Tags != "" {
|
||||
tags := strings.ToLower(*req.Tags)
|
||||
query = query.Where("LOWER(tags) LIKE ?", "%"+strings.ToLower(tags)+"%")
|
||||
|
|
@ -61,6 +58,9 @@ func (_i *articlesRepository) GetAll(req request.ArticlesQueryRequest) (articles
|
|||
if req.StatusId != nil {
|
||||
query = query.Where("status_id = ?", req.StatusId)
|
||||
}
|
||||
if req.CreatedById != nil {
|
||||
query = query.Where("created_by_id = ?", req.CreatedById)
|
||||
}
|
||||
query.Count(&count)
|
||||
|
||||
req.Pagination.Count = count
|
||||
|
|
|
|||
|
|
@ -16,26 +16,19 @@ type ArticlesQueryRequest struct {
|
|||
Description *string `json:"description"`
|
||||
TypeId *int `json:"typeId"`
|
||||
Tags *string `json:"tags"`
|
||||
CreatedById *int `json:"createdById"`
|
||||
StatusId *int `json:"statusId"`
|
||||
IsPublish *bool `json:"isPublish"`
|
||||
Pagination *paginator.Pagination `json:"pagination"`
|
||||
}
|
||||
|
||||
type ArticlesCreateRequest struct {
|
||||
Title string `json:"title" validate:"required"`
|
||||
Slug string `json:"slug" validate:"required"`
|
||||
Description string `json:"description" validate:"required"`
|
||||
HtmlDescription string `json:"htmlDescription" validate:"required"`
|
||||
TypeId int `json:"typeId" validate:"required"`
|
||||
Tags string `json:"tags" validate:"required"`
|
||||
ThumbnailPath *string `json:"thumbnailPath"`
|
||||
ThumbnailUrl *string `json:"thumbnailUrl"`
|
||||
PageUrl *string `json:"pageUrl"`
|
||||
CreatedById *int `json:"createdById"`
|
||||
StatusId *int `json:"status_id"`
|
||||
IsPublish *bool `json:"is_publish"`
|
||||
PublishedAt *time.Time `json:"published_at"`
|
||||
IsActive *bool `json:"is_active"`
|
||||
Title string `json:"title" validate:"required"`
|
||||
Slug string `json:"slug" validate:"required"`
|
||||
Description string `json:"description" validate:"required"`
|
||||
HtmlDescription string `json:"htmlDescription" validate:"required"`
|
||||
TypeId int `json:"typeId" validate:"required"`
|
||||
Tags string `json:"tags" validate:"required"`
|
||||
}
|
||||
|
||||
func (req ArticlesCreateRequest) ToEntity() *entity.Articles {
|
||||
|
|
@ -46,14 +39,6 @@ func (req ArticlesCreateRequest) ToEntity() *entity.Articles {
|
|||
HtmlDescription: req.HtmlDescription,
|
||||
TypeId: req.TypeId,
|
||||
Tags: req.Tags,
|
||||
ThumbnailPath: req.ThumbnailPath,
|
||||
ThumbnailUrl: req.ThumbnailUrl,
|
||||
PageUrl: req.PageUrl,
|
||||
CreatedById: req.CreatedById,
|
||||
StatusId: req.StatusId,
|
||||
IsPublish: req.IsPublish,
|
||||
PublishedAt: req.PublishedAt,
|
||||
IsActive: req.IsActive,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -85,6 +70,7 @@ type ArticlesQueryRequestContext struct {
|
|||
Description string `json:"description"`
|
||||
TypeId string `json:"typeId"`
|
||||
Tags string `json:"tags"`
|
||||
CreatedById string `json:"createdById"`
|
||||
IsPublish string `json:"isPublish"`
|
||||
StatusId string `json:"statusId"`
|
||||
}
|
||||
|
|
@ -119,6 +105,12 @@ func (req ArticlesQueryRequestContext) ToParamRequest() ArticlesQueryRequest {
|
|||
request.StatusId = &statusId
|
||||
}
|
||||
}
|
||||
if createdByIdStr := req.CreatedById; createdByIdStr != "" {
|
||||
createdById, err := strconv.Atoi(createdByIdStr)
|
||||
if err == nil {
|
||||
request.CreatedById = &createdById
|
||||
}
|
||||
}
|
||||
|
||||
return request
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,16 +29,16 @@ func NewPpidDatasController(ppidDatasService service.PpidDatasService) PpidDatas
|
|||
}
|
||||
}
|
||||
|
||||
// All get all PpidDatas
|
||||
// All PpidDatas
|
||||
// @Summary Get all PpidDatas
|
||||
// @Description API for getting all PpidDatas
|
||||
// @Tags Task
|
||||
// @Security Bearer
|
||||
// @Param req query request.PpidDatasQueryRequestContext false "query parameters"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /ppid-datas [get]
|
||||
func (_i *ppidDatasController) All(c *fiber.Ctx) error {
|
||||
paginate, err := paginator.Paginate(c)
|
||||
|
|
@ -46,7 +46,16 @@ func (_i *ppidDatasController) All(c *fiber.Ctx) error {
|
|||
return err
|
||||
}
|
||||
|
||||
var req request.PpidDatasQueryRequest
|
||||
reqContext := request.PpidDatasQueryRequestContext{
|
||||
Title: c.Query("title"),
|
||||
Description: c.Query("description"),
|
||||
CategoryId: c.Query("categoryId"),
|
||||
CreatedById: c.Query("createdById"),
|
||||
StatusId: c.Query("statusId"),
|
||||
IsPublish: c.Query("isPublish"),
|
||||
}
|
||||
|
||||
req := reqContext.ToParamRequest()
|
||||
req.Pagination = paginate
|
||||
|
||||
ppidDatasData, paging, err := _i.ppidDatasService.All(req)
|
||||
|
|
@ -55,23 +64,23 @@ func (_i *ppidDatasController) All(c *fiber.Ctx) error {
|
|||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Success: true,
|
||||
Messages: utilRes.Messages{"PpidDatas list successfully retrieved"},
|
||||
Data: ppidDatasData,
|
||||
Meta: paging,
|
||||
})
|
||||
}
|
||||
|
||||
// Show get one PpidDatas
|
||||
// Show PpidDatas
|
||||
// @Summary Get one PpidDatas
|
||||
// @Description API for getting one PpidDatas
|
||||
// @Tags Task
|
||||
// @Security Bearer
|
||||
// @Param id path int true "PpidDatas ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /ppid-datas/{id} [get]
|
||||
func (_i *ppidDatasController) Show(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
@ -85,22 +94,22 @@ func (_i *ppidDatasController) Show(c *fiber.Ctx) error {
|
|||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Success: true,
|
||||
Messages: utilRes.Messages{"PpidDatas successfully retrieved"},
|
||||
Data: ppidDatasData,
|
||||
})
|
||||
}
|
||||
|
||||
// Save create PpidDatas
|
||||
// Save PpidDatas
|
||||
// @Summary Create PpidDatas
|
||||
// @Description API for create PpidDatas
|
||||
// @Tags Task
|
||||
// @Security Bearer
|
||||
// @Body request.PpidDatasCreateRequest
|
||||
// @Param payload body request.PpidDatasCreateRequest true "Required payload"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /ppid-datas [post]
|
||||
func (_i *ppidDatasController) Save(c *fiber.Ctx) error {
|
||||
req := new(request.PpidDatasCreateRequest)
|
||||
|
|
@ -114,22 +123,22 @@ func (_i *ppidDatasController) Save(c *fiber.Ctx) error {
|
|||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Success: true,
|
||||
Messages: utilRes.Messages{"PpidDatas successfully created"},
|
||||
})
|
||||
}
|
||||
|
||||
// Update update PpidDatas
|
||||
// Update PpidDatas
|
||||
// @Summary update PpidDatas
|
||||
// @Description API for update PpidDatas
|
||||
// @Tags Task
|
||||
// @Security Bearer
|
||||
// @Body request.PpidDatasUpdateRequest
|
||||
// @Param payload body request.PpidDatasCreateRequest true "Required payload"
|
||||
// @Param id path int true "PpidDatas ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /ppid-datas/{id} [put]
|
||||
func (_i *ppidDatasController) Update(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
@ -148,21 +157,21 @@ func (_i *ppidDatasController) Update(c *fiber.Ctx) error {
|
|||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Success: true,
|
||||
Messages: utilRes.Messages{"PpidDatas successfully updated"},
|
||||
})
|
||||
}
|
||||
|
||||
// Delete delete PpidDatas
|
||||
// Delete PpidDatas
|
||||
// @Summary delete PpidDatas
|
||||
// @Description API for delete PpidDatas
|
||||
// @Tags Task
|
||||
// @Security Bearer
|
||||
// @Param id path int true "PpidDatas ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /ppid-datas/{id} [delete]
|
||||
func (_i *ppidDatasController) Delete(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
@ -176,6 +185,7 @@ func (_i *ppidDatasController) Delete(c *fiber.Ctx) error {
|
|||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Success: true,
|
||||
Messages: utilRes.Messages{"PpidDatas successfully deleted"},
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package request
|
|||
import (
|
||||
"go-humas-be/app/database/entity"
|
||||
"go-humas-be/utils/paginator"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
|
@ -11,26 +12,21 @@ type PpidDatasGeneric interface {
|
|||
}
|
||||
|
||||
type PpidDatasQueryRequest struct {
|
||||
Title string `json:"title" validate:"required"`
|
||||
Description string `json:"description" validate:"required"`
|
||||
CategoryId int `json:"category_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"`
|
||||
IsActive bool `json:"is_active" validate:"required"`
|
||||
Title *string `json:"title"`
|
||||
Description *string `json:"description"`
|
||||
CategoryId *int `json:"categoryId"`
|
||||
CreatedById *int `json:"createdById"`
|
||||
StatusId *int `json:"statusId"`
|
||||
IsPublish *bool `json:"isPublish"`
|
||||
Pagination *paginator.Pagination `json:"pagination"`
|
||||
}
|
||||
|
||||
type PpidDatasCreateRequest struct {
|
||||
Title string `json:"title" validate:"required"`
|
||||
Description string `json:"description" validate:"required"`
|
||||
CategoryId int `json:"category_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"`
|
||||
IsActive bool `json:"is_active" validate:"required"`
|
||||
Title string `json:"title" validate:"required"`
|
||||
Description string `json:"description" validate:"required"`
|
||||
CategoryId int `json:"categoryId" validate:"required"`
|
||||
CreatedById int `json:"createdById" validate:"required"`
|
||||
StatusId int `json:"statusId" validate:"required"`
|
||||
}
|
||||
|
||||
func (req PpidDatasCreateRequest) ToEntity() *entity.PpidDatas {
|
||||
|
|
@ -40,24 +36,18 @@ func (req PpidDatasCreateRequest) ToEntity() *entity.PpidDatas {
|
|||
CategoryId: req.CategoryId,
|
||||
CreatedById: req.CreatedById,
|
||||
StatusId: req.StatusId,
|
||||
IsPublish: req.IsPublish,
|
||||
PublishedAt: req.PublishedAt,
|
||||
IsActive: req.IsActive,
|
||||
}
|
||||
}
|
||||
|
||||
type PpidDatasUpdateRequest struct {
|
||||
ID uint `json:"id" validate:"required"`
|
||||
Title string `json:"title" validate:"required"`
|
||||
Description string `json:"description" validate:"required"`
|
||||
CategoryId int `json:"category_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"`
|
||||
IsActive bool `json:"is_active" validate:"required"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
ID uint `json:"id" validate:"required"`
|
||||
Title string `json:"title" validate:"required"`
|
||||
Description string `json:"description" validate:"required"`
|
||||
CategoryId int `json:"category_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"`
|
||||
}
|
||||
|
||||
func (req PpidDatasUpdateRequest) ToEntity() *entity.PpidDatas {
|
||||
|
|
@ -70,8 +60,52 @@ func (req PpidDatasUpdateRequest) ToEntity() *entity.PpidDatas {
|
|||
StatusId: req.StatusId,
|
||||
IsPublish: req.IsPublish,
|
||||
PublishedAt: req.PublishedAt,
|
||||
IsActive: req.IsActive,
|
||||
CreatedAt: req.CreatedAt,
|
||||
UpdatedAt: req.UpdatedAt,
|
||||
UpdatedAt: time.Now(),
|
||||
}
|
||||
}
|
||||
|
||||
type PpidDatasQueryRequestContext struct {
|
||||
Title string `json:"title"`
|
||||
Description string `json:"description"`
|
||||
CategoryId string `json:"categoryId"`
|
||||
CreatedById string `json:"createdById"`
|
||||
StatusId string `json:"statusId"`
|
||||
IsPublish string `json:"isPublish"`
|
||||
}
|
||||
|
||||
func (req PpidDatasQueryRequestContext) ToParamRequest() PpidDatasQueryRequest {
|
||||
var request PpidDatasQueryRequest
|
||||
|
||||
if title := req.Title; title != "" {
|
||||
request.Title = &title
|
||||
}
|
||||
if description := req.Description; description != "" {
|
||||
request.Description = &description
|
||||
}
|
||||
if categoryIdStr := req.CategoryId; categoryIdStr != "" {
|
||||
categoryId, err := strconv.Atoi(categoryIdStr)
|
||||
if err == nil {
|
||||
request.CategoryId = &categoryId
|
||||
}
|
||||
}
|
||||
if isPublishStr := req.IsPublish; isPublishStr != "" {
|
||||
isPublish, err := strconv.ParseBool(isPublishStr)
|
||||
if err == nil {
|
||||
request.IsPublish = &isPublish
|
||||
}
|
||||
}
|
||||
if statusIdStr := req.StatusId; statusIdStr != "" {
|
||||
statusId, err := strconv.Atoi(statusIdStr)
|
||||
if err == nil {
|
||||
request.StatusId = &statusId
|
||||
}
|
||||
}
|
||||
if createdByIdStr := req.CreatedById; createdByIdStr != "" {
|
||||
createdById, err := strconv.Atoi(createdByIdStr)
|
||||
if err == nil {
|
||||
request.CreatedById = &createdById
|
||||
}
|
||||
}
|
||||
|
||||
return request
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,10 +36,9 @@ func NewUserLevelsController(userLevelsService service.UserLevelsService) UserLe
|
|||
// @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
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /user-levels [get]
|
||||
func (_i *userLevelsController) All(c *fiber.Ctx) error {
|
||||
paginate, err := paginator.Paginate(c)
|
||||
|
|
@ -76,10 +75,9 @@ func (_i *userLevelsController) All(c *fiber.Ctx) error {
|
|||
// @Security Bearer
|
||||
// @Param id path int true "UserLevels ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /user-levels/{id} [get]
|
||||
func (_i *userLevelsController) Show(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
@ -105,10 +103,9 @@ func (_i *userLevelsController) Show(c *fiber.Ctx) error {
|
|||
// @Security Bearer
|
||||
// @Param payload body request.UserLevelsCreateRequest true "Required payload"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /user-levels [post]
|
||||
func (_i *userLevelsController) Save(c *fiber.Ctx) error {
|
||||
req := new(request.UserLevelsCreateRequest)
|
||||
|
|
@ -135,10 +132,9 @@ func (_i *userLevelsController) Save(c *fiber.Ctx) error {
|
|||
// @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
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /user-levels/{id} [put]
|
||||
func (_i *userLevelsController) Update(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ type UserLevelsCreateRequest struct {
|
|||
LevelNumber int `json:"levelNumber" validate:"required"`
|
||||
ParentLevelId int `json:"parentLevelId" validate:"required"`
|
||||
ProvinceId int `json:"provinceId" validate:"required"`
|
||||
IsActive *bool `json:"is_active"`
|
||||
IsActive *bool `json:"isActive"`
|
||||
}
|
||||
|
||||
func (req UserLevelsCreateRequest) ToEntity() *entity.UserLevels {
|
||||
|
|
|
|||
|
|
@ -29,16 +29,16 @@ func NewUserRoleAccessesController(userRoleAccessesService service.UserRoleAcces
|
|||
}
|
||||
}
|
||||
|
||||
// All get all UserRoleAccesses
|
||||
// All UserRoleAccesses
|
||||
// @Summary Get all UserRoleAccesses
|
||||
// @Description API for getting all UserRoleAccesses
|
||||
// @Tags Task
|
||||
// @Tags UserRoleAccesses
|
||||
// @Security Bearer
|
||||
// @Param req query request.UserRoleAccessesQueryRequest false "query parameters"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /user-role-accesses [get]
|
||||
func (_i *userRoleAccessesController) All(c *fiber.Ctx) error {
|
||||
paginate, err := paginator.Paginate(c)
|
||||
|
|
@ -46,7 +46,11 @@ func (_i *userRoleAccessesController) All(c *fiber.Ctx) error {
|
|||
return err
|
||||
}
|
||||
|
||||
var req request.UserRoleAccessesQueryRequest
|
||||
reqContext := request.UserRoleAccessesQueryRequestContext{
|
||||
MenuId: c.Query("menuId"),
|
||||
UserRoleId: c.Query("userRoleId"),
|
||||
}
|
||||
req := reqContext.ToParamRequest()
|
||||
req.Pagination = paginate
|
||||
|
||||
userRoleAccessesData, paging, err := _i.userRoleAccessesService.All(req)
|
||||
|
|
@ -55,23 +59,23 @@ func (_i *userRoleAccessesController) All(c *fiber.Ctx) error {
|
|||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Success: true,
|
||||
Messages: utilRes.Messages{"UserRoleAccesses list successfully retrieved"},
|
||||
Data: userRoleAccessesData,
|
||||
Meta: paging,
|
||||
})
|
||||
}
|
||||
|
||||
// Show get one UserRoleAccesses
|
||||
// Show UserRoleAccesses
|
||||
// @Summary Get one UserRoleAccesses
|
||||
// @Description API for getting one UserRoleAccesses
|
||||
// @Tags Task
|
||||
// @Tags UserRoleAccesses
|
||||
// @Security Bearer
|
||||
// @Param id path int true "UserRoleAccesses ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /user-role-accesses/{id} [get]
|
||||
func (_i *userRoleAccessesController) Show(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
@ -85,22 +89,22 @@ func (_i *userRoleAccessesController) Show(c *fiber.Ctx) error {
|
|||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Success: true,
|
||||
Messages: utilRes.Messages{"UserRoleAccesses successfully retrieved"},
|
||||
Data: userRoleAccessesData,
|
||||
})
|
||||
}
|
||||
|
||||
// Save create UserRoleAccesses
|
||||
// Save UserRoleAccesses
|
||||
// @Summary Create UserRoleAccesses
|
||||
// @Description API for create UserRoleAccesses
|
||||
// @Tags Task
|
||||
// @Tags UserRoleAccesses
|
||||
// @Security Bearer
|
||||
// @Body request.UserRoleAccessesCreateRequest
|
||||
// @Param payload body request.UserRoleAccessesCreateRequest true "Required payload"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /user-role-accesses [post]
|
||||
func (_i *userRoleAccessesController) Save(c *fiber.Ctx) error {
|
||||
req := new(request.UserRoleAccessesCreateRequest)
|
||||
|
|
@ -114,22 +118,23 @@ func (_i *userRoleAccessesController) Save(c *fiber.Ctx) error {
|
|||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Success: true,
|
||||
Messages: utilRes.Messages{"UserRoleAccesses successfully created"},
|
||||
})
|
||||
}
|
||||
|
||||
// Update update UserRoleAccesses
|
||||
// Update UserRoleAccesses
|
||||
// @Summary update UserRoleAccesses
|
||||
// @Description API for update UserRoleAccesses
|
||||
// @Tags Task
|
||||
// @Tags UserRoleAccesses
|
||||
// @Security Bearer
|
||||
// @Body request.UserRoleAccessesUpdateRequest
|
||||
// @Param payload body request.UserRoleAccessesUpdateRequest true "Required payload"
|
||||
// @Param id path int true "UserRoleAccesses ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /user-role-accesses/{id} [put]
|
||||
func (_i *userRoleAccessesController) Update(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
@ -148,21 +153,21 @@ func (_i *userRoleAccessesController) Update(c *fiber.Ctx) error {
|
|||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Success: true,
|
||||
Messages: utilRes.Messages{"UserRoleAccesses successfully updated"},
|
||||
})
|
||||
}
|
||||
|
||||
// Delete delete UserRoleAccesses
|
||||
// Delete UserRoleAccesses
|
||||
// @Summary delete UserRoleAccesses
|
||||
// @Description API for delete UserRoleAccesses
|
||||
// @Tags Task
|
||||
// @Tags UserRoleAccesses
|
||||
// @Security Bearer
|
||||
// @Param id path int true "UserRoleAccesses ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /user-role-accesses/{id} [delete]
|
||||
func (_i *userRoleAccessesController) Delete(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
@ -176,6 +181,7 @@ func (_i *userRoleAccessesController) Delete(c *fiber.Ctx) error {
|
|||
}
|
||||
|
||||
return utilRes.Resp(c, utilRes.Response{
|
||||
Success: true,
|
||||
Messages: utilRes.Messages{"UserRoleAccesses successfully deleted"},
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,18 +8,18 @@ import (
|
|||
func UserRoleAccessesResponseMapper(userRoleAccessesReq *entity.UserRoleAccesses) (userRoleAccessesRes *res.UserRoleAccessesResponse) {
|
||||
if userRoleAccessesReq != nil {
|
||||
userRoleAccessesRes = &res.UserRoleAccessesResponse{
|
||||
ID: userRoleAccessesReq.ID,
|
||||
UserRoleId: userRoleAccessesReq.UserRoleId,
|
||||
MenuId: userRoleAccessesReq.MenuId,
|
||||
IsViewEnabled: userRoleAccessesReq.IsViewEnabled,
|
||||
IsInsertEnabled: userRoleAccessesReq.IsInsertEnabled,
|
||||
IsUpdateEnabled: userRoleAccessesReq.IsUpdateEnabled,
|
||||
IsDeleteEnabled: userRoleAccessesReq.IsDeleteEnabled,
|
||||
IsApprovalEnabled: userRoleAccessesReq.IsApprovalEnabled,
|
||||
ID: userRoleAccessesReq.ID,
|
||||
UserRoleId: userRoleAccessesReq.UserRoleId,
|
||||
MenuId: userRoleAccessesReq.MenuId,
|
||||
IsViewEnabled: userRoleAccessesReq.IsViewEnabled,
|
||||
IsInsertEnabled: userRoleAccessesReq.IsInsertEnabled,
|
||||
IsUpdateEnabled: userRoleAccessesReq.IsUpdateEnabled,
|
||||
IsDeleteEnabled: userRoleAccessesReq.IsDeleteEnabled,
|
||||
IsApprovalEnabled: userRoleAccessesReq.IsApprovalEnabled,
|
||||
IsAdminEnabled: userRoleAccessesReq.IsAdminEnabled,
|
||||
IsActive: userRoleAccessesReq.IsActive,
|
||||
CreatedAt: userRoleAccessesReq.CreatedAt,
|
||||
UpdatedAt: userRoleAccessesReq.UpdatedAt,
|
||||
IsActive: userRoleAccessesReq.IsActive,
|
||||
CreatedAt: userRoleAccessesReq.CreatedAt,
|
||||
UpdatedAt: userRoleAccessesReq.UpdatedAt,
|
||||
}
|
||||
}
|
||||
return userRoleAccessesRes
|
||||
|
|
|
|||
|
|
@ -31,6 +31,14 @@ func (_i *userRoleAccessesRepository) GetAll(req request.UserRoleAccessesQueryRe
|
|||
var count int64
|
||||
|
||||
query := _i.DB.DB.Model(&entity.UserRoleAccesses{})
|
||||
query = query.Where("is_active = ?", true)
|
||||
|
||||
if req.UserRoleId != nil {
|
||||
query = query.Where("user_role_id = ?", req.UserRoleId)
|
||||
}
|
||||
if req.MenuId != nil {
|
||||
query = query.Where("menu_id = ?", req.MenuId)
|
||||
}
|
||||
query.Count(&count)
|
||||
|
||||
req.Pagination.Count = count
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package request
|
|||
import (
|
||||
"go-humas-be/app/database/entity"
|
||||
"go-humas-be/utils/paginator"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
|
@ -11,73 +12,84 @@ type UserRoleAccessesGeneric interface {
|
|||
}
|
||||
|
||||
type UserRoleAccessesQueryRequest struct {
|
||||
UserRoleId int `json:"user_role_id" validate:"required"`
|
||||
MenuId int `json:"menu_id" validate:"required"`
|
||||
IsViewEnabled bool `json:"is_view_enabled" validate:"required"`
|
||||
IsInsertEnabled bool `json:"is_insert_enabled" validate:"required"`
|
||||
IsUpdateEnabled bool `json:"is_update_enabled" validate:"required"`
|
||||
IsDeleteEnabled bool `json:"is_delete_enabled" validate:"required"`
|
||||
IsApprovalEnabled bool `json:"is_approval_enabled" validate:"required"`
|
||||
IsAdminEnabled bool `json:"is_admin_enabled" validate:"required"`
|
||||
IsActive bool `json:"is_active" validate:"required"`
|
||||
Pagination *paginator.Pagination `json:"pagination"`
|
||||
UserRoleId *int `json:"userRoleId" validate:"required"`
|
||||
MenuId *int `json:"menuId" validate:"required"`
|
||||
IsActive *bool `json:"isActive" validate:"required"`
|
||||
Pagination *paginator.Pagination `json:"pagination"`
|
||||
}
|
||||
|
||||
|
||||
type UserRoleAccessesCreateRequest struct {
|
||||
UserRoleId int `json:"user_role_id" validate:"required"`
|
||||
MenuId int `json:"menu_id" validate:"required"`
|
||||
IsViewEnabled bool `json:"is_view_enabled" validate:"required"`
|
||||
IsInsertEnabled bool `json:"is_insert_enabled" validate:"required"`
|
||||
IsUpdateEnabled bool `json:"is_update_enabled" validate:"required"`
|
||||
IsDeleteEnabled bool `json:"is_delete_enabled" validate:"required"`
|
||||
IsApprovalEnabled bool `json:"is_approval_enabled" validate:"required"`
|
||||
IsAdminEnabled bool `json:"is_admin_enabled" validate:"required"`
|
||||
IsActive bool `json:"is_active" validate:"required"`
|
||||
UserRoleId int `json:"userRoleId" validate:"required"`
|
||||
MenuId int `json:"menuId" validate:"required"`
|
||||
IsViewEnabled bool `json:"isViewEnabled" validate:"required"`
|
||||
IsInsertEnabled bool `json:"isInsertEnabled" validate:"required"`
|
||||
IsUpdateEnabled bool `json:"isUpdateEnabled" validate:"required"`
|
||||
IsDeleteEnabled bool `json:"isDeleteEnabled" validate:"required"`
|
||||
IsApprovalEnabled bool `json:"isApprovalEnabled" validate:"required"`
|
||||
IsAdminEnabled bool `json:"isAdminEnabled" validate:"required"`
|
||||
}
|
||||
|
||||
func (req UserRoleAccessesCreateRequest) ToEntity() *entity.UserRoleAccesses {
|
||||
return &entity.UserRoleAccesses{
|
||||
UserRoleId: req.UserRoleId,
|
||||
MenuId: req.MenuId,
|
||||
IsViewEnabled: req.IsViewEnabled,
|
||||
IsInsertEnabled: req.IsInsertEnabled,
|
||||
IsUpdateEnabled: req.IsUpdateEnabled,
|
||||
IsDeleteEnabled: req.IsDeleteEnabled,
|
||||
IsApprovalEnabled: req.IsApprovalEnabled,
|
||||
UserRoleId: req.UserRoleId,
|
||||
MenuId: req.MenuId,
|
||||
IsViewEnabled: req.IsViewEnabled,
|
||||
IsInsertEnabled: req.IsInsertEnabled,
|
||||
IsUpdateEnabled: req.IsUpdateEnabled,
|
||||
IsDeleteEnabled: req.IsDeleteEnabled,
|
||||
IsApprovalEnabled: req.IsApprovalEnabled,
|
||||
IsAdminEnabled: req.IsAdminEnabled,
|
||||
IsActive: req.IsActive,
|
||||
}
|
||||
}
|
||||
|
||||
type UserRoleAccessesUpdateRequest struct {
|
||||
ID uint `json:"id" validate:"required"`
|
||||
UserRoleId int `json:"user_role_id" validate:"required"`
|
||||
MenuId int `json:"menu_id" validate:"required"`
|
||||
IsViewEnabled bool `json:"is_view_enabled" validate:"required"`
|
||||
IsInsertEnabled bool `json:"is_insert_enabled" validate:"required"`
|
||||
IsUpdateEnabled bool `json:"is_update_enabled" validate:"required"`
|
||||
IsDeleteEnabled bool `json:"is_delete_enabled" validate:"required"`
|
||||
IsApprovalEnabled bool `json:"is_approval_enabled" validate:"required"`
|
||||
IsAdminEnabled bool `json:"is_admin_enabled" validate:"required"`
|
||||
IsActive bool `json:"is_active" validate:"required"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
ID uint `json:"id" validate:"required"`
|
||||
UserRoleId int `json:"user_role_id" validate:"required"`
|
||||
MenuId int `json:"menu_id" validate:"required"`
|
||||
IsViewEnabled bool `json:"is_view_enabled" validate:"required"`
|
||||
IsInsertEnabled bool `json:"is_insert_enabled" validate:"required"`
|
||||
IsUpdateEnabled bool `json:"is_update_enabled" validate:"required"`
|
||||
IsDeleteEnabled bool `json:"is_delete_enabled" validate:"required"`
|
||||
IsApprovalEnabled bool `json:"is_approval_enabled" validate:"required"`
|
||||
IsAdminEnabled bool `json:"is_admin_enabled" validate:"required"`
|
||||
}
|
||||
|
||||
func (req UserRoleAccessesUpdateRequest) ToEntity() *entity.UserRoleAccesses {
|
||||
return &entity.UserRoleAccesses{
|
||||
ID: req.ID,
|
||||
UserRoleId: req.UserRoleId,
|
||||
MenuId: req.MenuId,
|
||||
IsViewEnabled: req.IsViewEnabled,
|
||||
IsInsertEnabled: req.IsInsertEnabled,
|
||||
IsUpdateEnabled: req.IsUpdateEnabled,
|
||||
IsDeleteEnabled: req.IsDeleteEnabled,
|
||||
IsApprovalEnabled: req.IsApprovalEnabled,
|
||||
ID: req.ID,
|
||||
UserRoleId: req.UserRoleId,
|
||||
MenuId: req.MenuId,
|
||||
IsViewEnabled: req.IsViewEnabled,
|
||||
IsInsertEnabled: req.IsInsertEnabled,
|
||||
IsUpdateEnabled: req.IsUpdateEnabled,
|
||||
IsDeleteEnabled: req.IsDeleteEnabled,
|
||||
IsApprovalEnabled: req.IsApprovalEnabled,
|
||||
IsAdminEnabled: req.IsAdminEnabled,
|
||||
IsActive: req.IsActive,
|
||||
CreatedAt: req.CreatedAt,
|
||||
UpdatedAt: req.UpdatedAt,
|
||||
UpdatedAt: time.Now(),
|
||||
}
|
||||
}
|
||||
|
||||
type UserRoleAccessesQueryRequestContext struct {
|
||||
UserRoleId string `json:"userRoleId"`
|
||||
MenuId string `json:"menuId"`
|
||||
}
|
||||
|
||||
func (req UserRoleAccessesQueryRequestContext) ToParamRequest() UserRoleAccessesQueryRequest {
|
||||
var request UserRoleAccessesQueryRequest
|
||||
|
||||
if userRoleIdStr := req.UserRoleId; userRoleIdStr != "" {
|
||||
userRoleId, err := strconv.Atoi(userRoleIdStr)
|
||||
if err == nil {
|
||||
request.UserRoleId = &userRoleId
|
||||
}
|
||||
}
|
||||
|
||||
if menuIdStr := req.MenuId; menuIdStr != "" {
|
||||
menuId, err := strconv.Atoi(menuIdStr)
|
||||
if err == nil {
|
||||
request.MenuId = &menuId
|
||||
}
|
||||
}
|
||||
|
||||
return request
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,16 +3,16 @@ package response
|
|||
import "time"
|
||||
|
||||
type UserRoleAccessesResponse struct {
|
||||
ID uint `json:"id"`
|
||||
UserRoleId int `json:"user_role_id"`
|
||||
MenuId int `json:"menu_id"`
|
||||
IsViewEnabled bool `json:"is_view_enabled"`
|
||||
IsInsertEnabled bool `json:"is_insert_enabled"`
|
||||
IsUpdateEnabled bool `json:"is_update_enabled"`
|
||||
IsDeleteEnabled bool `json:"is_delete_enabled"`
|
||||
IsApprovalEnabled bool `json:"is_approval_enabled"`
|
||||
IsAdminEnabled bool `json:"is_admin_enabled"`
|
||||
IsActive bool `json:"is_active"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
ID uint `json:"id"`
|
||||
UserRoleId int `json:"user_role_id"`
|
||||
MenuId int `json:"menu_id"`
|
||||
IsViewEnabled bool `json:"is_view_enabled"`
|
||||
IsInsertEnabled bool `json:"is_insert_enabled"`
|
||||
IsUpdateEnabled bool `json:"is_update_enabled"`
|
||||
IsDeleteEnabled bool `json:"is_delete_enabled"`
|
||||
IsApprovalEnabled bool `json:"is_approval_enabled"`
|
||||
IsAdminEnabled bool `json:"is_admin_enabled"`
|
||||
IsActive *bool `json:"is_active"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
|
@ -68,5 +68,12 @@ func (_i *userRoleAccessesService) Update(id uint, req request.UserRoleAccessesU
|
|||
}
|
||||
|
||||
func (_i *userRoleAccessesService) 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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,10 +38,9 @@ func NewUserRolesController(userRolesService service.UserRolesService, log zerol
|
|||
// @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
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /user-roles [get]
|
||||
func (_i *userRolesController) All(c *fiber.Ctx) error {
|
||||
paginate, err := paginator.Paginate(c)
|
||||
|
|
@ -79,10 +78,9 @@ func (_i *userRolesController) All(c *fiber.Ctx) error {
|
|||
// @Security Bearer
|
||||
// @Param id path int true "UserRoles ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /user-roles/{id} [get]
|
||||
func (_i *userRolesController) Show(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
@ -109,10 +107,9 @@ func (_i *userRolesController) Show(c *fiber.Ctx) error {
|
|||
// @Security Bearer
|
||||
// @Param payload body request.UserRolesCreateRequest true "Required payload"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /user-roles [post]
|
||||
func (_i *userRolesController) Save(c *fiber.Ctx) error {
|
||||
req := new(request.UserRolesCreateRequest)
|
||||
|
|
@ -139,10 +136,9 @@ func (_i *userRolesController) Save(c *fiber.Ctx) error {
|
|||
// @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
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /user-roles/{id} [put]
|
||||
func (_i *userRolesController) Update(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
@ -173,10 +169,9 @@ func (_i *userRolesController) Update(c *fiber.Ctx) error {
|
|||
// @Security Bearer
|
||||
// @Param id path int true "UserRoles ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /user-roles/{id} [delete]
|
||||
func (_i *userRolesController) Delete(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
|
|||
|
|
@ -25,9 +25,6 @@ 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"`
|
||||
CreatedById *int `json:"created_by_id"`
|
||||
IsActive *bool `json:"is_active"`
|
||||
}
|
||||
|
||||
func (req UserRolesCreateRequest) ToEntity() *entity.UserRoles {
|
||||
|
|
@ -36,9 +33,6 @@ func (req UserRolesCreateRequest) ToEntity() *entity.UserRoles {
|
|||
Description: req.Description,
|
||||
Code: req.Code,
|
||||
LevelNumber: req.LevelNumber,
|
||||
StatusId: req.StatusId,
|
||||
CreatedById: req.CreatedById,
|
||||
IsActive: req.IsActive,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -59,8 +59,12 @@ func (_i *userRolesService) Show(id uint) (userRoles *response.UserRolesResponse
|
|||
|
||||
func (_i *userRolesService) Save(req request.UserRolesCreateRequest) (err error) {
|
||||
_i.Log.Info().Interface("data", req).Msg("")
|
||||
newReq := req.ToEntity()
|
||||
|
||||
return _i.Repo.Create(req.ToEntity())
|
||||
statusId := 1
|
||||
newReq.StatusId = &statusId
|
||||
|
||||
return _i.Repo.Create(newReq)
|
||||
}
|
||||
|
||||
func (_i *userRolesService) Update(id uint, req request.UserRolesUpdateRequest) (err error) {
|
||||
|
|
|
|||
|
|
@ -36,10 +36,9 @@ func NewUsersController(usersService service.UsersService) UsersController {
|
|||
// @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
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /users [get]
|
||||
func (_i *usersController) All(c *fiber.Ctx) error {
|
||||
paginate, err := paginator.Paginate(c)
|
||||
|
|
@ -80,10 +79,9 @@ func (_i *usersController) All(c *fiber.Ctx) error {
|
|||
// @Security Bearer
|
||||
// @Param id path int true "Users ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /users/{id} [get]
|
||||
func (_i *usersController) Show(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
@ -110,10 +108,9 @@ func (_i *usersController) Show(c *fiber.Ctx) error {
|
|||
// @Security Bearer
|
||||
// @Param payload body request.UsersCreateRequest true "Required payload"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /users [post]
|
||||
func (_i *usersController) Save(c *fiber.Ctx) error {
|
||||
req := new(request.UsersCreateRequest)
|
||||
|
|
@ -140,10 +137,9 @@ func (_i *usersController) Save(c *fiber.Ctx) error {
|
|||
// @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
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /users/{id} [put]
|
||||
func (_i *usersController) Update(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
@ -174,10 +170,9 @@ func (_i *usersController) Update(c *fiber.Ctx) error {
|
|||
// @Security Bearer
|
||||
// @Param id path int true "Users ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 401 {object} response.Response
|
||||
// @Failure 404 {object} response.Response
|
||||
// @Failure 422 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Failure 400 {object} response.BadRequestError
|
||||
// @Failure 401 {object} response.UnauthorizedError
|
||||
// @Failure 500 {object} response.InternalServerError
|
||||
// @Router /users/{id} [delete]
|
||||
func (_i *usersController) Delete(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
|
||||
|
|
|
|||
|
|
@ -23,85 +23,73 @@ type UsersQueryRequest struct {
|
|||
}
|
||||
|
||||
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:"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"`
|
||||
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"`
|
||||
}
|
||||
|
||||
func (req UsersCreateRequest) ToEntity() *entity.Users {
|
||||
return &entity.Users{
|
||||
Username: req.Username,
|
||||
Email: req.Email,
|
||||
Fullname: req.Fullname,
|
||||
Address: req.Address,
|
||||
PhoneNumber: req.PhoneNumber,
|
||||
WorkType: req.WorkType,
|
||||
GenderType: req.GenderType,
|
||||
IdentityType: req.IdentityType,
|
||||
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,
|
||||
Username: req.Username,
|
||||
Email: req.Email,
|
||||
Fullname: req.Fullname,
|
||||
Address: req.Address,
|
||||
PhoneNumber: req.PhoneNumber,
|
||||
WorkType: req.WorkType,
|
||||
GenderType: req.GenderType,
|
||||
IdentityType: req.IdentityType,
|
||||
IdentityNumber: req.IdentityNumber,
|
||||
DateOfBirth: req.DateOfBirth,
|
||||
LastEducation: req.LastEducation,
|
||||
UserRoleId: req.UserRoleId,
|
||||
UserLevelsId: req.UserLevelsId,
|
||||
}
|
||||
}
|
||||
|
||||
type UsersUpdateRequest 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:"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"`
|
||||
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"`
|
||||
StatusId *int `json:"status_id"`
|
||||
}
|
||||
|
||||
func (req UsersUpdateRequest) ToEntity() *entity.Users {
|
||||
return &entity.Users{
|
||||
Username: req.Username,
|
||||
Email: req.Email,
|
||||
Fullname: req.Fullname,
|
||||
Address: req.Address,
|
||||
PhoneNumber: req.PhoneNumber,
|
||||
WorkType: req.WorkType,
|
||||
GenderType: req.GenderType,
|
||||
IdentityType: req.IdentityType,
|
||||
IdentityNumber: req.IdentityNumber,
|
||||
DateOfBirth: req.DateOfBirth,
|
||||
LastEducation: req.LastEducation,
|
||||
UserRoleId: req.UserRoleId,
|
||||
StatusId: req.StatusId,
|
||||
UserLevelsId: req.UserLevelsId,
|
||||
ProfilePicturePath: req.ProfilePicturePath,
|
||||
UpdatedAt: time.Now(),
|
||||
Username: req.Username,
|
||||
Email: req.Email,
|
||||
Fullname: req.Fullname,
|
||||
Address: req.Address,
|
||||
PhoneNumber: req.PhoneNumber,
|
||||
WorkType: req.WorkType,
|
||||
GenderType: req.GenderType,
|
||||
IdentityType: req.IdentityType,
|
||||
IdentityNumber: req.IdentityNumber,
|
||||
DateOfBirth: req.DateOfBirth,
|
||||
LastEducation: req.LastEducation,
|
||||
UserRoleId: req.UserRoleId,
|
||||
StatusId: req.StatusId,
|
||||
UserLevelsId: req.UserLevelsId,
|
||||
UpdatedAt: time.Now(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
1211
docs/swagger/docs.go
1211
docs/swagger/docs.go
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,19 @@
|
|||
package response
|
||||
|
||||
type BadRequestError struct {
|
||||
Success bool `json:"success" example:"false"`
|
||||
Code int `json:"code" example:"400"`
|
||||
Message string `json:"message" example:"bad request"`
|
||||
}
|
||||
|
||||
type UnauthorizedError struct {
|
||||
Success bool `json:"success" example:"false"`
|
||||
Code int `json:"code" example:"401"`
|
||||
Message string `json:"message" example:"unauthorized access"`
|
||||
}
|
||||
|
||||
type InternalServerError struct {
|
||||
Success bool `json:"success" example:"false"`
|
||||
Code int `json:"code" example:"500"`
|
||||
Message string `json:"message" example:"internal server error"`
|
||||
}
|
||||
|
|
@ -25,8 +25,8 @@ func (e *Error) Error() string {
|
|||
|
||||
// A struct to return normal response
|
||||
type Response struct {
|
||||
Success bool `json:"success"`
|
||||
Code int `json:"code"`
|
||||
Success bool `json:"success" example:"true"`
|
||||
Code int `json:"code" example:"200"`
|
||||
Messages Messages `json:"messages"`
|
||||
Data any `json:"data,omitempty"`
|
||||
Meta any `json:"meta,omitempty"`
|
||||
|
|
@ -89,3 +89,14 @@ func removeTopStruct(fields map[string]string) map[string]string {
|
|||
|
||||
return res
|
||||
}
|
||||
|
||||
func Unauthorized() *Response {
|
||||
return &Response{
|
||||
Success: false,
|
||||
Code: 401,
|
||||
Data: nil,
|
||||
Messages: Messages{
|
||||
"Unauthorized",
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue