Projet

Général

Profil

PROD V(22) ACTUEL » 1_1_solution_struct.sql

Tarek AOUADI, 08/08/2025 13:58

 
1
use salarymarket ;
2

    
3
/*** Solution Tables**/
4
-- Create languages table 
5
CREATE TABLE languages (
6
    id INT AUTO_INCREMENT PRIMARY KEY,
7
    language VARCHAR(255) NOT NULL,
8
    tag ENUM('en', 'fr') NOT NULL 
9
);
10
-- Create solution_languages table
11
CREATE TABLE solution_languages(
12
    id INT AUTO_INCREMENT PRIMARY KEY,
13
    active ENUM('true', 'false') NOT NULL,
14
    defaultLanguage BOOLEAN NOT NULL,
15
    languagesId INT NOT NULL,
16
    FOREIGN KEY (languagesId) REFERENCES languages(id) ON DELETE CASCADE ON UPDATE CASCADE
17
);
18
-- Create solution_entities table
19
CREATE TABLE solution_entities (
20
    id INT AUTO_INCREMENT PRIMARY KEY,
21
    entity_code VARCHAR(255) NOT NULL,
22
	state boolean NULL,
23
	entity_level text NOT NULL,
24
    title VARCHAR(255) NOT NULL,
25
    parentId VARCHAR(255) NOT NULL
26
);
27
-- Create solution_menu table
28
CREATE TABLE solution_menu (
29
    id INT AUTO_INCREMENT NOT NULL, 
30
    menuCode VARCHAR(255) NOT NULL,  
31
    menuLibelle TEXT NULL,
32
    parentMenu VARCHAR(255) NULL,
33
    menu_type ENUM('menu', 'subMenu', 'widget', 'option') NULL,
34
    menu_position BOOLEAN NOT NULL,
35
    PRIMARY KEY (menuCode),  
36
    UNIQUE (id) 
37
);
38
-- Create company_solution_menu_droit table 
39
CREATE TABLE solution_menu_rights (
40
    id INT AUTO_INCREMENT NOT NULL, 
41
	right_code VARCHAR(255) NOT NULL,  
42
    right_label VARCHAR(255) NOT NULL,
43
    menuCode VARCHAR(255) NOT NULL,
44
    PRIMARY KEY (right_code), 
45
    FOREIGN KEY (menuCode) REFERENCES solution_menu(menuCode) ON DELETE CASCADE,
46
	UNIQUE (id) 
47
);
48
-- Create solution_subscription table
49
CREATE TABLE solution_subscription (
50
    id INT NOT NULL, 
51
    subscription_code VARCHAR(255) NOT NULL,
52
    subscription_type ENUM('On The Menu', 'Essential','Advanced','Solution') NOT NULL,
53
	PRIMARY KEY (subscription_code) 
54
);
55
-- Create solution_subscription_menu table
56
CREATE TABLE solution_subscription_menu (
57
    id INT AUTO_INCREMENT  NOT NULL,
58
    subscriptionCode VARCHAR(255) NOT NULL,
59
    menuCode VARCHAR(255) NOT NULL,
60
    FOREIGN KEY (subscriptionCode) REFERENCES solution_subscription(subscription_code) ON DELETE CASCADE ON UPDATE CASCADE,
61
    FOREIGN KEY (menuCode) REFERENCES solution_menu(menuCode) ON DELETE CASCADE ON UPDATE CASCADE,
62
    PRIMARY KEY (subscriptionCode, menuCode),
63
    UNIQUE (id) 
64
);
65
-- Create solution_subscription_menu_rights table
66
CREATE TABLE solution_subscription_menu_rights (
67
    id INT AUTO_INCREMENT PRIMARY KEY,
68
    subscriptionCode VARCHAR(255) NOT NULL, -- from solution_subscription_menu conbination 
69
    menuCode VARCHAR(255) NOT NULL, -- from solution_subscription_menu
70
    solution_menu_rights_code VARCHAR(255) NOT NULL,
71
    FOREIGN KEY (subscriptionCode, menuCode) REFERENCES solution_subscription_menu(subscriptionCode, menuCode)  ON DELETE CASCADE ON UPDATE CASCADE,
72
    FOREIGN KEY (solution_menu_rights_code) REFERENCES solution_menu_rights(right_code) ON DELETE CASCADE ON UPDATE CASCADE,
73
    UNIQUE (id) 
74
);
75
-- Create solution_setting_country table
76
CREATE TABLE solution_setting_country (
77
	id INT AUTO_INCREMENT UNIQUE,
78
	code VARCHAR(255) NOT NULL PRIMARY KEY,
79
	active boolean,
80
	created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     
81
	updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
82
);
83
-- Create solution_setting_country_translate table
84
CREATE TABLE solution_setting_country_translate (
85
	id  INT AUTO_INCREMENT PRIMARY KEY,
86
	Label TEXT,
87
	countryCode VARCHAR(255) NOT NULL,
88
	languageId INT NOT NULL,
89
	created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     
90
	updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
91
	FOREIGN KEY (languageId) REFERENCES languages(id) ON DELETE CASCADE ON UPDATE CASCADE,
92
	FOREIGN KEY (countryCode) REFERENCES solution_setting_country(code) ON DELETE CASCADE ON UPDATE CASCADE
93
);
94
-- Create solution_setting_business_sector table
95
CREATE TABLE solution_setting_business_sector (
96
	id INT AUTO_INCREMENT UNIQUE,
97
	code VARCHAR(255) NOT NULL PRIMARY KEY,
98
	created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     
99
	updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
100
);
101
-- Create solution_setting_business_sector_translate table
102
CREATE TABLE solution_setting_business_sector_translate (
103
	id  INT AUTO_INCREMENT PRIMARY KEY,
104
	Label TEXT,
105
	businessSectorCode VARCHAR(255) NOT NULL,
106
	languageId INT NOT NULL,
107
	created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     
108
	updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
109
	FOREIGN KEY (languageId) REFERENCES languages(id) ON DELETE CASCADE ON UPDATE CASCADE,
110
	FOREIGN KEY (businessSectorCode) REFERENCES solution_setting_business_sector(code) ON DELETE CASCADE ON UPDATE CASCADE
111
);
112
-- Create solution_setting_sales_turnover table
113
CREATE TABLE solution_setting_sales_turnover (
114
	id INT AUTO_INCREMENT UNIQUE,
115
	code VARCHAR(255) NOT NULL PRIMARY KEY,
116
	created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     
117
	updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
118
); 
119
-- Create solution_setting_sales_turnover_translate table
120
CREATE TABLE solution_setting_sales_turnover_translate (
121
	id  INT AUTO_INCREMENT PRIMARY KEY,
122
	Label TEXT,
123
	salesTurnoverCode VARCHAR(255) NOT NULL,
124
	languageId INT NOT NULL,
125
	created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     
126
	updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
127
	FOREIGN KEY (languageId) REFERENCES languages(id) ON DELETE CASCADE ON UPDATE CASCADE,
128
	FOREIGN KEY (salesTurnoverCode) REFERENCES solution_setting_sales_turnover(code) ON DELETE CASCADE ON UPDATE CASCADE
129
);
130
-- Create solution_setting_company_size table
131
CREATE TABLE solution_setting_company_size (
132
	id INT AUTO_INCREMENT UNIQUE,
133
	code VARCHAR(255) NOT NULL PRIMARY KEY,
134
	created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     
135
	updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
136
);
137
-- Create solution_setting_company_size_translate table
138
CREATE TABLE solution_setting_company_size_translate (
139
	id  INT AUTO_INCREMENT PRIMARY KEY,
140
	Label TEXT,
141
	companySizeCode VARCHAR(255) NOT NULL,
142
	languageId INT NOT NULL,
143
	created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     
144
	updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
145
	FOREIGN KEY (languageId) REFERENCES languages(id) ON DELETE CASCADE ON UPDATE CASCADE,
146
	FOREIGN KEY (companySizeCode) REFERENCES solution_setting_company_size(code) ON DELETE CASCADE ON UPDATE CASCADE
147
);
148
-- Create solution_setting_geographic_extent table
149
CREATE TABLE solution_setting_geographic_extent (
150
	id INT AUTO_INCREMENT UNIQUE,
151
	code VARCHAR(255) NOT NULL PRIMARY KEY,
152
	created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     
153
	updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
154
);
155
-- Create solution_setting_geographic_extent_translate table
156
CREATE TABLE solution_setting_geographic_extent_translate (
157
	id  INT AUTO_INCREMENT PRIMARY KEY,
158
	Label TEXT,
159
	geographicExtentCode VARCHAR(255) NOT NULL,
160
	languageId INT NOT NULL,
161
	created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     
162
	updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
163
	FOREIGN KEY (languageId) REFERENCES languages(id) ON DELETE CASCADE ON UPDATE CASCADE,
164
	FOREIGN KEY (geographicExtentCode) REFERENCES solution_setting_geographic_extent(code) ON DELETE CASCADE ON UPDATE CASCADE
165
);
166
-- Create solution_setting_value_chain table
167
CREATE TABLE solution_setting_value_chain (
168
	id INT AUTO_INCREMENT UNIQUE,
169
	code VARCHAR(255) NOT NULL PRIMARY KEY,
170
	created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     
171
	updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
172
);
173
-- Create solution_setting_value_chain_translate table
174
CREATE TABLE solution_setting_value_chain_translate (
175
	id  INT AUTO_INCREMENT PRIMARY KEY,
176
	Label TEXT,
177
	valueChainCode VARCHAR(255) NOT NULL,
178
	languageId INT NOT NULL,
179
	created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     
180
	updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
181
	FOREIGN KEY (languageId) REFERENCES languages(id) ON DELETE CASCADE ON UPDATE CASCADE,
182
	FOREIGN KEY (valueChainCode) REFERENCES solution_setting_value_chain(code) ON DELETE CASCADE ON UPDATE CASCADE
183
);
184
-- Create solution_setting_town table
185
CREATE TABLE solution_setting_town(
186
	id INT AUTO_INCREMENT UNIQUE,
187
	code VARCHAR(255) NOT NULL PRIMARY KEY,
188
	countryCode VARCHAR(255) NOT NULL,
189
	created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     
190
	updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
191
	FOREIGN KEY (countryCode) REFERENCES solution_setting_country(code) ON DELETE CASCADE ON UPDATE CASCADE 
192
);
193
-- Create solution_setting_town_translate table
194
CREATE TABLE solution_setting_town_translate (
195
	id  INT AUTO_INCREMENT PRIMARY KEY,
196
	Label TEXT,
197
	townCode VARCHAR(255) NOT NULL,
198
	languageId INT NOT NULL,
199
	created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     
200
	updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
201
	FOREIGN KEY (languageId) REFERENCES languages(id) ON DELETE CASCADE ON UPDATE CASCADE,
202
	FOREIGN KEY (townCode) REFERENCES solution_setting_town(code) ON DELETE CASCADE ON UPDATE CASCADE
203
);
204
CREATE TABLE solution_setting_sub_sector (
205
	id INT AUTO_INCREMENT UNIQUE,
206
	code VARCHAR(255) NOT NULL PRIMARY KEY,
207
	businessSectorCode VARCHAR(255) NOT NULL,
208
	created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     
209
	updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
210
	FOREIGN KEY (businessSectorCode) REFERENCES solution_setting_business_sector(code) ON DELETE CASCADE ON UPDATE CASCADE
211
);
212
CREATE TABLE solution_setting_sub_sector_translate (
213
	id  INT AUTO_INCREMENT PRIMARY KEY,
214
	Label TEXT,
215
	subSectorCode VARCHAR(255) NOT NULL,
216
	languageId INT NOT NULL,
217
	created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     
218
	updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
219
	FOREIGN KEY (languageId) REFERENCES languages(id) ON DELETE CASCADE ON UPDATE CASCADE,
220
	FOREIGN KEY (subSectorCode) REFERENCES solution_setting_sub_sector(code) ON DELETE CASCADE ON UPDATE CASCADE
221
);
222
/*** Company Tables ***/
223
-- Create the company table
224
CREATE TABLE company (
225
    id INT AUTO_INCREMENT PRIMARY KEY,
226
    raisonSociale VARCHAR(255) NOT NULL,
227
    logo VARCHAR(255) NULL,
228
    site VARCHAR(255) NULL,
229
    address VARCHAR(255) NULL,
230
    taxRegistration VARCHAR(255) NULL,
231
    company_type ENUM('Solution','Customer') NULL,
232
    parentId INT NOT NULL,
233
    subscription_type VARCHAR(255) NULL,
234
    company_status VARCHAR(255) NULL,
235
    companySizeCode VARCHAR(255) NULL,
236
    valueChainCode VARCHAR(255) NULL,
237
    businessSectorCode VARCHAR(255) NULL,
238
    geographicExtentCode VARCHAR(255) NULL,
239
    salesTurnoverCode VARCHAR(255) NULL,
240
    subSectorCode VARCHAR(255) NULL,
241
    createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
242
    updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
243
    FOREIGN KEY (subSectorCode) REFERENCES solution_setting_sub_sector(code) ON DELETE  SET NULL  ON UPDATE CASCADE,
244
    FOREIGN KEY (companySizeCode) REFERENCES solution_setting_company_size(code) ON DELETE  SET NULL ON UPDATE CASCADE,
245
    FOREIGN KEY (valueChainCode) REFERENCES solution_setting_value_chain(code) ON DELETE  SET NULL ON UPDATE CASCADE,
246
    FOREIGN KEY (businessSectorCode) REFERENCES solution_setting_business_sector(code) ON DELETE SET NULL ON UPDATE CASCADE,
247
    FOREIGN KEY (geographicExtentCode) REFERENCES solution_setting_geographic_extent(code) ON DELETE  SET NULL ON UPDATE CASCADE,
248
    FOREIGN KEY (salesTurnoverCode) REFERENCES solution_setting_sales_turnover(code) ON DELETE SET NULL ON UPDATE CASCADE
249
);
250
-- Create company_country table
251
CREATE TABLE company_country (
252
    id INT AUTO_INCREMENT PRIMARY KEY,
253
    companyId INT NOT NULL,
254
    countryCode VARCHAR(255) NOT NULL,
255
    FOREIGN KEY (companyId) REFERENCES company(id) ON DELETE CASCADE ON UPDATE CASCADE,
256
    FOREIGN KEY (countryCode) REFERENCES solution_setting_country(code) ON DELETE CASCADE ON UPDATE CASCADE,
257
    UNIQUE (companyId, countryCode)
258
);
259
-- Create company_languages table
260
CREATE TABLE company_languages (
261
    id INT AUTO_INCREMENT PRIMARY KEY,
262
    active ENUM('true', 'false') NOT NULL,
263
    defaultLanguage BOOLEAN NOT NULL,
264
    languagesId INT NOT NULL,
265
    companyId INT NOT NULL,
266
    FOREIGN KEY (languagesId) REFERENCES languages(id) ON DELETE CASCADE ON UPDATE CASCADE,
267
    FOREIGN KEY (companyId) REFERENCES company(id) ON DELETE CASCADE ON UPDATE CASCADE
268
);
269
-- Create company_profile table
270
CREATE TABLE company_profile (
271
	id INT AUTO_INCREMENT PRIMARY KEY,
272
	title VARCHAR(255) NOT NULL,
273
	profile_code VARCHAR(255) NOT NULL,
274
	companyId INT NOT NULL,
275
	FOREIGN KEY (companyId) REFERENCES company(id) ON DELETE CASCADE ON UPDATE CASCADE
276
);
277
-- Create company_users table
278
CREATE TABLE company_users (
279
    id INT AUTO_INCREMENT PRIMARY KEY,
280
    firstName VARCHAR(255) NOT NULL,
281
    lastName VARCHAR(255) NOT NULL,
282
    email VARCHAR(255) NOT NULL UNIQUE, 
283
	user_password VARCHAR(255) NULL,
284
    phone INT NULL,
285
    poste VARCHAR(255) NULL,
286
	avatar VARCHAR(255) NOT NULL,
287
    resetToken VARCHAR(255) NULL,
288
    companyId INT NOT NULL,
289
    user_code VARCHAR(255) NULL,
290
	actif boolean NULL,
291
    FOREIGN KEY (companyId) REFERENCES company(id) ON DELETE CASCADE ON UPDATE CASCADE,
292
    createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
293
	updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
294
);
295
-- Create company_users_files table
296
CREATE TABLE company_users_files (
297
    id INT AUTO_INCREMENT PRIMARY KEY,
298
    description TEXT,
299
    fileName VARCHAR(255),
300
    extension VARCHAR(255),
301
    size VARCHAR(255),
302
	file_type VARCHAR(255),
303
    createdAt DATETIME NULL,
304
    updatedAt DATETIME NULL,
305
    usersId INT not null,
306
    FOREIGN KEY (usersId) REFERENCES company_users(id) ON DELETE CASCADE ON UPDATE CASCADE
307
);
308
-- Create company_entities table
309
CREATE TABLE company_entities (
310
    id INT AUTO_INCREMENT PRIMARY KEY,
311
    entity_code text NOT NULL,
312
    title text NOT NULL,
313
    state boolean NULL,
314
	entity_level INT  NULL,
315
    parentId VARCHAR(255) NOT NULL,
316
    companyId INT NOT NULL,
317
    FOREIGN KEY (companyId) REFERENCES company(id)  ON DELETE CASCADE ON UPDATE CASCADE
318
);
319
-- Create company_user_profile table
320
CREATE TABLE company_user_profile (
321
    id INT PRIMARY KEY AUTO_INCREMENT,
322
    profileId INT NOT NULL,
323
    usersId INT NOT NULL,
324
    FOREIGN KEY (profileId) REFERENCES company_profile(id)ON DELETE CASCADE ON UPDATE CASCADE ,
325
    FOREIGN KEY (usersId) REFERENCES company_users(id)ON DELETE CASCADE ON UPDATE CASCADE
326
);
327
-- Create company_user_profiles_entities table
328
CREATE TABLE company_user_profiles_entities(
329
	id INT AUTO_INCREMENT PRIMARY KEY,
330
    entitiesCompanyId INT NOT NULL,
331
    userProfileId INT NOT NULL,
332
	state boolean  NOT NULL,
333
    CONSTRAINT FK_UserProfile FOREIGN KEY (userProfileId) REFERENCES company_user_profile (id) ON DELETE CASCADE ON UPDATE CASCADE,
334
    CONSTRAINT FK_EntitiesCompany FOREIGN KEY (entitiesCompanyId) REFERENCES company_entities(id) ON DELETE CASCADE ON UPDATE CASCADE
335
);
336
-- Create company_solution_menu table
337
CREATE TABLE company_solution_menu (
338
    id INT AUTO_INCREMENT PRIMARY KEY,
339
    state BOOLEAN NOT NULL,
340
    companyId INT NOT NULL,
341
    menuCode VARCHAR(255) NOT NULL,
342
    FOREIGN KEY (menuCode) REFERENCES solution_menu(menuCode) ON DELETE CASCADE ON UPDATE CASCADE,
343
    FOREIGN KEY (companyId) REFERENCES company(id) ON DELETE CASCADE ON UPDATE CASCADE
344
);
345
-- Create company_solution_menu_profils table  
346
CREATE TABLE company_solution_menu_profils(
347
	id INT AUTO_INCREMENT PRIMARY KEY,
348
	state  boolean  NOT NULL,
349
	profileId INT NOT NULL,
350
	menuSolutionCompanyId INT NOT NULL,
351
    FOREIGN KEY (menuSolutionCompanyId) REFERENCES company_solution_menu(id) ON DELETE CASCADE ON UPDATE CASCADE,
352
	FOREIGN KEY (profileId) REFERENCES company_profile(id) ON DELETE CASCADE ON UPDATE CASCADE
353
);
354
-- Create company_solution_menu_profils_droit table
355
CREATE TABLE company_solution_menu_profils_rights (
356
   id INT AUTO_INCREMENT PRIMARY KEY,
357
    profileId INT,
358
    rightId INT NULL, 
359
	libelle VARCHAR(255) NOT NULL,
360
	actif boolean null ,
361
    FOREIGN KEY (rightId) REFERENCES solution_subscription_menu_rights(id) ON DELETE CASCADE,
362
	FOREIGN KEY (profileId) REFERENCES company_profile(id) ON DELETE CASCADE
363
);
364
-- Create company_files table
365
CREATE TABLE company_files (
366
    id INT AUTO_INCREMENT PRIMARY KEY,
367
    description TEXT,
368
    fileName VARCHAR(255),
369
    extension VARCHAR(255),
370
    size VARCHAR(255),
371
	file_type VARCHAR(255),
372
    createdAt DATETIME NULL,
373
    updatedAt DATETIME NULL,
374
    companyId INT not null,
375
    FOREIGN KEY (companyId) REFERENCES company(id) ON DELETE CASCADE ON UPDATE CASCADE
376
);
377
-- Create company_profile_columns_configuration table
378
CREATE TABLE company_profile_columns_configuration (
379
    id INT AUTO_INCREMENT PRIMARY KEY,
380
    userProfileId INT NOT NULL,
381
    column_type  ENUM('compensation', 'rapport') NOT NULL,
382
    selectedColumns TEXT,
383
    CONSTRAINT userProfileId FOREIGN KEY (userProfileId) REFERENCES company_user_profile(id) ON DELETE CASCADE
384
);
385
-- Create prospecting_company table
386
CREATE TABLE prospecting_company  (
387
    id INT AUTO_INCREMENT PRIMARY KEY,
388
    firstName VARCHAR(255) NOT NULL,
389
    lastName VARCHAR(255) NOT NULL,
390
    email VARCHAR(255) NOT NULL,
391
    phone INT NULL,
392
    raisonSociale VARCHAR(255),
393
    businessSector VARCHAR(255) NOT NULL,
394
    country VARCHAR(255) NOT NULL,
395
    createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
396
    updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
397
);
398
-- Create demonstration_company_comments table
399
CREATE TABLE prospecting_company_comments (
400
    id INT AUTO_INCREMENT PRIMARY KEY,
401
    description VARCHAR(255),
402
    userId INT NOT NULL,
403
    prospectingId INT NOT NULL,
404
    createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
405
    FOREIGN KEY (userId) REFERENCES company_users(id) ON DELETE CASCADE ON UPDATE CASCADE,
406
    FOREIGN KEY (prospectingId) REFERENCES prospecting_company(id) ON DELETE CASCADE ON UPDATE CASCADE
407
);
408
-- Create table company_activities
409
CREATE TABLE company_activities (
410
    id INT AUTO_INCREMENT PRIMARY KEY,
411
    description VARCHAR(255),
412
    activity_action ENUM('create', 'update', 'delete', 'validate', 'send email')  NULL,
413
    activity_type ENUM('company', 'user', 'email', 'company_compensation', 'profile') NULL,
414
    createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
415
    userId INT NULL,
416
    companyId INT NULL,
417
    FOREIGN KEY (companyId) REFERENCES company(id) ON DELETE CASCADE ON UPDATE CASCADE,
418
	FOREIGN KEY (userId) REFERENCES company_users(id) ON DELETE CASCADE ON UPDATE CASCADE
419
);
420
-- Create company_notification table
421
CREATE TABLE company_notification (
422
    id INT AUTO_INCREMENT PRIMARY KEY,
423
    icon VARCHAR(255) DEFAULT NULL,
424
    image VARCHAR(255) DEFAULT NULL,
425
    title VARCHAR(255) DEFAULT NULL,
426
    description TEXT DEFAULT NULL,
427
    time DATETIME NOT NULL,
428
    link VARCHAR(255) DEFAULT NULL,
429
    useRouter BOOLEAN DEFAULT TRUE,
430
    seen BOOLEAN DEFAULT FALSE,
431
    idSource INT NOT NULL,
432
    idReceiver INT NOT NULL
433
);
434
-- Create company_meetings table
435
CREATE TABLE company_meetings (
436
	id int NOT NULL AUTO_INCREMENT,
437
	title varchar(255) NOT NULL,
438
	startDate datetime NOT NULL,
439
	endDate datetime NOT NULL,
440
	createdBy int NOT NULL,
441
	link varchar(255) NOT NULL,
442
	description text NOT NULL,
443
	createdAt datetime NOT NULL,
444
	updatedAt datetime NOT NULL,
445
	PRIMARY KEY (id)
446
);
447
-- Create company_user_meeting table
448
CREATE TABLE company_user_meeting (
449
	user_id int NOT NULL,
450
	meeting_id int NOT NULL,
451
	PRIMARY KEY (user_id, meeting_id),
452
	FOREIGN KEY (user_id) REFERENCES company_users (id) ON DELETE CASCADE ON UPDATE CASCADE,
453
	FOREIGN KEY (meeting_id) REFERENCES company_meetings (id) ON DELETE CASCADE ON UPDATE CASCADE
454
);
455
-- Create company_chats table
456
CREATE TABLE company_chats (
457
	id INT AUTO_INCREMENT PRIMARY KEY,
458
	idSource int(11),
459
	isGroup BOOLEAN
460
);
461
-- Create company_chat_messages table
462
CREATE TABLE company_chat_messages (
463
	id INT AUTO_INCREMENT PRIMARY KEY,
464
	chatId int(11),
465
	idSource int(11),
466
	isMine BOOLEAN,
467
	seen BOOLEAN,
468
	value TEXT,
469
	createdAt DATETIME,
470
	FOREIGN KEY (chatId) REFERENCES company_chats(id) ON DELETE CASCADE ON UPDATE CASCADE
471
);
472
-- Create company_chat_messages_file table
473
CREATE TABLE company_chat_messages_file (
474
    message_id INT,
475
    files_id INT,
476
    PRIMARY KEY (message_id, files_id),
477
    FOREIGN KEY (message_id) REFERENCES company_chat_messages(id) ON DELETE CASCADE ON UPDATE CASCADE,
478
    FOREIGN KEY (files_id) REFERENCES company_files(id) ON DELETE CASCADE ON UPDATE CASCADE
479
);
480
-- Create company_chat_group table
481
CREATE TABLE company_chat_group (
482
    chat_id INT,
483
    user_id INT,
484
    PRIMARY KEY (chat_id, user_id),
485
    FOREIGN KEY (chat_id) REFERENCES company_chats(id),
486
    FOREIGN KEY (user_id) REFERENCES company_users(id)
487
);
(3-3/25)