Добавлен новый модель SupplySupplier в схему Prisma и реализована логика для работы с поставщиками в компонентах создания поставок. Обновлены компоненты CreateSupplyPage и DirectSupplyCreation для интеграции новых функций, включая обработку поставщиков и расчет логистики. Оптимизирован интерфейс с использованием новых компонентов и улучшена логика отображения данных.

This commit is contained in:
Bivekich
2025-07-26 01:38:29 +03:00
parent 7d9b76a792
commit a211a6786f
7 changed files with 1115 additions and 522 deletions

View File

@ -379,6 +379,45 @@ export const resolvers = {
return counterparties.map((c) => c.counterparty);
},
// Поставщики поставок
supplySuppliers: async (_: unknown, __: unknown, context: Context) => {
if (!context.user) {
throw new GraphQLError("Требуется авторизация", {
extensions: { code: "UNAUTHENTICATED" },
});
}
const currentUser = await prisma.user.findUnique({
where: { id: context.user.id },
include: { organization: true },
});
if (!currentUser?.organization) {
throw new GraphQLError("У пользователя нет организации");
}
const suppliers = await prisma.supplySupplier.findMany({
where: { organizationId: currentUser.organization.id },
orderBy: { createdAt: 'desc' }
});
return suppliers;
},
// Логистика конкретной организации
organizationLogistics: async (_: unknown, args: { organizationId: string }, context: Context) => {
if (!context.user) {
throw new GraphQLError("Требуется авторизация", {
extensions: { code: "UNAUTHENTICATED" },
});
}
return await prisma.logistics.findMany({
where: { organizationId: args.organizationId },
orderBy: { createdAt: "desc" },
});
},
// Входящие заявки
incomingRequests: async (_: unknown, __: unknown, context: Context) => {
if (!context.user) {
@ -4534,6 +4573,76 @@ export const resolvers = {
};
}
},
// Создать поставщика для поставки
createSupplySupplier: async (
_: unknown,
args: {
input: {
name: string;
contactName: string;
phone: string;
market?: string;
address?: string;
place?: string;
telegram?: string;
};
},
context: Context
) => {
if (!context.user) {
throw new GraphQLError("Требуется авторизация", {
extensions: { code: "UNAUTHENTICATED" },
});
}
const currentUser = await prisma.user.findUnique({
where: { id: context.user.id },
include: { organization: true },
});
if (!currentUser?.organization) {
throw new GraphQLError("У пользователя нет организации");
}
try {
// Создаем поставщика в базе данных
const supplier = await prisma.supplySupplier.create({
data: {
name: args.input.name,
contactName: args.input.contactName,
phone: args.input.phone,
market: args.input.market,
address: args.input.address,
place: args.input.place,
telegram: args.input.telegram,
organizationId: currentUser.organization.id,
},
});
return {
success: true,
message: "Поставщик добавлен успешно!",
supplier: {
id: supplier.id,
name: supplier.name,
contactName: supplier.contactName,
phone: supplier.phone,
market: supplier.market,
address: supplier.address,
place: supplier.place,
telegram: supplier.telegram,
createdAt: supplier.createdAt,
},
};
} catch (error) {
console.error("Error creating supply supplier:", error);
return {
success: false,
message: "Ошибка при добавлении поставщика",
};
}
},
},
// Резолверы типов