2025-10-02 05:04:42 +00:00
|
|
|
"use client";
|
|
|
|
|
import { useEffect } from "react";
|
|
|
|
|
import { httpGetInterceptor } from "@/service/http-config/http-interceptor-service";
|
2025-10-02 06:41:49 +00:00
|
|
|
import { useWorkflowModal } from "@/components/modals/WorkflowModalProvider";
|
|
|
|
|
import { getInfoProfile } from "@/service/auth";
|
2025-10-02 05:04:42 +00:00
|
|
|
|
|
|
|
|
interface UserInfo {
|
|
|
|
|
id: number;
|
|
|
|
|
username: string;
|
|
|
|
|
email: string;
|
|
|
|
|
fullname: string;
|
|
|
|
|
address: string;
|
|
|
|
|
phoneNumber: string;
|
|
|
|
|
workType?: string;
|
|
|
|
|
genderType?: string;
|
|
|
|
|
identityType?: string;
|
|
|
|
|
identityNumber?: string;
|
|
|
|
|
dateOfBirth?: string;
|
|
|
|
|
lastEducation?: string;
|
|
|
|
|
keycloakId: string;
|
|
|
|
|
userRoleId: number;
|
|
|
|
|
userLevelId: number;
|
|
|
|
|
userLevelGroup: string;
|
|
|
|
|
statusId: number;
|
|
|
|
|
createdById?: number;
|
|
|
|
|
profilePicturePath?: string;
|
|
|
|
|
isActive: boolean;
|
|
|
|
|
createdAt: string;
|
|
|
|
|
updatedAt: string;
|
|
|
|
|
approvalWorkflowInfo: {
|
|
|
|
|
hasWorkflowSetup: boolean;
|
|
|
|
|
defaultWorkflowId?: number;
|
|
|
|
|
defaultWorkflowName?: string;
|
|
|
|
|
requiresApproval?: boolean;
|
|
|
|
|
autoPublishArticles?: boolean;
|
|
|
|
|
isApprovalActive?: boolean;
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
interface ApiResponse {
|
|
|
|
|
success: boolean;
|
|
|
|
|
code: number;
|
|
|
|
|
messages: string[];
|
|
|
|
|
data: UserInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function useWorkflowStatusCheck() {
|
|
|
|
|
const { showWorkflowModal } = useWorkflowModal();
|
|
|
|
|
|
|
|
|
|
const checkWorkflowStatus = async () => {
|
|
|
|
|
try {
|
2025-10-02 06:41:49 +00:00
|
|
|
const response = await getInfoProfile();
|
|
|
|
|
|
|
|
|
|
console.log("Response approvalWorkflowInfo: ", response);
|
2025-10-02 05:04:42 +00:00
|
|
|
|
2025-10-02 06:41:49 +00:00
|
|
|
if (response?.data?.data && response?.data?.data?.approvalWorkflowInfo) {
|
|
|
|
|
const workflowInfo = response.data.data.approvalWorkflowInfo;
|
2025-10-02 05:04:42 +00:00
|
|
|
|
|
|
|
|
// Show modal if workflow is not setup
|
|
|
|
|
if (!workflowInfo.hasWorkflowSetup) {
|
|
|
|
|
showWorkflowModal(workflowInfo);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error("Error checking workflow status:", error);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return { checkWorkflowStatus };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Hook untuk auto-check saat component mount
|
|
|
|
|
export function useAutoWorkflowCheck() {
|
|
|
|
|
const { checkWorkflowStatus } = useWorkflowStatusCheck();
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
// Check workflow status when component mounts
|
|
|
|
|
checkWorkflowStatus();
|
|
|
|
|
}, [checkWorkflowStatus]);
|
|
|
|
|
}
|