Open LucasramonDEV opened 1 week ago
Seu Agendamentoo :
global class ScheduleDeleteOldLeadsBatch implements Schedulable { private Id operadorId; // Construtor para passar o ID do operador global ScheduleDeleteOldLeadsBatch(Id operadorId) { this.operadorId = operadorId; } // Método execute: define o que será executado no horário agendado global void execute(SchedulableContext sc) { // Inicia a execução do batch com o operador passado DeleteOldLeadsBatch batch = new DeleteOldLeadsBatch(operadorId); Database.executeBatch(batch, 200); // Tamanho do lote: 200 registros por vez } }
global class DeleteOldLeadsBatch implements Database.Batchable, Database.AllowsCallouts {
private Id operadorId; // Variável para armazenar o ID do operador
// Construtor personalizado para receber o operadorId
public DeleteOldLeadsBatch(Id operadorId) {
this.operadorId = operadorId;
}
// Método start: define a consulta de registros
global Database.QueryLocator start(Database.BatchableContext bc) {
// Calcula a data exata de 3 dias atrás
Date threeDaysAgo = Date.today().addDays(-3);
// Consulta para encontrar Leads criados exatamente há 3 dias e atribuídos ao operador especificado
return Database.getQueryLocator([
SELECT Id FROM Lead WHERE CreatedDate = :threeDaysAgo AND OwnerId = :operadorId
]);
}
// Método execute: processa os registros em lotes
global void execute(Database.BatchableContext bc, List scope) {
// Deleta os Leads no lote atual
delete scope;
}
// Método finish: executado quando o batch é finalizado
global void finish(Database.BatchableContext bc) {
System.debug('Batch finalizado para o operador: ' + operadorId);
}
}