mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
feat : migration and chat models
This commit is contained in:
@ -11,13 +11,17 @@ class ChatDepartments extends Migration
|
||||
"id" => [
|
||||
"type" => "INT",
|
||||
"unsigned" => true,
|
||||
"autoincrement" => true
|
||||
"auto_increment" => true
|
||||
],
|
||||
"name" => [
|
||||
"type" => "VARCHAR",
|
||||
"constraint" => '45',
|
||||
"unique" => true,
|
||||
],
|
||||
"display" => [
|
||||
"type" => "VARCHAR",
|
||||
"constraint" => '255',
|
||||
],
|
||||
|
||||
];
|
||||
public function up()
|
||||
@ -28,22 +32,21 @@ class ChatDepartments extends Migration
|
||||
"created_at" => [
|
||||
"type" => "TIMESTAMP",
|
||||
"default" => $currenttime,
|
||||
|
||||
|
||||
],
|
||||
"updated_at" => [
|
||||
"type" => "TIMESTAMP",
|
||||
"nullable" => true,
|
||||
"null" => true,
|
||||
|
||||
],
|
||||
"deleted_at" => [
|
||||
"type" => "TIMESTAMP",
|
||||
"nullable" => true,
|
||||
"null" => true,
|
||||
|
||||
],
|
||||
]);
|
||||
$this->forge->createTable("chat_departments",true);
|
||||
$this->forge->addPrimaryKey('id');
|
||||
|
||||
$this->forge->createTable("chat_departments", true);
|
||||
}
|
||||
|
||||
public function down()
|
||||
|
||||
@ -11,7 +11,7 @@ class ChatsTable extends Migration
|
||||
"id" => [
|
||||
"type" => "INT",
|
||||
"unsigned" => true,
|
||||
"autoincrement" => true
|
||||
"auto_increment" => true
|
||||
],
|
||||
"chat_department_id" => [
|
||||
"type" => "INT",
|
||||
@ -23,14 +23,14 @@ class ChatsTable extends Migration
|
||||
"unsigned" => true,
|
||||
],
|
||||
|
||||
|
||||
|
||||
];
|
||||
public function up()
|
||||
{
|
||||
$this->forge->dropTable("chat_conversaciones",true);
|
||||
$this->forge->dropTable("chat_mensajes",true);
|
||||
$this->forge->dropTable("chat_participantes",true);
|
||||
|
||||
$this->forge->dropTable("chat_conversaciones", true);
|
||||
$this->forge->dropTable("chat_mensajes", true);
|
||||
$this->forge->dropTable("chat_participantes", true);
|
||||
|
||||
$this->forge->addField($this->COLUMNS);
|
||||
$currenttime = new RawSql("CURRENT_TIMESTAMP");
|
||||
$this->forge->addField([
|
||||
@ -40,24 +40,23 @@ class ChatsTable extends Migration
|
||||
],
|
||||
"updated_at" => [
|
||||
"type" => "TIMESTAMP",
|
||||
"nullable" => true,
|
||||
"null" => true,
|
||||
],
|
||||
"deleted_at" => [
|
||||
"type" => "TIMESTAMP",
|
||||
"nullable" => true,
|
||||
"null" => true,
|
||||
|
||||
],
|
||||
]);
|
||||
$this->forge->addPrimaryKey('id');
|
||||
$this->forge->addForeignKey('pedido_id', 'pedidos', 'id');
|
||||
// $this->forge->addForeignKey('chat_department_id', 'chat_departments', 'id');
|
||||
$this->forge->createTable("chats",true);
|
||||
|
||||
$this->forge->addForeignKey('chat_department_id', 'chat_departments', 'id');
|
||||
$this->forge->createTable("chats", true);
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
$this->forge->dropTable("chats",true);
|
||||
$this->forge->dropTable("chats", true);
|
||||
}
|
||||
}
|
||||
@ -10,7 +10,7 @@ class ChatMessages extends Migration
|
||||
protected array $COLUMNS = [
|
||||
"id" => [
|
||||
"type" => "INT",
|
||||
"autoincrement" => true,
|
||||
"auto_increment" => true,
|
||||
],
|
||||
"chat_id" => [
|
||||
"type" => "INT",
|
||||
@ -20,7 +20,7 @@ class ChatMessages extends Migration
|
||||
"user_id" => [
|
||||
"type" => "INT",
|
||||
"unsigned" => true,
|
||||
|
||||
|
||||
],
|
||||
"message" => [
|
||||
"type" => "TEXT",
|
||||
@ -31,32 +31,33 @@ class ChatMessages extends Migration
|
||||
public function up()
|
||||
{
|
||||
$this->forge->addField($this->COLUMNS);
|
||||
$this->forge->addForeignKey(['user_id'], 'users', ['id']);
|
||||
$this->forge->addForeignKey(['chat_id'], 'chats', ['id']);
|
||||
|
||||
$currenttime = new RawSql("CURRENT_TIMESTAMP");
|
||||
$this->forge->addField([
|
||||
"created_at" => [
|
||||
"type" => "TIMESTAMP",
|
||||
"default" => $currenttime,
|
||||
|
||||
|
||||
],
|
||||
"updated_at" => [
|
||||
"type" => "TIMESTAMP",
|
||||
"nullable" => true,
|
||||
"null" => true,
|
||||
|
||||
],
|
||||
"deleted_at" => [
|
||||
"type" => "TIMESTAMP",
|
||||
"nullable" => true,
|
||||
"null" => true,
|
||||
|
||||
],
|
||||
]);
|
||||
$this->forge->createTable("chat_messages",true);
|
||||
|
||||
$this->forge->addPrimaryKey('id');
|
||||
$this->forge->addForeignKey(['user_id'], 'users', ['id']);
|
||||
$this->forge->addForeignKey(['chat_id'], 'chats', ['id']);
|
||||
$this->forge->createTable("chat_messages", true);
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
$this->forge->dropTable("chat_messages",true);
|
||||
$this->forge->dropTable("chat_messages", true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,8 +8,9 @@ use CodeIgniter\Database\RawSql;
|
||||
class ChatDepartmentUsers extends Migration
|
||||
{
|
||||
protected array $COLUMNS = [
|
||||
"chat_deparment_id" => [
|
||||
"chat_department_id" => [
|
||||
"type" => "INT",
|
||||
"unsigned" => true,
|
||||
],
|
||||
"user_id" => [
|
||||
"type" => "INT",
|
||||
@ -19,34 +20,31 @@ class ChatDepartmentUsers extends Migration
|
||||
public function up()
|
||||
{
|
||||
$this->forge->addField($this->COLUMNS);
|
||||
$this->forge->addForeignKey(["user_id"],"users",["id"]);
|
||||
$currenttime = new RawSql("CURRENT_TIMESTAMP");
|
||||
$this->forge->addField([
|
||||
"created_at" => [
|
||||
"type" => "TIMESTAMP",
|
||||
"default" => $currenttime,
|
||||
|
||||
|
||||
],
|
||||
"updated_at" => [
|
||||
"type" => "TIMESTAMP",
|
||||
"nullable" => true,
|
||||
"null" => true,
|
||||
|
||||
],
|
||||
"deleted_at" => [
|
||||
"type" => "TIMESTAMP",
|
||||
"nullable" => true,
|
||||
"null" => true,
|
||||
|
||||
],
|
||||
]);
|
||||
$this->forge->createTable("chat_department_users",true);
|
||||
|
||||
|
||||
|
||||
$this->forge->addForeignKey(["user_id"], "users", ["id"]);
|
||||
$this->forge->addForeignKey(["chat_department_id"], "chat_departments", ["id"]);
|
||||
$this->forge->createTable("chat_department_users", true);
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
$this->forge->dropTable("chat_department_users");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
83
ci4/app/Database/Seeds/ChatSeeder.php
Normal file
83
ci4/app/Database/Seeds/ChatSeeder.php
Normal file
@ -0,0 +1,83 @@
|
||||
<?php
|
||||
|
||||
namespace App\Database\Seeds;
|
||||
|
||||
use App\Models\Chat\ChatDeparmentModel;
|
||||
use App\Models\Chat\ChatDeparmentUserModel;
|
||||
use CodeIgniter\Database\Seeder;
|
||||
use App\Models\Usuarios\UserModel;
|
||||
|
||||
class ChatSeeder extends Seeder
|
||||
{
|
||||
public function run()
|
||||
{
|
||||
$data = [
|
||||
[
|
||||
"name" => "_produccion",
|
||||
"display" => "Producción",
|
||||
"users" => [
|
||||
"mbalbaci@safekat.com",
|
||||
"mari.cano@safekat.com",
|
||||
"beatriz@safekat.com"
|
||||
],
|
||||
],
|
||||
[
|
||||
"name" => "_pod",
|
||||
"display" => "POD",
|
||||
"users" => [
|
||||
"pod@safekat.com",
|
||||
],
|
||||
],
|
||||
[
|
||||
"name" => "_maquetacion",
|
||||
"display" => "Maquetación",
|
||||
"users" => [
|
||||
"maquetacion@safekat.com",
|
||||
],
|
||||
],
|
||||
// [
|
||||
// "name" => "_comercial",
|
||||
// "display" => "Comercial",
|
||||
// "users" => [
|
||||
// "incidencias@safekat.com",
|
||||
// ],
|
||||
// ],
|
||||
[
|
||||
"name" => "_incidencias",
|
||||
"display" => "Incidencias",
|
||||
"users" => [
|
||||
"incidencias@safekat.com",
|
||||
],
|
||||
],
|
||||
[
|
||||
"name" => "_logistica",
|
||||
"display" => "Logística",
|
||||
"users" => [
|
||||
"logistica@safekat.com",
|
||||
],
|
||||
],
|
||||
[
|
||||
"name" => "_admin",
|
||||
"display" => "Administración",
|
||||
"users" => [
|
||||
"contabilidad@safekat.com",
|
||||
],
|
||||
],
|
||||
];
|
||||
$chatDeparmentModel = model(ChatDeparmentModel::class);
|
||||
$chatDeparmentUsersModel = model(ChatDeparmentUserModel::class);
|
||||
$userModel = model(UserModel::class);
|
||||
|
||||
foreach ($data as $row) {
|
||||
$chatDeparmentId = $chatDeparmentModel->insert(["name" => $row["name"], "display" => $row["display"]]);
|
||||
if (count($row["users"]) > 0) {
|
||||
foreach ($row["users"] as $mail) {
|
||||
$user = $userModel->like("username", $mail)->first();
|
||||
if ($user) {
|
||||
$chatDeparmentUsersModel->insert(['user_id' => $user->id, "chat_department_id" => $chatDeparmentId]);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -1,18 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
namespace App\Models\Chat;
|
||||
|
||||
use CodeIgniter\Model;
|
||||
|
||||
class ChatDeparmentModel extends Model
|
||||
{
|
||||
protected $table = 'chat_deparments';
|
||||
protected $table = 'chat_departments';
|
||||
protected $primaryKey = 'id';
|
||||
protected $useAutoIncrement = true;
|
||||
protected $returnType = 'array';
|
||||
protected $useSoftDeletes = false;
|
||||
protected $protectFields = true;
|
||||
protected $allowedFields = [];
|
||||
protected $allowedFields = [
|
||||
"name",
|
||||
"display"
|
||||
];
|
||||
|
||||
protected bool $allowEmptyInserts = false;
|
||||
protected bool $updateOnlyChanged = true;
|
||||
|
||||
@ -1,18 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
namespace App\Models\Chat;
|
||||
|
||||
|
||||
use CodeIgniter\Model;
|
||||
|
||||
class ChatDeparmentUserModel extends Model
|
||||
{
|
||||
protected $table = 'chat_deparment_users';
|
||||
protected $table = 'chat_department_users';
|
||||
protected $primaryKey = 'id';
|
||||
protected $useAutoIncrement = true;
|
||||
protected $returnType = 'array';
|
||||
protected $useSoftDeletes = false;
|
||||
protected $protectFields = true;
|
||||
protected $allowedFields = [];
|
||||
protected $allowedFields = [
|
||||
"chat_department_id",
|
||||
"user_id"
|
||||
];
|
||||
|
||||
protected bool $allowEmptyInserts = false;
|
||||
protected bool $updateOnlyChanged = true;
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
namespace App\Models\Chat;
|
||||
|
||||
|
||||
use CodeIgniter\Model;
|
||||
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
namespace App\Models\Chat;
|
||||
|
||||
|
||||
use CodeIgniter\Model;
|
||||
|
||||
@ -12,7 +13,10 @@ class ChatModel extends Model
|
||||
protected $returnType = 'array';
|
||||
protected $useSoftDeletes = false;
|
||||
protected $protectFields = true;
|
||||
protected $allowedFields = [];
|
||||
protected $allowedFields = [
|
||||
"pedido_id",
|
||||
"chat_department_id"
|
||||
];
|
||||
|
||||
protected bool $allowEmptyInserts = false;
|
||||
protected bool $updateOnlyChanged = true;
|
||||
@ -44,20 +48,23 @@ class ChatModel extends Model
|
||||
protected $beforeDelete = [];
|
||||
protected $afterDelete = [];
|
||||
|
||||
|
||||
|
||||
public function getChat(int $chat_id)
|
||||
{
|
||||
$this->db->table('chats')
|
||||
->select([
|
||||
"chats.id as chatId",
|
||||
"users.id as userId",
|
||||
"users.email",
|
||||
"chat_messages.created_at as messageCreatedAt",
|
||||
"chat_messages.message as messageText",
|
||||
]
|
||||
)
|
||||
->join("users","users.id == chat_messages.user_id","left")
|
||||
->join("chat_messages","chats.id == chat_messages.chat_id","left");
|
||||
|
||||
->select(
|
||||
[
|
||||
"chats.id as chatId",
|
||||
"users.id as userId",
|
||||
"chats.pedido_id as pedidoId",
|
||||
"users.email",
|
||||
"chat_messages.created_at as messageCreatedAt",
|
||||
"chat_messages.message as messageText",
|
||||
]
|
||||
)
|
||||
->join("users", "users.id == chat_messages.user_id", "left")
|
||||
->join("chat_deparments", "chat_deparments.id == chats.chat_deparment_id", "left")
|
||||
->join("chat_messages", "chats.id == chat_messages.chat_id", "left")
|
||||
->where("chatId", $chat_id)->get()->getResultObject();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user