export async function POST(req: NextRequest) {
const { leadId, stage } = await req.json();
const { data } = await supabase
.from('client_contacts')
.update({ pipeline_stage: stage })
.eq('id', leadId).select().single();
await triggerWorkflow('stage_changed', data);
return NextResponse.json({ success: true });
}
const useLeadPipeline = (leadId: string) => {
return useQuery({
queryKey: ['pipeline', leadId],
queryFn: () => fetchPipelineData(leadId),
staleTime: 60_000,
});
};
export function StageCard({ stage }: Props) {
const { mutate } = useMutation({
mutationFn: updateStage,
onSuccess: () => invalidate(['pipeline']),
});
return <Card onClick={() => mutate(stage)} />;
}
export async function POST(req: NextRequest) {
const { leadId, stage } = await req.json();
const { data } = await supabase
.from('client_contacts')
.update({ pipeline_stage: stage })
.eq('id', leadId).select().single();
await triggerWorkflow('stage_changed', data);
return NextResponse.json({ success: true });
}
const useLeadPipeline = (leadId: string) => {
return useQuery({
queryKey: ['pipeline', leadId],
queryFn: () => fetchPipelineData(leadId),
staleTime: 60_000,
});
};
export function StageCard({ stage }: Props) {
const { mutate } = useMutation({
mutationFn: updateStage,
onSuccess: () => invalidate(['pipeline']),
});
return <Card onClick={() => mutate(stage)} />;
}
export async function POST(req: NextRequest) {
const { leadId, stage } = await req.json();
const { data } = await supabase
.from('client_contacts')
.update({ pipeline_stage: stage })
.eq('id', leadId).select().single();
await triggerWorkflow('stage_changed', data);
return NextResponse.json({ success: true });
}
const useLeadPipeline = (leadId: string) => {
return useQuery({
queryKey: ['pipeline', leadId],
queryFn: () => fetchPipelineData(leadId),
staleTime: 60_000,
});
};
export function StageCard({ stage }: Props) {
const { mutate } = useMutation({
mutationFn: updateStage,
onSuccess: () => invalidate(['pipeline']),
});
return <Card onClick={() => mutate(stage)} />;
}
export async function POST(req: NextRequest) {
const { leadId, stage } = await req.json();
const { data } = await supabase
.from('client_contacts')
.update({ pipeline_stage: stage })
.eq('id', leadId).select().single();
await triggerWorkflow('stage_changed', data);
return NextResponse.json({ success: true });
}
const useLeadPipeline = (leadId: string) => {
return useQuery({
queryKey: ['pipeline', leadId],
queryFn: () => fetchPipelineData(leadId),
staleTime: 60_000,
});
};
export function StageCard({ stage }: Props) {
const { mutate } = useMutation({
mutationFn: updateStage,
onSuccess: () => invalidate(['pipeline']),
});
return <Card onClick={() => mutate(stage)} />;
}
export async function POST(req: NextRequest) {
const { leadId, stage } = await req.json();
const { data } = await supabase
.from('client_contacts')
.update({ pipeline_stage: stage })
.eq('id', leadId).select().single();
await triggerWorkflow('stage_changed', data);
return NextResponse.json({ success: true });
}
const useLeadPipeline = (leadId: string) => {
return useQuery({
queryKey: ['pipeline', leadId],
queryFn: () => fetchPipelineData(leadId),
staleTime: 60_000,
});
};
export function StageCard({ stage }: Props) {
const { mutate } = useMutation({
mutationFn: updateStage,
onSuccess: () => invalidate(['pipeline']),
});
return <Card onClick={() => mutate(stage)} />;
}
export async function POST(req: NextRequest) {
const { leadId, stage } = await req.json();
const { data } = await supabase
.from('client_contacts')
.update({ pipeline_stage: stage })
.eq('id', leadId).select().single();
await triggerWorkflow('stage_changed', data);
return NextResponse.json({ success: true });
}
const useLeadPipeline = (leadId: string) => {
return useQuery({
queryKey: ['pipeline', leadId],
queryFn: () => fetchPipelineData(leadId),
staleTime: 60_000,
});
};
export function StageCard({ stage }: Props) {
const { mutate } = useMutation({
mutationFn: updateStage,
onSuccess: () => invalidate(['pipeline']),
});
return <Card onClick={() => mutate(stage)} />;
}
export async function POST(req: NextRequest) {
const { leadId, stage } = await req.json();
const { data } = await supabase
.from('client_contacts')
.update({ pipeline_stage: stage })
.eq('id', leadId).select().single();
await triggerWorkflow('stage_changed', data);
return NextResponse.json({ success: true });
}
const useLeadPipeline = (leadId: string) => {
return useQuery({
queryKey: ['pipeline', leadId],
queryFn: () => fetchPipelineData(leadId),
staleTime: 60_000,
});
};
export function StageCard({ stage }: Props) {
const { mutate } = useMutation({
mutationFn: updateStage,
onSuccess: () => invalidate(['pipeline']),
});
return <Card onClick={() => mutate(stage)} />;
}
export async function POST(req: NextRequest) {
const { leadId, stage } = await req.json();
const { data } = await supabase
.from('client_contacts')
.update({ pipeline_stage: stage })
.eq('id', leadId).select().single();
await triggerWorkflow('stage_changed', data);
return NextResponse.json({ success: true });
}
const useLeadPipeline = (leadId: string) => {
return useQuery({
queryKey: ['pipeline', leadId],
queryFn: () => fetchPipelineData(leadId),
staleTime: 60_000,
});
};
export function StageCard({ stage }: Props) {
const { mutate } = useMutation({
mutationFn: updateStage,
onSuccess: () => invalidate(['pipeline']),
});
return <Card onClick={() => mutate(stage)} />;
}
export async function POST(req: NextRequest) {
const { leadId, stage } = await req.json();
const { data } = await supabase
.from('client_contacts')
.update({ pipeline_stage: stage })
.eq('id', leadId).select().single();
await triggerWorkflow('stage_changed', data);
return NextResponse.json({ success: true });
}
const useLeadPipeline = (leadId: string) => {
return useQuery({
queryKey: ['pipeline', leadId],
queryFn: () => fetchPipelineData(leadId),
staleTime: 60_000,
});
};
export function StageCard({ stage }: Props) {
const { mutate } = useMutation({
mutationFn: updateStage,
onSuccess: () => invalidate(['pipeline']),
});
return <Card onClick={() => mutate(stage)} />;
}