feat: update article approvals

This commit is contained in:
hanif salafi 2025-02-18 05:15:57 +07:00
parent c23339f454
commit 177e2082f4
5 changed files with 42 additions and 22 deletions

View File

@ -8,6 +8,6 @@ type ArticleApprovals struct {
ApprovalBy uint `json:"approval_by" gorm:"type:int4"` ApprovalBy uint `json:"approval_by" gorm:"type:int4"`
StatusId int `json:"status_id" gorm:"type:int4"` StatusId int `json:"status_id" gorm:"type:int4"`
Message string `json:"message" gorm:"type:varchar"` Message string `json:"message" gorm:"type:varchar"`
ApprovalAtLevel int `json:"approval_at_level" gorm:"type:int4"` ApprovalAtLevel *int `json:"approval_at_level" gorm:"type:int4"`
CreatedAt time.Time `json:"created_at" gorm:"default:now()"` CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
} }

View File

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

View File

@ -8,6 +8,6 @@ type ArticleApprovalsResponse struct {
ApprovalBy uint `json:"approvalBy"` ApprovalBy uint `json:"approvalBy"`
StatusId int `json:"statusId"` StatusId int `json:"statusId"`
Message string `json:"message"` Message string `json:"message"`
ApprovalAtLevel int `json:"approvalAtLevel"` ApprovalAtLevel *int `json:"approvalAtLevel"`
CreatedAt time.Time `json:"createdAt"` CreatedAt time.Time `json:"createdAt"`
} }

View File

@ -72,12 +72,12 @@ func (_i *articleApprovalsService) Save(req request.ArticleApprovalsCreateReques
createdBy := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, authToken) createdBy := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, authToken)
newReq.ApprovalBy = createdBy.ID newReq.ApprovalBy = createdBy.ID
newReq.ApprovalAtLevel = createdBy.UserLevel.LevelNumber newReq.ApprovalAtLevel = &createdBy.UserLevel.LevelNumber
approvalByUserLevelId := createdBy.UserLevelId approvalByUserLevelId := createdBy.UserLevelId
approvalParentLevelId := createdBy.UserLevel.ParentLevelId approvalParentLevelId := createdBy.UserLevel.ParentLevelId
err = _i.ArticlesService.UpdateApproval(newReq.ArticleId, newReq.StatusId, int(approvalByUserLevelId), newReq.ApprovalAtLevel, *approvalParentLevelId) err = _i.ArticlesService.UpdateApproval(newReq.ArticleId, newReq.StatusId, int(approvalByUserLevelId), *newReq.ApprovalAtLevel, *approvalParentLevelId)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -179,8 +179,15 @@ func (_i *articlesService) Save(req request.ArticlesCreateRequest, authToken str
// Approval // Approval
statusIdOne := 1 statusIdOne := 1
newReq.NeedApprovalFrom = &userParentLevelId statusIdTwo := 2
newReq.StatusId = &statusIdOne createdBy := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, authToken)
if createdBy != nil && *createdBy.UserLevel.IsApprovalActive == true {
newReq.NeedApprovalFrom = nil
newReq.StatusId = &statusIdTwo
} else {
newReq.NeedApprovalFrom = &userParentLevelId
newReq.StatusId = &statusIdOne
}
saveArticleRes, err := _i.Repo.Create(newReq) saveArticleRes, err := _i.Repo.Create(newReq)
if err != nil { if err != nil {
@ -188,12 +195,24 @@ func (_i *articlesService) Save(req request.ArticlesCreateRequest, authToken str
} }
// Approval // Approval
articleApproval := &entity.ArticleApprovals{ var articleApproval *entity.ArticleApprovals
ArticleId: saveArticleRes.ID,
ApprovalBy: *newReq.CreatedById, if createdBy != nil && *createdBy.UserLevel.IsApprovalActive == true {
StatusId: statusIdOne, articleApproval = &entity.ArticleApprovals{
Message: "Need Approval", ArticleId: saveArticleRes.ID,
ApprovalAtLevel: userLevelNumber, ApprovalBy: *newReq.CreatedById,
StatusId: statusIdOne,
Message: "Need Approval",
ApprovalAtLevel: &userLevelNumber,
}
} else {
articleApproval = &entity.ArticleApprovals{
ArticleId: saveArticleRes.ID,
ApprovalBy: *newReq.CreatedById,
StatusId: statusIdTwo,
Message: "Publish Otomatis",
ApprovalAtLevel: nil,
}
} }
_, err = _i.ArticleApprovalsRepo.Create(articleApproval) _, err = _i.ArticleApprovalsRepo.Create(articleApproval)