Feature 5: A student accepts a teaching offer - Skydddoogg/soa2019_group2 GitHub Wiki
UI
:vertical_traffic_light: User Flow
- ขั้นตอนที่ 1: ไปที่หน้ารายการข้อเสนอเพื่อดูข้อเสนอทั้งหมดที่เข้ามา
- ขั้นตอนที่ 2: เลือกข้อเสนอที่ต้องการดูรายละเอียด
- ขั้นตอนที่ 3: ดูข้อมูลของติวเตอร์ที่เป็นผู้ยื่นข้อเสนอ
- ขั้นตอนที่ 4: กดยืนยันการรับข้อเสนอ
:zap: Services
Offer service
- Database: Firebase real-time database
- Pros:
- หากมีการยื่นข้อเสนองานสอนมา จะทำให้ผู้ที่ได้รับข้อเสนอมีการแจ้งเตือนทันที
- Cons:
- รูปแบบข้อมูลของการส่งข้อเสนอไม่เหมาะกับการเก็บแบบ JSON
- Pros:
- Database: Firebase real-time database
Tutor-Finding Post service
- Database: Firebase real-time database
- Pros:
- ข้อมูลเหมาะกับการเก็บแบบ JSON เนื่องจากไม่จำเป็นต้อง Unique ข้อมูล (Non-Primary Key) และ firebase สามารถเจนเป็น hash ให้อัตโนมัติ
- Cons:
- ไม่จำเป็นต้องใช้ความเร็วขนาด Real-time
- Pros:
- Database: Firebase real-time database
Tutor Review service
- Database: Firebase real-time database
- Pros:
- ทำให้ผู้ใช้ที่อยู่ในหน้าดูโปรไฟล์ติวเตอร์ สามารถเห็นรีวิวแบบ real-time
- Cons:
- firebase ต้องดึงข้อมูลรีวิวทั้งหมด จึงทำให้เกิดความล่าช้าเนื่องจากข้อมูลมีขนาดใหญ่
- Pros:
- Database: Firebase real-time database
Tutor service
- Database: Firebase real-time database
- Pros:
- เนื่องจากเป็น NoSQL ทำให้ประหยัด Query ไม่ต้อง join ข้อมูลหลาย table เราสามารถดึงออกมาเป็นก้อน object ผ่าน class model
- หากติวเตอร์มีการอัพเดทข้อมูลจะทำให้ผู้เรียนสามารถเห็นข้อมูลที่เปลี่ยนแปลงได้ทันที เช่น เวลาที่สะดวกสอน
- Cons:
- firebase ต้องดึงข้อมูลติวเตอร์ทั้งหมด จึงทำให้เกิดความล่าช้าเนื่องจากข้อมูลมีขนาดใหญ่
- Pros:
- Database: Firebase real-time database
:scroll: Detailed Actions
- Action: ไปที่หน้ารายการข้อเสนอ
-
Descriptive view
Input
: ผู้เรียนที่ทำการเข้าสู่ระบบแล้วOutput
: รายการข้อเสนอที่ได้รับ
-
Technical view
-
Event | Endpoint URL | Service | Request | Response |
---|---|---|---|---|
Get offers | GET /offers/:studentid |
Offer | Student ID | รายการข้อเสนอ |
- Action: ไปยังหน้ารายละเอียดข้อเสนอ
-
Descriptive view
Input
: ข้อเสนอที่ถูกเลือกOutput
: รายละเอียดข้อเสนอ
-
Technical view
-
Event | Endpoint URL | Service | Request | Response |
---|---|---|---|---|
Get offer detail | GET /offers/:studentid/offerdetail/:offerid |
Offer | Offer ID และ Student ID | ข้อมูลข้อเสนอ |
- Action: ตรวจสอบรายละเอียดข้อเสนอ
There is no event
- Action: ยืนยันการรับข้อเสนอ
-
Descriptive view
Input
: ข้อเสนอที่ถูกเลือกOutput
: กล่องข้อความแจ้งการยืนยันที่จะรับข้อเสนอ
-
Technical view
-
Event | Endpoint URL | Service | Request | Response |
---|---|---|---|---|
Get offers | GET /offers/:studentid |
Offer | Student ID | รายการข้อเสนอ |
Accept for a desired offer | POST /tutorfindingpost/:postid/acceptoffer |
Tutor-Finding Post | Post ID | Success/Fail message |
- Action: ดูข้อมูลติวเตอร์
-
Descriptive view
Input
: ข้อเสนอที่ถูกเลือกOutput
: โปรไฟล์ของติวเตอร์
-
Technical view
-
Event | Endpoint URL | Service | Request | Response |
---|---|---|---|---|
Get tutor's information | GET /tutor/:tutorid |
Tutor | Tutor ID | ข้อมูลของติวเตอร์ |
Get all review messages for tutor | GET /tutor/:tutorid/reviews |
Tutor Review | Tutor ID | comments ที่ติวเตอร์ได้มา |
- Action: ย้อนกลับไปหน้ารายละเอียดข้อเสนอ
-
Descriptive view
Input
: ข้อเสนอที่ถูกเลือกมาแล้วOutput
: รายละเอียดข้อเสนอ
-
Technical view
-
Event | Endpoint URL | Service | Request | Response |
---|---|---|---|---|
Get offer detail | GET /offers/:studentid/offerdetail/:offerid |
Offer | Offer ID และ Student ID | ข้อมูลข้อเสนอ |
- Action: ย้อนกลับไปหน้ารายการข้อเสนอ
-
Descriptive view
Input
: ผู้เรียนที่ทำการเข้าสู่ระบบแล้วOutput
: รายการข้อเสนอที่ได้รับ
-
Technical view
-
Event | Endpoint URL | Service | Request | Response |
---|---|---|---|---|
Get offers | GET /offers/:studentid |
Offer | Student ID | รายการข้อเสนอ |
- Action: ตรวจสอบรายละเอียดข้อเสนอ
There is no event