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
da3687c8
Commit
da3687c8
authored
Mar 12, 2025
by
Ooh-Ao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
borrow api
parent
772f8e8b
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
231 additions
and
2 deletions
+231
-2
app.js
API/src/app.js
+2
-2
borrowTransactionController.js
API/src/controllers/borrowTransactionController.js
+135
-0
BorrowTransaction.js
API/src/models/BorrowTransaction.js
+73
-0
borrowTransactionRoutes.js
API/src/routes/borrowTransactionRoutes.js
+21
-0
No files found.
API/src/app.js
View file @
da3687c8
...
...
@@ -7,7 +7,7 @@ const equipmentRoutes = require('./routes/equipmentRoutes');
const
projectRoutes
=
require
(
'./routes/projectRoutes'
);
const
projectMemberRoutes
=
require
(
'./routes/projectMemberRoutes'
);
const
projectEquipmentRoutes
=
require
(
'./routes/projectEquipmentRoutes'
);
const
borrowTransactionRoutes
=
require
(
'./routes/borrowTransactionRoutes'
);
const
sequelize
=
require
(
'./config/database'
);
// instance ของ sequelize
const
app
=
express
();
...
...
@@ -24,7 +24,7 @@ app.use('/api/equipments', equipmentRoutes);
app
.
use
(
'/api/projects'
,
projectRoutes
);
app
.
use
(
'/api/project-members'
,
projectMemberRoutes
);
app
.
use
(
'/api/project-equipments'
,
projectEquipmentRoutes
);
app
.
use
(
'/api/borrow-transactions'
,
borrowTransactionRoutes
);
sequelize
.
sync
({
force
:
false
})
...
...
API/src/controllers/borrowTransactionController.js
0 → 100644
View file @
da3687c8
// controllers/borrowTransactionController.js
const
BorrowTransaction
=
require
(
'../models/BorrowTransaction'
);
/**
* สร้างรายการยืมอุปกรณ์ (Create)
*/
exports
.
createBorrowTransaction
=
async
(
req
,
res
)
=>
{
try
{
// ข้อมูลจาก body เช่น: { user_id, project_id, equipment_id, quantity_borrowed, ... }
const
{
user_id
,
project_id
,
equipment_id
,
quantity_borrowed
,
borrowed_date
,
due_date
,
status
,
}
=
req
.
body
;
const
newTransaction
=
await
BorrowTransaction
.
create
({
user_id
,
project_id
,
equipment_id
,
quantity_borrowed
,
borrowed_date
,
due_date
,
status
,
});
return
res
.
status
(
201
).
json
({
message
:
'BorrowTransaction created successfully'
,
borrowTransaction
:
newTransaction
});
}
catch
(
error
)
{
console
.
error
(
error
);
return
res
.
status
(
500
).
json
({
error
:
error
.
message
});
}
};
/**
* ดึงข้อมูลการยืมทั้งหมด (Read All)
*/
exports
.
getAllBorrowTransactions
=
async
(
req
,
res
)
=>
{
try
{
const
transactions
=
await
BorrowTransaction
.
findAll
();
return
res
.
status
(
200
).
json
(
transactions
);
}
catch
(
error
)
{
console
.
error
(
error
);
return
res
.
status
(
500
).
json
({
error
:
error
.
message
});
}
};
/**
* ดึงข้อมูลการยืมตาม borrow_id (Read One)
*/
exports
.
getBorrowTransactionById
=
async
(
req
,
res
)
=>
{
try
{
const
{
id
}
=
req
.
params
;
// borrow_id
const
transaction
=
await
BorrowTransaction
.
findByPk
(
id
);
if
(
!
transaction
)
{
return
res
.
status
(
404
).
json
({
error
:
'BorrowTransaction not found'
});
}
return
res
.
status
(
200
).
json
(
transaction
);
}
catch
(
error
)
{
console
.
error
(
error
);
return
res
.
status
(
500
).
json
({
error
:
error
.
message
});
}
};
/**
* อัปเดตข้อมูลการยืม (Update)
*/
exports
.
updateBorrowTransaction
=
async
(
req
,
res
)
=>
{
try
{
const
{
id
}
=
req
.
params
;
const
{
user_id
,
project_id
,
equipment_id
,
quantity_borrowed
,
borrowed_date
,
due_date
,
returned_date
,
status
,
}
=
req
.
body
;
const
[
rowsUpdated
]
=
await
BorrowTransaction
.
update
({
user_id
,
project_id
,
equipment_id
,
quantity_borrowed
,
borrowed_date
,
due_date
,
returned_date
,
status
},
{
where
:
{
borrow_id
:
id
},
});
if
(
!
rowsUpdated
)
{
return
res
.
status
(
404
).
json
({
error
:
'BorrowTransaction not found or no changes'
});
}
// ดึงข้อมูลใหม่ที่เพิ่งอัปเดต
const
updatedTransaction
=
await
BorrowTransaction
.
findByPk
(
id
);
return
res
.
status
(
200
).
json
({
message
:
'BorrowTransaction updated successfully'
,
borrowTransaction
:
updatedTransaction
,
});
}
catch
(
error
)
{
console
.
error
(
error
);
return
res
.
status
(
500
).
json
({
error
:
error
.
message
});
}
};
/**
* ลบข้อมูลการยืม (Delete)
*/
exports
.
deleteBorrowTransaction
=
async
(
req
,
res
)
=>
{
try
{
const
{
id
}
=
req
.
params
;
const
rowsDeleted
=
await
BorrowTransaction
.
destroy
({
where
:
{
borrow_id
:
id
}
});
if
(
!
rowsDeleted
)
{
return
res
.
status
(
404
).
json
({
error
:
'BorrowTransaction not found'
});
}
return
res
.
status
(
200
).
json
({
message
:
'BorrowTransaction deleted successfully'
});
}
catch
(
error
)
{
console
.
error
(
error
);
return
res
.
status
(
500
).
json
({
error
:
error
.
message
});
}
};
API/src/models/BorrowTransaction.js
0 → 100644
View file @
da3687c8
// models/BorrowTransaction.js
const
{
DataTypes
}
=
require
(
'sequelize'
);
const
sequelize
=
require
(
'../config/database'
);
const
BorrowTransaction
=
sequelize
.
define
(
'BorrowTransaction'
,
{
borrow_id
:
{
type
:
DataTypes
.
UUID
,
defaultValue
:
DataTypes
.
UUIDV4
,
// สร้าง UUID อัตโนมัติ
primaryKey
:
true
,
},
user_id
:
{
type
:
DataTypes
.
UUID
,
allowNull
:
false
,
// references: {
// model: 'users',
// key: 'user_id'
// }
},
project_id
:
{
type
:
DataTypes
.
UUID
,
allowNull
:
false
,
// references: {
// model: 'projects',
// key: 'project_id'
// }
},
equipment_id
:
{
type
:
DataTypes
.
UUID
,
allowNull
:
false
,
// references: {
// model: 'equipments',
// key: 'equipment_id'
// }
},
quantity_borrowed
:
{
type
:
DataTypes
.
INTEGER
,
allowNull
:
false
,
defaultValue
:
1
,
},
borrowed_date
:
{
type
:
DataTypes
.
DATE
,
allowNull
:
false
,
defaultValue
:
DataTypes
.
NOW
,
},
due_date
:
{
type
:
DataTypes
.
DATE
,
allowNull
:
true
,
},
returned_date
:
{
type
:
DataTypes
.
DATE
,
allowNull
:
true
,
},
status
:
{
type
:
DataTypes
.
STRING
(
50
),
allowNull
:
false
,
defaultValue
:
'borrowed'
,
// เช่น: borrowed, returned, pending, ฯลฯ
},
created_at
:
{
type
:
DataTypes
.
DATE
,
allowNull
:
false
,
defaultValue
:
DataTypes
.
NOW
,
},
updated_at
:
{
type
:
DataTypes
.
DATE
,
allowNull
:
false
,
defaultValue
:
DataTypes
.
NOW
,
},
},
{
tableName
:
'borrow_transactions'
,
timestamps
:
false
,
// ถ้าไม่ต้องการให้ Sequelize จัดการ createdAt, updatedAt อัตโนมัติ
});
module
.
exports
=
BorrowTransaction
;
API/src/routes/borrowTransactionRoutes.js
0 → 100644
View file @
da3687c8
// routes/borrowTransactionRoutes.js
const
express
=
require
(
'express'
);
const
router
=
express
.
Router
();
const
borrowTxController
=
require
(
'../controllers/borrowTransactionController'
);
// สร้างรายการยืม
router
.
post
(
'/'
,
borrowTxController
.
createBorrowTransaction
);
// ดึงข้อมูลทั้งหมด
router
.
get
(
'/'
,
borrowTxController
.
getAllBorrowTransactions
);
// ดึงข้อมูลตาม borrow_id
router
.
get
(
'/:id'
,
borrowTxController
.
getBorrowTransactionById
);
// อัปเดตข้อมูลการยืม
router
.
put
(
'/:id'
,
borrowTxController
.
updateBorrowTransaction
);
// ลบการยืม
router
.
delete
(
'/:id'
,
borrowTxController
.
deleteBorrowTransaction
);
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