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
  • Tutor-Finding Post service
    • Database: Firebase real-time database
      • Pros:
        • ข้อมูลเหมาะกับการเก็บแบบ JSON เนื่องจากไม่จำเป็นต้อง Unique ข้อมูล (Non-Primary Key) และ firebase สามารถเจนเป็น hash ให้อัตโนมัติ
      • Cons:
        • ไม่จำเป็นต้องใช้ความเร็วขนาด Real-time
  • Tutor Review service
    • Database: Firebase real-time database
      • Pros:
        • ทำให้ผู้ใช้ที่อยู่ในหน้าดูโปรไฟล์ติวเตอร์ สามารถเห็นรีวิวแบบ real-time
      • Cons:
        • firebase ต้องดึงข้อมูลรีวิวทั้งหมด จึงทำให้เกิดความล่าช้าเนื่องจากข้อมูลมีขนาดใหญ่
  • Tutor service
    • Database: Firebase real-time database
      • Pros:
        • เนื่องจากเป็น NoSQL ทำให้ประหยัด Query ไม่ต้อง join ข้อมูลหลาย table เราสามารถดึงออกมาเป็นก้อน object ผ่าน class model
        • หากติวเตอร์มีการอัพเดทข้อมูลจะทำให้ผู้เรียนสามารถเห็นข้อมูลที่เปลี่ยนแปลงได้ทันที เช่น เวลาที่สะดวกสอน
      • Cons:
        • firebase ต้องดึงข้อมูลติวเตอร์ทั้งหมด จึงทำให้เกิดความล่าช้าเนื่องจากข้อมูลมีขนาดใหญ่

: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