/**
 * Helper function to generate dynamic success messages
 * Usage: getSuccessMessage("salary setting", "created") => "Salary setting created successfully"
 */

export const getSuccessMessage = (
  entityName: string,
  action: "created" | "updated" | "deleted" | "fetched"
): string => {
  const capitalizedEntity = entityName.charAt(0).toUpperCase() + entityName.slice(1);
  return `${capitalizedEntity} ${action} successfully`;
};

/**
 * Helper function to generate dynamic error messages
 * Usage: getErrorMessage("salary setting", "create") => "Failed to create salary setting"
 */
export const getErrorMessage = (
  entityName: string,
  action: "create" | "update" | "delete" | "fetch"
): string => {
  return `Failed to ${action} ${entityName}`;
};

/**
 * Convenience functions for common entities
 */
export const salarySettingMessages = {
  created: () => getSuccessMessage("salary setting", "created"),
  updated: () => getSuccessMessage("salary setting", "updated"),
  deleted: () => getSuccessMessage("salary setting", "deleted"),
  fetched: () => getSuccessMessage("salary setting", "fetched"),
  createError: () => getErrorMessage("salary setting", "create"),
  updateError: () => getErrorMessage("salary setting", "update"),
  deleteError: () => getErrorMessage("salary setting", "delete"),
  fetchError: () => getErrorMessage("salary setting", "fetch"),
};

export const activityTypeMessages = {
  created: () => getSuccessMessage("activity type", "created"),
  updated: () => getSuccessMessage("activity type", "updated"),
  deleted: () => getSuccessMessage("activity type", "deleted"),
  fetched: () => getSuccessMessage("activity type", "fetched"),
  createError: () => getErrorMessage("activity type", "create"),
  updateError: () => getErrorMessage("activity type", "update"),
  deleteError: () => getErrorMessage("activity type", "delete"),
  fetchError: () => getErrorMessage("activity type", "fetch"),
};

/**
 * Generic message generator for any entity
 * Usage: 
 * const messages = createEntityMessages("user");
 * messages.created() => "User created successfully"
 */
export const createEntityMessages = (entityName: string) => ({
  created: () => getSuccessMessage(entityName, "created"),
  updated: () => getSuccessMessage(entityName, "updated"),
  deleted: () => getSuccessMessage(entityName, "deleted"),
  fetched: () => getSuccessMessage(entityName, "fetched"),
  createError: () => getErrorMessage(entityName, "create"),
  updateError: () => getErrorMessage(entityName, "update"),
  deleteError: () => getErrorMessage(entityName, "delete"),
  fetchError: () => getErrorMessage(entityName, "fetch"),
});
