Blame view
app/Models/Chat.php
1.99 KB
712f07ca2 часть задачи по р... |
1 2 3 4 5 6 |
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; |
2f592b01f сообщения |
7 |
use Carbon\Carbon; |
712f07ca2 часть задачи по р... |
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
class Chat extends Model { use HasFactory; protected $fillable = [ 'user_id', 'to_user_id', 'is_removed', 'is_fixed', 'last_message_date', 'last_message_id', 'fixed_time' ]; public function user() { return $this->belongsTo(User::class, 'to_user_id'); } public function worker() { return $this->belongsTo(Worker::class, 'to_user_id', 'user_id'); } public function employer() { return $this->belongsTo(Employer::class, 'to_user_id', 'user_id'); } public function last_message() { return $this->belongsTo(Message::class, 'last_message_id'); } |
a93910932 рефакторинг сообщ... |
38 39 40 41 |
public function unread_messages() { return $this->hasMany(Message::class, 'user_id', 'to_user_id'); } |
2f592b01f сообщения |
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
public static function pin_chat(int $chat_id, $fixed) { return self::where('id', '=', $chat_id) ->update([ 'is_fixed' => !empty($fixed) ? 1 : 0, 'fixation_date' => !empty($fixed) ? Carbon::now() : null ]); } public static function remove_chat(int $chat_id) { return self::where('id', '=', $chat_id) ->update(['is_removed' => 1]); } public static function get_user_chats(int $user_id){ return Chat::query() ->with('user') ->with('worker') ->with('employer') ->with('last_message') ->withCount(['unread_messages' => function ($query) use($user_id) { $query->where('to_user_id', '=', $user_id)->where('flag_new', '=', 1); }]) ->where('user_id', '=', $user_id) ->where('is_removed', '=', 0) ->orderByDesc('is_fixed') ->orderByDesc('fixation_date') ->orderByDesc('last_message_date') ->paginate(5) ; } |
712f07ca2 часть задачи по р... |
74 |
} |