Produto: | Empodera |
---|---|
Linha de Produto: | Experiência do Cliente |
Segmento: | CX |
Módulo: | Sugestões |
Função: | /server/application/opportunity/getGrupedByname.js |
País: | Brasil |
Ticket: | 14573672 |
Requisito/Story/Issue (informe o requisito relacionado) : | CETEI- 5817 |
No Empodera foi visto que na tela de sugestões está apresentado clientes negativos na coluna e nisso solicitou-se o ajuste para contemplar só os clientes ativos.
Analisado e realizado os ajustes necessários na quantidade que mostra na primeira tela e tbm ao clicar em cada uma oferta para ver a lista dos clientes. Abaixo os arquivos alterados e o que foi ajustado:
getGrupedByname.js:
'customer.active': true, => adicionado no match do filtro.
return await Opportunity.aggregate(query);
getGrupedByname.js retirado:
const listCountGroupedBySlug = require('../opportunityFeedback/listCountGroupedBySlug');
let opportunities = await Opportunity.aggregate(query);
const foundFeedbacks = await listCountGroupedBySlug({adherent: false});
const feedbacskUser = foundFeedbacks.reduce((acc, feedbackUser) =>
{ acc.set(feedbackUser._id, feedbackUser.total); return acc; }
, new Map());
opportunities = opportunities.map((opportunity) =>
{ const totalNegativeFeedback = feedbacskUser.get(opportunity.slug); opportunity.count -= totalNegativeFeedback || 0; if (opportunity.count < 0) opportunity.count = 0; return opportunity; }
);
getCustomersByOpportunity.js, retirado:
{
$match:
{ 'feedback.adherent':
{$ne: false}
,
},
},
{
$group:
{ _id: '$customer._id', codT:
{$first: '$customer.codT'}
,
name: {$first: '$customer.name'},
segment: {$first: '$customer.contract.segment'},
avgticketprice: {$first: '$recommendations.avgticketprice'},
mrr: {$first: '$customer.financial.recurrent.contracted'},
healthscore: {$first: '$customer.healthscore.empodera.result'},
ranking: {$first: '$recommendations.ranking'},
slug: {$first: '$recommendations.slug'},
feedback: {$first: '$feedback'},
},
},
getCustomersByOpportunity.js, adicionado:
'customer.active': true,
getCountCustomersByOpportunity.js retirado:
const getCountFeedback = require('../opportunityFeedback/getCountFeedback');
{
$match: {
recommendations: {
$elemMatch:
{ slug, ...(type ?
{type}
: {}),
},
},
const countFeedbackNagative = await getCountFeedback(
{ adherent: false, slug, }
);
- countFeedbackNagative;
getCountCustomersByOpportunity.js adicionado:
{$unwind: '$recommendations'},
{
$match:
{ 'recommendations.slug': slug, ...(type ?
{'recommendations.type': type}
: {}),
},
},
{
$lookup: {
from: 'opportunityFeedbacks',
let:
{ slug: '$recommendations.slug', codT: '$codT', }
,
pipeline: [
{
$match: {
$expr: {
$and: [
{ $eq: ['$opportunity.slug', '$$slug'], }
,
{ $eq: ['$codT', '$$codT'], }
,
],
},
},
},
],
as: 'feedback',
},
},
'customer.active': true,