Requirement
- Framework Laravel / NodeJS
- Database PostgreSQL
- API Token menggunakan Bearer / OAuth2
- Password encryption harus menggunakan bcrypt atau argon2.
Soal
- Membuat aplikasi RESTFUL API dengan fitur: Login, Insert Data, Approve Data dan Get Data.
Keterangan
- Buatlah aplikasi RESTFUL API yang dapat melakukan Insert dan Get Data dalam format json.
- Disaat user melakukan insert ataupun get data, API harus melakukan validasi token terlebih dahulu.
- Token didapatkan setelah user melakukan Login.
- Data user hanya boleh di-approve oleh supervisor nya sendiri.
- Data yang akan di-insert adalah data absensi.
- Setiap hari user melakukan 2 kali absensi (masuk dan pulang, menjadi 2 baris di database).
Desain Table Database
Table Users
| id | nama | npp | npp_supervisor | password | |
|---|---|---|---|---|---|
| 1 | Bayu Pramana | bayu@email.com | 12345 | 11111 | password |
| 2 | Supervisor | spv@email.com | 11111 | - | password |
Table Epressence
| id | id_users | type | is_approve | waktu |
|---|---|---|---|---|
| 1 | 1 | IN | TRUE | 15/11/23 08.00 |
| 2 | 1 | OUT | FALSE | 15/11/23 17.00 |
API Body
- Insert Data
{
"type": "IN",
"waktu": "2023-11-15 08:00:00"
}
// IN = absen masuk
// OUT = absen pulang- Get Data
{
"message": "Success get data",
"data": [
{
"id_user": 1,
"nama_user": "Bayu Pramana",
"tanggal": "2023-11-15",
"waktu_masuk": "08:00:00",
"waktu_pulang": "17:00:00",
"status_masuk": "APPROVE",
"status_pulang": "REJECT"
},
{
"id_user": 1,
"nama_user": "Bayu Pramana",
"waktu_masuk": "08:00:00",
"waktu_pulang": "17:00:00",
"status_masuk": "APPROVE",
"status_pulang": "APPROVE"
}
]
}
// Data absensi dibuat menjadi 1 baris dari 2 baris data di database
// nama_user diambila dari table users
// tanggal diambil dari field waktu dengan type = IN
// waktu_masuk diambil dari field waktu dengan type = IN
// waktu_pulang diambil dari field waktu dengan type = OUT
// status_masuk diambil dari field is_approve, true = APPROVE || false = REJECT
// status_pulang diambil dari field is_approve