feat: complete admin suite (users, products, dynamic warehouses)
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
import prisma from '@/lib/prisma';
|
||||
import { NextResponse } from 'next/server';
|
||||
|
||||
export async function GET() {
|
||||
try {
|
||||
const users = await prisma.user.findMany({
|
||||
select: {
|
||||
id: true,
|
||||
name: true,
|
||||
username: true,
|
||||
mobile: true,
|
||||
roles: true,
|
||||
role: true,
|
||||
createdAt: true,
|
||||
_count: {
|
||||
select: { countings: true }
|
||||
}
|
||||
},
|
||||
orderBy: { createdAt: 'desc' }
|
||||
});
|
||||
|
||||
// Parse roles
|
||||
const parsedUsers = users.map(user => {
|
||||
let parsedRoles = user.roles;
|
||||
if (typeof parsedRoles === 'string') {
|
||||
try { parsedRoles = JSON.parse(parsedRoles); } catch (e) { parsedRoles = null; }
|
||||
}
|
||||
return {
|
||||
...user,
|
||||
roles: Array.isArray(parsedRoles) ? parsedRoles : (user.role === 'ADMIN' ? ['ADMIN'] : ['COUNTER'])
|
||||
};
|
||||
});
|
||||
|
||||
return NextResponse.json(parsedUsers);
|
||||
} catch (error) {
|
||||
console.error('Fetch users error:', error);
|
||||
return NextResponse.json({ error: 'خطا در دریافت کاربران' }, { status: 500 });
|
||||
}
|
||||
}
|
||||
|
||||
export async function PUT(req) {
|
||||
try {
|
||||
const { id, roles } = await req.json();
|
||||
|
||||
if (!id || !roles) {
|
||||
return NextResponse.json({ error: 'اطلاعات ناقص است' }, { status: 400 });
|
||||
}
|
||||
|
||||
const updated = await prisma.user.update({
|
||||
where: { id: parseInt(id) },
|
||||
data: { roles: JSON.stringify(roles) },
|
||||
select: { id: true, roles: true }
|
||||
});
|
||||
|
||||
return NextResponse.json({ message: 'نقشهای کاربر بروزرسانی شد', user: updated });
|
||||
} catch (error) {
|
||||
console.error('Update user error:', error);
|
||||
return NextResponse.json({ error: 'خطا در بروزرسانی کاربر' }, { status: 500 });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user