Files

110 lines
7.6 KiB
JavaScript

const fs = require('fs');
const path = require('path');
const dir = 'c:/Users/Lenovo/Desktop/product_catalogue/productcatalogue_frontend/src/services/toast/messages';
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
function toPascal(str) {
return str.split('-').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('');
}
function toTitle(str) {
return str.split('-').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');
}
const entities = [
'product', 'category', 'family', 'variant', 'attribute', 'attribute-group',
'brand', 'unit', 'channel', 'channel-type', 'asset', 'asset-family',
'workflow', 'role', 'permission', 'tenant', 'integration', 'report',
'settings', 'theme', 'auth', 'user', 'system'
];
entities.forEach(entity => {
const isSystem = ['system', 'auth', 'settings', 'theme', 'workflow'].includes(entity);
const PascalName = toPascal(entity);
const TitleName = toTitle(entity);
let content = `import { createSuccess, createError, createWarning, createInfo } from '../toast.factory';\n\n`;
content += `export const ${PascalName}Messages = {\n`;
if (entity === 'system') {
content += ` networkError: () => createError("Network Error", "Unable to connect to the server. Please check your internet connection."),
validationError: (msg?: string) => createError("Validation Failed", msg || "Please check the form for errors."),
duplicateRecord: () => createError("Duplicate Record", "A record with this information already exists."),
permissionDenied: () => createError("Permission Denied", "You do not have permission to perform this action."),
unauthorized: () => createError("Unauthorized", "Please log in to continue."),
conflict: () => createError("Conflict", "The resource has been modified by another user."),
notFound: () => createError("Not Found", "The requested resource could not be found."),
timeout: () => createError("Timeout", "The request took too long to complete."),
internalServerError: () => createError("Server Error", "An unexpected error occurred. Please try again later."),
unknownError: (msg?: string) => createError("Unknown Error", msg || "An unexpected error occurred."),\n`;
} else if (entity === 'auth') {
content += ` login: () => createSuccess("Logged In", "You have been logged in successfully."),
logout: () => createSuccess("Logged Out", "You have been logged out successfully."),
sessionExpired: () => createWarning("Session Expired", "Your session has expired. Please log in again."),\n`;
} else if (entity === 'settings') {
content += ` saved: () => createSuccess("Settings Saved", "Application settings have been saved successfully."),
reset: () => createSuccess("Settings Reset", "Application settings have been restored to defaults."),\n`;
} else if (entity === 'theme') {
content += ` applied: () => createSuccess("Theme Applied", "The selected theme has been applied."),
reset: () => createSuccess("Theme Reset", "The theme has been restored to default."),\n`;
} else if (entity === 'workflow') {
content += ` submitted: () => createSuccess("Workflow Submitted", "The record has been submitted for review."),
approved: () => createSuccess("Workflow Approved", "The record has been approved."),
rejected: () => createError("Workflow Rejected", "The submission has been returned for revision."),
returned: () => createWarning("Workflow Returned", "The workflow has been returned."),
published: () => createSuccess("Workflow Published", "The workflow has been published."),
unpublished: () => createSuccess("Workflow Unpublished", "The workflow has been unpublished."),\n`;
} else if (entity === 'asset') {
content += ` uploaded: () => createSuccess("Asset Uploaded", "The asset has been uploaded successfully."),
replaced: () => createSuccess("Asset Replaced", "The asset has been replaced successfully."),
linked: () => createSuccess("Asset Linked", "The asset has been linked successfully."),
unlinked: () => createSuccess("Asset Unlinked", "The asset has been unlinked successfully."),
archived: () => createSuccess("Asset Archived", "The asset has been archived."),
deleted: () => createSuccess("Asset Deleted", "The asset has been removed from the system."),\n`;
} else if (entity === 'role') {
content += ` created: () => createSuccess("Role Created", "The role has been added successfully."),
updated: () => createSuccess("Role Updated", "The role information has been updated successfully."),
permissionsChanged: () => createSuccess("Permissions Updated", "Role permissions have been updated."),
deleted: () => createSuccess("Role Deleted", "The role has been removed from the system."),\n`;
} else if (entity === 'user') {
content += ` created: () => createSuccess("User Created", "The user has been added to the system."),
updated: () => createSuccess("User Updated", "The user information has been updated successfully."),
disabled: () => createWarning("User Disabled", "The user has been disabled."),
enabled: () => createSuccess("User Enabled", "The user has been enabled."),
passwordReset: () => createSuccess("Password Reset", "The user's password has been reset."),
deleted: () => createSuccess("User Deleted", "The user has been removed from the system."),\n`;
} else if (entity === 'category') {
content += ` created: () => createSuccess("Category Created", "The category has been added to the catalogue."),
updated: () => createSuccess("Category Updated", "The category information has been updated successfully."),
deleted: () => createSuccess("Category Deleted", "The category has been removed from the system."),
moved: () => createSuccess("Category Moved", "The category has been moved successfully."),
merged: () => createSuccess("Category Merged", "The categories have been merged successfully."),
split: () => createSuccess("Category Split", "The category has been split successfully."),\n`;
} else {
// Standard CRUD
content += ` created: () => createSuccess("${TitleName} Created", "The ${TitleName.toLowerCase()} has been added to the catalogue."),
updated: () => createSuccess("${TitleName} Updated", "The ${TitleName.toLowerCase()} information has been updated successfully."),
deleted: () => createSuccess("${TitleName} Deleted", "The ${TitleName.toLowerCase()} has been removed from the system."),
archived: () => createSuccess("${TitleName} Archived", "The ${TitleName.toLowerCase()} has been archived."),
restored: () => createSuccess("${TitleName} Restored", "The ${TitleName.toLowerCase()} has been restored."),
published: () => createSuccess("${TitleName} Published", "The ${TitleName.toLowerCase()} has been published."),
unpublished: () => createSuccess("${TitleName} Unpublished", "The ${TitleName.toLowerCase()} has been unpublished."),
cloned: () => createSuccess("${TitleName} Cloned", "The ${TitleName.toLowerCase()} has been cloned successfully."),
imported: () => createSuccess("${TitleName} Imported", "The ${TitleName.toLowerCase()}s have been imported successfully."),
exported: () => createSuccess("${TitleName} Exported", "The ${TitleName.toLowerCase()}s have been exported successfully."),\n`;
if (entity === 'product') {
content += ` variantGenerated: () => createSuccess("Variant Generated", "The product variants have been generated successfully."),\n`;
}
}
content += `};\n`;
fs.writeFileSync(path.join(dir, `${entity}.messages.ts`), content);
});
// Create index.ts
let indexContent = entities.map(entity => `export * from './${entity}.messages';`).join('\n');
fs.writeFileSync(path.join(dir, 'index.ts'), indexContent + '\n');
console.log('Done generating messages');