configuracion = Configuracione::orderby('id', 'desc')->first(); $monthYear = date('m-Y', strtotime('last month')); $month = $this->showLastMonth ? date('m', strtotime('last month')) : date('m'); $consulta_ventas = User::with(['historiales_venta' => function ($query) use ($month) { $query->whereMonth('fecha_inicio', $month)->where('estado', 'activo'); }]) ->withCount(['historiales_venta' => function ($query) use ($month) { $query->whereMonth('fecha_inicio', $month); }]) ->orderBy('historiales_venta_count', 'desc') ->limit(10) ->get(); $consultaPremioEntregado = PremioEntregado::where('fecha', $monthYear)->first(); return view('livewire.show-top', [ 'usuarios' => $consulta_ventas, 'consultaPremioEntregado' => $consultaPremioEntregado ]); } public function entregarPremio() { $monthYear = date('m-Y', strtotime('last month')); $month = date('m', strtotime('last month')); $rangos = ['primero', 'segundo', 'tercero', 'cuarto', 'quinto', 'sexto', 'séptimo', 'octavo', 'noveno', 'décimo']; $top_vendedores = User::with(['historiales_venta' => function ($query) use ($month) { $query->whereMonth('fecha_inicio', $month); }]) ->withCount(['historiales_venta' => function ($query) use ($month) { $query->whereMonth('fecha_inicio', $month); }])->orderBy('historiales_venta_count', 'desc')->take(10)->get(); foreach ($top_vendedores as $index => $vendedor) { $premio = $this->configuracion->{'premio_' . ($index + 1)}; $notificacion = new Notificacion(); $notificacion->remitente_id = Auth::user()->id; // $notificacion->destinatario_id = 410; $notificacion->destinatario_id = $vendedor->id; $notificacion->titulo = 'Felicidades ' . $vendedor->name ?? '' . ' 🎊'; $notificacion->descripcion = 'Quedaste ' . $rangos[$index] . ' en el #Top10MejoresDistribuidores del mes de ' . date('M', strtotime('last month')); $notificacion->estado = 1; $notificacion->todos = 0; $notificacion->premio = str_replace('.','',str_replace('$', '', $premio)); $notificacion->save(); } PremioEntregado::create([ 'user_id' => Auth::user()->id, 'fecha' => $monthYear, 'entregado' => 1 ]); $this->alert('success', 'Premios entregados correctamente', [ 'position' => 'top' ]); } }