mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
85 lines
2.8 KiB
PHP
Executable File
85 lines
2.8 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Entities\Chat;
|
|
|
|
use App\Models\Chat\ChatDeparmentUserModel;
|
|
use App\Models\Chat\ChatModel;
|
|
use CodeIgniter\Entity\Entity;
|
|
|
|
|
|
class ChatDepartmentEntity extends Entity
|
|
{
|
|
protected $attributes = [
|
|
"id" => null,
|
|
"name" => null,
|
|
"display" => null,
|
|
"description" => null,
|
|
"type" => null,
|
|
];
|
|
|
|
|
|
protected $casts = [
|
|
"name" => "string",
|
|
"display" => "string",
|
|
"description" => "?string",
|
|
"type" => "string",
|
|
];
|
|
|
|
/**
|
|
* Chat department users that are in department as administrador. These users belongs to department in all chats in any model associated and
|
|
* will receive notifications always
|
|
*
|
|
* @return array<ChatDepartmentEntity>
|
|
*/
|
|
public function chatDepartmentAdminUsers(){
|
|
$m = model(ChatDeparmentUserModel::class);
|
|
$chatDepartmentUsers = $m->where('chat_department_id',$this->attributes['id'])
|
|
->where('pedido_id',null)
|
|
->where('factura_id',null)
|
|
->where('presupuesto_id',null)
|
|
->where('orden_trabajo_id',null)
|
|
->findAll();
|
|
return $chatDepartmentUsers;
|
|
}
|
|
/**
|
|
* Chat department users that has been associated to the department by sending a
|
|
* message and users that are not as admin of the department that has written a message.
|
|
*
|
|
* @param integer $modelFkId Id from model associated
|
|
* @param string $model Name of the model associated `['presupuesto','pedido','factura']`
|
|
* @return array<ChatDepartmentEntity>
|
|
*/
|
|
public function chatDepartmentExternalUsers(int $modelFkId,string $model = "presupuesto") : array
|
|
{
|
|
$m = model(ChatDeparmentUserModel::class);
|
|
$m->where('chat_department_id',$this->attributes['id']);
|
|
|
|
switch ($model) {
|
|
case 'presupuesto':
|
|
$m->where('presupuesto_id',$modelFkId);
|
|
break;
|
|
case 'pedido':
|
|
$m->where('pedido_id',$modelFkId);
|
|
break;
|
|
case 'factura':
|
|
$m->where('pedido_id',$modelFkId);
|
|
break;
|
|
case 'ot':
|
|
$m->where('orden_trabajo_id',$modelFkId);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return $m->findAll() ?? [];
|
|
|
|
}
|
|
public function withUsers(int $modelFkId,string $model = "presupuesto") : self
|
|
{
|
|
$externalUsers = $this->chatDepartmentExternalUsers($modelFkId,$model);
|
|
$this->attributes["adminUsers"] = array_map(fn(ChatDepartmentUserEntity $du) => $du->user()->withAvatar() , $this->chatDepartmentAdminUsers());
|
|
$this->attributes["externalUsers"] = array_map(fn(ChatDepartmentUserEntity $du) => $du->user()->withAvatar() , $externalUsers);
|
|
return $this;
|
|
}
|
|
|
|
}
|