Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
BookingMyHrManagement
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Registry
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chanachai
BookingMyHrManagement
Commits
5764e416
Commit
5764e416
authored
Mar 11, 2025
by
Ooh-Ao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
projectMember
parent
d0a0adcd
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
179 additions
and
2 deletions
+179
-2
app.js
API/src/app.js
+2
-2
projectMemberController.js
API/src/controllers/projectMemberController.js
+109
-0
ProjectMember.js
API/src/models/ProjectMember.js
+47
-0
projectMemberRoutes.js
API/src/routes/projectMemberRoutes.js
+21
-0
No files found.
API/src/app.js
View file @
5764e416
...
@@ -5,7 +5,7 @@ const userRoutes = require('./routes/userRoutes');
...
@@ -5,7 +5,7 @@ const userRoutes = require('./routes/userRoutes');
const
authRoutes
=
require
(
'./routes/authRoutes'
);
const
authRoutes
=
require
(
'./routes/authRoutes'
);
const
equipmentRoutes
=
require
(
'./routes/equipmentRoutes'
);
const
equipmentRoutes
=
require
(
'./routes/equipmentRoutes'
);
const
projectRoutes
=
require
(
'./routes/projectRoutes'
);
const
projectRoutes
=
require
(
'./routes/projectRoutes'
);
const
projectMemberRoutes
=
require
(
'./routes/projectMemberRoutes'
);
const
sequelize
=
require
(
'./config/database'
);
// instance ของ sequelize
const
sequelize
=
require
(
'./config/database'
);
// instance ของ sequelize
const
app
=
express
();
const
app
=
express
();
...
@@ -20,7 +20,7 @@ app.use('/api/users', userRoutes);
...
@@ -20,7 +20,7 @@ app.use('/api/users', userRoutes);
app
.
use
(
'/api/auth'
,
authRoutes
);
app
.
use
(
'/api/auth'
,
authRoutes
);
app
.
use
(
'/api/equipments'
,
equipmentRoutes
);
app
.
use
(
'/api/equipments'
,
equipmentRoutes
);
app
.
use
(
'/api/projects'
,
projectRoutes
);
app
.
use
(
'/api/projects'
,
projectRoutes
);
app
.
use
(
'/api/project-members'
,
projectMemberRoutes
);
...
...
API/src/controllers/projectMemberController.js
0 → 100644
View file @
5764e416
// controllers/projectMemberController.js
const
ProjectMember
=
require
(
'../models/ProjectMember'
);
/**
* สร้างความสัมพันธ์ (Create)
*/
exports
.
createProjectMember
=
async
(
req
,
res
)
=>
{
try
{
// ข้อมูลจาก client เช่น { user_id, project_id, role_in_project }
const
{
user_id
,
project_id
,
role_in_project
}
=
req
.
body
;
const
newPM
=
await
ProjectMember
.
create
({
user_id
,
project_id
,
role_in_project
});
return
res
.
status
(
201
).
json
({
message
:
'ProjectMember created successfully'
,
projectMember
:
newPM
});
}
catch
(
error
)
{
console
.
error
(
error
);
return
res
.
status
(
500
).
json
({
error
:
error
.
message
});
}
};
/**
* ดึงข้อมูลสมาชิกโครงการทั้งหมด (Read All)
*/
exports
.
getAllProjectMembers
=
async
(
req
,
res
)
=>
{
try
{
const
pms
=
await
ProjectMember
.
findAll
();
return
res
.
status
(
200
).
json
(
pms
);
}
catch
(
error
)
{
console
.
error
(
error
);
return
res
.
status
(
500
).
json
({
error
:
error
.
message
});
}
};
/**
* ดึงข้อมูลสมาชิกโครงการตาม id (Read One)
*/
exports
.
getProjectMemberById
=
async
(
req
,
res
)
=>
{
try
{
const
{
id
}
=
req
.
params
;
// pm_id
const
pm
=
await
ProjectMember
.
findByPk
(
id
);
if
(
!
pm
)
{
return
res
.
status
(
404
).
json
({
error
:
'ProjectMember not found'
});
}
return
res
.
status
(
200
).
json
(
pm
);
}
catch
(
error
)
{
console
.
error
(
error
);
return
res
.
status
(
500
).
json
({
error
:
error
.
message
});
}
};
/**
* อัปเดตข้อมูลสมาชิกโครงการ (Update)
*/
exports
.
updateProjectMember
=
async
(
req
,
res
)
=>
{
try
{
const
{
id
}
=
req
.
params
;
const
{
user_id
,
project_id
,
role_in_project
}
=
req
.
body
;
const
[
rowsUpdated
]
=
await
ProjectMember
.
update
({
user_id
,
project_id
,
role_in_project
},
{
where
:
{
pm_id
:
id
},
});
if
(
!
rowsUpdated
)
{
return
res
.
status
(
404
).
json
({
error
:
'ProjectMember not found or no changes'
});
}
// ดึงข้อมูลใหม่หลังอัปเดต
const
updatedPM
=
await
ProjectMember
.
findByPk
(
id
);
return
res
.
status
(
200
).
json
({
message
:
'ProjectMember updated successfully'
,
projectMember
:
updatedPM
});
}
catch
(
error
)
{
console
.
error
(
error
);
return
res
.
status
(
500
).
json
({
error
:
error
.
message
});
}
};
/**
* ลบสมาชิกโครงการ (Delete)
*/
exports
.
deleteProjectMember
=
async
(
req
,
res
)
=>
{
try
{
const
{
id
}
=
req
.
params
;
const
rowsDeleted
=
await
ProjectMember
.
destroy
({
where
:
{
pm_id
:
id
}
});
if
(
!
rowsDeleted
)
{
return
res
.
status
(
404
).
json
({
error
:
'ProjectMember not found'
});
}
return
res
.
status
(
200
).
json
({
message
:
'ProjectMember deleted successfully'
});
}
catch
(
error
)
{
console
.
error
(
error
);
return
res
.
status
(
500
).
json
({
error
:
error
.
message
});
}
};
API/src/models/ProjectMember.js
0 → 100644
View file @
5764e416
// models/ProjectMember.js
const
{
DataTypes
}
=
require
(
'sequelize'
);
const
sequelize
=
require
(
'../config/database'
);
const
ProjectMember
=
sequelize
.
define
(
'ProjectMember'
,
{
pm_id
:
{
type
:
DataTypes
.
UUID
,
defaultValue
:
DataTypes
.
UUIDV4
,
// สร้าง UUID อัตโนมัติ
primaryKey
:
true
,
},
user_id
:
{
type
:
DataTypes
.
UUID
,
allowNull
:
false
,
// ถ้าต้องการกำหนด constraint ให้ DB รู้ว่าคอลัมน์นี้อ้างอิงตาราง users:
// references: {
// model: 'users',
// key: 'user_id',
// },
},
project_id
:
{
type
:
DataTypes
.
UUID
,
allowNull
:
false
,
// references: {
// model: 'projects',
// key: 'project_id',
// },
},
role_in_project
:
{
type
:
DataTypes
.
STRING
(
100
),
allowNull
:
true
,
},
created_at
:
{
type
:
DataTypes
.
DATE
,
allowNull
:
false
,
defaultValue
:
DataTypes
.
NOW
,
},
updated_at
:
{
type
:
DataTypes
.
DATE
,
allowNull
:
false
,
defaultValue
:
DataTypes
.
NOW
,
},
},
{
tableName
:
'project_members'
,
timestamps
:
false
,
// ถ้าไม่ต้องการให้ Sequelize จัดการ createdAt/updatedAt ให้อัตโนมัติ
});
module
.
exports
=
ProjectMember
;
API/src/routes/projectMemberRoutes.js
0 → 100644
View file @
5764e416
// routes/projectMemberRoutes.js
const
express
=
require
(
'express'
);
const
router
=
express
.
Router
();
const
pmController
=
require
(
'../controllers/projectMemberController'
);
// สร้างข้อมูลสมาชิกโครงการ
router
.
post
(
'/'
,
pmController
.
createProjectMember
);
// ดึงข้อมูลสมาชิกโครงการทั้งหมด
router
.
get
(
'/'
,
pmController
.
getAllProjectMembers
);
// ดึงข้อมูลสมาชิกโครงการจาก pm_id
router
.
get
(
'/:id'
,
pmController
.
getProjectMemberById
);
// อัปเดตข้อมูลสมาชิกโครงการ
router
.
put
(
'/:id'
,
pmController
.
updateProjectMember
);
// ลบข้อมูลสมาชิกโครงการ
router
.
delete
(
'/:id'
,
pmController
.
deleteProjectMember
);
module
.
exports
=
router
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment