fix: title case campaign product names
This commit is contained in:
@@ -1,9 +1,19 @@
|
||||
const formatProductNameForDisplay = (name) => {
|
||||
return String(name || '')
|
||||
.toLocaleLowerCase('pt-BR')
|
||||
.replace(/(^|[\s/-])(\p{L})/gu, (_, separator, letter) => {
|
||||
return `${separator}${letter.toLocaleUpperCase('pt-BR')}`;
|
||||
});
|
||||
};
|
||||
|
||||
const formatProductList = (productNames) => {
|
||||
if (productNames.length <= 2) {
|
||||
return productNames.join(' e ');
|
||||
const displayNames = productNames.map(formatProductNameForDisplay);
|
||||
|
||||
if (displayNames.length <= 2) {
|
||||
return displayNames.join(' e ');
|
||||
}
|
||||
|
||||
return `${productNames.slice(0, -1).join(', ')} e ${productNames[productNames.length - 1]}`;
|
||||
return `${displayNames.slice(0, -1).join(', ')} e ${displayNames[displayNames.length - 1]}`;
|
||||
};
|
||||
|
||||
const groupCampaignRowsByBaseProduct = (rows) => {
|
||||
@@ -23,7 +33,7 @@ const mapCampaignProducts = (groups) => {
|
||||
const sortedItems = [...items].sort((a, b) => String(a.nome).localeCompare(String(b.nome), 'pt-BR'));
|
||||
|
||||
return {
|
||||
baseProduct: baseProductName,
|
||||
baseProduct: formatProductNameForDisplay(baseProductName),
|
||||
total_delta: sortedItems.reduce((sum, item) => sum + Number(item.delta_estoque || 0), 0),
|
||||
sizes: sortedItems.map(item => ({
|
||||
id: item.produto_id,
|
||||
@@ -85,6 +95,7 @@ const groupCampaignRows = (rows) => {
|
||||
|
||||
module.exports = {
|
||||
buildWhatsappCampaignPayload,
|
||||
formatProductNameForDisplay,
|
||||
formatProductList,
|
||||
groupCampaignRows,
|
||||
groupCampaignRowsByBaseProduct,
|
||||
|
||||
Reference in New Issue
Block a user