mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 21:41:55 +00:00
100 lines
2.4 KiB
Go
100 lines
2.4 KiB
Go
package repository
|
|
|
|
import (
|
|
"sort"
|
|
"strconv"
|
|
|
|
"gitlab.com/mbugroup/lti-api.git/internal/common/repository"
|
|
entity "gitlab.com/mbugroup/lti-api.git/internal/entities"
|
|
utils "gitlab.com/mbugroup/lti-api.git/internal/utils"
|
|
approvalutils "gitlab.com/mbugroup/lti-api.git/internal/utils/approvals"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type ConstantRepository interface {
|
|
GetConstants() map[string]interface{}
|
|
}
|
|
|
|
type ConstantRepositoryImpl struct {
|
|
*repository.BaseRepositoryImpl[entity.Constant]
|
|
}
|
|
|
|
func NewConstantRepository(db *gorm.DB) ConstantRepository {
|
|
return &ConstantRepositoryImpl{
|
|
BaseRepositoryImpl: repository.NewBaseRepository[entity.Constant](db),
|
|
}
|
|
}
|
|
|
|
func (r *ConstantRepositoryImpl) GetConstants() map[string]interface{} {
|
|
flagList := make([]string, 0)
|
|
for f := range utils.AllFlagTypes() {
|
|
flagList = append(flagList, string(f))
|
|
}
|
|
sort.Strings(flagList)
|
|
|
|
type approvalStepConstant struct {
|
|
StepNumber uint16 `json:"step_number"`
|
|
StepName string `json:"step_name"`
|
|
}
|
|
|
|
workflowConstants := approvalutils.WorkflowConstants()
|
|
workflowKeys := make([]string, 0, len(workflowConstants))
|
|
for key := range workflowConstants {
|
|
workflowKeys = append(workflowKeys, key)
|
|
}
|
|
sort.Strings(workflowKeys)
|
|
|
|
approvalWorkflows := make([]map[string]interface{}, 0, len(workflowKeys))
|
|
for _, key := range workflowKeys {
|
|
stepMap := workflowConstants[key]
|
|
if len(stepMap) == 0 {
|
|
continue
|
|
}
|
|
|
|
stepList := make([]approvalStepConstant, 0, len(stepMap))
|
|
for stepStr, label := range stepMap {
|
|
stepNum, err := strconv.ParseUint(stepStr, 10, 16)
|
|
if err != nil || stepNum == 0 {
|
|
continue
|
|
}
|
|
stepList = append(stepList, approvalStepConstant{
|
|
StepNumber: uint16(stepNum),
|
|
StepName: label,
|
|
})
|
|
}
|
|
if len(stepList) == 0 {
|
|
continue
|
|
}
|
|
sort.Slice(stepList, func(i, j int) bool {
|
|
return stepList[i].StepNumber < stepList[j].StepNumber
|
|
})
|
|
|
|
approvalWorkflows = append(approvalWorkflows, map[string]interface{}{
|
|
"key": key,
|
|
"steps": stepList,
|
|
})
|
|
}
|
|
|
|
return map[string]interface{}{
|
|
"flags": flagList,
|
|
"warehouse_types": []string{
|
|
"AREA",
|
|
"LOKASI",
|
|
"KANDANG",
|
|
},
|
|
"stock_log": map[string][]string{
|
|
"log_types": []string{"TRANSFER", "ADJUSTMENT"},
|
|
"transaction_types": []string{"INCREASE", "DECREASE"},
|
|
},
|
|
"supplier_categories": []string{
|
|
"BOP",
|
|
"SAPRONAK",
|
|
},
|
|
"customer_supplier_types": []string{
|
|
"BISNIS",
|
|
"INDIVIDUAL",
|
|
},
|
|
"approval_workflows": approvalWorkflows,
|
|
}
|
|
}
|