This commit is contained in:
phaichayon
2026-06-22 20:07:51 +07:00
parent ffa5de8311
commit 5c28080e9b
25 changed files with 1726 additions and 269 deletions

View File

@@ -0,0 +1,29 @@
import { NextResponse } from 'next/server';
import { resolveCrmAccess } from '@/features/crm/reports/server/context';
import { getCrmReportCatalogResponse } from '@/features/crm/reports/server/service';
import { PERMISSIONS } from '@/lib/auth/rbac';
import { AuthError, requireOrganizationAccess } from '@/lib/auth/session';
export async function GET() {
try {
const { organization, session, membership } = await requireOrganizationAccess({
permission: PERMISSIONS.crmReportRead
});
return NextResponse.json(
await getCrmReportCatalogResponse(
resolveCrmAccess({
organizationId: organization.id,
userId: session.user.id,
membership
})
)
);
} catch (error) {
if (error instanceof AuthError) {
return NextResponse.json({ message: error.message }, { status: error.status });
}
return NextResponse.json({ message: 'Unable to load CRM report catalog' }, { status: 500 });
}
}

View File

@@ -0,0 +1,29 @@
import { NextResponse } from 'next/server';
import { resolveCrmAccess } from '@/features/crm/reports/server/context';
import { getCrmReportFiltersResponse } from '@/features/crm/reports/server/service';
import { PERMISSIONS } from '@/lib/auth/rbac';
import { AuthError, requireOrganizationAccess } from '@/lib/auth/session';
export async function GET() {
try {
const { organization, session, membership } = await requireOrganizationAccess({
permission: PERMISSIONS.crmReportRead
});
return NextResponse.json(
await getCrmReportFiltersResponse(
resolveCrmAccess({
organizationId: organization.id,
userId: session.user.id,
membership
})
)
);
} catch (error) {
if (error instanceof AuthError) {
return NextResponse.json({ message: error.message }, { status: error.status });
}
return NextResponse.json({ message: 'Unable to load CRM report filters' }, { status: 500 });
}
}

View File

@@ -0,0 +1,29 @@
import { NextResponse } from 'next/server';
import { getCrmReportsResponse } from '@/features/crm/reports/server/service';
import { resolveCrmAccess } from '@/features/crm/reports/server/context';
import { PERMISSIONS } from '@/lib/auth/rbac';
import { AuthError, requireOrganizationAccess } from '@/lib/auth/session';
export async function GET() {
try {
const { organization, session, membership } = await requireOrganizationAccess({
permission: PERMISSIONS.crmReportRead
});
return NextResponse.json(
await getCrmReportsResponse(
resolveCrmAccess({
organizationId: organization.id,
userId: session.user.id,
membership
})
)
);
} catch (error) {
if (error instanceof AuthError) {
return NextResponse.json({ message: error.message }, { status: error.status });
}
return NextResponse.json({ message: 'Unable to load CRM reports' }, { status: 500 });
}
}