Добавлен новый модель SupplySupplier в схему Prisma и реализована логика для работы с поставщиками в компонентах создания поставок. Обновлены компоненты CreateSupplyPage и DirectSupplyCreation для интеграции новых функций, включая обработку поставщиков и расчет логистики. Оптимизирован интерфейс с использованием новых компонентов и улучшена логика отображения данных.
This commit is contained in:
@ -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: "Ошибка при добавлении поставщика",
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// Резолверы типов
|
||||
|
Reference in New Issue
Block a user