Blame view

app/Models/Message.php 2.16 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;
02a1ed535   Андрей Ларионов   Первый коммит Rek...
9
10
11
12
  
  class Message extends Model
  {
      use HasFactory;
82a9544dc   Андрей Ларионов   Связи моделей, гр...
13

e688e0d8a   Андрей Ларионов   Статистика работн...
14
15
16
      protected $fillable = [
          'user_id',
          'to_user_id',
712f07ca2   Сергей П   часть задачи по р...
17
          'title',
e688e0d8a   Андрей Ларионов   Статистика работн...
18
19
          'text',
          'file',
f8a3cafe5   Андрей Ларионов   диалоговые пробле...
20
21
22
          'flag_new',
          'ad_employer_id',
          'job_title_id'
e688e0d8a   Андрей Ларионов   Статистика работн...
23
      ];
82a9544dc   Андрей Ларионов   Связи моделей, гр...
24
25
26
27
28
29
30
31
32
33
34
35
36
      /*
       * Связь таблицы 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   Андрей Ларионов   Коммит на понедел...
37
38
      // Связь модели Сообщения (Message) с моделью Вакансии (Ad_employer)
      public function vacancies() {
6e2255214   Андрей Ларионов   Работа над сообще...
39
          return $this->belongsTo(Ad_employer::class, 'ad_employer_id', 'id');
e3c7b0ffb   Андрей Ларионов   Коммит на понедел...
40
      }
712f07ca2   Сергей П   часть задачи по р...
41
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
  
      public static function add_message(
          Request $request,
          int $user_id,
          int $to_user_id,
          array $message_params,
          string $file_store_path = '/'
      ) {
          $message_params['user_id'] = $user_id;
          $message_params['to_user_id'] = $to_user_id;
          if ($request->has('file')) {
              $message_params['file'] = $request->file('file')->store($file_store_path, 'public');
          }
  
          $new_message = Message::create($message_params);
  
          if (!empty($new_message->id)) {
              Chat::updateOrCreate(
                  ['user_id' => $user_id, 'to_user_id' => $to_user_id],
                  ['user_id' => $user_id, 'to_user_id' => $to_user_id, 'last_message_date' => date("Y-m-d H:i:s"), 'last_message_id' => $new_message->id]
              );
  
              Chat::updateOrCreate(
                  ['user_id' => $to_user_id, 'to_user_id' => $user_id],
                  ['user_id' => $to_user_id, 'to_user_id' => $user_id, 'last_message_date' => date("Y-m-d H:i:s"), 'last_message_id' => $new_message->id]
              );
          }
  
          return $new_message->id ?? 0;
  
      }
02a1ed535   Андрей Ларионов   Первый коммит Rek...
72
  }