Report7 Final Project Report
Report7 Final Project Report
FPT UNIVERSITY
SWP490_G11
Nguyen The Vinh – Leader – SE05720
Le Thanh Tung – Technical leader - HE141097
Group Members Vo Duc Tai - Member - HE141458
Tran Xuan Son – Member - HE140780
Doan Minh Duc – Member - HE141516
Supervisor Tran Thu Thuy - ThuyTT108
Ext Supervisor None
Capstone Project
FSM
code
- Hanoi, August/2022 -
Table of Contents
Acknowledgement 12
Definition and Acronyms 12
I. Project Introduction 13
1. Overview 13
1.1. Project Information 13
1.2. Project Team 13
2. Product Background 13
3. Existing Systems 14
3.1. Vlance 14
3.2. Fiver 15
4. Business Opportunity 15
5. Software Product Vision 16
6. Project Scope & Limitations 16
6.1. Major Features 16
6.1.1. For Admin 16
6.1.2. For Guest 17
6.1.3. For Buyer 17
6.1.4. For Seller 18
6.2. Limitations & Exclusions 18
6.2.1 Limitations 18
II. Project Management Plan 18
1. Overview 18
1.1. WBS & Estimation 18
1.2. Project Objectives 22
1.2.1. Timelines 22
1.2.2. Allocated Effort 22
1.3. Project Risks 23
2. Management Approach 24
2.1. Project Process 24
2.2. Quality Management 24
2.3. Training Plan 24
3. Master Schedule 25
4. Project Organization 26
4.1 Team & Structure 26
4.2. Role & Responsibility 26
5. Project Communications 27
6. Configuration Management 27
6.1. Document Management 27
6.2. Source Code Management 27
6.3. Tools & Infrastructures 27
III. Software Requirement Specification 28
1. Overall Description 28
2. User Requirements 29
2.1. Actors 29
2.2. Use Cases 29
2.2.1. Diagram(s) 29
2.2.1.1. Use Cases diagram for Guest 29
2.2.1.2. Use Cases diagram for Buyer 30
2.2.1.3. Use Cases diagram for Seller 31
2.2.1.4. Use Cases diagram for Administrator 32
2.2.2. Use Case Descriptions 33
3. Functional Requirements 43
3.1. System Functional Overview 43
3.1.1. Screens Flow 43
3.1.1.1. Screens Flow For Guest 43
3.1.1.2. Screens Flow For Buyer 44
3.1.1.3. Screens Flow For Seller 44
3.1.1.4. Screens Flow For Administrator 45
3.1.2. Screen Descriptions 45
3.1.3. Screen Authorization 47
3.1.4. Entity Relationship Diagram 50
3.2. Common feature 51
3.2.1. Home page for Guest 51
3.2.2. Home page for Buyer 53
3.2.3. Home page for Seller 54
3.2.4. Home page for Admin 55
3.2.5. Search service 55
3.3. User authentication Feature 57
3.3.1. Register 57
3.3.2. Login 57
3.4. User profile management feature 58
3.4.1. User Profile 58
3.4.2. Change password 59
3.4.3. Forgot password 59
3.5. Seller profile management feature 60
3.5.1. View Seller profile 60
3.5.2. Professional information 61
3.6. Service management feature 61
3.6.1. View list service 61
3.6.2. View detail service 63
3.6.2. Create service 64
3.7. Request management feature 64
3.7.1. View list request 64
3.7.2. View detail request 65
3.7.3. Create request 66
3.7. Offer management feature 67
3.7.1. View list offer 67
3.7.2. View detail offer 67
3.7.3. Create offer 68
3.8. Order management feature 69
3.8.1. View list order 69
3.8.2. View detail order 70
3.8.3. Create order 70
3.9. Contract management feature 71
3.9.1. View list contract 71
3.9.1. View detail contract 71
3.10 .Service rating feature 72
3.10.1. Star Rating and Review 72
3.11. Payment Management feature 73
3.11.1. Top up 73
3.11.2. Payment 74
3.11.3. View list transaction 74
3.12 User management feature 75
3.12.1. View list user 75
3.14. Category management feature 75
3.14.1. View list category 75
3.14.2. Create new category 76
4.1. External Interfaces 76
4.1.1. User Interfaces 76
4.1.2. Software Interfaces 77
4.1.3. Hardware Interfaces 77
4.2. Quality Attributes 77
4.2.1. Usability 77
4.2.2. Reliability 77
4.2.3. Performance 77
4.2.4. Security 77
5. Requirement Appendix 77
5.1. Business Rules 77
5.2. Application Messages List 78
IV. Software Design Description 80
1. Overall Description 80
1.1. Assumptions 80
1.2. Design Constraints 80
2. System Architecture Design 81
2.1. Overall Architecture 81
2.2. System Architecture 82
2.2.1 Client 82
2.2.2. Server 83
2.3. Package Diagram 84
3. System Detailed Design 85
3.1. Function related to Authentication 85
3.1.1. Class Diagram 85
3.1.2. Sequence Diagram(s) 85
3.1.2.1 Login 85
3.2. Function related to User 86
3.2.1. Class Diagram 86
3.2.2. Sequence Diagram(s) 86
3.2.2.1. View list User 86
3.2.2.2. Ban User 86
3.2.2.3. Unban User 86
3.2.2.4. Change password 87
3.2.2.5. Reset password 87
3.3. Function related to Service 88
3.3.1. Class Diagram 88
3.3.2. Sequence Diagram(s) 88
3.3.2.1. View list ofBboxservice 88
3.3.2.2.Create Boxservice 89
3.3.2.3. Update Boxservice 89
3.3.2.4. Delete Boxservice 89
3.4. Function related to Request 90
3.4.1. Class Diagram 90
3.4.2. Sequence Diagram(s) 90
3.4.2.1. Create request 90
3.4.2.2. Update request 91
3.5. Function related to Offer 91
3.5.1. Class Diagram 91
3.5.2. Sequence Diagram(s) 92
3.5.2.1. Create offer 92
3.6. Function related to Contract 92
3.6.1. Class Diagram 92
3.6.2. Sequence Diagram(s) 93
3.7.2.1. View detail contract 93
3.7.2.2. Upload delivery 93
3.8 Function related to Admin 94
3.8.1. Class Diagram 94
3.8.2. Sequence Diagram(s) 95
3.8.2.1. Update admin 95
3.8.2.2. Delete admin 95
4. Class Specification 95
4.1. Controller 95
4.1.1.AdminController 95
4.1.2. AuthController 96
4.1.3. BoxController 96
4.1.4. CatergoryController 97
4.1.5. CommentController 97
4.1.6. ContractController 97
4.1.7. FileController 98
4.1.8. PackageController 98
4.1.9. PostRequestController 99
4.1.10. SellerController 99
4.1.11. SellerDetailsInfoController 100
4.1.12. SkillController 100
4.1.13. SubCategoryController 101
4.1.14. UserController 101
4.2. Repository 101
4.2.1. ActivityTypeRepository 101
4.2.2. TransactionRepository 101
4.2.3. WalletRepository 102
4.2.4. AdminRepository 102
4.2.5. BoxRepository 102
4.2.6. BuyerRepository 102
4.2.7. CategoryRepository 102
4.2.8. CommentRepository 102
4.2.9. ContractRepository 103
4.2.10. DeliveryRepository 103
4.2.11. HistoryBoxRepository 103
4.2.12. MilestoneContractRepository 103
4.2.13. NotificationRepository 103
4.2.14. OfferRequestRepository 103
4.2.15. PackageRepository 103
4.2.16. PostRequestRepository 104
4.2.17. RatingRepository 104
4.2.18. SellerRepository 104
4.2.19. SkillMetaDataRepository 104
4.2.20. SkillRepository 104
4.2.21. SubCategoryRepository 104
4.2.22. UserRepository 104
4.3. Service 105
4.3.1. ActivityTypeService 105
4.3.2. AdminService 105
4.3.3. BoxService 105
4.3.4. CategoryService 106
4.3.5. CertificateService 106
4.3.6. CommentService 106
4.3.7. ContractService 106
4.3.8. CustomUserDetailsService 107
4.3.9. DelivertService 107
4.3.10. EducationService 107
4.3.11. ExtraOfferService 107
4.3.12. GalleryService 107
4.3.13. LanguageService 108
4.3.14. MilestoneService 108
4.3.15. NotificationService 108
4.3.16. OfferRequestService 108
4.3.17. PackageService 108
4.3.18. PostRequestService 108
4.3.19. RatingService 109
4.3.20. SellerService 109
4.3.21. SkillMetaDataService 109
4.3.22. SkillService 109
4.3.23. SubCategoryService 109
4.3.24. TransactionService 109
4.3.25. UrlProfileService 110
4.3.26. UserService 110
4.3.27. WalletService 110
5. Data & Database Design 111
5.1. Database Design 111
V. Software Testing Documentation 113
1. Scope of Testing 113
1.1. Functional requirement 113
1.2. Non-Functional requirement 114
1.3. Test Stage 114
1.4. Acceptance Criteria 115
2. Test Strategy 115
2.1 Testing Types 115
2.1.1 Unit Testing 115
2.1.2. Integration Testing 115
2.1.3. Functional Testing 115
2.1.4. User Interface Testing 116
2.2. Test Levels 116
2.3. Supporting Tools 117
3. Test Plan 117
3.1 Human Resources 117
3.2 Test Environment 117
3.3 Test Milestones 117
4. Test Cases 118
4.1. Unit test 118
4.2. Integration test 119
4.3. System test 119
5. Test Reports 120
5.1. Unit test report 120
5.2. Integration test report 120
5.3. System test report 121
5.4. Defect Logs 121
VI. Release Package & User Guides 121
1. Deliverable Package 121
2. Installation Guides 121
2.1 System Requirements 121
2.2 Installation Instruction 122
3. User Manual 124
3.1 Overview 124
3.2 User authentication 124
3.2.1. Register <Role: Guest> 124
3.2.2. Login <Role: Guest> 126
3.2.3. Forgot password <Role: Buyer/Seller> 126
3.2.4. Logout <Role: Buyer/Seller> 128
3.3 User profile management 128
3.3.1.View and Update user profile <Role: Buyer/Seller> 128
3.3.2. Change password <Role: Buyer/Seller> 130
3.4 User Type Management 131
3.4.1. Become Seller <Role: Buyer> 131
3.4.2. Switch to Buyer 133
3.4.3. Switch to Seller 133
3.5 Service management 134
3.5.1. View service <Role: Guest/Buyer> 134
3.5.2. Search service <Role: Guest/Buyer> 136
137
3.5.3. Create service <Role: Seller> 137
3.5.4. View detail Service <Role: Seller> 142
3.5.5. Update service status <Role: Seller> 143
3.5.6. Update service status <Role: Seller> 143
3.5.7. Update service <Role: Seller> 144
3.5.8. Delete service <Role: Seller> 145
3.6 Request management 145
3.6.1. Create request <Role: Buyer > 145
3.6.2. View request <Role: Seller > 148
3.6.3. Apply request <Role: Seller > 150
3.6 Offer management 151
3.6.1. Create offer <Role: Seller > 151
3.6.1. View offer <Role: Buyer > 152
3.7 Order management 153
3.7.1. Create order <Role: Buyer > 153
3.7.2. View order <Role: Buyer > 154
3.7.3. View order <Role: Seller > 156
3.7.4. Accept order <Role: Seller > 157
3.7.5. Reject order <Role: Seller > 157
3.8 Contract management 158
3.8.1. View list contract <Role: Buyer > 158
159
159
3.8.2. Comment contract <Role: Buyer > 160
3.8.3. Extra offer contract <Role: Buyer > 160
3.8.4. Cancel Extra offer contract <Role: Buyer > 161
3.8.5. Accept Extra offer contract <Role: Seller > 162
3.8.6. Upload delivery <Role: Seller > 162
3.8.7. Confirm delivery <Role: Buyer > 163
3.8.8. Report contrac <Role: Seller> 164
3.9 Wallet management 164
3.9.1. View wallet <Role: Buyer/Seller> 164
3.9.2. Top up wallet <Role: Buyer/Seller> 166
3.10. Homepage admin management <Role: Admin> 167
3.10. User management <Role: Admin> 168
3.10.1. View list user <Role: Admin> 168
3.10.2. View detail user <Role: Admin> 169
3.10.3. Ban user <Role: Admin> 170
3.10.4. Ban user <Role: Admin> 170
3.10.5. View list admin<Role: Admin> 171
3.10.5. View detail admin<Role: Admin> 172
3.10.6. Delete admin<Role:Admin> 173
3.11. Category management <Role: Admin> 173
3.11.1 View list category 173
3.11.2. Create new category 174
3.11.3 View list subcategory<Role:Admin> 175
3.11.4. Create new a subcategory<Role:Admin> 176
Acknowledgement
Dear
First words, the SWP490-G11 team would like to send greetings and best wishes for health to the
school's management board and all lecturers of FPT University Hanoi.
After meeting the necessary conditions and being approved by FPT University, we established the
SWP490-G11 project team. The idea of the project is to connect freelancers with people who need to
hire a specific employment service. The project is named Freelance Services Marketplace - FSM, true
to its meaning.
Although the total project implementation time is not much, only 4 months, with the maximum
facilitation from FPT University, the efforts of all members, and especially the dedicated guidance of
Mrs. Tran Thu Thuy, the team completed the project well.
In this report, the team will provide detailed information on the plan, implementation, project
results, and instructions on how to use the solution of the Freelance Services Marketplace project.
The team hopes that this project will reflect the capacity, working experience, and efforts of all
project members. Nothing is perfect, so errors or limitations may still exist in this project, the team
would like to listen to and acknowledge all evaluations and suggestions from the lecturers with an
open mind best. The team will try to upgrade and improve this project in the future.
Once again, the SWP490-G11 team would like to thank FPT University for creating all favorable
conditions for the team to carry out this project. And especially thanks to Mrs. Tran Thu Thuy for
guiding and helping the group during the past time.
Sincerely,
SWP490-G11 Team
BA Business Analysis
BR Business Rule
PM Project Manager
SDD Software Design Description
UC Use Case
TC Test case
UT Unit test
BR Business analysis
I. Project Introduction
1. Overview
1.1. Project Information
● Project name: Freelance Services Marketplace
● Project code: FSM
● Group name: SWP490-G11
● Software type: Website
2. Product Background
Today, with the development of the internet, geographical distance is almost eliminated. People
around the world can connect anytime, anywhere in work and play. Over the past two years, the
Covid-19 epidemic has profoundly impacted many areas of life. In addition to health problems,
employment is also hotter than ever, when most people cannot go out or come to work. Staff
reduction is also typical in some small and medium companies to cut costs. The number of skilled
workers unemployed has increased. According to the General Statistics of Vietnam, the
underemployment in the working-age population in 2021 is 1.4 million people, an increase of
370,000 people compared to 2020.
The positive point is that the trend of working from home online is increasingly popular. More and
more businesses, organizations, and individuals are choosing to work online to adapt to the
epidemic. Freelancers in Vietnam are increasing day by day, but the situation of not paying money or
defrauding freelancers is quite common, so it is important to ensure the interests of the employer
and the employer matter of concern.
So we offer the market a solution called the Freelance Services Market (FSM). This is a website, an
intermediary that connects people with specialized skills with people with jobs to solve. Sellers can
post what services they offer. Buyers will choose the service they need with options for price and
product requirements. In addition, the sellers in the system can connect and share work.
3. Existing Systems
3.1. Vlance
❖ Overview::
● Link: https://www.vlance.vn
● vLance.vn is the largest job site in Vietnam. With a community of hundreds of thousands
of talented freelancers gathered from all over Vietnam, vLance.vn provides your
business with quality human resources to do the job at the most reasonable cost.
vLance.vn has successfully connected hundreds of businesses and freelancers across
Vietnam in the fields of software development, graphic design - website, online
marketing, accounting - tax.
❖ Strengths:
❖ Limitations:
❖ Overview::
● Link: https://www.fiverr.com
● Fiverr is a very large freelance network in the international market. This is a place of
"trade" between individuals, businesses, and freelancers who are working to make
money. Fiverr has millions of services created by individuals or groups.
❖ Strengths:
❖ Limitations:
● The Vietnamese language is not supported yet, the community is mainly foreigners
● There is no feature to connect freelancers
4. Business Opportunity
According to survey results from Anphabe Joint Stock Company, 14% of Vietnam's knowledge human
resources are now full-time freelancers. 26% of permanent workers are still willing to take on
freelance work outside when appropriate and 13% still work in parallel with part-time and
permanent work outside. In the coming time, due to the impact of the Covid-19 epidemic, the
number of part-time freelancers will increase from 39% to 44%. At the same time with the trend of
working online becoming more and more popular today, the needs of both sides, people with jobs,
and people needing jobs are increasingly diverse. This is the right time to come up with a solution to
help bring the two together.
Although there are systems on the market that provide similar solutions, there are still many
limitations such as the interface, not being optimal for both buyers and sellers. FSM is confident to
bring professional and comprehensive solutions, the perfect connection for buyers and sellers of
services.
5. Software Product Vision
The website has an intuitive interface, language, and features optimized for the Vietnamese market.
The operations are simple and easy to use, so users do not have to spend too much time learning
how to use them. Services give users a variety of options. Simple ordering operation, shortening
time, saving costs for buyers. The post a request feature helps connect sellers and share jobs with
each other, a management mechanism helps ensure the interests of buyers and sellers.
It is expected that soon, FSM will become the largest freelance job service website in Vietnam,
connecting millions of buyers and sellers.
Buyer People who already had an account and used Freelance Services Marketplace.
They will search and make offers to candidates they see fit for their job
Seller People who already had an account and used Freelance Services Marketplace.
They will be the ones to post certain services that they can provide
Freelance Services Marketplace website will provide the following functions to admin:
FE Description
02 Create admin, View list admin, View detail admin, Edit admin, Filter admin
03 View list user, view detail user, ban user, unban user, filter user
04 View list category, View detail category, Filter category, Create category, Edit
category, Delete category
07 Revenue, Count all users, Count all services, Count all requests
08 Check contract completion
01 Register, Login
02 Search service, View list service, View detail service, Filter service
02 View user profile, Update user profile, Change password, Forgot password
04 Search service, View list service, View detail service, Filter service
06 Create request, Update request, Delete request, View list request, View detail
request, Invite seller, Accept apply
07 View list offer, View detail offer, Accept offer, Reject offer
09 View list contract, View detail contract, Request extra, Delivery confirm, Report
contract, Service rating
10 Become seller, Switch to seller, Add certificate, Add education, Add skill
02 View user profile, Update user profile, Change password, Forgot password
04 Search request, View list request, View detail request, Filter request
05 View seller profile, Add skill, Update skill, Add education, Update education, Add
certificate, Update certificate
06 View list service, View detail service, Create service, Update service, Delete
service, Pause service, Activate service
09 View list order, View detail order, Accept order, Reject order
10 View list contract, View detail contract, Upload delivery, Accept request extra,
Reject request extra
11 Switch to buyer
(man-days)
1 Common 42
2 User authentication 31
6 Notification Management 14
7 Service management 24
8 Request management 41
9 Offer management 38
10 Order management 41
14
11 Contract management 43
12 Service rating 10
14 Wallet management 34
15 Admin management 12
16 User management 16
16.1 View list user Simple 5
17 Category management 12
18 Transaction management 10
19 Dashboard management 30
4 Knowledge and skill are Medium Medium The technical leader will study and
limitations transfer them to all members
during the project.
We use the Iterative and Incremental Software Process Model – a process that combines the
iterative
design method with the incremental build model. It is developed in multiple small phases and
through
repeated cycles until the entire product development is completed. We choose this process model
because this project’s scope is big and the major requirements are defined clearly but expect to add
more detail over time. It has these advantages:
3. Master Schedule
4. Project Organization
4.1 Team & Structure
Role Responsibility
Test Responsible for test execution, including test set-up and test run,
5. Project Communications
Weekly meeting with All members, Report project status, Weekly Google meet
supervisor supervisor discuss problems
Daily discussion with team All members Discuss problems and Daily Google
member meet,
report progress
Facebook
messenger
Urgent meeting All members Fix bugs and support When any Google meet
about technical issues member
has issues
6. Configuration Management
6.1. Document Management
● Documents are stored in Google Drive.
Database MySQL
Diagramming DrawIO
The context diagram below illustrates the external entities and system interfaces for version 1.0. The
system is expected to grow over several releases, and towards commercialization.
2. User Requirements
2.1. Actors
# Actor Description
2 Buyer People who already had an account and used Freelance Services
Marketplace. They will search and make offers to candidates they see fit
for their job
3 Seller People who already had an account and used Freelance Services
Marketplace. They will be the ones to post certain services that they can
provide
2 Login Buyer/Seller/Admin ❖ Trigger: The buyer or seller wants login into the website or
administrator wants login into the system’s management page
❖ Description: Allow buyers, sellers, and admins who have FSM
accounts to login
❖ Pre-condition: Buyers, sellers and admins have successfully
accessed the website
❖ Post-conditions: Buyers, sellers, admin successfully logged in
and the system displays the corresponding page for each
account type
3 Logout Buyer/Seller/Admin ❖ Trigger: Buyer or seller wants to Log out of the website or
admin wants to log out of the system’s management page
❖ Description: Allow buyers, sellers, and admins who have FSM
accounts to logout
❖ Pre-condition: Buyers, sellers and admins have successfully
logged into the website
❖ Post-conditions: Buyers, sellers, and admins successfully log out
of the website
4 View user profile Buyer/Seller ❖ Trigger: Buyers, sellers see their basic profile information
❖ Description: Allows buyers, sellers to view their basic profile
information
❖ Pre-condition: : Buyers and sellers have successfully logged into
the website
❖ Post-conditions: The web page displays the user’s basic
information
5 Update user profile Buyer/Seller ❖ Trigger: Buyers, sellers update their basic profile information
❖ Description: Allows buyers, sellers to update their basic profile
information
❖ Pre-condition: Buyers and sellers have successfully logged into
the website
❖ Post-conditions: Changed information is saved successfully
6 Change passwords Buyer/Seller ❖ Trigger: Buyer, seller change their account password
❖ Description: Allows buyer, seller change their account password
❖ Pre-condition: Buyers and sellers have successfully logged into
the website
❖ Post-conditions: New password successfully updated
7 Forgot password Buyer/Seller ❖ Trigger: Buyers and sellers want to recover their password
when logging in to the website but forgot their password
❖ Description: Allow buyers and sellers to retrieve passwords
❖ Pre-condition: Buyer and Seller successfully access the website
❖ Post-conditions: New password sent to user
8 View notification Buyer/Seller ❖ Trigger: Buyers and sellers see the notification
❖ Description: Allow buyers and sellers see the notification
❖ Pre-condition: Buyers and sellers have successfully logged into
the website
9 Delete notification Buyer/Seller ❖ Trigger: Buyers and sellers want to delete their notification
❖ Description: Allow buyers and sellers delete the notification
❖ Pre-condition:Buyers and sellers have successfully logged into
the website
❖ Post-conditions: Successful delete selected message
17 Activate service Seller ❖ Trigger: The Seller wants the service to be visible to other
buyers
❖ Description: Allow Seller to change the service’s status to
“open”
❖ Pre-condition: Status of service in “Pause”
❖ Post-conditions: The service’s status is changed to “Active”
18 Pause service Seller ❖ Trigger: The seller wants the service to be invisible to other
buyers
❖ Description: Allow Seller to change the service’s status to
“pause”
❖ Pre-condition: Status of service in “Activate”
❖ Post-conditions: The service’s status is changed to “ Pause “
19 View top seller Guest/Buyer ❖ Trigger: Guest and Buyers want to see the list and details of top
sellers
❖ Description: Allow Guest and Buyers to see the list and details
of top sellers
❖ Pre-condition: Guest and Buyers successfully access the website
❖ Post-conditions: The website displays a list of top sellers
20 View seller profile Guest/Buyer/Seller ❖ Trigger: Guest,Buyer and Seller wants to see advanced Seller
information
❖ Description:Allow Guest,Buyer and Seller see advanced Seller
information
❖ Pre-condition: Guest, Buyers, and Seller successfully access the
website
26 Create request Buyer ❖ Trigger: Buyer wants to post a request to find a seller for his
work
❖ Description: Allow the buyer to post a request
❖ Pre-condition: Buyer have successfully logged into the website
❖ Post-conditions: Save the request’s information
27 View list request Buyer/Seller ❖ Trigger: Buyer and Seller want to see the list of the request
❖ Description: Allow Buyer and Seller to see the list of the request
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays the request list
28 View detail request Buyer/Seller ❖ Trigger: Buyer and Seller want to see the details of the request
❖ Description: Allow Buyer and Seller to see and details of the
request
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays the request detail
29 Update request Buyer ❖ Trigger: Buyer wants to update his posted request
❖ Description: Buyer to update his posted request
❖ Pre-condition: The status of the request is “Open”
❖ Post-conditions: Update and save the information of the
request
30 Delete request Buyer ❖ Trigger: Buyer wants to delete his posted request
❖ Description: Allow Buyer to delete his posted request
❖ Pre-condition: The status of the request is “Open”
❖ Post-conditions: Successful delete selected request
31 Invite seller Buyer ❖ Trigger: Buyers want to invite sellers to view and apply and their
requirements
❖ Description: Allow Buyers to invite sellers to view and apply and
their requirements
❖ Pre-condition: Buyer has at least 1 request successfully created
❖ Post-conditions: Notice of the request sent to the seller
32 Apply request Seller ❖ Trigger: The seller wants to apply to the Buyer’s request
❖ Description: Allow Seller to apply to the Buyer’s request
❖ Pre-condition: The status of the request is “Open”
❖ Post-conditions: Seller Information is sent to buyer
33 Accept apply Buyer ❖ Trigger: The buyer accepts a certain seller for his request to
post
❖ Description: Allow Buyer accepts a certain seller for his request
to post
❖ Pre-condition: The status of the request is “Open”
❖ Post-conditions: The status of the request is “Close “
34 Create offer Seller ❖ Trigger: The seller wants to make an offer to the request that
the buyer posted
❖ Description: Allow Seller to make an offer to the request that
the buyer posted
❖ Pre-condition: The status of the request is “Open”
❖ Post-conditions: Offer information sent to the buyer
35 View list offer Buyer/Seller ❖ Trigger: Buyer and Seller want to see the list of the offer
❖ Description: Allow buyers to see the list of offers they receive
per request
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays the offer list
36 View detail offer Buyer/Seller ❖ Trigger: Buyer and Seller want to see the details of the offer
❖ Description: Allow buyers to see the detail of offers they
receive per request
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays the offer detail
37 Accept offer Buyer ❖ Trigger: The buyer wants to accept the offer from the seller
❖ Description: Allow the Buyer to accept the offer from the seller
❖ Pre-condition: Received at least 1 offer from the seller
❖ Post-conditions: Convert the content of the offer into a
contract
38 Create order Buyer ❖ Trigger: Buyers want to create service orders to sellers
❖ Description: Allows buyers to create service orders to sellers
❖ Pre-condition: Wallet balance must be at least equal to the
total price of the service
❖ Post-conditions: Order information is sent to the seller
39 View list order Buyer/Seller ❖ Trigger: Buyer and Seller want to see the list of the order
❖ Description: Allow Buyer and Seller to see the list of the order
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays the order list
40 View detail order Buyer/Seller ❖ Trigger: Buyer and Seller want to see the details of the order
❖ Description: Allow Buyer and Seller to see details of the order
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays order details
41 Accept order Seller ❖ Trigger: Seller wants to accept order from buyer
❖ Description: Allow seller to accept order from buyer
❖ Pre-condition: Must have at least 1 order received
❖ Post-conditions: Convert the content of the order into a
contract
42 Reject order Seller ❖ Trigger: The seller wants to reject the buyer’s order
❖ Description: Allow the seller to reject the buyer’s order
❖ Pre-condition: Must have at least 1 order received
❖ Post-conditions: Change order status to rejected
43 View list contract Buyer/Seller ❖ Trigger: Buyer and Seller want to see the list of the contract
❖ Description: Allow buyer and seller to see the list of the
contract
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays contract list
44 View detail Buyer/Seller ❖ Trigger: Buyer and Seller want to see the details of the contract
contract ❖ Description: Allow buyer and seller to see the details of the
contract
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays contract details
45 Request extra Buyer ❖ Trigger: Buyer wants to add requirements to the contract
❖ Description: Allow buyer wants to add requirements to the
contract
❖ Pre-condition: Contract status is still in progress
❖ Post-conditions: Request extra information is sent to the seller
46 Accept request Seller ❖ Trigger: Seller wants to accept request extra from Buyer
extra ❖ Description: Allow Seller to accept request extra from Buyer
❖ Pre-condition: Must receive request extra from buyer
❖ Post-conditions: Add request extra information to the contract
47 Reject request Seller ❖ Trigger: Seller wants to Reject request extra from Buyer
extra ❖ Description: Allow Seller to Reject request extra from Buyer
❖ Pre-condition: Must receive request extra from buyer
❖ Post-conditions: Keep the information of the contract intact
49 Delivery confirm Buyer ❖ Trigger: The buyer wants to confirm receipt of delivery
successfully
❖ Description: Allow the buyer to confirm receipt of delivery
successfully
❖ Pre-condition: The contract status is “In progress”
❖ Post-conditions: Change the status of the contract to Done
51 Become seller Buyer ❖ Trigger: Buyer wants to become a seller to create services
❖ Description: Allows buyers to provide advanced information
such as education, skills, and certifications to become a seller
❖ Pre-condition: Buyer have successfully logged into the website
❖ Post-conditions: Save information and grant Seller role
57 View list Buyer/Seller ❖ Trigger: Buyers and sellers want to see the list of transactions
transaction ❖ Description: Allow Buyers and sellers to see the list of
transactions
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays transaction list
58 View detail Buyer/Seller ❖ Trigger: Buyers and sellers want to see the details of
transaction transactions
❖ Description: Allow Buyers and sellers to see the details of
transactions
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays transaction details
59 View list admin Admin ❖ Trigger: The admin group leader wants to see the list of other
admin accounts
❖ Description: Allow the admin group leader to see the list of
other admin accounts
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: The website displays a list of administrators
60 View detail admin Admin ❖ Trigger: The admin group leader wants to see the detail of other
admin accounts
❖ Description: Allow the admin group leader to see detail of other
admin accounts
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: The website displays a detail of administrators
61 New admin Admin ❖ Trigger: Admin group leader wants to add another admin
account
❖ Description: Allow admin group leader to add another admin
account
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Website to save new administrator account
information
62 Update damin Admin ❖ Trigger: The administrator group leader wants to update other
administrator account information
❖ Description: Allow the administrator group leader wants to
update other administrator account information
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Website to save administrator account
informations
63 Delete admin Admin ❖ Trigger: The administrator group leader wants to delete other
administrator account
❖ Description: Allow the administrator group leader wants to
delete other administrator account
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Update admin list
64 View list user Admin ❖ Trigger: Admin wants to see the list of users
❖ Description: Allow admin to see the list of users
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: The website displays a list of user
65 View detail user Admin ❖ Trigger: Admin wants to see the detail of users
❖ Description: Allow admin to see the detail of users
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: The website displays a detail of user
66 Ban user Admin ❖ Trigger: Admin wants to block 1 user’s access
❖ Description: Allow admin to block 1 user’s access
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: User’s status changed to “Ban”
67 Unban user Admin ❖ Trigger: Admin wants to unban 1 user’s access
❖ Description: Allow admin to unban 1 user’s access
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: User’s status changed to “Normal”
68 View list category Admin ❖ Trigger: Admin wants to see the list of categories
❖ Description: Allow admin to see the list of categories
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: The website displays a list of categories
69 Create category Admin ❖ Trigger: Admin wants to create a new category
❖ Description: Allow admin to create a new category
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Save information of new category
70 Update category Admin ❖ Trigger: Admin wants to update a category
❖ Description: Allow admin to update a category
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Save information of category
71 Delete category Admin ❖ Trigger: Admin wants to delete a category
❖ Description: Allow admin to delete a category
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Update admin list category
72 View list skill Admin ❖ Trigger: Admin wants to see the list of skill by subcategory
❖ Description: Allow admin to see the list of categories by
subcategory
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: The website displays a list of skill by
subcategory
73 Create skill Admin ❖ Trigger: Admin wants to create a new skill
❖ Description: Allow admin to create a new skill
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Save information of new skill
74 Update skill Admin ❖ Trigger: Admin wants to update a skill
❖ Description: Allow admin to update a skill
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Save information of skill
75 Delete skill Admin ❖ Trigger: Admin wants to delete a skill
❖ Description: Allow admin to delete a skill
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Update admin list skill
76 View list Admin ❖ Trigger: Admin wants to see a list of system transactions
transaction ❖ Description: Allow admin wants to see a list of system
transactions
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: The website displays a list of transaction
77 View detail Admin ❖ Trigger: Admin wants to see a detail of system transactions
transaction ❖ Description: Allow admin wants to see a detail of system
transactions
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: The website displays a detail of transaction
78 Revenue Admin ❖ Trigger: The administrator wants to see the system’s revenue
statistics
❖ Description: Allow The administrator wants to see the system’s
revenue statistics
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Website displaying revenue statistics
information
79 Count users Admin ❖ Trigger: The administrator wants to see the system’s user
statistics
❖ Description: Allow The administrator wants to see the system’s
user statistics
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Website displaying user statistics information
80 Count services Admin ❖ Trigger: The administrator wants to see the system’s services
statistics
❖ Description: Allow The administrator wants to see the system’s
services statistics
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Website displaying services statistics
information
Count user Admin ❖ Trigger: The administrator wants to see the system’s user
statistics
❖ Description: Allow The administrator wants to see the system’s
user statistics
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Website displaying user statistics information
81 Count request Admin ❖ Trigger: The administrator wants to see the system’s request
statistics
❖ Description: Allow The administrator wants to see the system’s
request statistics
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Website displaying request statistics
information
82 Count contract Admin ❖ Trigger: The administrator wants to see the system’s contract
statistics
❖ Description: Allow The administrator wants to see the system’s
contract statistics
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Website displaying contract statistics
information
83 Check contract Admin ❖ Trigger: The administrator wants to check contract completion
completion ❖ Description: Allow The administrator wants to check contract
completion
❖ Pre-condition: Successfully logged in as administrator
Post-conditions: The status of the contracts uploaded for 3
days handover will be changed to “Complete"
3. Functional Requirements
3.1. System Functional Overview
3.1.1. Screens Flow
3.1.1.1. Screens Flow For Guest
3.1.1.2. Screens Flow For Buyer
Search X
Search X
Notification X
Search X
Notification X
Edit introduction X
Edit skill X
Add skill X
Edit education X
Add education X
Edit certificate X
Add certificate
Login X X X X
Register X
User profile X X
Change password X X
Forgot password X X X
Seller profile X X X
Professional information X
Add skill X
Add education X
Add certificate X
Service list X X X
Service Detail X X X
Activate service X
Pause service X
Update service X
Delete service X
Create service X
Request list X X
Request detail X X
Update request X
Delete request X
Apply request X
Create request X
Intive seller X
Offer list X X
Offer detail X X
Accept offer X
Create Offer X
Order list X X
Order detail X X
Accept Order X
Reject Order X
Create order X
Contract list X X
Contract detail X X
Upload delivery X
Service rating X
Confirm delivery X
Report contract X
Request extra X
Manage Wallet X X
Top up X X
Withdraw X X
Wallet info X X
View transaction X X
User list X
User detail X
Ban user X
Unban user X
Admin list X
Admin detail X
Update admin X
Delete admin X
Create admin X
Category list X
Category detail X
Update category X
Delete category X
New category X
Transaction list X
Transaction detail X
Skill list X
New skill X
3.1.4. Entity Relationship Diagram
Entities Description
# Entity Description
● Function Details: Seller: Manage advanced seller profile, add edit information and services
3.2.4. Home page for Admin
● Function trigger: This function is triggered when the administrator successfully logs in with
the admin account
● Function description: Admin can manage website objects
● Screen layout:
● Function Details: After successful login, the admin homepage will appear with information
such as dashboard, number of users, number of categories, number of services...
● Function Details: The guest clicks to button “Đăng ký ” on Login screen, or access to function
screens. When the guest registers successfully, the system will auto login and redirect to the
“Hompage buyer” screen
3.3.2. Login
● Function trigger: This function is triggered when the guest or user clicks to button “ Đăng
nhập ” on the home page.
● Function description: The user logs in to the FSM system.
● Screen layout:
● Function Details: When the user hasn’t logged in FSM system when they click the button
“Đăng nhập” the system will forward to the “Log in” screen.
● Function Details: After going to the View Profile screen, the User can view personal
information such as full name, username, and profile picture.
3.4.2. Change password
● Function trigger: : This function is triggered when the user clicks button “Đổi mật khẩu”
● Function description: User can change his account password
● Screen layout:
● Function Details: In the User profile screen, the user presses the "Đổi mật khẩu", a Dialog will
appear allowing the user to enter the old password and the new password to proceed with
the change.
● Function Details: After the "Professional information" screen appears, Buyer can enter
advanced information such as introduction, brand name, skills, education, certifications. This
is a step in the process of becoming a seller
o Service pack: By default, Seller will create a Basic package with title, deliverables,
delivery date, cost and contract cancellation fee.
o Test product: Seller uploads images and sample documents about the service's
products
o Confirm: Seller can choose Create new and open for Buyer to see his service, or
choose to create and close
● Function Details: After clicking view details, the quest's information will be displayed such as
title, description, start date, cost...
3.7.3. Create request
● Function trigger: This function is triggered when the buyer clicks button “Tạo yêu cầu”
● Function description: Buyers can create a request to find the right seller for their job
● Screen layout:
● Function Details: After pressing "Tạo yêu cầu", a screen will appear for the buyer to enter
information such as: Category, seller level, skills, title, requirements, cost, contract
cancellation fee...
● Function Details: The website will display a list of all the offers from the seller to the buyer's
request with basic information such as: description, delivery date, cost...
● Function Details: After clicking on the “Quản lý đặt hàng” the order list will be displayed
3.8.2. View detail order
● Function trigger: This function is triggered when the Seller clicks the button “Chi tết ” in list
service screen
● Function description: Seller can see the details of the order received
● Screen layout:
● Function Details: After pressing "details", the order information will be displayed
● Function Details: after clicking on the “Quản lý hợp đồng” the contract list will be displayed
3.9.1. View detail contract
● Function trigger: This function is triggered when the Buyer/Seller clicks the button “Chi tiết”
in list of contract
● Function description: Buyer and seller can view contract details
● Screen layout:
● Function Details: Contract details will be displayed
● Function Details: After pressing "Nạp tiền", a window will appear for the user to enter the
amount to deposit. After pressing confirm, the system will transfer the user to Paypal's
payment system
3.11.2. Payment
● Function trigger: This function is triggered when the Buyer or user clicks to button “Thanh
toán”
● Function description: Confirm and allow users to pay bills from the funds in the wallet
● Screen layout:
● Function Details: After press "Thanh toán", the payment confirmation window will be
displayed. If you press confirm, the system will deduct money from the user's wallet
● Function Details: The screen will display a list of all the users of the system, with basic
information such as name, email, age...
● Function Details: The screen will display a list of all category4. Non-Functional Requirements
● Function Details: The screen will display a box for admin to enter the category name and then
press the create button to create a new category
● The mean time to repair (MTTR): The time to handle system errors depends on the cause of
the error. Commonly, the errors are usually database connection errors, network errors,
authentication errors, etc. Such errors must take only 1-2 hours to be handled. For the
critical problems, it takes only less than 2 days.
4.2.3. Performance
● Require a powerful server machine with high-band internet access.
● Can work on almost any platform even with slower internet
● Expected number of simultaneous users should be at 1000.
● System should be able to deal with 1000 users at the same time.
● The system's database must handle at least 1000 users at any given time
● The loading page time must not exceed 3 seconds.
4.2.4. Security
● The system must use HTTPS to encrypt the information transferred between clients and
servers.
● Password must be hashed before inserted into the database
● Actions available for each user are limited. Each role has permission for the purpose of using
5. Requirement Appendix
5.1. Business Rules
ID Rule Definition
BR-01 Buyer/Seller top up into the wallet through the intermediary payment system Paypal
BR-02 The minimum cost should be 1$
BR-03 The maximum cost no more than 10 digits
BR-03 The minimum possible CancelFee is 0%
BR-04 The maximum possible CancelFee is 100%
BR-05 The minimum delivery date must be 1 day
BR-06 Seller has 3 levels: Beginner, Advanced, Professional
BR-07 At Beginner level, Seller can create up to 5 services
BR-08 At Advanced level, Seller can create up to 15 services
BR-09 At Professional level, Seller can create up to 50 services
BR-10 A service must have at least 1 package
BR-11 A service can have up to 3 packages
BR-12 To successfully become a seller, the buyer must provide sufficient basic and
advanced information and create at least 1 service.
BR-13 TotalPrice = Cost * Quantity
BR-14 The CancelFee is calculated as a percentage of the TotalPrice value and is decided by
the buyer and seller.
BR-15 Buyer must pay 100% of TotalPrice in advance to create order
In order to accept an order from Buyer, Seller will be charged the corresponding
CancelFee from the service plan. This fee is refundable upon completion of the
contract
BR-16 Buyer is refunded 100% of the value of the service package if the seller refuses to
accept the order
BR-17 Buyer cancels contract when contract status is "Pending", get 100% value of
TotalPrice
BR-18 The buyer cancels the contract when the contract status is "In Process", the amount
received is equal to TotalPrice - CancelFee
BR-19 The seller who cancels the contract when the status is "In Progress" will lose 100% of
the CancelFee value.
BR-20 The contract is cancelled when the status is "In Process", the buyer gets back 100%
of the contract value plus 90% of the CancelFee value
BR-21 The contract is completed, the seller gets back 100% of the CancelFee value, plus
90% of TotalPrice
BR-22 To create a request, the balance in the buyer's wallet must be greater than or equal
to TotalPrice
BR-23 To apply for a request, the seller wallet balance must be greater than or equal to the
request's Canelfree
BR-24 To create an offer, the balance in Seller's wallet must be greater than or equal to
Cancel Free in the Offer
BR-25 There is no requirement to maintain a minimum balance in the user's wallet
● Web servers run on Amazon Web Services(AWS) which supports Internet connection
● Database using MySQL
● Chromium-based web browser
For servers, we use multi-layer architecture. It has high security and limits the risks because there are
many different tiers that can be separated, and management becomes easy. If one layer fails, the
other layer will not be affected. In addition, this architecture is highly flexible, we can flexibly add
resources to each layer and correct each layer in accordance with the requirements.
2.3. Package Diagram
Code package:
No Package Description
01 Contiene component
pages
02 redux Redux serves states that need to be used across your entire application
09 repositories Contains classes that handle getting data into and out of the data store.
10 model All classes define models for mapping with database tables.
11 enumerable All classes define enumerable for mapping with database tables.
4. Class Specification
4.1. Controller
4.1.1.AdminController
# Method Description
1 countTotalService Count the total number of services
2 countTotalServiceByCatId Count the total number of services buy category
3 countTotalPostRequestByCatId Count the total number of post request by category
4 countTotalContractByCatId Count the total number of contract by category
5 getContractByCategoryId Get contract by category
6 getTotalRevenue Get total revenue
7 countTotalUser Count the total number of user
8 getAllCountData Get all count data of dashboard
9 getAllUser Get all users using the system
10 getAllTransaction Get all transaction of user
11 getTotalRevenueToday Get total revenue today
12 getTotalRevenueByMonth Get total revenue by month
13 banOrUnbanUser Ban or Unban user access into website
14 saveAdmin Save info of admin account
15 updateAdmin Update information of admin account
16 deleteAdmin Delete admin account
17 getListAdmin Get list admin
18 getAdminById Get admin by id
19 getUserById Get user by id
20 getAllTransactionByUserId Get all transaction by user
21 getTransactionById Get transaction by id
22 authenticationAdmin Authentication Admin
Automatically complete the contract after 3 days of
23 autoCompleteContract
uploading and handing over
4.1.2. AuthController
# Method Description
authenticateUser
1 Authenticate user
registerUser
2 Signing up for a user account
verifyAccount
3 Verify account
4 processForgotPassword Process forgot password
4.1.3. BoxController
# Method Description
1 addBox Create new boxservice
updateService
2 Update boxservice
deleteBox
3 Delete boxservice
getTop8BoxByTotalContract
4 Get top 8 boxservice by total contract
getTop8BoxByCategoryOrderByImpress
Get top 8 boxservice by category and sort buy
5 ion
impress
getListBoxHistory
6 Get list box history
getBoxes
7 Get boxes
search Search
8
searchBySearchKeyWord
9 Search by keyword
getBoxServiceBySellerId
10 Get box service by seller Id
updateBoxStatus
11 Update box status
getAllPosts Get all posts
12
getServiceById
13 Get service by id
getBoxByIdForGuest
14 Get box by id for guest
getAllServiceByCategoryId
15 Get all service by category Id
getRatingsForSeller
16 Get ratings for seller
getRatingForBoxService
17 Get rating for box service
getAllServiceByCategoryIdPagination
18 Get all service by category id pagination
searchAllServiceByCatNameByServiceT
Search all service by category name and service
19 ypeName
type name
4.1.4. CatergoryController
# Method Description
addCategory
1 Create new category
addCategories
2 Create new categories
getAllCategories
3 Get all categories
findProductById
4 Find product by id
findProductByName
5 Find product by name
updateCategory Update Category
6
deleteCategory
7 Delete Category
4.1.5. CommentController
# Method Description
addComment Add comment in contract
1
updateComment Update comment
2
deleteComment
3 Delete comment
4.1.6. ContractController
# Method Description
getContractById Get contract by id
1
createContractFromBuyer
2 Create contract from buyer
createContractFromOffer
3 Create contract from offer
createContractFromApply
4 Create contract from apply
acceptContractFromSeller Accept contract from seller
5
rejectContractFromSeller
6 Reject contract from seller
rejectContractFromBuyer
7 Reject contract from buyer
deliveryBySeller Delivery by seller
8
9 deliveryBySellerForMilestone Delivery by seller for milestone
updateDelivery
10 Update delivery
acceptDeliveryContractFromBuyer
11 Accept delivery contract from buyer
acceptDeliveryContractFromBuyer Accept delivery contract from buyer
12
createExtraOffer
13 Create extra offer in contract
acceptExtraOfferFromSeller Accept extra offer from seller
14
CancelExtraOffer
15 Cancel extra offer
getContractByStatus
16 Get contract by status
getOrders Get orders
17
getContracts Get contracts
18
ratingSellerFromBuyer
19 Rating seller from buyer
flagContractFromBuyer Flag contract from buyer
20
getComments Get comment
21
getAvatarBoth
22 Get avatar
4.1.7. FileController
# Method Description
uploadImage Upload image
1
getInfo
2 Get info
deleteFile
3 Delete file
4.1.8. PackageController
# Method Description
addPackage
1 Add package
updatePackage Update package
2
deletePackage Delete package
3
4.1.9. PostRequestController
# Method Description
addPostRequestByBuyer Add post request by buyer
1
getPostRequestByBuyerCreated Get post request by buyer created
2
getListSellerApplyRequest Get list seller apply request
3
getPostRequestByCategoryId Get post request by category id
4
getPostRequestDetails
5 Get post request details
updatePostRequest
6 Update post request
sellerApplyRequest
7 Seller apply request
sellerSendOffer Seller send offer
8
sellerApply Seller apply
9
getTenSellerTarget
10 get 10 seller target
4.1.10. SellerController
# Method Description
getListSellers
1 Get list sellers
getListUsers
2 Get list user
getSellerProfile Get seller profile
3
getSellerByBrandName Get seller by brandnName
4
updateInfo
5 Update info
getTop3SellerByRank Get top 3 seller by rank
6
getSellerBySkillNameAndLevelOrderBySellerI
Get seller by skill name and lever
7 d
4.1.12. SkillController
# Method Description
getAllSkillBySellerId Get all skill by seller id
1
getSkillMetaBySubCategory Get skill meta by sub category
2
getSkillMetaDataList Get list of skill meta data
3
getSkillMetaData
4 Get skill meta data
addSkillMetaByAdmin
5 Add skill meta by admin
updateSkillMetaByAdmin Update skill meta by admin
6
4.1.13. SubCategoryController
# Method Description
1 getByCategory Get by category
2 getAllCategory Get all category
4.1.14. UserController
# Method Description
- Description: getCurrentUser
getCurrentUser
1 - Inputs: UserPrincipal currentUser
- Outputs: User
- Description: getUserProfile
getUserProfile
2 - Inputs: UUID id
- Outputs: User
getUSerProfileByUserName
3 Get user profile by user name
getListUsers Get list users
4
updateUser Update user
5
joinSelling
6 Join selling
getWallet
7 get wallet
getOfferRequests Get offer request
8
processResetPassword
9 Process reset password
changePassword Change password
10
readNotification
11 Read notification
getNotifications
12 Get notifications
4.2. Repository
4.2.1. ActivityTypeRepository
# Method Description
1 findByActivityType Find Set Activity Type by User Activity Type
2 findByUsers_Id Find Activity Type by User Id
4.2.2. TransactionRepository
# Method Description
1 findTransactionByUserId Find Transaction By User Id
2 findAllByOrderByCreateAtAsc Find all by Order and Create At Sort By ascending
3 findAllByWallet_User_Id Find all User Id
4.2.3. WalletRepository
# Method Description
1 findWalletByUserId Find Wallet by User Id
4.2.4. AdminRepository
# Method Description
1 existsAdminByAdminAccount Check Admin exists by Admin Account
4.2.5. BoxRepository
# Method Description
1 findAllBySellerIdAndStatus Find all by Seller Id and Status pagination
2 getAllServiceByCategoryId Find all Service by Category Id
3 getAllServiceByCategoryId Find all Service by Category Id pagination
4 findAll Find all pagination
5 countBySubCategory_Category_Id Count total by Category Id
6 findAllBySubCategory_Category_Id Find all by Category Id pagination
findAllBySubCategory_NameContainsOr Find all by SubCategory Name contain or
7
SubCategory_Category_NameContains Category Name contain pagination
8 findAllBySellerId Find all by Seller Id
findAllBySubCategoryAndSearchKeyWor Find all by Sub Category Id and Status and Title
9
d pagination
Find all by Sub Category Id and Status and Title
findAllBySubCategoryIdAndFromPriceBe
10 and From Price with Min Price < From Price <
tweenAndTitleLike
Max Price pagination
Find all by Status and Title and From Price with
11 findAllByFromPriceAndSearchKeyWord
Min Price < From Price < Max Price pagination
12 findAllByTitleLike Find all Status and Title pagination
Get top 8 by Status order by Total Final
13 getTop8ByTotalFinalContract
Contract Descending
getTop8BoxByCategoryOrderByTotalFin Get top 8 by Status and Category Id order by
14
alContract Total Final Contract Descending
4.2.6. BuyerRepository
# Method Description
1 findBuyerByUserId Find Buyer by User Id
4.2.7. CategoryRepository
# Method Description
1 findByName Find Category by Category Name
2 findCategoryById Find Category by Category Id
4.2.8. CommentRepository
# Method Description
findAllByContractIdOrderByCreateAtDes Find all by Contract Id order by Create At
1
c Descending
4.2.9. ContractRepository
# Method Description
Find all by Order Status and Buyer Id Or
1 findAllByOrderStatusAndBuyerIdOrSellerId
Seller Id
2 findAllByOrderStatusAndBuyerId Find all by Order Status and Buyer Id
Count total Revenue where Contract Status
3 countTotalRevenue
(COMPLETE)
4 findAllByContractStatusAndBuyerId Find all by Contract Status and Buyer Id
findAllByContractStatusAndSellerIdOrBuye Find all by Contract Status and Seller Id or
5
rId Buyer Id
6 countTotalRevenueToday Count total revenue today
7 countTotalRevenueByMonth Count total revenue by month
8 countContractByPostRequest_Category_Id Count total Contract by Category Id
9 findAllByPostRequest_Category_Id Find all by Category Id
10 findAllByContractStatus Find all by Contract Status
4.2.10. DeliveryRepository
# Method Description
1 existsByMilestoneId Check Delivery exists by Milestone Id
2 findByContractId Find Delivery by Contract Id
4.2.11. HistoryBoxRepository
# Method Description
findAllByUserIdOrderByCreateAtAs
1 Find all by User Id order by Create At Ascending
c
2 findBoxIdFromUser Find Box Id by User Id
4.2.12. MilestoneContractRepository
# Method Description
1 findAllByPostRequestId Find all by Post Request Id
4.2.13. NotificationRepository
# Method Description
1 findAllByUserId Find all by User Id
2 findAllByUnread Find all by Unread
4.2.14. OfferRequestRepository
# Method Description
1 findAllByPostRequestId Find all by Post Request Id
2 findAllBySellerId Find all by Seller Id
4.2.15. PackageRepository
# Method Description
1 getBoxIdByPackage Get Box Id by Package Id
4.2.16. PostRequestRepository
# Method Description
1 findAllByUser_Id Find all by User Id
2 findAllByCategoryIdAndStatus Find all by Category Id and Status
3 findPostRequestById Find Post Request by Post Request Id
countPostRequestByCategory_I
4 Count total Post Request by Category Id
d
4.2.17. RatingRepository
# Method Description
findAllByBoxIdOrderByRatingPointDes Find all by Box Id order by Rating Point
1
c Desending
2 findAllByBoxIdOrderByCreateAtDesc Find all by Box Id order by Create At Desending
4.2.18. SellerRepository
# Method Description
1 existsBySellerNumber Check exists by Seller Number
2 findSellerByUserId Find Seller by User Id
3 existsByUserId Check exists by User Id
4 findSellerByBrandName Find Seller by Brand Name
5 findTop3ByRankSeller Find top 3 by Rank Seller
6 findAllByPostRequests_Id Find all by Post Request Id
7 findAllByRankSeller Find all by Rank Seller
Get Seller Id by Sub Category Id and Rank Seller or
8 getTenSellerBySubCategoryId Skill Name Contain Skills Name group by Seller Id
order by random
4.2.19. SkillMetaDataRepository
# Method Description
1 findAllBySubCategoryId Find all by SubCategory Id
2 findAllByNameIn Find all by Name Contain list String Name
4.2.20. SkillRepository
# Method Description
1 findSkillBySellerId Find Skill by Seller Id
findAllByNameInAndLevelOrderBySeller_I Find all by Name contain in list string Name
2
d and Level order by Seller Id
3 findAllBySeller_Id Find all Skill by Seller Id
4.2.21. SubCategoryRepository
# Method Description
1 findByCategoryId Find list Sub Category by Category Id
2 findSubCategoryById Find Sub Category by Id
4.2.22. UserRepository
# Method Description
1 findUserByEmail Find Optional User by Email
2 findByUsername Find Optional User by User Name
3 findByUsernameOrEmail Find Optional User by User Name and Email
4 findByEmail Find User by Email
5 findByResetPasswordToken Find User by Reset Password Token
6 existsByUsername Check User exists by User Name
7 existsByEmail Check User exists by Email
8 findUserByVerificationCode Find User by Verification Code
9 findUserById Find User by Id
10 findUserByPhoneNumber Find User by Phone Number
4.3. Service
4.3.1. ActivityTypeService
# Method Description
1 getByActivityType Get Set Activity Type by User Activity Type
2 saveType Save Activity Type
3 getActivityTypeByUserId Get User Activity Type by Id
4.3.2. AdminService
# Method Description
1 getAllCountDataResponse Count all total User, total Service, total Revenue
2 getAllUser Get List User
3 countTotalRevenueToday Count total Revenue today
4 countTotalRevenueByMonth Count total Revenue by month
5 saveAdmin Create new Admin
6 updateAdmin Update Admin
7 deleteAdmin Delete Admin
8 getListAdmin Get list Admin
9 getAdminById Get Admin Profile Response by Id
4.3.3. BoxService
# Method Description
1 addBox User Create new Box
2 updateBox User Update Box
3 deleteBox User Delete Box by Id
4 updateStatus User Update Status
5 findByResetPasswordToken Find User by Reset Password Token
6 getAllServiceByCategoryID Get all Service by Category Id
7 getAllService Get list all Service
8 getServiceByID User Get Service by Id
9 getBoxByIdForGuest Get Service by Id
Get List Service by Seller Id and Box Status
10 getListServiceBySellerId
pagination
11 getAllServiceByCatIdPagination Get all Service by Category Id pagination
Get all Service by Category Name and Sub
12 searchServiceByCatNameBySubCateName
Category name pagination
13 countTotalService Count total Service
14 countTotalServiceByCat Count total Service by Category Id
Get List all service by Category Id and
15 getBoxes Subcategory Id and Min Price and Max
Price and Rating Point pagination
Get List Box Search Response by Box
16 search
Search Request
Get List Box Search Response by Search
Key Word(String), Category Id,
17 searchResult SubCategory Id, Min Price (Big Decimal),
Max Price (Big Decimal), Rating Point(int)
pagination
18 getListHistoryBox User Get List History Box
19 getTop8BoxByTotalContract Get top 8 box by Total Contract
getTop8BoxByCategoryOrderByTotalContrac Get top 8 Box by Category Id order by
20
t Total Contract
4.3.4. CategoryService
# Method Description
1 saveCategory Create new Category
2 saveCategories Create new list Category
3 getCategories Get List all Category
4 getCategoryById Get Category by Id
5 getCategoryByName Get Category by Name
6 deleteCategoryById Delete Category by Id
7 updateCategory Update Category
4.3.5. CertificateService
# Method Description
1 addCertificate Create new Certificate
2 update Update Certificate by Certificate id
3 delete Delete Certificate by Certificate Id
4.3.6. CommentService
# Method Description
1 add User Add new Comment
2 update User Update Comment by id
3 delete User Delete Comment by id
4 getCommentsByContract Get list comment by Contract Id
4.3.7. ContractService
# Method Description
1 createContract User Create new Contract
2 updateStatusAcceptFromSeller Seller Update Status Accept
3 updateStatusRejectFromSeller Seller Update Status Reject
4 updateStatusCancelFromBuyer Buyer Update Status Cancel
updateStatusAcceptDeliveryFromBuye
5 Buyer Update Status Accept Delivery
r
6 acceptDeliveryForMilestone User accept Delivery for Milestone
7 createContractFromSellerOffer Create new Contract when Seller Offer
8 createContractFromSellerApply Create new Contract when Seller Apply
9 flagNotAcceptDelivery User not accept delivery
10 getContractById User Get Contract by Id
11 getTotalRevenue Count Total Revenue
12 countTotalContractByCatId Count Total Contract by Category Id
13 getContractsByCategoryId Get List Contract by Category Id
14 getContractByStatus Get List Contract by Status
Get List Contract by Order Status(PENDING) and
15 getOrders
User
Get List Contract by Order
16 getContracts
Status(To_CONTRACT) and User
Auto check completed contract when delivery
17 autoCheckCompleteContract
enough time
18 getAvatarBoth Get Avatar from seller and buyer of contract
4.3.8. CustomUserDetailsService
# Method Description
1 loadUserById Get User Detail by Id
4.3.9. DelivertService
# Method Description
1 createDelivery Create new Delivery
2 createDeliveryMilestone Create new Delivery of Milestone
3 update Update Delivery
4.3.10. EducationService
# Method Description
1 addEducation Create new Education Object
2 update Update Education Object by Id
3 delete Delete Education Object by Id
4.3.11. ExtraOfferService
# Method Description
1 createExtraOffer Create new Extra Offer
2 sellerAcceptExtraOffer Seller accept Extra Offer
3 cancelExtraOffer Cancel Extra Offer
4.3.12. GalleryService
# Method Description
1 saveGallery Create new Gallery
4.3.13. LanguageService
# Method Description
1 addLanguage Create new Language Object
2 update Update Language by Id
3 delete Delete Language by Id
4.3.14. MilestoneService
# Method Description
1 addMilestoneContract Create new Milestone Contract
4.3.15. NotificationService
# Method Description
1 readNotification Change Status read notification
2 getNotifications Get List notification
4.3.16. OfferRequestService
# Method Description
1 sendOfferToBuyer Seller send Offer to buyer
2 sendOfferApplyToBuyer Seller send Offer Apply to buyer
3 getOffers Get list offer request
4 getAllOffersByPostRequest Get list offer request by post request
4.3.17. PackageService
# Method Description
1 add Create new package
2 update Update package by id
3 delete Delete packag by id
4.3.18. PostRequestService
# Method Description
1 addPostRequest Create new Post Request
2 updatePostRequest Update Post Request by Id
3 deletePostRequest Delete Post Request by Id
getPostRequestByBuyerCreat
4 Buyer view their request list created
ed
5 getTargetSeller Get list seller Potential
6 getPostRequestByCategoryId View list post request by category id
7 getPostRequestDetails View Post Request Detail
8 sellerApplyRequest Seller Apply Request
9 getListSellerApply Get List seller Apply by post request
10 getAllPostRequest Get List all post request
countTotalPostRequestByCatI
11 Count Total Post Request By Category Id
d
4.3.19. RatingService
# Method Description
1 ratingSeller Buyer Rating Seller
2 getTop3Ratings List top 3 Rating
3 getRatingsForBox Get Rating For Box
4.3.20. SellerService
# Method Description
1 getSellers Get list Seller
2 getSellerById Get Seller by Id
3 getSellerByBrandName Get Seller by Brand Name
4 updateSeller Update Seller
5 becomeSeller Buyer Change to Seller
6 getListTopSellerByRank View list seller buy rank
getListSellerBuyPostRequestI
7 Get List Seller buy Post Request Id
d
4.3.21. SkillMetaDataService
# Method Description
1 getSkillMetaBySubCategoryId Get List Skill Meta Data by Sub Category Id
2 getSkillMeta Get Skill Meta Data Response by Meta Id
3 getSkillMetaDataList Get List Skill Meta Data
4 addSkillMetaData Create new Skill Meta Data
5 update Upadate Skill Meta Data by id
6 delete Delete Skill Meta Data by id
4.3.22. SkillService
# Method Description
1 addSkill Create new skill
2 update Update skill by id
3 delete Delete skill by id
getSellerBySkillNameAndSkillLevelOrderBySel Get list seller by Skill Name and
4
lerId Skill Level order by Seller Id
5 getAllSkillBySellerId Get all skill by Seller Id
Get List seller by Skill Name and
6 getSellerBySkillNameAndSkillLevel
skill level
4.3.23. SubCategoryService
# Method Description
1 getSubCategories Get List Sub Category
2 getSubCategoriesByCategory Get List Sub Category by Category Id
4.3.24. TransactionService
# Method Description
1 getAllTransaction Get All Transaction
2 getAllTransactionByUserId Get All Transaction by User Id
3 getTransactionById Get Transaction by Id
4.3.25. UrlProfileService
# Method Description
1 addUrl Create new Url
2 update Update Url by id
3 delete Delete Url by id
4.3.26. UserService
# Method Description
1 getUsers Get list user
2 getUserProfile Get User Profile
3 resetPassword Reset Password
4 updateResetPasswordToken Update Reset Password Token
5 update Update User By Id
6 getByUserId Get User By Id
7 registerUser User Register
8 loginUser User Login
9 loginAdmin Admin Login
10 verifyRegistration Verify Registration
11 changePassword Change Password
getListUserInvitedByPostReque
12 Get List User Invited by Post Request Id
stId
13 countUserById Count total User by Id
14 banOrUnbanUser Change User Status (Ban or Unban)
15 getUserById Get User by Id
16 getUserByUserName Get User by Name
4.3.27. WalletService
# Method Description
1 getWallet User Get Wallet Response
2 saveWallet Save Wallet
5. Data & Database Design
5.1. Database Design
Table Descriptions
No Table Description
FR-1 Common
NFR-1 Security
NFR-2 Performance
2 System Test The FSM Test team will execute System Test.
Testers will perform complete, end-to-end
system testing staged in a pre-production
environment to validate that functions and
system interfaces perform properly in the
production environment.
2. Test Strategy
2.1 Testing Types
2.1.1 Unit Testing
Test Objective: Make sure all method code in the program works with the function for
which it was created without any unexpected exceptions.
Technique: ❖ Tester using Junit create test cases for each method of code. Then
execute and evaluate the results.
Completion ❖ At least 100% of test cases must be executed successfully
Criteria:
❖ Test coverage is at least 100% of the entire source code
Special Unit testing must be done concurrently with coding. It is not possible to
Considerations: start unit testing without completing the method code or designing test
cases
Technique: Testers create test cases according to the flow scenario that runs from
controller layer to service, repository and finally database to track expected
and actual results.
Special Integration testing will NOT be started in case developers have not executed
Considerations: unit testing.
Technique: Execute each use case, use-case flow, or function, using valid and invalid
data, to verify the following:
❖ The expected results occur when valid data is used.
❖ The appropriate error or warning messages are displayed when
invalid data is used.
❖ Each business rule is properly applied.
Completion All functional test cases have been executed to verify proper data
Criteria: acceptance, processing, and retrieval, and the appropriate implementation
of the business rules, and passed
Technique: Tester will build a test checklist for each screen. Which includes
components and the characteristics that come with that component. Check
if those components are correct with the design set out or not. The checklist
may include:
Special Not all properties for custom and third-party objects can be accessed.
Considerations:
Unit Test X X
Integration Test X X
Function Test X X X
3. Test Plan
3.1 Human Resources
2. Installation Guides
2.1 System Requirements
● Amazon web service (all install for running backend in ec2 - Amazon Elastic Compute Cloud -
including JDK 11)
● Config domain record in AWS with route 53
2.2 Installation Instruction
● Create .env file in frontend folder and config your server url like file .env.example
It is expected that soon, FSM will become the largest freelance job service website in Vietnam,
connecting millions of buyers and sellers.
● Step 2: The login screen appears, enter your account information correctly:
o Mật khẩu
Then press the "Đăng nhập" button to perform the functions according to your account permissions
● Step 2: Personal information screen appears you can change your information:
o Họ
o Tên
o Giới tính
o Số điện thoại
o Ngày sinh
o Quốc gia
o Tỉnh/Thành phố
o Avatar
Then press "Cập nhật" to save the changes
3.3.2. Change password <Role: Buyer/Seller>
To change the password for your account, do the following:
o Mật khẩu cũ
● Step 1: Click on the category to see the service available in each of those categories
In addition, the website also displays a list of services that you have clicked to view before
Matching search results will be displayed at the bottom. To make your search more detailed,
you can use filters with criteria such as: Category, high, lowest price, purchase...
3.5.3. Create service <Role: Seller>
Seller create box service to receive orders from buyers
● Step 2: The service creation screen appears the first step is an overview. You must Input/
Choose:
o Tiêu đề
o Mô tả
o Danh mục
o Danh mục con
Then press the "Tiếp tục" button to move to the next step
Step 3: Create Package, you must input:
o Tiêu đề
o Sản phẩm bàn giao
o Số ngày giao
o Chi phí
o Phí hủy hợp đồng
Then press the "Tiếp tục" button to move to the next step
In addition to the default basic package, you can choose to use more advanced and premium
packages by clicking "Thêm gói nâng cao", and “ Thêm gói cao cấp”
You can also fit packages by clicking "Xóa gói nâng cao" and “Xóa gói cao cấp”
Step 4: Test product, upload your sample product to give buyers more information. You can
upload 1 or more photos, can upload document files
Step 5: Finally, confirm the service creation
o Create and close services to have more time to prepare before accepting orders
from buyers
3.5.4. View detail Service <Role: Seller>
Step 1: In Homepage seller, you click a service
Step 2: An overview window will be displayed, you can change the desired information. Then
press "Cập nhật" to save the changed information
3.5.8. Delete service <Role: Seller>
Stept 1: In service detail screen, click “Xóa” to delete box service
Step 3: After pressing "Gửi yêu cầu", you can send an invitation to the seller,
choose”Có” or “Không”
Step 4: If select “Có ”A pop-up suggesting Sellers matching your requirements
● Step 3: Select the request you want to see the details of, then Click “Chi tiết”
● Step 4: The screen shows the details of the request
● Step 2: After successful login with admin rights, admin homepage will be displayed
3.10. User management <Role: Admin>
3.10.1. View list user <Role: Admin>
Step 1: On the admin home page, click "Danh sách người dùng thành viên"