each(function($cliente) { Config::set('database.default', $cliente); if(!Schema::hasTable('painel_senha_aviso')) { return; } $agora = Carbon::now(); $toleranciaInicio = $agora->copy()->subSeconds(30); $toleranciaFim = $agora->copy()->addSeconds(30); $agendamentos = DB::table('painel_senha_aviso_agendamento') ->whereDate('data_hora_agendada', $agora->toDateString()) ->whereBetween('data_hora_agendada', [$toleranciaInicio, $toleranciaFim]) ->whereNull('data_hora_executada') ->where('painel_senha_aviso.is_ativo', true) ->join('painel_senha_aviso', 'painel_senha_aviso.id', 'painel_senha_aviso_agendamento.aviso_id') ->get(); if($agendamentos->isEmpty()) { return; } $idsAgendamentos = $agendamentos->pluck("id"); $idsAvisos = $agendamentos->pluck("aviso_id"); AvisoAgendamento::whereIn('id', $idsAgendamentos) ->update(['data_hora_executada' => $agora]); $avisos = DB::table('painel_senha_aviso') ->select( 'painel_senha_aviso.id', 'painel_senha_aviso.mensagem', DB::raw('GROUP_CONCAT(cadastro_unidade.nome_fantasia) as unidades'), DB::raw('GROUP_CONCAT(cadastro_unidade.id) as ids_unidade'), 'painel_senha_aviso.is_ativo', ) ->join('painel_senha_aviso_unidade', 'painel_senha_aviso_unidade.aviso_id', 'painel_senha_aviso.id') ->leftJoin('cadastro_unidade', 'cadastro_unidade.id', 'painel_senha_aviso_unidade.unidade_id') ->groupBy('painel_senha_aviso.id', 'painel_senha_aviso.mensagem', 'painel_senha_aviso.is_ativo') ->whereIn('painel_senha_aviso.id', $idsAvisos) ->get(); $avisos->map(function($aviso) { AvisoEvent::dispatch($aviso->id, $aviso); }); }); Config::set('database.default', $currentDatabase); } catch (\Throwable $th) { Log::info("Não foi possível enviar aviso {$th}"); } } private function getClientes() { return collect(json_decode(file_get_contents(base_path('connections.json')), true)) ->filter(fn ($config) => isset($config['database']) && Str::startsWith($config['database'], 'conectasus')) ->reject(fn ($config) => empty(DB::connection('schema')->select("SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = ?", [$config['database']]))) ->map(fn ($config, $customer) => $customer) ->sort() ->values(); } }