configuracion = Configuracione::orderby('id', 'desc')->first(); $monthYear = date('m-Y', strtotime('last month')); $month = $this->showLastMonth ? date('m', strtotime('last month')) : date('m'); $currentYear = $this->showLastMonth && $month == 12 ? date('Y', strtotime('last year')) : date('Y'); $consulta_ventas = User::with(['historiales_venta' => function ($query) use ($month, $currentYear) { $query->whereMonth('fecha_inicio', $month) ->whereYear('fecha_inicio', $currentYear) ->where('estado', 'activo'); }]) ->withCount(['historiales_venta' => function ($query) use ($month, $currentYear) { $query->whereMonth('fecha_inicio', $month) ->whereYear('fecha_inicio', $currentYear) ->where('estado', 'activo'); }]) ->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() { $previousMonthDate = strtotime('first day of last month'); $month = date('m', $previousMonthDate); $year = date('Y', $previousMonthDate); $rangos = ['primero', 'segundo', 'tercero', 'cuarto', 'quinto', 'sexto', 'séptimo', 'octavo', 'noveno', 'décimo']; $top_vendedores = User::with(['historiales_venta' => function ($query) use ($month, $year) { $query->whereMonth('fecha_inicio', $month) ->whereYear('fecha_inicio', $year) ->where('estado', 'activo'); }]) ->withCount(['historiales_venta' => function ($query) use ($month, $year) { $query->whereMonth('fecha_inicio', $month) ->whereYear('fecha_inicio', $year) ->where('estado', 'activo'); }]) ->orderBy('historiales_venta_count', 'desc') ->limit(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(); Log_general::create([ 'user_id' => Auth::user()->id, 'detalle' => 'El usuario ' . Auth::user()->name . ' ha entregado el premio ' . $premio . ' para el usuario: ' . $vendedor->name . ' - ' . $vendedor->email, 'tipo' => 'premio', 'historial_id' => null ]); } PremioEntregado::create([ 'user_id' => Auth::user()->id, 'fecha' => $month . '-' . $year, 'entregado' => 1 ]); $this->alert('success', 'Premios entregados correctamente', [ 'position' => 'top' ]); } }