X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=app%2FModels%2FChannel.php;h=8af6a7d43e201e191651a4ab9b28fc7c11642ec5;hb=147c5f43c5d41fa18e82edb6651fe5a37c789353;hp=500f2e33e6f9fb3456694d7dc403159dd7205260;hpb=999e4fe15dbc31d2d2874381cc8b7c24fbded410;p=alttp.git diff --git a/app/Models/Channel.php b/app/Models/Channel.php index 500f2e3..8af6a7d 100644 --- a/app/Models/Channel.php +++ b/app/Models/Channel.php @@ -31,6 +31,41 @@ class Channel extends Model { ->first(); } + public function randomOfClass($class) { + return $this->queryChatlog() + ->where('classification', '=', $class) + ->first(); + } + + public function queryChatlog() { + return ChatLog::where('type', '=', 'chat') + ->where('banned', '=', false) + ->where('created_at', '<', now()->sub(1, 'day')) + ->where(function ($query) { + $query->whereNull('detected_language'); + $query->orWhereIn('detected_language', $this->getPreferredLanguages()); + }) + ->inRandomOrder(); + } + + public function getPreferredLanguages() { + $setting = $this->getChatSetting('language'); + if ($setting) { + return [$setting]; + } + if (!empty($this->languages)) { + return $this->languages; + } + return ['de']; + } + + public function getChatSetting($name, $default = null) { + if (array_key_exists($name, $this->chat_settings)) { + return $this->chat_settings[$name]; + } + return $default; + } + public function getGuessingLeaderboard() { $query = $this->winners() ->selectRaw('(select t2.uname from guessing_winners t2 where t2.uid = guessing_winners.uid order by created_at desc limit 1) as name, sum(score) as score') @@ -205,6 +240,10 @@ class Channel extends Model { return Arr::join($entries, ', ', ' and '); } + public function chat_bot_logs() { + return $this->hasMany(ChatBotLog::class); + } + public function crews() { return $this->hasMany(ChannelCrew::class); }