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');