2025-09-28 01:53:09 +00:00
|
|
|
package response
|
|
|
|
|
|
2025-10-02 05:28:10 +00:00
|
|
|
import "time"
|
2025-09-28 01:53:09 +00:00
|
|
|
|
2025-10-02 05:28:10 +00:00
|
|
|
// ApprovalWorkflowsResponse - Basic workflow response
|
2025-09-28 01:53:09 +00:00
|
|
|
type ApprovalWorkflowsResponse struct {
|
2025-10-02 05:28:10 +00:00
|
|
|
ID uint `json:"id"`
|
|
|
|
|
Name string `json:"name"`
|
|
|
|
|
Description *string `json:"description"`
|
|
|
|
|
IsActive bool `json:"isActive"`
|
|
|
|
|
CreatedBy uint `json:"createdBy"`
|
|
|
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
|
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
|
|
|
Steps []interface{} `json:"steps"`
|
2025-09-28 01:53:09 +00:00
|
|
|
}
|
|
|
|
|
|
2025-10-02 05:28:10 +00:00
|
|
|
// ApprovalWorkflowsWithStepsResponse - Workflow response with steps
|
2025-09-28 01:53:09 +00:00
|
|
|
type ApprovalWorkflowsWithStepsResponse struct {
|
2025-10-02 05:28:10 +00:00
|
|
|
ID uint `json:"id"`
|
|
|
|
|
Name string `json:"name"`
|
|
|
|
|
Description *string `json:"description"`
|
|
|
|
|
IsActive bool `json:"isActive"`
|
|
|
|
|
CreatedBy uint `json:"createdBy"`
|
|
|
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
|
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
|
|
|
Steps []interface{} `json:"steps"`
|
2025-09-28 01:53:09 +00:00
|
|
|
}
|
|
|
|
|
|
2025-10-02 05:28:10 +00:00
|
|
|
// ApprovalWorkflowsSummaryResponse - Summary workflow response
|
2025-09-28 01:53:09 +00:00
|
|
|
type ApprovalWorkflowsSummaryResponse struct {
|
|
|
|
|
ID uint `json:"id"`
|
|
|
|
|
Name string `json:"name"`
|
|
|
|
|
Description *string `json:"description"`
|
|
|
|
|
IsActive bool `json:"isActive"`
|
|
|
|
|
StepCount int `json:"stepCount"`
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-02 05:28:10 +00:00
|
|
|
// ComprehensiveWorkflowDetailResponse - Comprehensive response for workflow details
|
|
|
|
|
type ComprehensiveWorkflowDetailResponse struct {
|
|
|
|
|
Workflow WorkflowDetailInfo `json:"workflow"`
|
|
|
|
|
Steps []WorkflowStepDetailInfo `json:"steps"`
|
|
|
|
|
ClientSettings ClientApprovalSettingsDetail `json:"clientSettings"`
|
|
|
|
|
RelatedData RelatedDataInfo `json:"relatedData"`
|
|
|
|
|
Statistics WorkflowStatisticsInfo `json:"statistics"`
|
|
|
|
|
LastUpdated time.Time `json:"lastUpdated"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// WorkflowDetailInfo - Detailed workflow information
|
|
|
|
|
type WorkflowDetailInfo struct {
|
|
|
|
|
ID uint `json:"id"`
|
|
|
|
|
Name string `json:"name"`
|
|
|
|
|
Description *string `json:"description"`
|
|
|
|
|
IsDefault *bool `json:"isDefault"`
|
|
|
|
|
IsActive *bool `json:"isActive"`
|
|
|
|
|
RequiresApproval *bool `json:"requiresApproval"`
|
|
|
|
|
AutoPublish *bool `json:"autoPublish"`
|
|
|
|
|
ClientId *string `json:"clientId"`
|
|
|
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
|
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
|
|
|
|
|
|
|
|
// Additional workflow info
|
|
|
|
|
TotalSteps int `json:"totalSteps"`
|
|
|
|
|
ActiveSteps int `json:"activeSteps"`
|
|
|
|
|
HasBranches bool `json:"hasBranches"`
|
|
|
|
|
MaxStepOrder int `json:"maxStepOrder"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// WorkflowStepDetailInfo - Detailed step information
|
|
|
|
|
type WorkflowStepDetailInfo struct {
|
|
|
|
|
ID uint `json:"id"`
|
|
|
|
|
WorkflowId uint `json:"workflowId"`
|
|
|
|
|
StepOrder int `json:"stepOrder"`
|
|
|
|
|
StepName string `json:"stepName"`
|
|
|
|
|
RequiredUserLevelId uint `json:"requiredUserLevelId"`
|
|
|
|
|
RequiredUserLevelName string `json:"requiredUserLevelName"`
|
|
|
|
|
CanSkip *bool `json:"canSkip"`
|
|
|
|
|
AutoApproveAfterHours *int `json:"autoApproveAfterHours"`
|
|
|
|
|
IsActive *bool `json:"isActive"`
|
|
|
|
|
|
|
|
|
|
// Multi-branch support fields
|
|
|
|
|
ParentStepId *uint `json:"parentStepId"`
|
|
|
|
|
ParentStepName *string `json:"parentStepName"`
|
|
|
|
|
ConditionType *string `json:"conditionType"`
|
|
|
|
|
ConditionValue *string `json:"conditionValue"`
|
|
|
|
|
IsParallel *bool `json:"isParallel"`
|
|
|
|
|
BranchName *string `json:"branchName"`
|
|
|
|
|
BranchOrder *int `json:"branchOrder"`
|
|
|
|
|
|
|
|
|
|
// Additional step info
|
|
|
|
|
HasChildren bool `json:"hasChildren"`
|
|
|
|
|
IsFirstStep bool `json:"isFirstStep"`
|
|
|
|
|
IsLastStep bool `json:"isLastStep"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ClientApprovalSettingsDetail - Detailed client approval settings
|
|
|
|
|
type ClientApprovalSettingsDetail struct {
|
|
|
|
|
ID uint `json:"id"`
|
|
|
|
|
ClientId string `json:"clientId"`
|
|
|
|
|
RequiresApproval *bool `json:"requiresApproval"`
|
|
|
|
|
DefaultWorkflowId *uint `json:"defaultWorkflowId"`
|
|
|
|
|
DefaultWorkflowName *string `json:"defaultWorkflowName"`
|
|
|
|
|
AutoPublishArticles *bool `json:"autoPublishArticles"`
|
|
|
|
|
ApprovalExemptUsers []uint `json:"approvalExemptUsers"`
|
|
|
|
|
ApprovalExemptRoles []uint `json:"approvalExemptRoles"`
|
|
|
|
|
ApprovalExemptCategories []uint `json:"approvalExemptCategories"`
|
|
|
|
|
RequireApprovalFor []string `json:"requireApprovalFor"`
|
|
|
|
|
SkipApprovalFor []string `json:"skipApprovalFor"`
|
|
|
|
|
IsActive *bool `json:"isActive"`
|
|
|
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
|
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
|
|
|
|
|
|
|
|
// Additional client settings info
|
|
|
|
|
ExemptUsersDetails []UserDetailInfo `json:"exemptUsersDetails"`
|
|
|
|
|
ExemptRolesDetails []UserRoleDetailInfo `json:"exemptRolesDetails"`
|
|
|
|
|
ExemptCategoriesDetails []CategoryDetailInfo `json:"exemptCategoriesDetails"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// RelatedDataInfo - Related data information
|
|
|
|
|
type RelatedDataInfo struct {
|
|
|
|
|
UserLevels []UserLevelDetailInfo `json:"userLevels"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// WorkflowStatisticsInfo - Workflow statistics
|
|
|
|
|
type WorkflowStatisticsInfo struct {
|
|
|
|
|
TotalArticlesProcessed int `json:"totalArticlesProcessed"`
|
|
|
|
|
PendingArticles int `json:"pendingArticles"`
|
|
|
|
|
ApprovedArticles int `json:"approvedArticles"`
|
|
|
|
|
RejectedArticles int `json:"rejectedArticles"`
|
|
|
|
|
AverageProcessingTime int `json:"averageProcessingTime"` // in hours
|
|
|
|
|
MostActiveStep string `json:"mostActiveStep"`
|
|
|
|
|
LastUsedAt *string `json:"lastUsedAt"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// UserLevelDetailInfo - User level detail information
|
|
|
|
|
type UserLevelDetailInfo struct {
|
|
|
|
|
ID uint `json:"id"`
|
|
|
|
|
Name string `json:"name"`
|
|
|
|
|
AliasName string `json:"aliasName"`
|
|
|
|
|
LevelNumber int `json:"levelNumber"`
|
|
|
|
|
IsApprovalActive *bool `json:"isApprovalActive"`
|
|
|
|
|
IsActive *bool `json:"isActive"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// UserDetailInfo - User detail information
|
|
|
|
|
type UserDetailInfo struct {
|
|
|
|
|
ID uint `json:"id"`
|
|
|
|
|
Username string `json:"username"`
|
|
|
|
|
Fullname string `json:"fullname"`
|
|
|
|
|
Email string `json:"email"`
|
|
|
|
|
UserLevelId uint `json:"userLevelId"`
|
|
|
|
|
UserLevelName string `json:"userLevelName"`
|
|
|
|
|
IsActive *bool `json:"isActive"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// UserRoleDetailInfo - User role detail information
|
|
|
|
|
type UserRoleDetailInfo struct {
|
|
|
|
|
ID uint `json:"id"`
|
|
|
|
|
RoleName string `json:"roleName"`
|
|
|
|
|
IsActive *bool `json:"isActive"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// CategoryDetailInfo - Category detail information
|
|
|
|
|
type CategoryDetailInfo struct {
|
|
|
|
|
ID uint `json:"id"`
|
|
|
|
|
CategoryName string `json:"categoryName"`
|
|
|
|
|
IsActive *bool `json:"isActive"`
|
2025-09-30 13:34:56 +00:00
|
|
|
}
|