Initial commit
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
import { NextRequest, NextResponse } from 'next/server';
|
||||
import { getCallTasks, createCallTask, getUser } from '@/lib/firestore';
|
||||
import { Timestamp } from 'firebase/firestore';
|
||||
|
||||
export async function GET(request: NextRequest) {
|
||||
try {
|
||||
// TODO: Get userId from auth token
|
||||
const userId = 'test-user-id'; // Replace with actual auth
|
||||
const tasks = await getCallTasks(userId);
|
||||
return NextResponse.json({ tasks });
|
||||
} catch (error) {
|
||||
console.error('Error fetching call tasks:', error);
|
||||
return NextResponse.json({ error: 'Failed to fetch tasks' }, { status: 500 });
|
||||
}
|
||||
}
|
||||
|
||||
export async function POST(request: NextRequest) {
|
||||
try {
|
||||
const body = await request.json();
|
||||
const userId = 'test-user-id'; // TODO: Get from auth token
|
||||
|
||||
const {
|
||||
businessName,
|
||||
phoneNumber,
|
||||
preferredLanguage,
|
||||
callGoals,
|
||||
scheduledAt,
|
||||
timezone,
|
||||
maxMinutes,
|
||||
allowRecalls,
|
||||
maxRecalls,
|
||||
} = body;
|
||||
|
||||
if (!businessName || !phoneNumber || !callGoals || !scheduledAt || !maxMinutes) {
|
||||
return NextResponse.json(
|
||||
{ error: 'Missing required fields' },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
// Validate user has enough credits
|
||||
const user = await getUser(userId);
|
||||
if (!user || user.creditBalance < maxMinutes) {
|
||||
return NextResponse.json(
|
||||
{ error: 'Insufficient credits' },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
const taskId = await createCallTask({
|
||||
userId,
|
||||
businessName,
|
||||
phoneNumber,
|
||||
preferredLanguage: preferredLanguage || 'English',
|
||||
callGoals,
|
||||
scheduledAt: Timestamp.fromDate(new Date(scheduledAt)),
|
||||
timezone: timezone || undefined,
|
||||
maxMinutes,
|
||||
maxCredits: maxMinutes, // 1:1 for v1
|
||||
allowRecalls: allowRecalls || false,
|
||||
maxRecalls: maxRecalls || 0,
|
||||
recallsUsed: 0,
|
||||
status: 'pending',
|
||||
createdAt: Timestamp.now(),
|
||||
updatedAt: Timestamp.now(),
|
||||
});
|
||||
|
||||
return NextResponse.json({ taskId });
|
||||
} catch (error) {
|
||||
console.error('Error creating call task:', error);
|
||||
return NextResponse.json({ error: 'Failed to create task' }, { status: 500 });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user