diff --git a/doc/employee.png b/doc/employee.png
new file mode 100644
index 0000000..9f29dee
Binary files /dev/null and b/doc/employee.png differ
diff --git a/doc/employees.md b/doc/employees.md
index b48425e..5d12ddd 100644
--- a/doc/employees.md
+++ b/doc/employees.md
@@ -1,25 +1,1220 @@
# Employees Module
Module | Description
--- | --- | --- | ---
-[Create](#create) | Create New Employee
-[Update](#update) | Update Employee
-[Delete](#delete) | Delete Employee
+[Add](#add) | POST | Add New Data Employee
+[View](#view) | GET | View Data Employee
+[Edit](#edit) | PUT | Edit Data Employee
+[Delete](#delete) | DELETE | Delete Data Employee
-## Create
+## Add
+### Endpoint
+POST /employees
+
+### Database
+![](./employee.png)
+
+for add, you need get company_id from companies tables and branch.id from branches tables
+
+### Headers
+Key | Value
+--- | ---
+Content-Type | application/json
+Accept | application/json
+
+### Request Payloads
Name | Type | Example Value
--- | --- | ---
-nik | string | 20201201
-name | string | ferry
-address | string | Jl.Mangga Besar XIII
+id | string | 2
+employee_code | string | 20201201
+employee_name | string | ferry
+employee_address | string | Jl.Mangga Besar XIII
+company_id | string | 11
+branch_id | string | 7
+```
+{
+ "id": "2",
+ "employee_code": "20200301",
+ "employee_name": "ferry",
+ "employee_address": "Jl.Mangga Besar XIII",
+ "company_id": "11",
+ "branch_id": "7"
+
+}
+```
+
+### Response Payloads
+HTTP Code | Status | Description
+--- | --- | ---
+400 | Bad Request | Bad request payload
+404 | Not Found | User not found in database
+500 | Internal Server Error | some un-handle error in server
+200 | OK | OK
+```
+{
+ "status_code": "CDC-400",
+ "status_message": "Bad Request",
+ "data": null
+}
+```
+
+```
+{
+ "status_code": "CDC-200",
+ "status_message": "OK",
+ "data": {
+ "id":"2",
+ "employee_code": "20200301",
+ "employee_name": "ferry",
+ "employee_address": "Jl.Mangga Besar XIII",
+ "company_id": "11",
+ "company_code": "cdc-01",
+ "branch_id": "7"
+ "branch_code": "jkt-01"
+ "created" : "2020-12-03 09:44:02",
+ "modified" : "2020-12-03 09:44:02",
+ }
+}
+```
+
+### Logic
+
+#### Validation
+- employee_code : required and not empty
+- employee_name : required and not empty
+- employee_address : required and not empty
+- company_id: required and not empty
+- branch_id: required and not empty
+
+### Scenario Test
+
+#### Case : Negative Case 1
+
+Request Payload : empty
+
+Response HTTP Status Code : 400
+
+Response Payload :
+```
+{
+ "status_code": "cdc-400",
+ "status_message": "employee_code is required",
+ "data": null
+}
+```
+
+#### Case : Negative Case 2
+
+Request Payload :
+```
+{}
+```
+
+Response HTTP Status Code : 400
+
+Response Payload :
+```
+{
+ "status_code": "cdc-400",
+ "status_message": "employee_code is required",
+ "data": null
+}
+```
+
+#### Case : Negative Case 3
+
+Request Payload :
+```
+{
+ "employee_code": ""
+}
+```
+
+Response HTTP Status Code : 400
+
+Response Payload :
+```
+{
+ "status_code": "cdc-400",
+ "status_message": "employee_code is empty",
+ "data": null
+}
+```
+
+#### Case : Negative Case 4
+
+Request Payload :
+```
+{
+ "employee_code": "20200301"
+}
+```
+
+Response HTTP Status Code : 400
+
+Response Payload :
+```
+{
+ "status_code": "cdc-400",
+ "status_message": "employee_name is required",
+ "data": null
+}
+```
+
+#### Case : Negative Case 5
+
+Request Payload :
+```
+{
+ "employee_code": "20200301",
+ "employee_name": ""
+}
+```
+
+Response HTTP Status Code : 400
+
+Response Payload:
+```
+{
+ "status_code": "cdc-400",
+ "status_message": "employee_name is empty",
+ "data": null
+}
+```
+
+#### Case : Negative Case 6
+
+Request Payload
+```
+{
+ "employee_code": "20200301",
+ "employee_name": "ferry"
+}
+```
+
+Response HTTP Status Code : 400
+
+Response Payload
+```
+{
+ "status_code": "cdc-400",
+ "status_message": "employee_address is required",
+ "data": null
+}
+```
+
+#### Case : Negative Case 7
+
+Request Payload :
+```
+{
+ "employee_code": "20200301",
+ "employee_name": "ferry",
+ "employee_address": ""
+}
+```
+
+Response HTTP Status Code : 400
+
+Response Payload:
+```
+{
+ "status_code": "cdc-400",
+ "status_message": "employee_address is empty",
+ "data": null
+}
+```
+
+#### Case : Negative Case 8
+
+Request Payload
+```
+{
+ "employee_code": "20200301",
+ "employee_name": "ferry",
+ "employee_address": "Jl.Mangga Besar XIII"
+}
+```
+
+Response HTTP Status Code : 400
+
+Response Payload
+```
+{
+ "status_code": "cdc-400",
+ "status_message": "company_id is required",
+ "data": null
+}
+```
+
+#### Case : Negative Case 9
+
+Request Payload
+```
+{
+ "employee_code": "20200301",
+ "employee_name": "ferry",
+ "employee_address": "Jl.Mangga Besar XIII",
+ "company_id": ""
+}
+```
+
+Response HTTP Status Code : 400
+
+Response Payload:
+```
+{
+ "status_code": "cdc-400",
+ "status_message": "company_id is empty",
+ "data": null
+}
+```
+
+#### Case : Negative Case 10
+
+Request Payload
+```
+{
+ "employee_code": "20200301",
+ "employee_name": "ferry",
+ "employee_address": "Jl.Mangga Besar XIII",
+ "company_id": "random"
+}
+```
+
+Response HTTP Status Code : 404
+
+Response Payload
+```
+{
+ "status_code": "cdc-404",
+ "status_message": "company_id not found",
+ "data": null
+}
+```
+
+#### Case : Negative Case 11
+
+Request Payload
+```
+{
+ "employee_code": "20200301",
+ "employee_name": "ferry",
+ "employee_address": "Jl.Mangga Besar XIII",
+ "company_id": "11"
+}
+```
+
+Response HTTP Status Code : 404
+
+Response Payload
+```
+{
+ "status_code": "cdc-404",
+ "status_message": "branch_id is required",
+ "data": null
+}
+```
-# Update
+#### Case : Negative Case 12
-Name | Old Example Value | New Example Value
+Request Payload
+```
+{
+ "employee_code": "20200301",
+ "employee_name": "ferry",
+ "employee_address": "Jl.Mangga Besar XIII",
+ "company_id": "11",
+ "branch_id": ""
+
+}
+```
+
+Response HTTP Status Code : 400
+
+Response Payload:
+```
+{
+ "status_code": "cdc-400",
+ "status_message": "branch_id is empty",
+ "data": null
+}
+```
+
+#### Case : Negative Case 13
+
+Request Payload
+```
+{
+ "employee_code": "20200301",
+ "employee_name": "ferry",
+ "employee_address": "Jl.Mangga Besar XIII",
+ "company_id": "11",
+ "branch_id": "random",
+}
+```
+
+Response HTTP Status Code : 404
+
+Response Payload
+```
+{
+ "status_code": "cdc-404",
+ "status_message": "branch_id not found",
+ "data": null
+}
+```
+
+#### Case : Negative Case 14
+
+Request Payload
+```
+{
+ "employee_code": "20201"
+}
+```
+
+Response HTTP Status Code : 404
+
+Response Payload
+```
+{
+ "status_code": "cdc-404",
+ "status_message": "employee_code already in use",
+ "data": null
+}
+```
+
+#### Case : Positive Case
+
+Request Payload :
+```
+{
+ "employee_code": "20200301",
+ "employee_name": "ferry",
+ "employee_address": "Jl.Mangga Besar XIII",
+ "company_id": "11",
+ "company_code": "cdc-01",
+ "branch_id": "7"
+}
+```
+
+Response HTTP Status Code : 200
+
+Response Payload :
+```
+{
+ "status_code": "CDC-200",
+ "status_message": "OK",
+ "data": {
+ "id":"2",
+ "employee_code": "20200301",
+ "employee_name": "ferry",
+ "employee_address": "Jl.Mangga Besar XIII",
+ "company_id": "11",
+ "company_code": "cdc-01",
+ "branch_id": "7"
+ "branch_code": "jkt-01"
+ "created" : "2020-12-03 09:44:02",
+ "modified" : "2020-12-03 09:44:02",
+ }
+}
+```
+
+## View Data Employee
+
+### Endpoint
+GET /employees/:id
+
+### Headers
+Key | Value
+--- | ---
+Content-Type | application/json
+Accept | application/json
+
+### Request Payloads
+Name | Type | Example Value
+--- | --- | ---
+id | string | 2
+```
+{
+ "id": "2",
+}
+```
+
+### Response Payloads
+HTTP Code | Status | Description
+--- | --- | ---
+400 | Bad Request | Bad request payload
+404 | Not Found | User not found in database
+500 | Internal Server Error | some un-handle error in server
+200 | OK | OK
+```
+{
+ "status_code": "CDC-400",
+ "status_message": "Bad Request",
+ "data": null
+}
+```
+
+```
+{
+ "status_code": "CDC-200",
+ "status_message": "OK",
+ "data": {
+ "id":"2",
+ "employee_code": "20200301",
+ "employee_name": "ferry",
+ "employee_address": "Jl.Mangga Besar XIII",
+ "company_id": "11",
+ "company_code": "cdc-01",
+ "branch_id": "7"
+ "branch_code": "jkt-01"
+ "created" : "2020-12-03 09:44:02",
+ "modified" : "2020-12-03 09:44:02",
+ }
+}
+```
+
+### Logic
+
+#### Validation
+- id : required and not empty
+
+### Scenario Test
+
+#### Case : Negative Case 1
+
+Request Payload : empty
+
+Response HTTP Status Code : 400
+
+Response Payload :
+```
+{
+ "status_code": "cdc-400",
+ "status_message": "id is required",
+ "data": null
+}
+```
+
+#### Case : Negative Case 2
+
+Request Payload :
+```
+{}
+```
+
+Response HTTP Status Code : 400
+
+Response Payload :
+```
+{
+ "status_code": "cdc-400",
+ "status_message": "id is required",
+ "data": null
+}
+```
+
+#### Case : Negative Case 3
+
+Request payload :
+```
+{
+ "id": ""
+}
+```
+
+Response HTTP Status Code : 400
+
+Response Payload :
+```
+{
+ "status_code": "cdc-400",
+ "status_message": "id is empty",
+ "data": null
+}
+```
+
+#### Case : Negative Case 4
+
+Request Payload
+```
+{
+ "id": "random"
+}
+```
+
+Response HTTP Status Code : 404
+
+Response Payload
+```
+{
+ "status_code": "cdc-404",
+ "status_message": "id not found",
+ "data": null
+}
+```
+
+#### Case : Positive Case
+
+Request Payload :
+```
+{
+ "id": "2",
+}
+```
+
+Response HTTP Status Code : 200
+
+Response Payload :
+```
+{
+ "status_code": "CDC-200",
+ "status_message": "OK",
+ "data": {
+ "id":"2",
+ "employee_code": "20200301",
+ "employee_name": "ferry",
+ "employee_address": "Jl.Mangga Besar XIII",
+ "company_id": "11",
+ "company_code": "cdc-01",
+ "branch_id": "7"
+ "branch_code": "jkt-01"
+ "created" : "2020-12-03 09:44:02",
+ "modified" : "2020-12-03 09:44:02",
+ }
+}
+```
+
+# Edit Data Employee
+
+### Endpoint
+PUT /regions/:id
+
+### Headers
+Key | Value
+--- | ---
+Content-Type | application/json
+Accept | application/json
+
+### Request Payloads
+Name | Type | Example Value
--- | --- | ---
-nik | 20201201 | 1432001
-name | ferry | ferry setiawan
-address | Jl.Mangga Besar XIII | Jl.Sunter Agung Perkasa I
+id | string | 2
+employee_code | string | 20201201
+employee_name | string | ferry
+employee_address | string | Jl.Mangga Besar XIII
+company_id | string | 11
+branch_id | string | 7
+```
+{
+ "id": "2",
+ "employee_code": "20200301",
+ "employee_name": "ferry",
+ "employee_address": "Jl.Mangga Besar XIII",
+ "company_id": "11",
+ "branch_id": "7"
+}
+```
+
+### Response Payloads
+HTTP Code | Status | Description
+--- | --- | ---
+400 | Bad Request | Bad request payload
+404 | Not Found | User not found in database
+500 | Internal Server Error | some un-handle error in server
+200 | OK | OK
+```
+{
+ "status_code": "CDC-400",
+ "status_message": "Bad Request",
+ "data": null
+}
+```
+
+```
+{
+ "status_code": "CDC-200",
+ "status_message": "OK",
+ "data": {
+ "id":"2",
+ "employee_code": "20200301",
+ "employee_name": "ferry",
+ "employee_address": "Jl.Mangga Besar XIII",
+ "company_id": "11",
+ "company_code": "cdc-01",
+ "branch_id": "7"
+ "branch_code": "jkt-01"
+ "created" : "2020-12-03 09:44:02",
+ "modified" : "2020-12-03 09:44:02",
+ }
+}
+```
+
+### Logic
+
+#### Validation
+- id : required and not empty
+- employee_code : not empty
+- employee_name : not empty
+- employee_address : not empty
+- company_id : not empty
+- branch_id: not empty
+
+### Scenario Test
+
+#### Case : Negative Case 1
+
+Request Payload : empty
+
+Response HTTP Status Code : 400
+
+Response Payload :
+```
+{
+ "status_code": "cdc-400",
+ "status_message": "id is required",
+ "data": null
+}
+```
+
+#### Case : Negative Case 2
+
+Request Payload :
+```
+{}
+```
+
+Response HTTP Status Code : 400
+
+Response Payload :
+```
+{
+ "status_code": "cdc-400",
+ "status_message": "id is required",
+ "data": null
+}
+```
+
+#### Case : Negative Case 3
+
+Request payload :
+```
+{
+ "id": ""
+}
+```
+
+Response HTTP Status Code : 400
+
+Response Payload :
+```
+{
+ "status_code": "cdc-400",
+ "status_message": "id is empty",
+ "data": null
+}
+```
+
+#### Case : Negative Case 4
+
+Request Payload
+```
+{
+ "id": "random"
+}
+```
+
+Response HTTP Status Code : 404
+
+Response Payload
+```
+{
+ "status_code": "cdc-404",
+ "status_message": "id not found",
+ "data": null
+}
+```
+
+#### Case : Negative Case 5
+
+Request Payload
+```
+{
+ "id": "2",
+ "employee_code": ""
+}
+```
+
+Response HTTP Status Code : 404
+
+Response Payload
+```
+{
+ "status_code": "cdc-404",
+ "status_message": "employee_code is empty",
+ "data": null
+}
+```
+
+#### Case : Negative Case 6
+
+Request Payload
+```
+{
+ "id": "2",
+ "employee_name": ""
+}
+```
+
+Response HTTP Status Code : 404
+
+Response Payload
+```
+{
+ "status_code": "cdc-404",
+ "status_message": "employee_name is empty",
+ "data": null
+}
+```
+
+#### Case : Negative Case 7
+
+Request Payload
+```
+{
+ "id": "2",
+ "employee_address": ""
+}
+```
+
+Response HTTP Status Code : 404
+
+Response Payload
+```
+{
+ "status_code": "cdc-404",
+ "status_message": "employee_address is empty",
+ "data": null
+}
+```
+
+#### Case : Negative Case 8
+
+Request Payload
+```
+{
+ "id": "2",
+ "company_id": ""
+}
+```
+
+Response HTTP Status Code : 404
+
+Response Payload
+```
+{
+ "status_code": "cdc-404",
+ "status_message": "company_id is empty",
+ "data": null
+}
+```
+
+#### Case : Negative Case 9
+
+Request Payload
+```
+{
+ "id": "2",
+ "branch_id": ""
+}
+```
+
+Response HTTP Status Code : 404
+
+Response Payload
+```
+{
+ "status_code": "cdc-404",
+ "status_message": "branch_id is empty",
+ "data": null
+}
+```
+
+#### Case : Negative Case 10
+
+Request Payload
+```
+{
+ "id": "2",
+ "employee_code": "random"
+}
+```
+
+Response HTTP Status Code : 404
+
+Response Payload
+```
+{
+ "status_code": "cdc-404",
+ "status_message": "employee_code not found",
+ "data": null
+}
+```
+
+#### Case : Negative Case 11
+
+Request Payload
+```
+{
+ "id": "2",
+ "employee_code": "202003"
+}
+```
+
+Response HTTP Status Code : 404
+
+Response Payload
+```
+{
+ "status_code": "cdc-404",
+ "status_message": "employee_code already in use",
+ "data": null
+}
+```
+
+#### Case : Positive Case 1
+
+Request Payload :
+```
+{
+ "id": "2",
+}
+```
+
+Response HTTP Status Code : 200
+
+Response Payload :
+```
+{
+ "status_code": "CDC-200",
+ "status_message": "OK",
+ "data": {
+ "id":"2",
+ "employee_code": "20200301",
+ "employee_name": "ferry",
+ "employee_address": "Jl.Mangga Besar XIII",
+ "company_id": "11",
+ "company_code": "cdc-01",
+ "branch_id": "7"
+ "branch_code": "jkt-01"
+ "created" : "2020-12-03 09:44:02",
+ "modified" : "2020-12-04 10:40:02",
+ }
+}
+```
+
+#### Case : Positive Case 2
+
+Request Payload :
+```
+{
+ "id": "2",
+ "employee_code": "20001",
+}
+```
+
+Response HTTP Status Code : 200
+
+Response Payload :
+```
+{
+ "status_code": "CDC-200",
+ "status_message": "OK",
+ "data": {
+ "id":"2",
+ "employee_code": "20001",
+ "employee_name": "ferry",
+ "employee_address": "Jl.Mangga Besar XIII",
+ "company_id": "11",
+ "company_code": "cdc-01",
+ "branch_id": "7"
+ "branch_code": "jkt-01"
+ "created" : "2020-12-03 09:44:02",
+ "modified" : "2020-12-04 10:40:02",
+ }
+}
+```
+
+#### Case : Positive Case 3
+
+Request Payload :
+```
+{
+ "id": "7",
+ "employee_name": "Ferry Setiawan",
+}
+```
+
+Response HTTP Status Code : 200
+
+Response Payload :
+```
+{
+ "status_code": "CDC-200",
+ "status_message": "OK",
+ "data": {
+ "id":"2",
+ "employee_code": "20200301",
+ "employee_name": "Ferry Setiawan",
+ "employee_address": "Jl.Mangga Besar XIII",
+ "company_id": "11",
+ "company_code": "cdc-01",
+ "branch_id": "7"
+ "branch_code": "jkt-01"
+ "created" : "2020-12-03 09:44:02",
+ "modified" : "2020-12-04 10:40:02",
+ }
+}
+```
+
+#### Case : Positive Case 4
+
+Request Payload :
+```
+{
+ "id": "7",
+ "employee_address": "Jl. Sunter Agung Niaga",
+}
+```
+
+Response HTTP Status Code : 200
+
+Response Payload :
+```
+{
+ "status_code": "CDC-200",
+ "status_message": "OK",
+ "data": {
+ "id":"2",
+ "employee_code": "20200301",
+ "employee_name": "ferry",
+ "employee_address": "Jl. Sunter Agung Niaga",
+ "company_id": "11",
+ "company_code": "cdc-01",
+ "branch_id": "7"
+ "branch_code": "jkt-01"
+ "created" : "2020-12-03 09:44:02",
+ "modified" : "2020-12-04 10:40:02",
+ }
+}
+```
+
+#### Case : Positive Case 5
+
+Request Payload :
+```
+{
+ "id": "7",
+ "company_id": "5",
+}
+```
+
+Response HTTP Status Code : 200
+
+Response Payload :
+```
+{
+ "status_code": "CDC-200",
+ "status_message": "OK",
+ "data": {
+ "id":"2",
+ "employee_code": "20200301",
+ "employee_name": "ferry",
+ "employee_address": "Jl.Mangga Besar XIII",
+ "company_id": "5",
+ "company_code": "cdc-01",
+ "branch_id": "7"
+ "branch_code": "jkt-01"
+ "created" : "2020-12-03 09:44:02",
+ "modified" : "2020-12-04 10:40:02",
+ }
+}
+```
+
+#### Case : Positive Case 6
+
+Request Payload :
+```
+{
+ "id": "7",
+ "branch_id": "15",
+}
+```
+
+Response HTTP Status Code : 200
+
+Response Payload :
+```
+{
+ "status_code": "CDC-200",
+ "status_message": "OK",
+ "data": {
+ "id":"2",
+ "employee_code": "20200301",
+ "employee_name": "ferry",
+ "employee_address": "Jl.Mangga Besar XIII",
+ "company_id": "11",
+ "company_code": "cdc-01",
+ "branch_id": "15"
+ "branch_code": "jkt-01"
+ "created" : "2020-12-03 09:44:02",
+ "modified" : "2020-12-04 10:40:02",
+ }
+}
+```
+
+## Delete Data Employee
+
+### Endpoint
+DELETE /employees/:id
+
+### Headers
+Key | Value
+--- | ---
+Content-Type | application/json
+Accept | application/json
+
+### Request Payloads
+Name | Type | Example Value
+--- | --- | ---
+id | string | 2
+```
+{
+ "id": "2",
+}
+```
+
+### Response Payloads
+HTTP Code | Status | Description
+--- | --- | ---
+400 | Bad Request | Bad request payload
+404 | Not Found | User not found in database
+500 | Internal Server Error | some un-handle error in server
+200 | OK | OK
+```
+{
+ "status_code": "CDC-400",
+ "status_message": "Bad Request",
+ "data": null
+}
+```
+
+```
+{
+ "status_code": "CDC-200",
+ "status_message": "OK",
+ "data": null
+}
+```
+
+### Logic
+
+#### Validation
+- id : required and not empty
+
+### Scenario Test
+
+#### Case : Negative Case 1
+
+Request Payload : empty
+
+Response HTTP Status Code : 400
+
+Response Payload :
+```
+{
+ "status_code": "cdc-400",
+ "status_message": "id is required",
+ "data": null
+}
+```
+
+#### Case : Negative Case 2
+
+Request Payload :
+```
+{}
+```
+
+Response HTTP Status Code : 400
+
+Response Payload :
+```
+{
+ "status_code": "cdc-400",
+ "status_message": "id is required",
+ "data": null
+}
+```
+
+#### Case : Negative Case 3
+
+Request payload :
+```
+{
+ "id": ""
+}
+```
+
+Response HTTP Status Code : 400
+
+Response Payload :
+```
+{
+ "status_code": "cdc-400",
+ "status_message": "id is empty",
+ "data": null
+}
+```
+
+#### Case : Negative Case 4
+
+Request Payload
+```
+{
+ "id": "random"
+}
+```
+
+Response HTTP Status Code : 404
+
+Response Payload
+```
+{
+ "status_code": "cdc-404",
+ "status_message": "id not found",
+ "data": null
+}
+```
+
+#### Case : Positive Case
+
+Request Payload :
+```
+{
+ "id": "2",
+}
+```
-# Delete
+Response HTTP Status Code : 200
+Response Payload :
+```
+{
+ "status_code": "CDC-200",
+ "status_message": "OK",
+ "data": null
+}
+```
\ No newline at end of file