Blame view

app/Models/Message.php 3.05 KB
02a1ed535   Андрей Ларионов   Первый коммит Rek...
1
2
3
4
5
6
  <?php
  
  namespace App\Models;
  
  use Illuminate\Database\Eloquent\Factories\HasFactory;
  use Illuminate\Database\Eloquent\Model;
712f07ca2   Сергей П   часть задачи по р...
7
8
  use Illuminate\Http\Request;
  use Illuminate\Support\Facades\Validator;
f98ccb92c   Сергей П   Массова рассылка
9
  use mysql_xdevapi\Collection;
02a1ed535   Андрей Ларионов   Первый коммит Rek...
10
11
12
13
  
  class Message extends Model
  {
      use HasFactory;
82a9544dc   Андрей Ларионов   Связи моделей, гр...
14

e688e0d8a   Андрей Ларионов   Статистика работн...
15
16
17
      protected $fillable = [
          'user_id',
          'to_user_id',
712f07ca2   Сергей П   часть задачи по р...
18
          'title',
e688e0d8a   Андрей Ларионов   Статистика работн...
19
20
          'text',
          'file',
f8a3cafe5   Андрей Ларионов   диалоговые пробле...
21
22
          'flag_new',
          'ad_employer_id',
f98ccb92c   Сергей П   Массова рассылка
23
24
25
26
          'job_title_id',
          'chat_id_from',
          'chat_id_to',
          'reply_message_id',
3d041f3f0   Сергей П   Изменения для соо...
27
          'original_file_name',
e688e0d8a   Андрей Ларионов   Статистика работн...
28
      ];
82a9544dc   Андрей Ларионов   Связи моделей, гр...
29
30
31
32
33
34
35
36
37
38
39
40
41
      /*
       * Связь таблицы Message с таблицей User (Отправитель)
      */
      public function user_from() {
          return $this->belongsTo(User::class, 'user_id');
      }
  
      /*
       * Связь таблицы Message с таблицей User (Получатель)
      */
      public function user_to() {
          return $this->belongsTo(User::class, 'to_user_id');
      }
e3c7b0ffb   Андрей Ларионов   Коммит на понедел...
42
43
      // Связь модели Сообщения (Message) с моделью Вакансии (Ad_employer)
      public function vacancies() {
6e2255214   Андрей Ларионов   Работа над сообще...
44
          return $this->belongsTo(Ad_employer::class, 'ad_employer_id', 'id');
e3c7b0ffb   Андрей Ларионов   Коммит на понедел...
45
      }
712f07ca2   Сергей П   часть задачи по р...
46
47
  
      public static function add_message(
f98ccb92c   Сергей П   Массова рассылка
48
          ?Request $request,
712f07ca2   Сергей П   часть задачи по р...
49
50
51
          int $user_id,
          int $to_user_id,
          array $message_params,
f98ccb92c   Сергей П   Массова рассылка
52
53
          string $file_store_path = '/',
          bool $is_admin_chat = false
712f07ca2   Сергей П   часть задачи по р...
54
55
56
      ) {
          $message_params['user_id'] = $user_id;
          $message_params['to_user_id'] = $to_user_id;
f98ccb92c   Сергей П   Массова рассылка
57
          if ($request && $request->has('file')) {
3d041f3f0   Сергей П   Изменения для соо...
58
59
60
              $file = $request->file('file');
              $message_params['file'] = $file->store($file_store_path, 'public');
              $message_params['original_file_name'] = $file->getClientOriginalName();
712f07ca2   Сергей П   часть задачи по р...
61
          }
f98ccb92c   Сергей П   Массова рассылка
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
          $chat_form = Chat::firstOrCreate([
              'user_id' => $is_admin_chat ? 0 : $user_id,
              'to_user_id' => $to_user_id,
              'is_removed' => 0,
              'is_admin_chat' => $is_admin_chat ? 1 : 0,
          ]);
          $message_params[$is_admin_chat ? 'chat_id_to' : 'chat_id_from'] = $chat_form->id;
  
          if (!$is_admin_chat) {
              $chat_to = Chat::firstOrCreate([
                  'user_id' => $to_user_id,
                  'to_user_id' => $user_id,
                  'is_removed' => 0
              ]);
              $message_params['chat_id_to'] = $chat_to->id;
          }
712f07ca2   Сергей П   часть задачи по р...
78
79
80
          $new_message = Message::create($message_params);
  
          if (!empty($new_message->id)) {
f98ccb92c   Сергей П   Массова рассылка
81
82
83
84
85
              $chat_form->update(['last_message_date' => date("Y-m-d H:i:s"), 'last_message_id' => $new_message->id]);
  
              if (!$is_admin_chat) {
                  $chat_to->update(['last_message_date' => date("Y-m-d H:i:s"), 'last_message_id' => $new_message->id]);
              }
712f07ca2   Сергей П   часть задачи по р...
86
          }
f98ccb92c   Сергей П   Массова рассылка
87
88
89
90
91
92
93
94
95
          return $new_message ?? false;
      }
  
      public function getReplyMessageAttribute()
      {
          $reply_message = false;
          if ($this->attributes['reply_message_id']){
              $reply_message = self::find($this->attributes['reply_message_id']);
          }
712f07ca2   Сергей П   часть задачи по р...
96

f98ccb92c   Сергей П   Массова рассылка
97
          return $reply_message;
712f07ca2   Сергей П   часть задачи по р...
98
      }
02a1ed535   Андрей Ларионов   Первый коммит Rek...
99
  }