whatsAppUtil = $whatsAppUtil; $this->emailUtil = $emailUtil; } public function handle() { $data = MensagemPadraoCrm::where('status', 1) ->where('tipo', 'reativacao')->get(); foreach($data as $item){ $config = ConfigGeral::where('empresa_id', $item->empresa_id)->first(); $nves = Nfe::where('empresa_id', $item->empresa_id) ->where('created_at', '<=', \Carbon\Carbon::now()->subDays($item->dias_ultima_venda)) ->pluck('cliente_id'); $nfces = Nfce::where('empresa_id', $item->empresa_id) ->where('created_at', '<=', \Carbon\Carbon::now()->subDays($item->dias_ultima_venda)) ->pluck('cliente_id'); $clientesIds = $nves->merge($nfces)->filter()->unique()->values(); foreach($clientesIds as $cid){ $cliente = Cliente::find($cid); if($cliente){ $texto = $this->__replaceText($item, $cliente); try{ if($item->enviar_email){ $this->__enviarEmail($cliente, $texto); } if($item->enviar_whatsapp){ $this->__enviarWhatsApp($cliente, $texto, $config); } FilaEnvioCron::create([ 'empresa_id' => $cliente->empresa_id, 'mensagem' => $texto, 'erro' => '', 'status' => 'enviado', 'enviar_whatsapp' => $item->enviar_whatsapp, 'enviar_email' => $item->enviar_email, 'whatsapp' => $cliente->telefone, 'cliente_id' => $cliente->id, 'tipo' => $item->tipo, 'email' => $cliente->email, 'agendar_para' => date('Y-m-d') ]); }catch(\Exception $e){ FilaEnvioCron::create([ 'empresa_id' => $cliente->empresa_id, 'mensagem' => $texto, 'erro' => $e->getMessage(), 'status' => 'erro', 'enviar_whatsapp' => $item->enviar_whatsapp, 'enviar_email' => $item->enviar_email, 'whatsapp' => $cliente->telefone, 'cliente_id' => $cliente->id, 'tipo' => $item->tipo, 'email' => $cliente->email, 'agendar_para' => date('Y-m-d') ]); } } } } } private function __replaceText($item, $cliente){ $texto = str_replace("[nome_cliente]", $cliente->razao_social, $item->mensagem); $texto = str_replace("[dias_inativo]", $item->dias_ultima_venda, $texto); return $texto; } private function __enviarEmail($cliente, $texto){ if(!$cliente->email){ return null; } $emailConfig = EmailConfig::where('empresa_id', $cliente->empresa_id) ->where('status', 1) ->first(); if($emailConfig != null){ $result = $this->emailUtil->enviaEmailPHPMailer($cliente->email, 'Feliz aniversário', $texto, $emailConfig); }else{ Mail::send('mail.envio_cron', ['texto' => $texto], function($m) use ($cliente){ $nomeEmail = env('MAIL_FROM_NAME'); $m->from(env('MAIL_USERNAME'), $nomeEmail); $m->subject('Feliz aniversário'); $m->to($cliente->email); }); } } private function __enviarWhatsApp($cliente, $texto, $config){ if(!$cliente->telefone){ return null; } $token = ''; if($config && strlen($config->token_whatsapp) > 10){ $token = $config->token_whatsapp; } if($token != ''){ $numero = preg_replace('/[^0-9]/', '', $cliente->telefone); $retorno = $this->whatsAppUtil->sendMessageWithToken('55'.$numero, $texto, $cliente->empresa_id, $token); } } }