Configuracion para guardar en base de datos
This commit is contained in:
@@ -116,8 +116,11 @@ export class LeadsService {
|
||||
}
|
||||
|
||||
async updateEstado(lead: Lead, estado: EstadoLead | string): Promise<Lead> {
|
||||
lead.estado_actual = estado as EstadoLead;
|
||||
return this.leadRepo.save(lead);
|
||||
await this.leadRepo.update(lead.id, {
|
||||
estado_actual: estado as EstadoLead,
|
||||
});
|
||||
this.logger.log(`Lead id=${lead.id} estado_actual=${estado}`);
|
||||
return this.leadRepo.findOne({ where: { id: lead.id } });
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -125,14 +128,62 @@ export class LeadsService {
|
||||
* Solo actualiza los campos que se pasan en el partial.
|
||||
*/
|
||||
async updateDatos(leadId: number, datos: Partial<Lead>): Promise<Lead> {
|
||||
const campos = Object.keys(datos).filter(
|
||||
(k) => datos[k as keyof Lead] !== undefined,
|
||||
);
|
||||
if (campos.length === 0) {
|
||||
return this.leadRepo.findOne({ where: { id: leadId } });
|
||||
}
|
||||
|
||||
await this.leadRepo.update(leadId, datos);
|
||||
this.logger.log(
|
||||
`Lead id=${leadId} datos guardados: ${JSON.stringify(datos)}`,
|
||||
);
|
||||
return this.leadRepo.findOne({ where: { id: leadId } });
|
||||
}
|
||||
|
||||
async marcarViable(lead: Lead, viable: boolean): Promise<Lead> {
|
||||
lead.viable = viable;
|
||||
lead.estado_actual = viable ? 'completado' : 'no_viable';
|
||||
return this.leadRepo.save(lead);
|
||||
const estado = viable ? 'completado' : 'no_viable';
|
||||
await this.leadRepo.update(lead.id, { viable, estado_actual: estado });
|
||||
this.logger.log(`Lead id=${lead.id} viable=${viable}, estado=${estado}`);
|
||||
return this.leadRepo.findOne({ where: { id: lead.id } });
|
||||
}
|
||||
|
||||
/**
|
||||
* Persiste datos del lead y cambio de estado en una sola operacion.
|
||||
*/
|
||||
async persistirTurno(
|
||||
leadId: number,
|
||||
datos: Partial<Lead>,
|
||||
options?: { nuevoEstado?: string; viable?: boolean },
|
||||
): Promise<Lead> {
|
||||
const patch: Partial<Lead> = { ...datos };
|
||||
|
||||
if (options?.nuevoEstado === 'fin_viable') {
|
||||
patch.viable = true;
|
||||
patch.estado_actual = 'completado';
|
||||
} else if (options?.nuevoEstado === 'fin_no_viable') {
|
||||
patch.viable = false;
|
||||
patch.estado_actual = 'no_viable';
|
||||
} else if (options?.nuevoEstado) {
|
||||
patch.estado_actual = options.nuevoEstado as EstadoLead;
|
||||
} else if (options?.viable !== undefined && options?.viable !== null) {
|
||||
patch.viable = options.viable;
|
||||
patch.estado_actual = options.viable ? 'completado' : 'no_viable';
|
||||
}
|
||||
|
||||
const campos = Object.keys(patch).filter(
|
||||
(k) => patch[k as keyof Lead] !== undefined,
|
||||
);
|
||||
if (campos.length === 0) {
|
||||
return this.leadRepo.findOne({ where: { id: leadId } });
|
||||
}
|
||||
|
||||
await this.leadRepo.update(leadId, patch);
|
||||
this.logger.log(
|
||||
`Lead id=${leadId} persistido: ${JSON.stringify(patch)}`,
|
||||
);
|
||||
return this.leadRepo.findOne({ where: { id: leadId } });
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user