feat: update user, user_role, user_level, article, article_categories, article_files, etc

This commit is contained in:
hanif salafi 2024-04-16 09:08:00 +07:00
parent 107aafecea
commit f62cf6d76a
39 changed files with 2370 additions and 2282 deletions

View File

@ -6,15 +6,15 @@ 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"`
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"`
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()"`
}

View File

@ -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()"`
}

View File

@ -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()"`
}

View File

@ -9,9 +9,9 @@ type PpidDatas struct {
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"`
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()"`
}

View File

@ -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()"`
}

View File

@ -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()"`
}

View File

@ -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()"`
}

View File

@ -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"},
})
}

View File

@ -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

View File

@ -3,6 +3,7 @@ package request
import (
"go-humas-be/app/database/entity"
"go-humas-be/utils/paginator"
"strconv"
"time"
)
@ -11,46 +12,29 @@ 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"`
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"`
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,
}
}
@ -58,17 +42,13 @@ 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"`
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 {
@ -76,16 +56,64 @@ func (req ArticleCategoriesUpdateRequest) ToEntity() *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,
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
}

View File

@ -6,15 +6,15 @@ 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"`
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"`
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"`
}

View File

@ -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)
}

View File

@ -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)

View File

@ -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

View File

@ -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"`
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"`
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"`
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
}

View File

@ -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) {

View File

@ -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)

View File

@ -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

View File

@ -16,6 +16,7 @@ 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"`
@ -28,14 +29,6 @@ type ArticlesCreateRequest struct {
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"`
}
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
}

View File

@ -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"},
})
}

View File

@ -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"`
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,9 +36,6 @@ func (req PpidDatasCreateRequest) ToEntity() *entity.PpidDatas {
CategoryId: req.CategoryId,
CreatedById: req.CreatedById,
StatusId: req.StatusId,
IsPublish: req.IsPublish,
PublishedAt: req.PublishedAt,
IsActive: req.IsActive,
}
}
@ -53,11 +46,8 @@ type PpidDatasUpdateRequest struct {
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"`
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
}

View File

@ -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)

View File

@ -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 {

View File

@ -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"},
})
}

View File

@ -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

View File

@ -3,6 +3,7 @@ package request
import (
"go-humas-be/app/database/entity"
"go-humas-be/utils/paginator"
"strconv"
"time"
)
@ -11,29 +12,21 @@ 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"`
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 {
@ -46,7 +39,6 @@ func (req UserRoleAccessesCreateRequest) ToEntity() *entity.UserRoleAccesses {
IsDeleteEnabled: req.IsDeleteEnabled,
IsApprovalEnabled: req.IsApprovalEnabled,
IsAdminEnabled: req.IsAdminEnabled,
IsActive: req.IsActive,
}
}
@ -60,9 +52,6 @@ type UserRoleAccessesUpdateRequest struct {
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"`
}
func (req UserRoleAccessesUpdateRequest) ToEntity() *entity.UserRoleAccesses {
@ -76,8 +65,31 @@ func (req UserRoleAccessesUpdateRequest) ToEntity() *entity.UserRoleAccesses {
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
}

View File

@ -12,7 +12,7 @@ type UserRoleAccessesResponse struct {
IsDeleteEnabled bool `json:"is_delete_enabled"`
IsApprovalEnabled bool `json:"is_approval_enabled"`
IsAdminEnabled bool `json:"is_admin_enabled"`
IsActive bool `json:"is_active"`
IsActive *bool `json:"is_active"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}

View File

@ -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)
}

View File

@ -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)

View File

@ -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,
}
}

View File

@ -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) {

View File

@ -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)

View File

@ -36,11 +36,6 @@ type UsersCreateRequest struct {
LastEducation string `json:"lastEducation" validate:"required"`
UserRoleId int `json:"userRoleId" validate:"required"`
UserLevelsId int `json:"userLevelsId" validate:"required"`
KeycloakId *string `json:"keycloakId"`
StatusId *int `json:"statusId"`
CreatedById *int `json:"createdById"`
ProfilePicturePath *string `json:"profilePicturePath"`
IsActive *bool `json:"isActive"`
}
func (req UsersCreateRequest) ToEntity() *entity.Users {
@ -56,13 +51,8 @@ func (req UsersCreateRequest) ToEntity() *entity.Users {
IdentityNumber: req.IdentityNumber,
DateOfBirth: req.DateOfBirth,
LastEducation: req.LastEducation,
KeycloakId: req.KeycloakId,
UserRoleId: req.UserRoleId,
StatusId: req.StatusId,
UserLevelsId: req.UserLevelsId,
CreatedById: req.CreatedById,
ProfilePicturePath: req.ProfilePicturePath,
IsActive: req.IsActive,
}
}
@ -80,7 +70,6 @@ type UsersUpdateRequest struct {
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"`
}
@ -100,7 +89,6 @@ func (req UsersUpdateRequest) ToEntity() *entity.Users {
UserRoleId: req.UserRoleId,
StatusId: req.StatusId,
UserLevelsId: req.UserLevelsId,
ProfilePicturePath: req.ProfilePicturePath,
UpdatedAt: time.Now(),
}
}

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

View File

@ -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"`
}

View File

@ -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",
},
}
}