LucasramonDEV / ApexCodes

Meus Códigos em Apex(salesforce)
0 stars 0 forks source link

Batch para apagar Leads Antigos #1

Open LucasramonDEV opened 1 week ago

LucasramonDEV commented 1 week ago

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); } }

LucasramonDEV commented 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 } }