Professional Documents
Culture Documents
FPT UNIVERSITY
Capstone Project
1
Table of Contents
Table of Contents..................................................................................................................................2
Acknowledgements...............................................................................................................................6
Definitions and Acronyms......................................................................................................................7
Chapter 1 - Introduction.....................................................................................................................9
1.1 Purpose..................................................................................................................................9
1.2 Project information................................................................................................................9
1.3 The people.............................................................................................................................9
1.4 Background............................................................................................................................9
1.5 The problem........................................................................................................................10
1.6 Literature review.................................................................................................................10
1.7 The Proposal system............................................................................................................11
1.7.1 Our Ideas......................................................................................................................11
1.7.2 The proposal................................................................................................................12
1.7.3 System group functions...............................................................................................12
Chapter 2 : Project Management Plan..............................................................................................13
2.1 Purpose................................................................................................................................13
2.2 Software process model......................................................................................................13
2.2.1 About the iterative model............................................................................................13
2.2.2 Advantages and disadvantages considering.................................................................14
2.3 Organization structure.........................................................................................................14
2.4 Roles and responsibilities.....................................................................................................14
2.5 Tools and techniques...........................................................................................................15
2.6 Project management plan....................................................................................................15
2.6.1 Project schedule...........................................................................................................15
2.6.2 Meeting minutes..........................................................................................................16
2.6.3 Risk Management Plan.................................................................................................17
2.6.4 Communication Plan....................................................................................................18
2.6.5 Coding convention.......................................................................................................19
Chapter 3 - Software Requirements Specification...........................................................................20
3.1 Purpose................................................................................................................................20
3.2 Definitions, acronyms, and abbreviations............................................................................20
2
3.3 User requirement specification...........................................................................................21
3.3.1 Business process diagram of creating a CI-Project.......................................................21
3.3.2 CI-project state diagram..............................................................................................22
3.3.3 Rating designer............................................................................................................23
3.4 System requirement specification.......................................................................................23
3.5 Functional specification.......................................................................................................23
3.5.1 Business rule repository...............................................................................................23
3.5.2 Use case diagram.........................................................................................................24
3.5.3 Use case list..................................................................................................................25
3.5.4 Use case description by role........................................................................................26
3.6 Non – functional requirements..........................................................................................112
3.6.1 Security......................................................................................................................112
3.6.2 Performance..............................................................................................................112
3.6.3 Usability.....................................................................................................................112
3.6.4 Scalability...................................................................................................................113
3.7 Entity relationship diagram................................................................................................114
Chapter 4 - Software Architecture Design......................................................................................115
4.1 Purpose..............................................................................................................................115
4.2 High level system architecture overview...........................................................................116
4.2.1 Context diagram.........................................................................................................116
4.2.2 Layer architecture diagram........................................................................................118
4.2.3 Component diagram..................................................................................................119
4.3 Detail design......................................................................................................................120
4.3.1 Package diagram........................................................................................................120
4.3.2 Class diagram.............................................................................................................121
4.3.3 User interface design.................................................................................................180
4.3.4 Sequence diagram for each function.........................................................................193
4.3.5 Database design.........................................................................................................205
Chapter 5 - Software Testing Document.........................................................................................214
5.1 Purpose..............................................................................................................................214
5.2 Test strategy......................................................................................................................214
5.2.1 Objective and scope...................................................................................................214
5.2.2 Testing tools and environment..................................................................................214
5.2.3 Human resources and responsibilities.......................................................................215
3
5.2.4 Acceptance criteria....................................................................................................215
5.2.5 Risk list.......................................................................................................................215
5.2.6 Test process...............................................................................................................215
5.3 Test plan............................................................................................................................216
5.3.1 Test model.................................................................................................................216
5.3.2 Stage of testing..........................................................................................................217
5.3.3 Functions to be tested...............................................................................................218
5.3.4 Functions not to be tested.........................................................................................218
5.3.5 Type of testing...........................................................................................................219
5.3.6 Test milestone............................................................................................................219
5.3.7 Deliverables...............................................................................................................219
5.4 Test approach....................................................................................................................220
5.4.1 Unit test.....................................................................................................................220
5.4.2 Integration and system test.......................................................................................221
5.4.3 Check list....................................................................................................................222
5.5 Defect log...........................................................................................................................223
5.5.1 Defect life cycle..........................................................................................................223
5.5.2 Defect example..........................................................................................................223
5.6 Test report.........................................................................................................................224
5.6.1 Integration test report...............................................................................................224
5.6.2 System test report.....................................................................................................224
Chapter 6 - SOFTWARE USER GUIDE..............................................................................................225
6.1 Deployment guidelines......................................................................................................225
6.1.1 Environment for user.................................................................................................225
6.1.2 Deploy CI web application for system admin.............................................................225
6.1.3 Deploy CI web services for system admin..................................................................227
6.2 User guide..........................................................................................................................229
6.2.1 Guest..........................................................................................................................229
6.2.2 User............................................................................................................................230
6.2.3 Designer.....................................................................................................................236
6.2.4 House owner..............................................................................................................263
References.........................................................................................................................................284
First and foremost, we would love to express our deep gratitude to our supervisor, Mr. Phan Truong
Lam. Without his assistance and dedicated involvement in every step throughout the process, this
paper would have never been accomplished. We also sincerely thank to all of our teachers who had
taught us in four years in FPT University.
We also grateful to our friends whom we have had the pleasure to know and work with during this
semester. We could say that the capstone project could not have been fully accomplished without
their support.
Nobody has been more important to us in the pursuit of this project than our family. We would love
to thank our parents, our sisters and brothers who offered unlimited encouragement and support.
6
Definitions and Acronyms
No Definition Explanation
& Acronym
1 CI Creative Inside.
2 Guest People who visit the CI website and have’n had the account yet.
3 House owner People who are in need of designing a house.
4 Designer/Professional The designer who are an expert in design.
5 Customer The term includes both house owner and designer.
6 User The term includes guest, house owner and designer.
7 Showroom/Gallery Designer’s works, it shows their capability of designing,
experiences, and achievements.
8 SRS Software requirement specification.
9 PM Project manager.
10 Dev Developer.
11 BA Business analyst.
12 EVBN EU – Vietnam business network
13 CI-project A unit of work between designer and customer. A project of a
customer.
14 FB facebook
7
8
Chapter 1 - Introduction
1.1 Purpose
This chapter provides an overview of the capstone project. It includes the project information,
the background of the capstone project, the problem and our proposal to solve the problem.
Supervisor:
Members:
4 Phạm Đình Mai SE04409 0168 8661 450 maidpse04409@fpt.edu.vn Team member
1.4 Background
The need for design and re-design the house is becoming more popular nowadays, according
to the forecast of demand building house in the final research report “Vietnam’s furniture & home
decor” [1] of EVNB (EU - Vietnam business network) :
9
Figure 1-1 Forecast of house building
Design and décor services are the most in a traditional way! The house owner and the services
providers are face-to-face discussions. Recently, email is used to exchange information; however, it
causes some troubles to both sides.
Thietkenoithat.com
10
noithatahome.vn
11
1.7.2 The proposal
The Creative Inside system desires to provide better communication between the house
owners and designers by internet technology through following services:
Full text search for designer, gallery.
Reliable payment transactions when CI is a third party in a transaction between the house
owner and the designer. It helps to remove the doubt between two sides on the internet.
12
Chapter 2 : Project Management Plan
2.1 Purpose
This section describes the software process model, team organization and management plan of the
project. Team members must follow this section to complete assigned tasks and deadline.
13
2.2.2 Advantages and disadvantages considering
Advantages Disadvantages
Innovative technology is involved – developer Heavily document changes when there are
team can learn as they work on the project. more and more iteration.
The major requirements are defined, while Issues about system architecture may turn out
some functionalities enhancements evolve with to be a big problem when lacking of a full
the process of the development process. requirements specification.
Functional prototypes are developed early and Highly skilled resources are required for
delivery for each iteration. analysis skill.
2.3 Organization structure
15
Figure 2- 5 Meeting minutes example
16
2.6.3 Risk Management Plan
After using brainstorming, we categorized risk list in the following table:
17
The following table depicts the severity and probability for each risk above:
RISK
GENERALLY
RATING ACCEPTABLE ALARP UNACCEPTABLE
INTOLERABLE
SEVERITY
Unlikely to occur R9 R4 R5
PROBABILITY
Will occur R7 R2 R6
18
Project report and meeting
# Activity Stakeholder Time Description
Project communication
# Communication type Description
1 Weekly meeting schedule Spend one day in a week for meeting to review and update
solution for problems.
2 Unscheduled meeting If any team member have problems that he wants to solved
immediately, we will have a chat box and skype call.
3 Communication channel Our main communication are physical meeting, chat box, facebook
messenger and skype call.
2.6.5 Coding convention
The following coding conventions are used to code the project to help improve readabilities,
maintenance abilities, and code more easily.
19
Chapter 3 - Software Requirements Specification
3.1 Purpose
The purpose of this chapter is to elicitation use cases to clarify how user interact with system,
what are the functions and how the functions will perform. It includes the business process flow
diagram, state transition, and use case detailed description of the CI system.
20
3.3 User requirement specification
3.3.1 Business process diagram of creating a CI-Project
21
Description:
When an appropriate designer is found, house owner sends a request for consulting to a
designer. Designer receives the request and create a CI-project. The CI-project include both party
information and payment milestone. House owner will view and decide to accept or refuse the CI-
project.
After the project is accepted, house owner will deposit money to CI system to receive the
design document. Once the document is verified by house owner, the designer will receive money
for their work. The process is repeatedly until the last milestone payment. The house owner verified
last step and rate the designer before closing CI-project.
Description:
No State Description
1 New State of CI-project after the designer creates the CI-project and send to
house owner.
2 Refused The house owner refuses the CI-project after viewing it. A comment can be
added to notify designer to change the information of CI-project.
3 Pending When the CI-project is accepted by house owner, it will stay at this state
until the customer deposit money for the CI-system following the first
payment milestone.
4 Running After house owner deposit money for the CI-project in the system, house
owner and designer can exchange documents inside CI-project.
5 Suspending When a running CI-project is not deposited money, designer is unable to
upload working documents.
6 Locked Whenever house owner or designer reports dispute of a CI-project, the
system admin can check the report and lock the project for further actions.
Both sides can not proceed inside CI-project.
7 Closed When the last document of CI-project is approved by house owner, the
project is closed.
22
3.3.3 Rating designer
House owner can rate from 1 to 5 stars for a CI-project when they are closing CI-project,
therefore each designer will have a calculated rate base on their successful project. Creative Inside
uses weighted rating algorithm [4] to calculate the rate of each designer.
The rate is calculated in the following formula:
−N
Q
x́ 5∗1−e
S= +
2 2
Where:
∑ ri
1
x́=
N
No Description
BR-1 One project has only one house owner and one designer.
BR-2 One project must have at least one payment created.
BR-3 A CI-project will be closed automatically if there is no upload documentation after it
started.
BR-4 Projects can be closed anytime by house owner.
BR-5 Designers can not view any documents when it is a locked project or a closed project.
BR-6 Bank account’s number from 8 to 14 characters.
BR-7 One image showroom can be liked only once by each customer.
Specific business rule:
No Description
BI-1 The field must be filled by characters consist of alphabet, numbers and space.
23
BI-2 The field must be filled by characters consist of alphabet and numbers.
BI-3 The field must be filled, follow by format “X@X.Y”, where X is characters and Y is
alphabets. X and Y are at least 1 character.
BI-4 Start-date of a payment is after End-date.
BI-5 Must enter from 6 to 50 characters.
BI-6 Date follow format dd-mm-YYY.
24
3.5.3 Use case list
Actors Use case ID Use case name
Guest, designer, house owner UC-GU-01 Register account
UC-CM-01 Search
UC-CM-02 View a showroom
UC-CM-03 View a designer profile
UC-CM-04 Login
Designer UC-DN-01 Logout
UC-DN-02 Edit profile
UC-DN-03 Send messages
UC-DN-04 Create a CI-project
UC-DN-05 View a CI-project
UC-DN-06 Edit a CI-project
UC-DN-07 Create a showroom
UC-DN-08 Edit a showroom
UC-DN-09 Delete a showroom
UC-DN-10 Report a designer
UC-DN-11 Report a house owner
UC-DN-12 Like showroom images
House owner UC-HO-01 Logout
UC-HO-02 Edit profile
UC-HO-03 Create a request
UC-HO-04 Send messages
UC-HO-05 Accept a CI-project
UC-HO-06 View a CI-project
UC-HO-07 Reject a CI-project
UC-HO-08 Accept a payment
UC-HO-09 Close a CI-project
UC-HO-10 Like images
UC-HO-11 Report a designer
Admin UC-AD-01 View user profile
UC-AD-02 Ban a user
UC-AD-03 View a report
UC-AD-04 Lock a CI-project
UC-AD-05 Active a CI-project
UC-AD-06 Active a payment
UC-AD-07 Close a CI-project
25
3.5.4 Use case description by role
Use case diagram of user
26
Register account
Main flow:
No Actor events System respond
1 Click on button “Đăng ký” at the top-right
of website.
2 Show “Đăng ký” pop-up.
27
3 Actor fills information and then click on
button “Đăng ký”.
4 Show successful message.
Show pop-up “Vui lòng kiểm tra email
để kích hoạt tài khoản”
Extension Flows:
ET1 At step 3
No Actor events System respond
3.1 Click on button close at the top-right of
pop-up.
4.1 Navigate to the previous page.
ET2 At step 3
No Actor events System respond
3.2 Click on button “Facebook”.
4.2 Show Facebook login privilege pop-up.
5.2 Click on button “Continue” if you are signed
in to Facebook or sign up with your
Facebook account.
6.2 Show role selection.
7.2 Select your role and click on button “Xác
nhận”
8.1 System redirect to home page.
ET3 At step 3
No Actor events System respond
3.3 Click on button “Google”.
4.3 Show Google login privilege popup.
5.3 Select your account if you are signed in to
Google or sign up with your Google
account.
6.3 Show role selection.
7.3 Select your role and click on button “Xác
nhận”
8.3 System redirect to home page.
Exception: N/A
28
Search
Main flow:
No Actor events System respond
29
1 Enter the keyword in the search field then
click on “Tìm kiếm” button.
2 Show search results and number of
results found.
Extension Flows:
ET1 At step 1
No Actor events System respond
1.1 Enter the keyword in the search field.
Press enter button on the keyboard.
Exception: N/A
View a showroom
30
Use case No. UC-CM-02 Use case version v2.0
Use case name View a showroom
Author Pham Dinh Mai
Date 02/7/2018 Priority Medium
Primary actor User (designer, house Secondary actor N/A
owner, guest)
Description This function allows the actor to view showroom.
Pre-condition - Users visit the website.
Post-condition - Success:
+ Users can view the show room detail.
Trigger Click on the showroom.
Main flow:
No Actor events System respond
1 Click the category name in the homepage.
Alternative Flows:
Alt1 At step 1
No Actor events System respond
1.1 Enter the keyword in the search field and
click on “Tìm kiếm” button.
2.1 Show search results and number of
results found.
3.1 Click on a showroom in the results list.
Exception: N/A
31
View designer profile
Main flow:
No Actor events System respond
1 Click the category name in the homepage.
32
4 Show showroom detail.
Alternative Flows:
Alt1 At step 1
No Actor events System respond
1.1 Enter the keyword in the search field and
click on “Tìm kiếm” button.
2.1 Show search results and number of
results found.
3.1 Click on a designer in the results list.
Exception: N/A
Login
33
USECASE – UC-CM-04 – SPECIFICATION
Use case No. UC-CM-04 Use case version v1.0
Use case name Login
Author Pham Dinh Mai
Date 22/05/2018 Priority Medium
Primary actor Customer (house owner, Secondary actor N/A
designer)
Description This function allows the actor to login into the system.
Pre-condition - Customers visit the website.
- The customer has activated account.
Post-condition - Success:
+ Login successfully to the system.
Trigger Click on button “Đăng nhập”.
Main flow:
No Actor events System respond
1 Click on button “Đăng nhập” at the top-
right of website.
2 Show “Đăng nhập” pop-up.
3 User fills username, password to text field
then click on button “Đăng nhập”.
4 System redirect to web page which
user is accessing.
Alternative Flows:
Alt1 At step 3
No Actor events System respond
3.1 Click on button “Đăng nhập bằng Google”.
4.1 Show Google login privilege popup.
5.1 Select your account if you are signed in to
Google or sign up with your Google
account.
6.1 Show role selection.
7.1 Select your role and click on button “Xác
nhận”
8.1 System redirect to home page.
Extension Flows:
ET1 At step 3
No Actor events System respond
3.1 Click on button close at the top-right of
pop-up.
4.1 Navigate to the previous page.
Exception: N/A
34
Use case diagram of designer
35
Logout
Main flow:
No Actor events System respond
1 Click on avatar at the top-right of the
website.
2 Show a drop-down menu.
3 Click on button “Đăng xuất”.
4 The system redirects to the home page.
36
Extension Flows: N/A
Exception: N/A
Edit profile
Main flow:
No Actor events System respond
1 Click on avatar at the top-right of the
website.
2 Show a drop-down menu.
3 Click on designer’s name.
4 Show edit designer profile form.
5 Click on button “Chọn ảnh”.
6 Show image selection window.
7 Click on button “Lưu”.
8 Upload progress bar to 100%.
9 Enter information then click on button
“Lưu”.
10 Show successful message.
11 Click on button “OK”.
12 Close successful message and navigate
to home page.
Extension Flows:
ET1 At step 3
No Actor events System respond
3.1 Click on “Bộ sưu tập”.
4.1 Show “Bộ sưu tập” tab with all
showrooms.
ET2 At step 3
No Actor events System respond
3.2 Click on “Thanh toán”.
4.2 Show “Thanh toán” tab with all
payments.
ET3 At step 3
No Actor events System respond
3.3 Click on “Đánh giá”.
4.3 Show “Đánh giá” tab with all reviews.
ET4 At step 3
No Actor events System respond
3.4 Click on “Đăng xuất”.
4.4 Go to UC-DN-01.
ET5 At step 3
No Actor events System respond
3.5 Click on “Đổi mật khẩu”.
38
4.5 Go to UC-DN-14.
Exception: N/A
Send messages
Main flow:
No Actor events System respond
1 Click on icon “Yêu cầu”.
Alternative Flows:
Alt1 At step 5
No Actor events System respond
5.1 Click the text box and enter the message
then press the “Enter” key from keyboard.
Alt2 At step 1
No Actor events System respond
1.2 Click on icon “Dự án”.
2.2 Show “Dự án” tab with all projects.
3.2 Click on “Yêu cầu” tab.
4.2 Show “Yêu cầu” tab with all requests.
5.2 Click on a request.
6.2 Show message box.
7.2 Click the text box and enter the message
then click the submit button.
8.2 Send this message to the house owner.
Alt3 At step 1
No Actor events System respond
1.3 Click on avatar at the top-right of the page.
2.3 Show drop-down menu.
3.3 Click on “Bộ sưu tập”.
4.3 Show “Bộ sưu tập” tab with all
showrooms.
5.3 Click on “Yêu cầu” tab.
6.3 Show “Yêu cầu” tab with all requests.
7.3 Click on a request.
8.3 Show message box.
9.3 Click the text box and enter the message
then click the submit button.
10.3 Send this message to the house owner.
Alt4 At step 1
No Actor events System respond
40
1.4 Click on avatar at the top-right of the page.
2.4 Show drop-down menu.
3.4 Click on “Thanh toán”.
4.4 Show “Thanh toán” tab with all
payments.
5.4 Click on “Yêu cầu” tab.
6.4 Show “Yêu cầu” tab with all requests.
7.4 Click on a request.
8.4 Show message box.
9.4 Click the text box and enter the message
then click the submit button.
10.4 Send this message to the house owner.
Alt5 At step 1
No Actor events System respond
1.5 Click on avatar at the top-right of the page.
2.5 Show drop-down menu.
3.5 Click on “Đánh giá”.
4.5 Show “Đánh giá” tab with all reviews.
5.5 Click on “Yêu cầu” tab.
6.5 Show “Yêu cầu” tab with all requests.
7.5 Click on a request.
8.5 Show message box.
9.5 Click the text box and enter the message
then click the submit button.
10.5 Send this message to the house owner.
Exception: N/A
41
Create a CI-project
Main flow:
No Actor events System respond
1 Click on icon “Yêu cầu”.
2 Show “Yêu cầu” tab with all requests.
3 Click on the request then click on button
42
“Tạo dự án”.
4 Show create project form.
5 Enter information and click on button
"Thêm công việc".
6 Show “Tạo công việc” pop-up.
7 Enter information and click on button “Xác
nhận”.
8 Close “Tạo công việc” pop-up.
9 Click on button “Tạo dự án”.
10 Show successful messeage.
11 Click on button “OK”.
12 Close successful message and navigate
to project page.
Alternative Flows:
Alt1 At step 1
No Actor events System respond
1.1 Click on icon “Dự án”.
2.1 Show “Dự án” tab with all projects.
3.1 Click on “Yêu cầu” tab.
4.1 Show “Yêu cầu” tab with all requests.
5.1 Click on the request then click on button
“Tạo dự án”.
6.1 Show create project form.
7.1 Enter information and click on button
"Thêm công việc".
8.1 Show “Tạo công việc” pop-up.
9.1 Enter information and click on button “Xác
nhận”.
10.1 Close “Tạo công việc” pop-up.
11.1 Click on button “Tạo dự án”.
12.1 Show successful messeage.
13.1 Click on button “OK”.
14.1 Close successful message and navigate
to project page.
Alt2 At step 1
No Actor events System respond
1.2 Click on avatar at the top-right of website.
2.2 Show drop-down menu.
3.2 Click on “Bộ sưu tập”.
4.2 Show “Bộ sưu tập” tab with all
showroom.
5.2 Click on “Yêu cầu” tab.
6.2 Show “Yêu cầu” tab with all requests.
7.2 Enter information and click on button
"Thêm công việc".
8.2 Show “Tạo công việc” pop-up.
9.2 Enter information and click on button “Xác
nhận”.
43
10.2 Close “Tạo công việc” pop-up.
11.2 Click on button “Tạo dự án”.
12.2 Show successful messeage.
13.2 Click on button “OK”.
14.2 Close successful message and navigate
to project page.
Alt3 At step 1
No Actor events System respond
1.3 Click on avatar at the top-right of website.
2.3 Show drop-down menu.
3.3 Click on “Thanh toán”.
4.3 Show “Thanh toán” tab with all
payments.
5.3 Click on “Yêu cầu” tab.
6.3 Show “Yêu cầu” tab with all request.
7.3 Enter information and click on button
"Thêm công việc".
8.3 Show “Tạo công việc” pop-up.
9.3 Enter information and click on button “Xác
nhận”.
10.3 Close “Tạo công việc” pop-up.
11.3 Click on button “Tạo dự án”.
12.3 Show successful messeage.
13.3 Click on button “OK”.
14.3 Close successful message and navigate
to project page.
Alt4 At step 2
No Actor events System respond
1.4 Click on avatar at the top-right of website.
2.4 Show drop-down menu.
3.4 Click on “Đánh giá”.
4.4 Show “Đánh giá” tab with all reviews.
5.4 Click on “Yêu cầu” tab.
6.4 Show “Yêu cầu” tab with all requests.
7.4 Enter information and click on button
"Thêm công việc".
8.4 Show “Tạo công việc” pop-up.
9.4 Enter information and click on button “Xác
nhận”.
10.4 Close “Tạo công việc” pop-up.
11.4 Click on button “Tạo dự án”.
12.4 Show successful messeage.
13.4 Click on button “OK”.
14.4 Close successful message and navigate
to project page.
Extension Flows:
ET1 At step 9
44
No Actor events System respond
9.1 Click on button “Bổ sung điều khoản”.
10.1 Show “Thêm điều khoản” pop-up.
11.1 Enter information and click on button “Xác
nhận”.
12.1 Close “Thêm điều khoản” pop-up.
ET2 At step 5
No Actor events System respond
5.2 Click on button “Ẩn cuộc trò chuyện”.
6.2 Hide conversation.
7.2 Click on button “Hiện cuộc trò chuyện”.
8.2 Show conversation.
Exception: N/A
Business Rules: BR-1, BR-2, BR-3, BR-5, BI-1, BI-2, BI-3, BI-4, BI-5, BI-6, BI-7
45
View a CI-project
Main flow:
No Actor events System respond
1 Click on icon “Dự án”.
2 Show “Dự án” tab with all projects.
3 Click on a project.
4 Show project detail.
46
Alternative Flows:
Alt1 At step 1
No Actor events System respond
1.1 Click on avatar at the top-right of website.
2.1 Show drop-down menu.
3.1 Click on “Bộ sưu tập”.
4.1 Show “Bộ sưu tập” tab with all
showrooms.
5.1 Click on “Dự án” tab.
6.1 Show “Dự án” tab with all requests.
7.1 Click on a project.
8.1 Show project detail.
Alt2 At step 1
No Actor events System respond
1.2 Click on avatar at the top-right of website.
2.2 Show drop-down menu.
3.2 Click on “Thanh toán”.
4.2 Show “Thanh toán” tab with all
payments.
5.2 Click on “Dự án” tab.
6.2 Show “Dự án” tab with all projects.
7.2 Click on a project.
8.2 Show project detail.
Alt3 At step 1
No Actor events System respond
1.3 Click on avatar at the top-right of website.
2.3 Show drop-down menu.
3.3 Click on “Đánh giá”.
4.3 Show “Đánh giá” tab with all reviews.
5.3 Click on “Dự án” tab.
6.3 Show “Dự án” tab with all projects.
7.3 Click on a project.
8.3 Show project detail.
Alt4 At step 1
No Actor events System respond
1.4 Click on icon “Yêu cầu”.
2.4 Show “Yêu cầu” tab with all requests.
3.4 Click on “Dự án” tab.
4.4 Show “Dự án” tab with all projects.
5.4 Click on a project.
6.4 Show project detail.
Exception: N/A
47
Business Rules: BR-1, BR-2, BR-3, BR-5
Edit a CI-project
Main flow:
No Actor events System respond
48
1 Click on icon “Dự án”.
2 Show “Dự án” tab with all projects.
3 Click on project have “Đã từ chối” or “Mới”
status.
4 Show project details.
5 Click on button “Chỉnh sửa thông tin”.
6 Show edit project form.
7 Enter the information and click on button
“Thêm công việc”.
8 Show “Tạo công việc” pop-up.
9 Enter information and click on button “Xác
nhận”.
10 Close “Tạo công việc” pop-up.
11 Click on button “Lưu thay đổi”.
12 Show successful message.
13 Click on button “OK”.
14 Close successful message.
Alternative Flows:
Alt1 At step 1
No Actor events System respond
1.1 Click on icon “Yêu cầu”.
2.1 Show “Yêu cầu” tab with all requests.
3.1 Click on “Dự án” tab.
4.1 Show “Dự án” tab with all project
5.1 Click on project have “Đã từ chối” or “Mới”
status.
6.1 Show project detail.
7.1 Click on button “Chỉnh sửa thông tin”.
8.1 Show edit project form.
9.1 Enter the information and click on button
“Thêm công việc”.
10.1 Show “Tạo công việc” pop-up.
11.1 Enter information and click on button “Xác
nhận”.
12.1 Close “Tạo công việc” pop-up.
13.1 Click on button “Lưu thay đổi”.
14.1 Show successful message.
15.1 Click on button “OK”.
16.1 Close successful message.
Alt2 At step 1
No Actor events System respond
1.2 Click on avatar at the top-right of website.
2.2 Show drop-down menu.
3.2 Click on “Bộ sưu tập”.
4.2 Show “Bộ sưu tập” tab with all
showrooms.
5.2 Click on “Dự án” tab.
6.2 Show “Dự án” tab with all project
49
7.2 Click on project have “Đã từ chối” or “Mới”
status.
8.2 Show project detail.
9.2 Click on button “Chỉnh sửa thông tin”.
10.2 Show edit project form.
11.2 Enter the information and click on button
“Thêm công việc”.
12.2 Show “Tạo công việc” pop-up.
13.2 Enter information and click on button “Xác
nhận”.
14.2 Close “Tạo công việc” pop-up.
15.2 Click on button “Lưu thay đổi”.
16.2 Show successful message.
17.2 Click on button “OK”.
18.2 Close successful message.
Alt3 At step 1
No Actor events System respond
1.3 Click on avatar at the top-right of website.
2.3 Show drop-down menu.
3.3 Click on “Thanh toán”.
4.3 Show “Thanh toán” tab with all
payments.
5.3 Click on “Dự án” tab.
6.3 Show “Dự án” tab with all project
7.3 Click on project have “Đã từ chối” or “Mới”
status.
8.3 Show project detail.
9.3 Click on button “Chỉnh sửa thông tin”.
10.3 Show edit project form.
11.3 Enter the information and click on button
“Thêm công việc”.
12.3 Show “Tạo công việc” pop-up.
13.3 Enter information and click on button “Xác
nhận”.
14.3 Close “Tạo công việc” pop-up.
15.3 Click on button “Lưu thay đổi”.
16.3 Show successful message.
17.3 Click on button “OK”.
18.3 Close successful message.
Alt4 At step 1
No Actor events System respond
1.4 Click on avatar at the top-right of website.
2.4 Show drop-down menu.
3.4 Click on “Đánh giá”.
4.4 Show “Đánh giá” tab with all reviews.
5.4 Click on “Dự án” tab.
6.4 Show “Dự án” tab with all project
50
7.4 Click on project have “Đã từ chối” or “Mới”
status.
8.4 Show project detail.
9.4 Click on button “Chỉnh sửa thông tin”.
10.4 Show edit project form.
11.4 Enter the information and click on button
“Thêm công việc”.
12.4 Show “Tạo công việc” pop-up.
13.4 Enter information and click on button “Xác
nhận”.
14.4 Close “Tạo công việc” pop-up.
15.4 Click on button “Lưu thay đổi”.
16.4 Show successful message.
17.4 Click on button “OK”.
18.4 Close successful message.
Extension Flows:
ET1 At step 11
No Actor events System respond
11.1 Click on icon close.
12.1 Show confirmation message.
13.1 Click on button “Xác nhận”.
14.1 Close confirmation message.
ET2 At step 11
No Actor events System respond
11.2 Click on button “Bổ sung điều khoản”.
12.2 Show “Thêm điều khoản” pop-up.
13.2 Enter information and click on button “Xác
nhận”.
14.2 Close “Thêm điều khoản” pop-up.
15.2 Click on button “Tạo dự án”.
16.2 Show “Dự án” tab with all projects.
ET3 At step 7
No Actor events System respond
7.3 Click on button “Ẩn cuộc trò chuyện”.
8.3 Hide conversation.
9.3 Click on button “Hiện cuộc trò chuyện”.
10.3 Show conversation.
Exception: N/A
Business Rules: BR-1, BR-2, BR-3, BR-5, BI-1, BI-2, BI-3, BI-4, BI-5, BI-6, BI-7
51
Create a showroom
Main flow:
No Actor events System respond
1 Click on avatar at the top-right of website.
2 Show drop-down menu.
3 Click on “Bộ sưu tập”.
4 Show “Bộ sưu tập” tab with all
52
showrooms.
5 Click on button “+”.
6 Show create showroom form.
7 Fill information and then click on button
“Tạo”.
8 Show successful message.
9 Click on button “OK”.
10 Close message and navigate to “Bộ sưu
tập” tab.
Alternative Flows:
Alt1 At step 3
No Actor events System respond
3.1 Click on “Thanh toán”.
4.1 Show “Thanh toán” tab with all
payments.
5.1 Click on “Bộ sưu tập” tab.
6.1 Show “Bộ sưu tập” tab with all
showrooms.
7.1 Click on button “Thêm”.
8.1 Show create showroom form.
9.1 Fill information and then click on button
“Tạo”.
10.1 Show successful message.
11.1 Click on button “OK”.
12.1 Close message and navigate to “Bộ sưu
tập” tab.
Alt2 At step 3
No Actor events System respond
3.2 Click on “Đánh giá”.
4.2 Show “Đánh giá” tab with all reviews.
5.2 Click on “Bộ sưu tập” tab.
6.2 Show “Bộ sưu tập” tab with all
showrooms.
7.2 Click on button “Thêm”.
8.2 Show create showroom form.
9.2 Fill information and then click on button
“Tạo”.
10.2 Show successful message.
11.2 Click on button “OK”.
12.2 Close message and navigate to “Bộ sưu
tập” tab.
Alt3 At step 1
No Actor events System respond
1.3 Click on icon “Dự án”.
2.3 Show “Dự án” tab with all projects.
3.3 Click on “Bộ sưu tập” tab.
4.3 Show “Bộ sưu tập” tab with all
53
showrooms.
5.3 Click on button “Thêm”.
6.3 Show create showroom form.
7.3 Fill information and then click on button
“Tạo”.
8.3 Show successful message.
9.3 Click on button “OK”.
10.3 Close message and navigate to “Bộ sưu
tập” tab.
Alt4 At step 1
No Actor events System respond
1.4 Click on icon “Yêu cầu”.
2.4 Show “Yêu cầu” tab with all requests.
3.4 Click on “Bộ sưu tập” tab.
4.4 Show “Bộ sưu tập” tab with all
showrooms.
5.4 Click on button “Thêm”.
6.4 Show create showroom form.
7.4 Fill information and then click on button
“Tạo”.
8.4 Show successful message.
9.4 Click on button “OK”.
10.4 Close message and navigate to “Bộ sưu
tập” tab.
Exception: N/A
54
Edit a showroom
Main flow:
No Actor events System respond
1 Click on avatar at the top-right of website.
2 Show drop-down menu.
3 Click on “Bộ sưu tập”.
4 Show “Bộ sưu tập” tab with all
55
showrooms.
5 Click on a showroom.
6 Show showroom detail.
7 Click on button “Chỉnh sửa thông tin”.
8 Show text fields edit information.
9 Enter information and then click on button
“Lưu”.
10 Show successful message.
11 Click on button “OK”.
12 Close message and show previous page.
Alternative Flows:
Alt1 At step 3
No Actor events System respond
3.1 Click on “Thanh toán”.
4.1 Show “Thanh toán” tab with all
payments.
5.1 Click on “Bộ sưu tập” tab.
6.1 Show “Bộ sưu tập” tab with all
showrooms.
7.1 Click on a showroom.
8.1 Show showroom detail.
9.1 Click on button “Chỉnh sửa thông tin”.
10.1 Show text fields edit information.
11.1 Enter information and then click on button
“Lưu”.
12.1 Show successful message.
13.1 Click on button “OK”.
14.1 Close message and navigate to “Bộ sưu
tập” tab.
Alt2 At step 3
No Actor events System respond
3.2 Click on “Đánh giá”.
4.2 Show “Đánh giá” tab with all reviews.
5.2 Click on “Bộ sưu tập” tab.
6.2 Show “Bộ sưu tập” tab with all
showrooms.
7.2 Click on a showroom.
8.2 Show showroom detail.
9.2 Click on button “Chỉnh sửa thông tin”.
10.2 Show text fields edit information.
11.2 Enter information and then click on button
“Lưu”.
12.2 Show successful message.
13.2 Click on button “OK”.
14.2 Close message and navigate to “Bộ sưu
tập” tab.
Alt3 At step 1
56
No Actor events System respond
1.3 Click on icon “Dự án”.
2.3 Show “Dự án” tab with all projects.
3.3 Click on “Bộ sưu tập” tab.
4.3 Show “Bộ sưu tập” tab with all
showrooms.
5.3 Click on a showroom.
6.3 Show showroom detail.
7.3 Click on button “Chỉnh sửa thông tin”.
8.3 Show text fields edit information.
9.3 Enter information and then click on button
“Lưu”.
10.3 Show successful message.
11.3 Click on button “OK”.
12.3 Close message and navigate to “Bộ sưu
tập” tab.
Alt4 At step 1
No Actor events System respond
1.4 Click on icon “Yêu cầu”.
2.4 Show “Yêu cầu” tab with all requests.
3.4 Click on “Bộ sưu tập” tab.
4.4 Show “Bộ sưu tập” tab with all
showrooms.
5.4 Click on a showroom.
6.4 Show showroom detail.
7.4 Click on button “Chỉnh sửa thông tin”.
8.4 Show text fields edit information.
9.4 Enter information and then click on button
“Lưu”.
10.4 Show successful message.
11.4 Click on button “OK”.
12.4 Close message and navigate to “Bộ sưu
tập” tab.
Extension Flows:
ET1 At step 9
No Actor events System respond
9.1 Enter information and click on button
“Hủy”.
10.1 Close text fields edit information.
Exception: N/A
57
Delete a showroom
Main flow:
No Actor events System respond
1 Click on avatar at the top-right of website.
2 Show drop-down menu.
3 Click on “Bộ sưu tập”.
4 Show “Bộ sưu tập” tab with all
58
showrooms.
5 Click on a showroom.
6 Show showroom detail.
7 Click on button “Xóa mẫu thiết kế này”.
8 Show confirmation message.
9 Click on button “Đồng ý”.
10 Close confirmation message and show
successful message.
11 Click on button “OK”.
12 Close successful message and show
previous page.
Alternative Flows:
Alt1 At step 3
No Actor events System respond
3.1 Click on “Thanh toán”.
4.1 Show “Thanh toán” tab with all
payments.
5.1 Click on “Bộ sưu tập” tab.
6.1 Show “Bộ sưu tập” tab with all
showrooms.
7.1 Click on a showroom.
8.1 Show showroom detail.
9.1 Click on button “Xóa mẫu thiết kế này”.
10.1 Show confirmation message.
11.1 Click on button “Đồng ý”.
12.1 Close confirmation message and show
successful message.
13.1 Click on button “OK”.
14.1 Close successful message and show
previous page.
Alt2 At step 3
No Actor events System respond
3.2 Click on “Đánh giá”.
4.2 Show “Đánh giá” tab with all reviews.
5.2 Click on “Bộ sưu tập” tab.
6.2 Show “Bộ sưu tập” tab with all
showrooms.
7.2 Click on a showroom.
8.2 Show showroom detail.
9.2 Click on button “Xóa mẫu thiết kế này”.
10.2 Show confirmation message.
11.2 Click on button “Đồng ý”.
12.2 Close confirmation message and show
successful message.
13.2 Click on button “OK”.
14.2 Close successful message and show
previous page.
59
Alt3 At step 2
No Actor events System respond
1.3 Click on icon “Dự án”.
2.3 Show “Dự án” tab with all projects.
3.3 Click on “Bộ sưu tập” tab.
4.3 Show “Bộ sưu tập” tab with all
showrooms.
5.3 Click on a showroom.
6.3 Show showroom detail.
7.3 Click on button “Xóa mẫu thiết kế này”.
8.3 Show confirmation message.
9.3 Click on button “Đồng ý”.
10.3 Close confirmation message and show
successful message.
11.3 Click on button “OK”.
12.3 Close successful message and show
previous page.
Alt4 At step 1
No Actor events System respond
1.4 Click on icon “Yêu cầu”.
2.4 Show “Yêu cầu” tab with all requests.
3.4 Click on “Bộ sưu tập” tab.
4.4 Show “Bộ sưu tập” tab with all
showrooms.
5.4 Click on a showroom.
6.4 Show showroom detail.
7.4 Click on button “Xóa mẫu thiết kế này”.
8.4 Show confirmation message.
9.4 Click on button “Đồng ý”.
10.4 Close confirmation message and show
successful message.
11.4 Click on button “OK”.
12.4 Close successful message and show
previous page.
Extension Flows:
ET1 At step 9
No Actor events System respond
9.1 Click on button “Từ chối”.
10.1 Close confirmation message.
Exception: N/A
60
Report a designer
Main flow:
No Actor events System respond
1 The designer is in homepage.
3 Show homepage.
4 Click on the category.
5 Show all showrooms.
61
6 Click on the showroom.
7 Show showroom detail.
8 Click on button “Báo cáo”.
9 Show report pop-up.
10 Enter information and click on button “Xác
nhận”.
11 Show successful message.
12 Click on button “OK”.
13 Close message.
Extension Flows:
ET1 At step 10
No Actor events System respond
10.1 Click outside the report pop-up.
11.1 Close report pop-up.
Exception: N/A
62
Report a house owner
Main flow:
No Actor events System respond
1 The designer is in homepage.
2 Show homepage.
63
3 Click on icon “Dự án”.
4 Show “Dự án” tab with all projects.
5 Click on the project has “Đang làm” status.
6 Show project detail.
7 Click on button “Báo cáo”.
8 Show report pop-up.
9 Enter information and click on button
“Gửi”.
10 Show successful notification and close
pop-up.
Alternative Flows:
Alt1 At step 3
No Actor events System respond
3.1 Click on icon “Yêu cầu”.
4.1 Show “Yêu cầu” tab with all requests.
5.1 Click on “Dự án” tab.
6.1 Show “Dự án” tab with all projects.
7.1 Click on the project has “Đang làm” status.
8.1 Show project detail.
9.1 Click on button “Báo cáo”.
10.1 Show report pop-up.
11.1 Enter information and click on button
“Gửi”.
12.1 Show successful notification and close
pop-up.
Alt2 At step 1
No Actor events System respond
1.2 Click on designer avatar.
2.2 Show drop-down menu.
3.2 Click on “Bộ sưu tập”.
4.2 Show “Bộ sưu tập” tab with all
showrooms.
5.2 Click on “Yêu cầu” tab.
6.2 Show “Yêu cầu” tab with all requests.
7.2 Click on “Dự án” tab.
8.2 Show “Dự án” tab with all projects.
9.2 Click on the project has “Đang làm” status.
10.2 Show project detail.
11.2 Click on button “Báo cáo”.
12.2 Show report pop-up.
13.2 Enter information and click on button
“Gửi”.
14.2 Show successful notification and close
pop-up.
Alt3 At step 1
No Actor events System respond
1.3 Click on designer avatar.
64
2.3 Show drop-down menu.
3.3 Click on “Thanh toán”.
4.3 Show “Thanh toán” tab with all
payments.
5.3 Click on “Yêu cầu” tab.
6.3 Show “Yêu cầu” tab with all requests.
7.3 Click on “Dự án” tab.
8.3 Show “Dự án” tab with all projects.
9.3 Click on the project has “Đang làm” status.
10.3 Show project detail.
11.3 Click on button “Báo cáo”.
12.3 Show report pop-up.
13.3 Enter information and click on button
“Gửi”.
14.3 Show successful notification and close
pop-up.
Alt4 At step 1
No Actor events System respond
1.4 Click on designer avatar.
2.4 Show drop-down menu.
3.4 Click on “Đánh giá”.
4.4 Show “Đánh giá” tab with all reviews.
5.4 Click on “Yêu cầu” tab.
6.4 Show “Yêu cầu” tab with all requests.
7.4 Click on “Dự án” tab.
8.4 Show “Dự án” tab with all projects.
9.4 Click on the project has “Đang làm” status.
10.4 Show project detail.
11.4 Click on button “Báo cáo”.
12.4 Show report pop-up.
13.4 Enter information and click on button
“Gửi”.
14.4 Show successful notification and close
pop-up.
Extension Flows:
ET1 At step 5
No Actor events System respond
5.1 Click on button close at the top-right of
pop-up.
6.1 Close pop-up.
Exception: N/A
65
Like images
Main flow:
No Actor events System respond
1 The designer is in “showroom-detail” page.
2 Show all information of projects.
3 Click on the image.
4 Zoom the picture.
66
5 Click on icon “Like” at the center of image.
6 Change the like number of the image.
Extension Flows:
ET1 At step 5
No Actor events System respond
5.1 Click on button close at the top-right of
image.
6.1 Close the zoom picture.
Exception: N/A
Business Rules:
Forgot password
67
USECASE – UC-DN-13 – SPECIFICATION
Use case No. UC-DN-13 Use case version v2.0
Use case name Forgot password
Author Pham Dinh Mai
Date 02/07/2018 Priority Low
Primary actor Designer Secondary actor N/A
Description This function allows the actor to recover the forgotten password.
Pre-condition Designer has logged into the system.
Post-condition A link to create a new password is sent to the designer via email.
Trigger Click on “Quên mật khẩu”.
Main flow:
No Actor events System respond
1 Click on button “Đăng nhập”.
2 Show login pop-up.
3 Click on “Quên mật khẩu”.
4 Show reset password form.
5 Enter information then click on button
“Gửi”.
6 Send token to email register account.
7 Open email then clicks on token link.
8 Show create new password form.
9 Enter information and click on button
“Lưu”.
10 Show successful message.
11 Click on button “OK”.
12 Close message and show login pop-up..
Extension Flows:
ET1 At step 3
No Actor events System respond
3.1 Enter information and lick on button “Đăng
nhập”.
4.1 Go to UC-CM-04.
ET2 At step 3
No Actor events System respond
3.2 Click on button “Google”.
4.2 Show Google login privilege popup.
ET3 At step 3
No Actor events System respond
3.3 Click on button close at the top-right of
pop-up.
4.3 Navigate to the previous page.
Exception: N/A
68
Business Rules: BI-1, BI-2, BI-3
Change password
Main flow:
No Actor events System respond
1 Click on your avatar.
69
2 Show dropdown menu.
3 Click on “Đổi mật khẩu”.
4 Show change password form.
5 Enter information to text field and click on
button “Lưu”.
6 Show successful message.
Extension Flows:
ET1 At step 3
No Actor events System respond
3.1 Click on “Bộ sưu tập”.
4.1 Show category page with all categorys.
ET2 At step 3
No Actor events System respond
3.2 Click the designer's name.
4.2 Show edit designer profile page with
form edit.
ET3 At step 3
No Actor events System respond
3.3 Click on “Thanh toán”.
4.3 Show payment page with all payments.
ET4 At step 3
No Actor events System respond
3.4 Click on “Đánh giá”.
4.4 Show review page with all reviews.
ET5 At step 3
No Actor events System respond
3.5 Click on “Đăng xuất”.
4.5 Go to UC-DN-01.
Exception: N/A
70
Use case diagram of house owner
71
Logout
Main flow:
No Actor events System respond
1 Click on avatar at the top-right of the
website.
2 Show a drop-down menu.
3 Click on button “Đăng xuất”.
4 The system redirects to the homepage.
72
Extension Flows:
ET1 At step 3
No Actor events System respond
3.1 Click the house owner's name.
4.1 Show edit house owner profile form.
ET1 At step 3
No Actor events System respond
3.1 Click on “Đổi mật khẩu”.
4.1 Go to UC-HO-13.
Exception: N/A
Business Rules:
73
Edit profile
Main flow:
No Actor events System respond
74
1 Click on avatar at the top-right of the
website.
2 Show a drop-down menu.
3 Click on name of user.
4 Show edit house owner profile form.
5 Click on button “Chọn ảnh”.
6 Show image selection window.
7 Click on button “Lưu”.
8 Upload progress bar to 100%.
9 Enter information then click on button
“Gửi”.
10 Show successful message.
11 Click on button “OK”.
12 Close successful message and navigate
to home page.
Extension Flows:
ET1 At step 3
No Actor events System respond
3.1 Click on “Đổi mật khẩu”.
4.1 Go to UC-HO-13.
ET2 At step 3
No Actor events System respond
3.2 Click on “Đăng xuất”.
4.2 Go to UC-HO-01.
Exception: N/A
75
Create a request
Main flow:
No Actor events System respond
76
1 Click the category name in the home page.
Alternative Flows:
Alt1 At step 1
No Actor events System respond
1.1 Enter the keyword in the search field and
click on “Tìm kiếm” button.
2.1 Show search results and number of
results found.
3.1 Click on a designer in the results list.
4.1 Show showroom detail page.
Extension Flows:
ET1 At step 7
No Actor events System respond
7.1 Click on button close at the top-right of the
dialog.
8.1 Show previous page.
Exception: N/A
77
Send messages
Main flow:
78
No Actor events System respond
1 Click on icon “Yêu cầu”.
Alternative Flows:
Alt1 At step 5
No Actor events System respond
5.1 Click the text box and enter the message
then press the “Enter” key from keyboard.
Alt2 At step 1
No Actor events System respond
1.2 Click on icon “Dự án”.
2.2 Show all projects.
3.2 Click on “Yêu cầu” tab.
4.2 Show “Yêu cầu” tab with all requests.
5.2 Click on a request.
6.2 Show message box.
7.2 Click the text box and enter the message
then click the submit button.
8.2 Send this message to the house owner.
Extension Flows:
ET1 At step 3
No Actor events System respond
3.1 Enter search keyword to “Tìm kiếm” field.
4.1 Show all requests match search
keyword.
ET2 At step 3
No Actor events System respond
3.2 Click on “Cũ hơn”.
4.2 Show more requests.
Exception: N/A
79
Accept a CI-project
Main flow:
80
No Actor events System respond
1 Click on icon “Dự án”.
2 Show all projects.
3 Click on a project that have "Mới" status.
4 Show project detail.
5 Click on button “Xác nhận”.
6 Show successful message.
Navigate to “Dự án” tab, status of
project has changed to “Đang chờ”.
Alternative Flows:
Alt1 At step 1
No Actor events System respond
1.1 Click on icon “Yêu cầu”.
2.1 Navigate to “request” page.
3.1 Click on “Dự án” tab.
4.1 Navigate to “project” page.
5.1 Click on a project that has a "Mới" status.
6.1 Navigate to “project-detail” page.
7.1 Click on button “Xác nhận”.
8.1 Show successful message.
Navigate to “Dự án” tab, status of
project has changed to “Đang chờ”.
Extension Flows:
ET1 At step 6
No Actor events System respond
5.1 Click on button “Cần sửa đổi”.
6.1 Navigate to “Dự án” tab, status of
project has changed to “Đã từ chối”.
Exception: N/A
81
View a CI-project
Main flow:
No Actor events System respond
82
1 Click on icon “Dự án”.
2 Show all projects.
3 Click on a project.
4 Show project detail.
Alternative Flows:
Alt1 At step 1
No Actor events System respond
1.1 Click on icon “Yêu cầu”.
2.1 Show “Yêu cầu” tab with all requests.
3.1 Click on “Dự án” tab.
4.1 Show all projects.
5.1 Click on a project.
6.1 Show project detail.
Exception: N/A
83
Reject a CI-project
Main flow:
84
No Actor events System respond
1 Click on icon “Dự án”.
2 Show all projects.
3 Click on a project that has a "Mới" status.
4 Show project detail.
5 Click on button “Cần sửa đổi”.
6 Navigate to “Dự án” tab, status of
project has changed to “Đã từ chối”.
Alternative Flows:
Alt1 At step 1
No Actor events System respond
1.1 Click on icon “Yêu cầu”.
2.1 Navigate to “Yêu cầu” tab with all
requests.
3.1 Click on “Dự án” tab.
4.1 Show all projects.
5.1 Click on a project that has a "Mới" status.
6.1 Show project detail.
7.1 Click on button “Xác nhận”.
8.1 Show successful message.
Navigate to “Dự án” tab, status of
project has changed to “Đang chờ”.
Extension Flows:
ET1 At step 5
No Actor events System respond
5.1 Click on button “Xác nhận”.
6.1 Show successful message.
Navigate to “Dự án” tab, status of
project change to “Đang chờ”.
Exception: N/A
85
Accept a payment
Alternative Flows:
Alt1 At step 1
No Actor events System respond
1.1 User clicks on icon “Yêu cầu”.
2.1 Show “Yêu cầu” tab with all requests.
3.1 Click on tab “Dự án”.
4.1 Show all projects.
5.1 Click the project has the status of “Đang
làm”.
6.1 Show project detail.
7.1 Click on button “Duyệt công việc”.
8.1 Show confirmation message.
9.1 Click on button “Đồng ý”.
10.1 Close confirmation message and show
successful message.
11.1 Click on button “OK”.
12.1 Payment status has changed to “Đang
chuyển tiền” status.
Alt2 At step 7
No Actor events System respond
7.2 Click on button “Hủy bỏ”.
8.2 Close confirmation message.
Extension Flows:
ET1 At step 5
No Actor events System respond
5.1 Click on button “Đóng dự án”.
6.1 Show confirmation message.
7.1 Click on button “OK”.
8.1 Close message and navigate to
“project” page, project status has
changed to “Đóng”.
87
Exception: N/A
Close a CI-project
Main flow:
No Actor events System respond
1 Click on icon “Dự án”.
2 Show all projects.
3 Click on a project has the “Đang làm”
status.
4 Show project detail.
5 Click on button “Đóng dự án”.
6 Show rate pop-up.
7 Evaluate the quality of work of the
designer.
8 Navigate to “project” page, status of
project has changed to “Đóng”.
Alternative Flows:
Alt1 At step 1
No Actor events System respond
1.1 User clicks on icon “Yêu cầu”.
2.1 Show “Yêu cầu” tab with all requests.
3.1 Click on tab “Dự án”.
4.1 Show all projects.
5.1 Click on a project has the “Đang làm”
status.
6.1 Show project detail.
7.1 Click on button “Đóng dự án”.
8.1 Show rate pop-up.
9.1 Evaluate the quality of work of the
designer.
10.1 Navigate to “project” page, status of
project has changed to “Đóng”.
Extension Flows:
ET1 At step 5
No Actor events System respond
5.1 Click on button close at the top-right of
pop-up.
6.1 Close rate pop-up, status of project is
“Đang làm”.
Exception: N/A
89
Like showroom image
Main flow:
90
No Actor events System respond
1 User is in homepage.
2 Show homepage.
3 Click on a category.
4 Show all categorys.
5 Click on a showroom.
6 Show showroom detail.
7 Click on a picture.
8 Zoom the picture.
9 Click on icon heart at the center of image.
10 Change the like number of the image.
Extension Flows:
ET1 At step 7
No Actor events System respond
7.1 Click on button close at the top-right of
image.
8.1 Close the zoom picture.
Exception: N/A
Business Rules:
91
Report a designer
Main flow:
No Actor events System respond
92
1 User is in homepage.
2 Show homepage.
3 Click on a category.
4 Show all categorys.
5 Click on a showroom.
6 Show showroom detail.
7 Click on button “Báo cáo”.
8 Show report pop-up.
9 Enter information and click on button “Xác
nhận”.
10 Show successful message.
11 Click on button “OK”.
12 Close message.
Extension Flows:
ET1 At step 9
No Actor events System respond
9.1 Click on button close at the top-right of
pop-up.
10.1 Close report pop-up.
Exception: N/A
93
Forgot password
Main flow:
No Actor events System respond
1 Click on button “Đăng nhập”.
2 Show login pop-up.
3 Click on “Quên mật khẩu”.
4 Show reset password form.
94
5 Enter information then click on button
“Gửi”.
6 Send token to email register account.
7 Open email then clicks on token link.
8 Show create new password form.
9 Enter information and click on button
“Lưu”.
10 Show successful message.
11 Click on button “OK”.
12 Close message and show login pop-up.
Extension Flows:
ET1 At step 3
No Actor events System respond
3.1 Enter information and lick on button “Đăng
nhập”.
4.1 Go to UC-CM-04.
ET2 At step 3
No Actor events System respond
3.2 Click on button “Google”.
4.2 Show Google login privilege popup.
ET3 At step 3
No Actor events System respond
3.3 Click on button close at the top-right of
pop-up.
4.3 Navigate to the previous page.
Exception: N/A
95
Change password
Main flow:
No Actor events System respond
1 Click on your avatar.
2 Show dropdown menu.
3 Click on “Đổi mật khẩu”.
4 Show change password form.
96
5 Enter information to text field and click on
button “Lưu”.
6 Show successful message.
Extension Flows:
ET1 At step 3
No Actor events System respond
3.1 Click the house owner’s name.
4.1 Show edit house owner profile page
with form edit.
ET2 At step 3
No Actor events System respond
3.2 Click on “Đăng xuất” button.
4.2 Go to UC-HO-01.
Exception: N/A
97
Admin Use case diagram
98
View user profile
Main flow:
No Actor events System respond
1 Click on button “User”
2 Show user management page.
Exception: N/A
Ban user
Main flow:
No Actor events System respond
1 Click on button “User”.
2 Show user management page.
3 Click on icon “Ban” on the right of user.
4 Show confirmation message.
5 Click on button “OK”.
6 Close confirmation message and show
successful message.
7 Click on button “OK”.
8 Close successful message, "Ban" icon
on the right of the user disappear.
Extension Flows:
ET1 At step 5
No Actor events System respond
5.1 Click on button “OK”.
6.1 Close confirmation message.
ET2 At step 3
No Actor events System respond
3.2 Enter search keyword and click on search
icon.
4.2 Show all results match search keyword.
ET3 At step 3
No Actor events System respond
3.3 Click on button “Next”.
4.3 Next page.
ET4 At step 3
No Actor events System respond
3.4 Click on button “ADD PROFESSIONAL”.
4.4 Show “Thêm Professional” form.
5.4 Enter information and click on button
“SAVE”.
6.4 Show successful message.
7.4 Click on button “OK”.
8.4 Close successful message.
Exception: N/A
Business Rules:
101
View a report
Main flow:
No Actor events System respond
1 Click on button “Report”.
2 Show report management page.
102
Alternative Flows: N/A
Exception:
ET1 At step 3
No Actor events System respond
3.1 Click on button “Next”.
4.1 Next page.
Business Rules:
Lock a project
Main flow:
No Actor events System respond
1 Click on button “Project”.
2 Show project management page.
3 Click the "Edit" icon to the right of a
project.
4 Show project detail.
5 Click on radio button “Lock”.
6 Show successful message.
7 Click on button “OK”.
8 Close successful message, project
status has changed to “Lock”.
Extension Flows:
ET1 At step 3
No Actor events System respond
3.1 Enter search keyword and click on search
icon.
4.1 Show all results match search keyword.
ET2 At step 3
No Actor events System respond
3.2 Click on button “Next”.
4.2 Next page.
Exception: N/A
Business Rules:
104
Active a project
Main flow:
No Actor events System respond
1 Click on button “Project”.
2 Show project management page.
3 Click the "Edit" icon to the right of a project
that has the status "PENDING".
105
4 Show project detail.
5 Click on button “ACTIVE”.
6 Show confirmation message.
7 Click on button “OK”.
8 Show successful message.
9 Click on button “OK”.
10 Close successful message, project
status has changed to “RUNNING”.
Extension Flows:
ET1 At step 3
No Actor events System respond
3.1 Enter search keyword and click on search
icon.
4.1 Show all results match search keyword.
ET2 At step 3
No Actor events System respond
3.2 Click on button “Next”.
4.2 Next page.
Exception: N/A
Business Rules:
106
Active a payment
Main flow:
No Actor events System respond
1 Click on button “Project”.
2 Show project management page.
3 Click the "Edit" icon to the right of a project
that has the status "WORKING".
107
4 Show project detail.
5 Click on icon “Active”.
6 Show confirmation message.
7 Click on button “OK”.
8 Show successful message.
9 Click on button “OK”.
10 Close successful message, payment
status has changed to “PAID”.
Extension Flows:
ET1 At step 3
No Actor events System respond
3.1 Enter search keyword and click on search
icon.
4.1 Show all results match search keyword.
ET2 At step 3
No Actor events System respond
3.2 Click on button “Next”.
4.2 Next page.
ET2 At step 7
No Actor events System respond
7.3 Click on button “Hủy”.
8.3 Close confirmation message.
Exception: N/A
Business Rules:
108
Close a project
Main flow:
No Actor events System respond
1 Click on button “Project”.
2 Show project management page.
3 Click the "Edit" icon to the right of a
project.
109
4 Show project detail.
5 Click on radio button “CLOSING”.
6 Show successful message.
7 Click on button “OK”.
8 Close successful message, payment
status has changed to “CLOSE”.
Extension Flows:
ET1 At step 3
No Actor events System respond
3.1 Enter search keyword and click on search
icon.
4.1 Show all results match search keyword.
ET2 At step 3
No Actor events System respond
3.2 Click on button “Next”.
4.2 Next page.
Exception: N/A
Business Rules:
3.6.2 Performance
Client-Side validation: Improve user experience by validation performed quickly respond to
notify users to re-input fields. The network traffic does not require so it helps server to
perform better.
3.6.3 Usability
The search is display with total result.
The user interface for each web page is design toward the easy of use as following
example:
110
Figure 3-51 Mouse hover image
3.6.4 Scalability
The CI system is available for further web development or mobile app development when
using service API.
111
3.7 Entity relationship diagram
112
Chapter 4 - Software Architecture Design
4.1 Purpose
This purpose of this chapter shows the software architecture system design using a top-down
approach, from the high-level design to detail design description for each section.
113
4.2 High level system architecture overview
4.2.1 Context diagram
114
(1): https://creative-inside.tk/
(2): https://creative-inside-api.tk/
Architecture explanation
HTML5, CSS3
Using HTML5 and CSS3 provides advantages to businesses that develop and deploy web
content and web applications, to create refined and accurate web pages and web systems that
operate across devices, operating systems and web browsers.
Angular 4, Angular-http-server
Angular 4 is a JavaScript framework for building web applications and apps in JavaScript,
html, and TypeScript, which is a superset of JavaScript. Desktop development is much easier when
mobile performance issues are handled first. Thus, Angular first handles mobile development.
Angular follows modularity, similar functionalities are kept together in same modules. This gives
Angular a lighter & faster core.
Node.js is an application runtime environment that allows you to write server-side applications in
JavaScript. NodeJS is better than other technologies because most of its functionality are
asynchronous.
MySQL
MySQL is a powerful, free open-source database management system that has been around for
years. It is very stable and has a big community that helps maintain, debug and upgrade it.
Tomcat server
Apache Tomcat, is a free open source web server and servlet container developed by the Apache
Software Foundation, it is the HTTP web server that run your java code. It is easily to configuration
and ease of use, suitable for java base application.
115
Spring Oauth2
OAuth2 is a standardized authorization protocol. Spring Security OAuth project provides all the
necessary API we might need in order to develop an OAuth2 compliant implementation using Spring.
Explaination
Web application
Angular4 components components for building web app
Web services
User interface User interface API for any application want to use.
Web interface User interface which is only connected by HTTP protocol (HTTP 1.1).
Remote interface User interface which is connected by other protocol such as WebSocket
protocol.
Business Implement and store all businesses.
Authoziration server authorizes user and stores user session.
Configuration Store all application configs in system
Repository Store query to use in database
Data transfer object Store object classes to respond to client
Entity Store ORM classes which is mapped tables in database
116
Util Store static classes and contain static method whichs are ready to use in
CI system
Package Description
Dto Use Common data transfer object classes to respond to client.
Builder Builder classes which are static classes and contain static methods to
share public in CI system.
Respond Common base respond object classes
Repository Common Group of interfaces, implementing and implemented classes that store
queries.
Base Base classes which are written in generic type
Controller Base Base classes which are written in generic type
Services Base Base classes which are written in generic type
Common Group of interfaces, implemented classes and implementing classes that
store logic services.
Configs Application config classes
Utils Util classes which are static classes and contain static methods to share
public in system
Exception Exception classes for handling exception.
Enum Enum classes
Event Event classes
Listener Listener event classes
Domain Object classes which are ORM classes and are mapped to tables in
databases
118
4.3.2 Class diagram
Module public controller
Base controller
Class BaseController
Description Abstract controller class
Source File BaseController.java
Package src\main\java\com\controller\base\
Attribute Name Access Data type
modifier
objectMapper private ObjectMapper
Methods Name Access Return type
modifier
getLogger protected Logger
getService protected IBaseService
existById public RespondEntity<?>
findById public RespondEntity<?>
findAll public RespondEntity<?>
count public RespondEntity<?>
save public RespondEntity<?>
update public RespondEntity<?>
findAllByExampleLike public RespondEntity<?>
findUnique public RespondEntity<?>
deleteById public RespondEntity<?>
findAllByExampleLike protected RespondEntity<?>
findUnique protected RespondEntity<?>
count protected RespondEntity<?>
save protected RespondEntity<?>
update protected RespondEntity<?>
findAll protected RespondEntity<?>
deleteById protected RespondEntity<?>
findById protected RespondEntity<?>
existsById protected RespondEntity<?>
119
createOrder private Order
createPageRequest private PageRequest
IBaseService
Class IBaseService
Description Interface
Source File IBaseService.java
Package com/services/base/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
count public Optional<Long>
saveOrUpdate public Optional<D>
save public Optional<ILong>
delete public Void
existsById public Boolean
deleteAll public Void
findAll public <List<D>>
findAllByExampleLike public Optional<List<D>>
findUnique public Optional<D>
findById public Optional<D>
findAll public Optional<List<D>>
findAll public Optional<Page<D>>
PublicController
Class PublicController
Description Class
Source File PublicController.java
Package com/controller/
Attribute Name Access Data type
modifier
service default IPublicService
showroomCategoryService default IShowroomCategoryService
companyService default ICompanyService
showRoomService default IShowRoomService
showRoomRateService default IShowRoomRateService
Methods Name Access Return type
modifier
search public RespondEntity<?>
search public RespondEntity<?>
suggest public RespondEntity<?>
findPro public RespondEntity<?>
findShowRoom default RespondEntity<?>
findProfessionalByID default RespondEntity<?>
findProfessionalByID default RespondEntity<?>
120
findShowRoomByProfessionalID default RespondEntity<?>
findImageShowRoomBySRId default RespondEntity<?>
findShowroomCategory default RespondEntity<?>
findShowByCateID default RespondEntity<?>
contact public RespondEntity<?>
rateShowRoom default RespondEntity<?>
IPublicService
Class IPublicService
Description Interface
Source File IPublicService.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
suggest public Optional<List<SearchData>>
search public Optional<List<SearchData>>
findProInfor public Optional<Page<ProfessionalDetailDto>>
findProfessionalById public Optional< ProfessionalDetailDto>
findShowRoomByProfessionalID public Optional<List<ShowroomDto>>
searchType public Optional<List<SearchData>>
findReviewByProId public Optional<List<ReviewDto>>
findImageShowroomById public Optional<List<ImageShowroomDto>>
IGenericDAO
Class IGenericDAO
Description Interface
Source File IGenericDao.java
Package \src\main\java\com\repository\base\core\
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
Save public Optional<ID>
saveOrUpdate public Void
count public Optional<Long>
deleteAll public Void
findAll public Void
findAll public Optional<List<T>>
findAllByExampleLike public Optional<List<T>>
findUnique public Optional<T>
findById public Optional<T>
existsById public Boolean
clear public Void
121
flush public Void
getSession public Session
getCriteria public Criteria
getSessionFactory public SessionFactory
BaseServiceImpl
Class BaseServiceImpl
Description Abstract class
Source File BaseServiceImpl.java
Package com/services/base/impl/
Attribute Name Access Data type
modifier
getLogger protecte Logger
d
getRepository protecte IGenericDAO
d
convertToDto protecte D
d
convertToEntity protecte T
d
Methods Name Access Return type
modifier
save public Optional<ID>
count public Optional<Long>
saveOrUpdate public Optional
delete public Void
existsById public Boolean
deleteAll public Void
findAll public Optional<List<D>>
findAllByExampleLike public Optional<List<D>>
findUnique public Optional<D>
findById public Optional<D>
findAll public Optional<List<D>>
findAll public Optional<Page<D>>
IShowroomService
Class IShowroomService
Description Interface
Source File IShowRoomService.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findShowroom public Optional<Page<ShowRoomDto>>
saveShowroom public Optional< ShowRoomDto>
findShowroomByPro public Optional<Page<ShowRoomDto>>
122
findShowroomById public Optional<ShowRoomDto>
findContainName public Optional<List<ShowRoomDto>>
findDetailContainName public Optional<List<ShowRoomDto>>
findShowRoomByCateId public Optional<List<ShowRoomDto>>
PublicServiceImpl
Class PublicServiceImpl
Description Public class
Source File PublicServiceImpl.java
Package com/services/common/impl/
Attribute Name Access Data type
modifier
professionalDetailRepository default IProfessionalDetailRepository
companyRepository default ICompanyRepository
productRepository default IProductRepository
tagRepository default ITagRepository
companyService default ICompanyService
productService default IProductService
projectRepository default IProjectRepository
tagService default ITagService
professionalDetailService default IProfessionalDetailService
imageShowroomRepository default IImageShowroomRepository
showRoomService default IShowRoomService
projectService private IProjectService
Methods Name Access Return type
modifier
suggest public Optional<List<SearchData>>
search public Optional<List<SearchData>>
findProInfo public Optional<Page<ProfessionalDetailDto>>
findProfessionalById public Optional<ProfessionalDetailDto>
findShowroomByProfessionalId public Optional<List<ShowroomDto>>
searchType public Optional<List<SearchData>>
findReviewByProId public Optional<List<ReviewDto>>
findImageShowroomById public Optional<List<ImageShowroomDto>>
convertReviewDto private ReviewDto
convertToDto private ProfessionalDetailDto
createPageRequest private PageRequest
AbstractGenericDAO
Class AbstractGenericDAO
Description Abstract class
Source File AbstractGenericDao.java
Package com/repository/base/impl/
Attribute Name Access Data type
modifier
entityClass protecte Class<T>
d
123
sessionFactory private SessionFactory
Methods Name Access Return type
modifier
getSession public Session
getCriteria public Criteria
count public Optional<Long>
findById public Optional<T>
save public Optional<ID>
saveOrUpdate public Void
findAll public Optional<List<T>>
findAll public Optional<Page<T>>
delete public Void
deleteAll public Void
findAll public Optional<List<T>>
findAllByExampleLike public Optional<List<T>>
findUnique public Optional< <T>
existsById public Boolean
clear public Void
flush public Void
IShowroomRateService
Class IShowroomRateService
Description Interface
Source File IShowRoomRateService.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
likeShowRoom public Optional<Boolean>
likeShowRoom public Optional<Long>
checkLike public Optional<Boolean>
ShowroomCategoryServiceImpl
Class ShowRoomCategoryServiceImpl
Description Public class
Source File ShowRoomCategoryServiceImpl.java
Package com/services/common/impl/
Attribute Name Access Data type
modifier
showRoomCategoryRepository default IShowroomCategoryRepository
Methods Name Access Return type
modifier
getLogger protecte Logger
d
124
getBaseRepository protecte IGenericDAO
d
convertToDto protecte ShowroomCategoryDto
d
convertToEntities protecte ShowroomCategory
d
ShowroomServiceImpl
Class ShowRoomServiceImpl
Description Public class
Source File ShowRoomServiceImpl.java
Package com/services/common/impl/
Attribute Name Access Data type
modifier
showRoomRepository default IShowRoomRepository
imageShowRoomRepository default IImageShowRoomRepository
professionalDetailRepository default IProfessionalDetailRepository
companyService default ICompanyService
showRoomLikeRepository default IShowRoomLikeRepository
showRoomRateRepository default IShowRoomRateRepository
companyRepository default ICompanyRepository
showRoomCategoryRepository default IShowRoomCategoryRepository
objectMapper default ObjectMapper
Methods Name Access Return type
modifier
getLogger protecte Logger
d
getBaseRepository protecte IGenericDAO
d
convertToDto protecte ShowRoomDto
d
findById public Optional< ShowRoomDto>
convertToEntities protecte ShowRoom
d
imageShowRoomEntity private ImageShowRoom
convertTagEntity private Tag
convertTagDto private TagDto
convertToImageShowroom private ImageShowRoomDto
findShowRoom public Optional<Page<ShowRoomDto>>
saveShowRoom public Optional< ShowRoomDto>
findShowRoomByPro public Optional<Page<ShowRoomDto>>
findShhowRoomById public Optional<ShowRoomDto>
findContainName public Optional<List<ShowRoomDto>>
findDetailContainName public Optional<List<ShowRoomDto>>
findShowRoomByCategory public Optional<List<ShowRoomDto>>
handlerOneShowRoom public ShowRoomDto
getPageDto private Page<ShowRoomDto>
125
IShowRoomRepository
Class IShowRoomRepository
Description Interface
Source File IShowRoomRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findShowRoom public Optional<Page<Showroom>>
findShowRoomByProfessional public Optional<Page<Showroom>>
findShowRoomByProfessional public Optional<List<Showroom>>
findContainName public Optional< List <Showroom>>
findShowroomByCategoryId public Optional< List <Showroom>>
findShowRoomById public Optional <Showroom>
IImageShowRoomRepository
Class IImageShowRoomRepository
Description Interface
Source File IImageShowRoomRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findOneByShowroomId public Optional<ImageShowroom>
countLike public Long
IProfessionalDetailRepository
Class IProfessionalDetailRepository
Description Interface
Source File IShowRoomRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findByUserDetail public Optional<ProfessionalDetail>
findProByUserId public Optional<Long>
findProDetailByEmail public Optional<ProfessionalDetail>
findProIdByEmail public Optional<Long>
findProfessionalById public Optional<ProfessionalDetail>
findProContainName public Optional<List<ProfessionalDetail>>
126
Module common user controller
AbstractGenericDAO
Class AbstractGenericDAO
Description Abstract class
Source File AbstractGenericDao.java
Package com/repository/base/impl/
Attribute Name Access Data type
modifier
entityClass protecte Class<T>
d
sessionFactory private SessionFactory
Methods Name Access Return type
modifier
getSession Public Session
getCriteria Public Criteria
count Public Optional<Long>
findById Public Optional<T>
save Public Optional<ID>
saveOrUpdate Public Void
findAll Public Optional<List<T>>
findAll Public Optional<Page<T>>
delete Public Void
deleteAll Public Void
findAll Public Optional<List<T>>
findAllByExampleLike Public Optional<List<T>>
findUnique Public Optional< <T>
existsById Public Boolean
clear Public Void
flush Public Void
127
AuthenticationRepositoryImpl
Class AuthenticationRepositoryImpl
Description Public class
Source File AuthenticationRepositoryImpl.java
Package com/repository/common/impl/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findByEmail Public Optional<Authentication>
checkExistEmail Public Optional<Long>
checkSocialEmail Public Optional< Long >
changeAccountStatus Public Optional<Boolean>
findAuthByEmail Public Optional<Authentication>
AuthenticationService
Class AuthenticationService
Description Public class
Source File AuthenticationService.java
Package com/services/common/impl/
Attribute Name Access Data type
modifier
authenticationRepository Private IAuthenticationRepository
Methods Name Access Return type
modifier
loadUserByEmail public UserDetail
getAuthorities private Set<GrantedAuthority>
getLogger protecte Logger
d
getBaseRepository protecte IGenericDAO
d
convertToDto protecte AuthenticationDto
d
convertToEntities protecte Authentication
d
BaseController
Class BaseController
Description Abstract class
Source File BaseController.java
Package src\main\java\com\controller\base\
Attribute Name Access Data type
modifier
objectMapper Private ObjectMapper
Methods Name Access Return type
modifier
getLogger protecte Logger
128
d
getService protecte IBaseService
d
existById public RespondEntity<?>
findById public RespondEntity<?>
findAll public RespondEntity<?>
count public RespondEntity<?>
save public RespondEntity<?>
update public RespondEntity<?>
findAllByExampleLike public RespondEntity<?>
findUnique public RespondEntity<?>
deleteById public RespondEntity<?>
findAllByExampleLike protecte RespondEntity<?>
d
findUnique protecte RespondEntity<?>
d
count protecte RespondEntity<?>
d
save protecte RespondEntity<?>
d
update protecte RespondEntity<?>
d
findAll protecte RespondEntity<?>
d
deleteById protecte RespondEntity<?>
d
findById protecte RespondEntity<?>
d
existsById protecte RespondEntity<?>
d
createOrder private Order
createPageRequest private PageRequest
BaseServiceImpl
Class BaseServiceImpl
Description Abstract class
Source File BaseServiceImpl.java
Package com/services/base/impl/
Attribute Name Access Data type
modifier
getLogger protecte Logger
d
getRepository protecte IGenericDAO
d
convertToDto protecte D
d
convertToEntity protecte T
d
Methods Name Access Return type
129
modifier
save public Optional<ID>
Count public Optional<Long>
saveOrUpdate public Optional
Delete public Void
existsById public Boolean
deleteAll public Void
findAll public Optional<List<D>>
findAllByExampleLike public Optional<List<D>>
findUnique public Optional<D>
findById public Optional<D>
findAll public Optional<List<D>>
findAll public Optional<Page<D>>
ChatController
Class ChatController
Description class
Source File ChatController.java
Package com/controller/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
sendMessage public ChatMessage
addUser public ChatMessage
IAdminServiceImpl
Class IAdminServiceImpl
Description Interface
Source File IAdminServiceImpl.java
Package com/services/base/core/
Attribute Name Access Data type
modifier
passwordEncoder default PasswordEncoder
defaultAvatar private String
Methods Name Access Return type
modifier
findReport public Optional<Page<ReportDto>>
findReport public Optional<Page<ReportDto>>
banUser public Optional<Boolean>
saveOrUpdateOwner public Optional<Long>
saveOrUpdatePro public Optional<Integer>
changeStatusProject public Optional< Boolean >
findProject public Optional<List<ReportDto>>
findPayments public Optional<List<PaymentDto>>
convertReportDo public ReportDto
130
IAuthenticationRepository
Class IAuthenticationRepository
Description Interface
Source File IAuthenticationRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findByEmail public Optional<Authentication>
checkExistEmail public Optional<Long>
checkSocailEmail public Optional<Long>
changeAccountStatu public Optional<Boolean>
s
findAuthByEmail public Optional< Authentication >
IBaseService
Class IBaseService
Description Interface
Source File IBaseService.java
Package com/services/base/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
count Public Optional<Long>
saveOrUpdate Public Optional<D>
save Public Optional<ILong>
delete Public Void
existsById Public Boolean
deleteAll Public Void
findAll Public <List<D>>
findAllByExampleLike Public Optional<List<D>>
findUnique Public Optional<D>
findById Public Optional<D>
findAll Public Optional<List<D>>
findAll Public Optional<Page<D>>
IGenericDAO
Class IGenericDAO
Description Interface
Source File IGenericDao.java
Package \src\main\java\com\repository\base\core\
Attribute Name Access Data type
131
modifier
N/A
Methods Name Access Return type
modifier
save public Optional<ID>
saveOrUpdate public Void
count public Optional<Long>
deleteAll public Void
findAll public Void
findAll public Optional<List<T>>
findAllByExampleLike public Optional<List<T>>
findUnique public Optional<T>
findById public Optional<T>
existsById public Boolean
clear public Void
flush public Void
getSession public Session
getCriteria public Criteria
getSessionFactory public SessionFactory
IMessageRepository
Class IMessageRepository
Description Interface
Source File IMessageRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findMessagesByRequestId public Optional<Page<Message>>
IOwnerDetailRepository
Class IOwnerDetailRepository
Description Interface
Source File IOwnerDetailRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findByUserDetail public Optional<OwnerDetail>
findOwnerDetailByEmail public Optional<OwnerDetail>
findOwnerIdByEmail public Optional<Long>
findOwnerDetailById public Optional<OwnerDetail>
checkExist public Boolean
132
IPaymentRepository
Class IPaymentRepository
Description Interface
Source File IPaymentRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
updateStatus public Optional<Boolean>
findByProjectId public Optional<List<Payment>>
deleteByProjectId public Optional< Boolean >
IProfessionalDetailRepository
Class IProfessionalDetailRepository
Description Interface
Source File IProfessionalDetailRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findByUserDetail public Optional<ProfessionalDetail>
findProByUserId public Optional<Long>
findProDetailByEmail public Optional<ProfessionalDetail>
findProIdByEmail public Optional<Long>
findProfessionalById public Optional<ProfessionalDetail>
findProContainName public Optional<List<ProfessionalDetail>>
IReportRepository
Class IReportRepository
Description Interface
Source File IReportRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findReportByStatus public Optional<Page<Report>>
IRequestRepository
Class IRequestRepository
Description Abstract class
Source File IRequestRepository.java
Package com/repository/common/core/
133
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
getRequestByProID public Optional<List<Request>>
findRequestByPID public Optional< Request>
findRequestByOID public Optional< Request>
findOwnRequest public Optional< Request>
getRequestByOwnerID public Optional<List<Request>>
findProRequest public Optional<Request>
checkExistId public Optional<Boolean>
markRead public Optional<Boolean>
markProRequest public Optional<Boolean>
checkExistId public Optional<Boolean>
IRequestService
Class IRequestService
Description Interface
Source File IRequestService.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
getProRequests public Optional<List<RequestDto>>
getOwnerRequests public Optional<List<RequestDto>>
findRequestByProId public Optional<RequestDto>
findRequestByOId public Optional<RequestDto>
saveOwnerMessage public Optional<List<MessageDto>>
markReadRequest public Optional<List<MessageDto>>
markReadProRequest public Optional<Boolean>
saveRequest public Optional<Boolean>
saveOwnerMessage public Optional<RequestDto>
saveProMessage public Optional< MessageDto >
saveFile public Optional<RequestFileDto>
saveMessage public MessageDto
ITokenService
Class ITokenService
Description Interface
Source File ITokenService.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
134
modifier
validateVerificationToken public String
getUser public Optional<AuthenticationDto>
IUserDetailRepository
Class IUserDetailRepository
Description Interface
Source File IUserDetailRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findAllByAuthId public Optional<UserDetail>
findUserDetailIdByEmail public Optional<Long>
getAccountStatus public Optional<Boolean>
findAuthIdByUserID public Optional< Long >
saveProfileImage public Optional< Boolean >
IUserManagedService
Class IUserManagedService
Description Interface
Source File IUserManagedService.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
saveUser public Optional<AuthenticationDto>
findByEmail public Optional<AuthenticationDto>
update public Optional<UserDetailDto>
checkAccount public Optional<ProfileStatus>
storeImage public Optional<String>
registerSocial public Optional<AuthenticationDto>
checkSocail public Optional<Boolean>
checkExistSocail public Optional<Boolean>
findIdByEmail public Optional<Long>
MessageRepositoryImpl
Class MessageRepositoryImpl
Description Public class
Source File MessageRepositoryImpl.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
135
N/A
Methods Name Access Return type
modifier
findMessagesByRequestId Public Optional<Page<Message>>
RequestRepositoryImpl
Class RequestRepositoryImpl
Description Public class
Source File RequestRepositoryImpl.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
getRequestByProID public Optional<List<Request>>
findRequestByPID public Optional<Request>
findRequestByOID public Optional<Request>
findOwnRequest public Optional<Request>
getRequestByOwnerID public Optional<List<Request>>
findProRequest public Optional<Request>
checkExistId public Optional<Boolean>
markRead public Optional<Boolean>
markProRequest public Optional<Boolean>
checkExistId public Optional<Boolean>
RequestServiceImpl
Class RequestServiceImpl
Description Public class
Source File RequestServiceImpl.java
Package com/services/common/impl/
Attribute Name Access Data type
modifier
imageAddress private String
downloadUrl private String
objectMapper default ObjectMapper
Methods Name Access Return type
modifier
getLogger protecte Logger
d
getBaseRepository protecte IGenericDAO
d
convertToDto protecte RequestDto
d
convertToEntities protecte Request
d
saveRequest public Optional<RequestDto>
saveOwnerMessage public Optional<MessageDto>
136
saveProMessage public Optional<MessageDto>
saveFile public Optional<RequestFileDto>
getProRequests public Optional<List<RequestFileDto>>
findRequestByProId public Optional<RequestFileDto>
findMessages public Optional<List<MessageDto>>
getOwnerRequests public Optional<List<RequestDto>>
findRequestByOId public Optional<RequestDto>
saveMessage public MessageDto
saveOwnerMessage public Optional<MessageDto>
markReadRequest public Optional<Boolean>
markReadProRequest public Optional<Boolean>
handlerRequest public RequestDto
convertMessageDto private MessageDto
TokenServiceImpl
Class TokenServiceImpl
Description Public class
Source File TokenServiceImpl.java
Package com/services/common/impl/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
getLogger Protecte Logger
d
getBaseRepository Protecte IGenericDAO
d
convertToDto Protecte VerificationTokenDto
d
convertToEntities Protecte VerificationToken
d
validateVerificationToken Public String
getUser Public Optional<AuthenticationDto>
UserController
Class UserController
Description Public class
Source File UserController.java
Package com/controller/
Attribute Name Access Data type
modifier
logger private Logger
authenticationService default AuthenticationService
userManagedService default IUserManagedService
eventPublisher private ApplicationEventPublisher
tokenService default ITokenService
Methods Name Access Return type
137
modifier
profileDetail public HttpEntity<ObjectResponseDto>
userCout public HttpEntity<ObjectResponseDto>
listAllUsers public HttpEntity<ObjectResponseDto>
getUser public RespondEntity<ObjectResponseDto>
register public RespondEntity<ObjectResponseDto>
registerByGGorFB public RespondEntity<ObjectResponseDto>
checkExistSocial public RespondEntity<ObjectResponseDto>
checkSocialUser public RespondEntity<ObjectResponseDto>
confirmRegistration public Object
updateUser public RespondEntity<ObjectResponseDto>
deleteUser public RespondEntity<ObjectResponseDto>
checkAccount public RespondEntity<ObjectResponseDto>
save public RespondEntity<?>
getAppUrl private String
UserDetailRepositoryImpl
Class UserDetailRepositoryImpl
Description Public class
Source File UserDetailRepositoryImpl.java
Package com/controller/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findAllByAuthId public Optional<UserDetail>
findUserDetailIdByEmail public Optional<Long>
getAccountStatus public Optional<Boolean>
findAuthIdByUserID public Optional<Long>
saveProfileImage public Optional<Boolean>
UserManagedServiceImpl
Class UserManagedServiceImpl
Description Public class
Source File UserManagedServiceImpl.java
Package com/services/common/impl/
Attribute Name Access Data type
modifier
userDetailRepository default IUserDetailRepository
authenticationRepository default IAuthenticationRepository
passwordEncoder default PasswordEncoder
roleRepository default IRoleRepository
imageAddress private String
defaultAvatar private String
DEFAULT_PASSWORD private String
storageService default IStorageService
138
ownerDetailRepository default IOwnerDetailRepository
professionalDetailRepository default IProfessionalDetailRepository
Methods Name Access Return type
modifier
getLogger protecte Logger
d
getBaseRepository protecte IGenericDAO
d
convertToDto public UserDetailDto
convertToEntities public UserDetail
saveUser public Optional<AuthenticationDto>
findByEmail public Optional<AuthenticationDto>
update public Optional< UserDetailDto >
checkAccount public Optional<ProfileStatus>
storeImage public Optional<String>
registerSocial public Optional<AuthenticationDto>
checkSocail public Optional<Boolean>
checkExistSocail public Optional<Boolean>
findIdByEmail public Optional<Long>
getAuthenticationDto private AuthenticationDto
handlerUserDetail private UserDetail
AbstractGenericDao
Class AbstractGenericDAO
Description Abstract class
Source File AbstractGenericDao.java
Package com/repository/base/impl/
Attribute Name Access Data type
modifier
139
entityClass protecte Class<T>
d
sessionFactory private SessionFactory
Methods Name Access Return type
modifier
getSession public Session
getCriteria public Criteria
count public Optional<Long>
findById public Optional<T>
Save public Optional<ID>
saveOrUpdate public Void
findAll public Optional<List<T>>
findAll public Optional<Page<T>>
delte public Void
deleteAll public Void
findAll public Optional<List<T>>
findAllByExampleLike public Optional<List<T>>
findUnique public Optional< <T>
existsById public Boolean
clear public Void
flush public Void
BaseController
Class BaseController
Description Abstract class
Source File BaseController.java
Package src\main\java\com\controller\base\
Attribute Name Access modifier Data type description
objectMapper private ObjectMapper
Methods Name Access modifier Return type Description
getLogger protected Logger
getService protected IBaseService
existById public RespondEntity<?>
findById public RespondEntity<?>
findAll public RespondEntity<?>
count public RespondEntity<?>
Save public RespondEntity<?>
update public RespondEntity<?>
findAllByExampleLike public RespondEntity<?>
findUnique public RespondEntity<?>
deleteById public RespondEntity<?>
findAllByExampleLike protected RespondEntity<?>
findUnique protected RespondEntity<?>
count protected RespondEntity<?>
save protected RespondEntity<?>
update protected RespondEntity<?>
findAll protected RespondEntity<?>
deleteById protected RespondEntity<?>
140
findById protected RespondEntity<?>
existsById protected RespondEntity<?>
createOrder private Order
createPageRequest private PageRequest
BaseServiceImpl
Class BaseServiceImpl
Description Abstract class
Source File BaseServiceImpl.java
Package com/services/base/impl/
Attribute Name Access Data type
modifier
getLogger protecte Logger
d
getRepository protecte IGenericDAO
d
convertToDto protecte D
d
convertToEntity protecte T
d
Methods Name Access Return type
modifier
save public Optional<ID>
count public Optional<Long>
saveOrUpdate public Optional
delete public Void
existsById public Boolean
deleteAll public Void
findAll public Optional<List<D>>
findAllByExampleLike public Optional<List<D>>
findUnique public Optional<D>
findById public Optional<D>
findAll public Optional<List<D>>
findAll public Optional<Page<D>>
IBaseService
Class IBaseService
Description Interface
Source File IBaseService.java
Package com/services/base/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
count public Optional<Long>
saveOrUpdate public Optional<D>
Save public Optional<ILong>
141
delete public Void
existsById public Boolean
deleteAll public Void
findAll public <List<D>>
findAllByExampleLike public Optional<List<D>>
findUnique public Optional<D>
findById public Optional<D>
findAll public Optional<List<D>>
findAll public Optional<Page<D>>
IGenericDao
Class IGenericDAO
Description Interface
Source File IGenericDao.java
Package \src\main\java\com\repository\base\core\
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
save public Optional<ID>
saveOrUpdate public Void
count public Optional<Long>
deleteAll public Void
findAll public Void
findAll public Optional<List<T>>
findAllByExampleLike public Optional<List<T>>
findUnique public Optional<T>
findById public Optional<T>
existsById public Boolean
Clear public Void
flush public Void
getSession public Session
getCriteria public Criteria
getSessionFactory public SessionFactory
IOwnerDetailRepository
Class IOwnerDetailRepository
Description Interface
Source File IOwnerDetailRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findByUserDetail public Optional<OwnerDetail>
142
findOwnerDetailByEmail public Optional<OwnerDetail>
findOwnerIdByEmail public Optional<Long>
findOwnerDetailById public Optional<OwnerDetail>
checkExist public Boolean
IProfessionalDetailRepository
Class IProfessionalDetailRepository
Description Interface
Source File IProfessionalDetailRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findByUserDetail public Optional<ProfessionalDetail>
findProByUserId public Optional<Long>
findProDetailByEmail public Optional<ProfessionalDetail>
findProIdByEmail public Optional<Long>
findProfessionalById public Optional<ProfessionalDetail>
findProContainName public Optional<List<ProfessionalDetail>>
IProfessionalDetailService
Class IProfessionalDetailService
Description Interface
Source File IProfessionalDetailService.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
update public Optional<ProfessionalDetailDto>
findCurrentPro public Optional< ProfessionalDetailDto >
getProjectInvite public Optional<ProjectDto>
IProjectRepository
Class IProjectRepository
Description Interface
Source File IProjectRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findOwnProject public Optional<Page<Project>>
findProProject public Optional<Page<Project>>
143
findOwnerProjectByd public Optional<Project>
findProProjectByProId public Optional<Project>
findProjectIdByOwnerId public Optional<Long>
findProjectIdByProId public Optional<Long>
updatePro public Optional<Boolean>
changeProjectStatus public Optional<Boolean>
checkExist public Boolean
updateProjectByPro public Long
updateProjectByHO public Long
checkExistProject public Boolean
checkProject public Optional<Boolean>
findReview public Optional<List<Project>>
changeProjectStatus public Optional<Boolean>
checkProiectClose public Optional<Boolean>
IRequestRepository
Class IRequestRepository
Description Interface
Source File IRequestRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
getRequestByProID public Optional<List<Request>>
findRequestByPID public Optional< Request>
findRequestByOID public Optional< Request>
findOwnRequest public Optional< Request>
getRequestByOwnerID public Optional<List<Request>>
findProRequest public Optional<Request>
checkExistId public Optional<Boolean>
markRead public Optional<Boolean>
markProRequest public Optional<Boolean>
checkExistId public Optional<Boolean>
IRequestService
Class IRequestService
Description Interface
Source File IRequestService.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
getProRequests public Optional<List<RequestDto>>
144
getOwnerRequests public Optional<List<RequestDto>>
findRequestByProId public Optional<RequestDto>
findRequestByOId public Optional<RequestDto>
saveOwnerMessage public Optional<List<MessageDto>>
markReadRequest public Optional<List<MessageDto>>
markReadProRequest public Optional<Boolean>
saveRequest public Optional<Boolean>
saveOwnerMessage public Optional<RequestDto>
saveProMessage public Optional< MessageDto >
saveFile public Optional<RequestFileDto>
saveMessage public MessageDto
IShowRoomRepository
Class IShowRoomRepository
Description Interface
Source File IShowRoomRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findShowRoom public Optional<Page<Showroom>>
findShowRoomByProfessional public Optional<Page<Showroom>>
findShowRoomByProfessional public Optional<List<Showroom>>
findContainName public Optional< List <Showroom>>
findShowroomByCategoryId public Optional< List <Showroom>>
findShowRoomById public Optional <Showroom>
ITagService
Class ITagService
Description Interface
Source File ITagService.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findContainName public Optional<List<TagDto>>
IUserDetailRepository
Class IUserDetailRepository
Description Interface
Source File IUserDetailRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
145
modifier
N/A
Methods Name Access Return type
modifier
findAllByAuthId public Optional<UserDetail>
findUserDetailIdByEmail public Optional<Long>
getAccountStatus public Optional<Boolean>
findAuthIdByUserID public Optional< Long >
saveProfileImage public Optional< Boolean >
IMessageRepository
Class IMessageRepository
Description Interface
Source File IMessageRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findMessagesByRequestId public Optional<Page<Message>>
ProfessionalController
Class ProfessionalController
Description Public class
Source File ProfessionalController.java
Package com/controller/
Attribute Name Access Data type
modifier
professionalDetailService default IProfessionalDetailService
requestService default IRequestService
Methods Name Access Return type
modifier
getLogger protecte Logger
d
getService protecte IBaseService
d
createProfessional public RespondEntity<ObjectRespondDto>
current public RespondEntity<ObjectRespondDto>
saveMessage public RespondEntity<ObjectRespondDto>
getRequests public RespondEntity<ObjectRespondDto>
markReadRequest public RespondEntity<ObjectRespondDto>
findById public RespondEntity<ObjectRespondDto>
getMessages public RespondEntity<ObjectRespondDto>
ProfessionalDetailServiceImpl
Class ProfessionalDetailServiceImpl
146
Description Public Class
Source File ProfessionalDetailServiceImpl.java
Package com/services/common/impl/
Attribute Name Access Data type
modifier
professionalDetailRepository default IProfessionalDetailRepository
userDetailRepository default IUserDetailRepository
showRoomRepository default IShowRoomRepository
projectRepository default IProjectRepository
imageAddress private String
downloadUrl private String
Methods Name Access Return type
modifier
getLogger protecte Logger
d
getBaseRepository protecte IGenericDAO
d
findById public Optional<ProfessionalDto>
convertToDto protecte ProfessionalDetailDto
d
convertToEntities protecte ProfessionalDetail
d
update public Optional<ProfessionalDto>
getProjectInvite public Optional<ProjectDto>
convertProjectFile private ProjectFileDto
getLink private String
findCurrentPro public Optional<ProfessionalDto>
RequestServiceImpl
Class RequestServiceImpl
Description Class
Source File RequestServiceImpl.java
Package com/services/common/impl/
Attribute Name Access Data type
modifier
imageAddress private String
downloadUrl private String
objectMapper default ObjectMapper
Methods Name Access Return type
modifier
getLogger protecte Logger
d
getBaseRepository protecte IGenericDAO
d
convertToDto protecte RequestDto
d
convertToEntities protecte Request
d
saveRequest public Optional<RequestDto>
147
saveOwnerMessage public Optional<MessageDto>
saveProMessage public Optional<MessageDto>
saveFile public Optional<RequestFileDto>
getProRequests public Optional<List<RequestFileDto>>
findRequestByProId public Optional<RequestFileDto>
findMessages public Optional<List<MessageDto>>
getOwnerRequests public Optional<List<RequestDto>>
findRequestByOId public Optional<RequestDto>
saveMessage public MessageDto
saveOwnerMessage public Optional<MessageDto>
markReadRequest public Optional<Boolean>
markReadProRequest public Optional<Boolean>
handlerRequest public RequestDto
convertMessageDto private MessageDto
TagController
Class TagController
Description Public class
Source File TagController.java
Package com/controller/
Attribute Name Access Data type
modifier
tagService
Methods Name Access Return type
modifier
getLogger protecte Logger
d
getService protecte IBaseService
d
findAllTagByNameLike privae RespondEntity<?>
TokenServiceImpl
Class TokenServiceImpl
Description Public class
Source File TokenServiceImpl.java
Package com/services/common/impl/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
getLogger protecte Logger
d
getBaseRepository protecte IGenericDAO
d
convertToDto protecte VerificationTokenDto
d
convertToEntities protecte VerificationToken
d
148
validateVerificationToken public String
getUser public Optional<AuthenticationDto>
BaseController
Class BaseController
Description Abstract class
Source File BaseController.java
Package src\main\java\com\controller\base\
Attribute Name Access modifier Data type description
objectMapper private ObjectMapper
Methods Name Access modifier Return type Description
getLogger protected Logger
getService protected IBaseService
existById public RespondEntity<?>
findById public RespondEntity<?>
findAll public RespondEntity<?>
count public RespondEntity<?>
save public RespondEntity<?>
update public RespondEntity<?>
findAllByExampleLike public RespondEntity<?>
findUnique public RespondEntity<?>
deleteById public RespondEntity<?>
findAllByExampleLike protected RespondEntity<?>
findUnique protected RespondEntity<?>
count protected RespondEntity<?>
save protected RespondEntity<?>
update protected RespondEntity<?>
findAll protected RespondEntity<?>
deleteById protected RespondEntity<?>
findById protected RespondEntity<?>
149
existsById protected RespondEntity<?>
createOrder private Order
createPageRequest private PageRequest
BaseServiceImpl
Class BaseServiceImpl
Description Abstract class
Source File BaseServiceImpl.java
Package com/services/base/impl/
Attribute Name Access Data type
modifier
getLogger protecte Logger
d
getRepository protecte IGenericDAO
d
convertToDto protecte D
d
convertToEntity protecte T
d
Methods Name Access Return type
modifier
save public Optional<ID>
count public Optional<Long>
saveOrUpdate public Optional
delete public Void
existsById public Boolean
deleteAll public Void
findAll public Optional<List<D>>
findAllByExampleLike public Optional<List<D>>
findUnique public Optional<D>
findById public Optional<D>
findAll public Optional<List<D>>
findAll public Optional<Page<D>>
IBaseService
Class IBaseService
Descriptio Interface
Source File IBaseService.java
Package com/services/base/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
Count Public Optional<Long>
saveOrUpdate Public Optional<D>
Save Public Optional<ILong>
Delete Public Void
150
existsById Public Boolean
deleteAll Public Void
findAll Public <List<D>>
findAllByExampleLike Public Optional<List<D>>
findUnique Public Optional<D>
findById Public Optional<D>
findAll Public Optional<List<D>>
findAll Public Optional<Page<D>>
IImageShowRoomRepository
Class IImageShowRoomRepository
Description Interface
Source File IImageShowRoomRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findOneByShowroomId Public Optional<ImageShowroom>
countLike Public Long
IProfessionalDetailRepository
Class IProfessionalDetailRepository
Description Interface
Source File IShowRoomRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findByUserDetail Public Optional<ProfessionalDetail>
findProByUserId Public Optional<Long>
findProDetailByEmail Public Optional<ProfessionalDetail>
findProIdByEmail Public Optional<Long>
findProfessionalById Public Optional<ProfessionalDetail>
findProContainName Public Optional<List<ProfessionalDetail>>
IShowRoomRepository
Class IShowRoomRepository
Description Interface
Source File IShowRoomRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
151
Methods Name Access Return type
modifier
findShowRoom Public Optional<Page<Showroom>>
findShowRoomByProfessional Public Optional<Page<Showroom>>
findShowRoomByProfessional Public Optional<List<Showroom>>
findContainName Public Optional< List <Showroom>>
findShowroomByCategoryId Public Optional< List <Showroom>>
findShowRoomById Public Optional <Showroom>
IShowRoomService
Class IShowroomService
Description Interface
Source File IShowRoomService.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findShowroom Public Optional<Page<ShowRoomDto>>
saveShowroom Public Optional< ShowRoomDto>
findShowroomByPro Public Optional<Page<ShowRoomDto>>
findShowroomById Public Optional<ShowRoomDto>
findContainName Public Optional<List<ShowRoomDto>>
findDetailContainName Public Optional<List<ShowRoomDto>>
findShowRoomByCateId Public Optional<List<ShowRoomDto>>
IShowRoomLikeRepository
Class IShowRoomLikeRepository
Description Interface
Source File IShowRoomLikeRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findLikes Public Optional<Long>
ImageShowRoomRepositoryImpl
Class ImageShowRoomRepositoryImpl
Description Public class
Source File ImageShowRoomRepositoryImpl.java
Package com/repository/common/impl/
Attribute Name Access Data type
modifier
N/A
152
Methods Name Access Return type
modifier
findOneBySRId Public Optional<ImageShowroom>
countLike Public Long
IUserManagedService
Class IUserManagedService
Description Interface
Source File IUserManagedService.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
saveUser Public Optional<AuthenticationDto>
findByEmail Public Optional<AuthenticationDto>
update Public Optional<UserDetailDto>
checkAccount Public Optional<ProfileStatus>
storeImage Public Optional<String>
registerSocial Public Optional<AuthenticationDto>
checkSocail Public Optional<Boolean>
checkExistSocail Public Optional<Boolean>
findIdByEmail Public Optional<Long>
ProfessionalDetailRepositoryImpl
Class ProfessionalDetailRepositoryImpl
Description Public class
Source File ProfessionalDetailRepositoryImpl.java
Package com/repository/common/impl/
Attribute Name Access Data type
modifier
userDetailRepository Default IUserDetailRepository
Methods Name Access Return type
modifier
findByUserDetail Public Optional<ProfessionalDetail>
findProIdByUserID Public Optional<Long>
findProDetailByEmail Public Optional<ProfessionalDetail>
findProIdlByEmail Public Optional< Long >
findProfessionalById Public Optional<ProfessionalDetail>
findProContainName Public Optional<List<ProfessionalDetail>>
153
ShowRoomServiceImpl
Class ShowRoomServiceImpl
Description Public class
Source File ShowRoomServiceImpl.java
Package com/services/common/impl/
Attribute Name Access Data type
modifier
showRoomRepository Default IShowRoomRepository
imageShowRoomRepository Default IImageShowRoomRepository
professionalDetailRepository Default IProfessionalDetailRepository
companyService Default ICompanyService
showRoomLikeRepository Default IShowRoomLikeRepository
showRoomRateRepository Default IShowRoomRateRepository
companyRepository Default ICompanyRepository
showRoomCategoryRepository Default IShowRoomCategoryRepository
objectMapper Default ObjectMapper
Methods Name Access Return type
modifier
getLogger Protecte Logger
d
getBaseRepository Protecte IGenericDAO
d
convertToDto Protecte ShowRoomDto
d
findById Public Optional< ShowRoomDto>
convertToEntities Protecte ShowRoom
d
imageShowRoomEntity Private ImageShowRoom
convertTagEntity Private Tag
convertTagDto Private TagDto
convertToImageShowroom Private ImageShowRoomDto
findShowRoom Public Optional<Page<ShowRoomDto>>
saveShowRoom Public Optional< ShowRoomDto>
findShowRoomByPro Public Optional<Page<ShowRoomDto>>
findShhowRoomById Public Optional<ShowRoomDto>
findContainName Public Optional<List<ShowRoomDto>>
findDetailContainName Public Optional<List<ShowRoomDto>>
findShowRoomByCategory Public Optional<List<ShowRoomDto>>
handlerOneShowRoom Public ShowRoomDto
getPageDto Private Page<ShowRoomDto>
ShowroomCategoryController
Class ShowroomCategoryController
Description Public class
Source File ShowroomCategoryController.java
Package com/controller/
Attribute Name Access Data type
modifier
154
showroomCategoryService Default IShowroomCategoryService
Methods Name Access Return type
modifier
getLogger Protecte Logger
d
getService Protecte IBaseService
d
ShowRoomController
Class ShowRoomController
Description Public class
Source File ShowRoomController.java
Package com/controller/
Attribute Name Access Data type
modifier
showRoomRateService Default IShowroomCategoryService
Methods Name Access Return type
modifier
getLogger Protecte Logger
d
getService Protecte IBaseService
d
findShowRom Default RespondEntity<?>
findShowRomByProfessional Default RespondEntity<?>
findProShowRomById Default RespondEntity<?>
save Public RespondEntity<?>
ShowRoomLikeRepositoryImpl
Class ShowRoomLikeRepositoryImpl
Description Public class
Source File ShowRoomLikeRepositoryImpl.java
Package com/respository/common/impl
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findLikes Public Optional< Long>
ShowRoomRepositoryImpl
Class ShowRoomRepositoryImpl
Description Public class
Source File ShowRoomRepositoryImpl.java
Package com/respository/common/impl
Attribute Name Access Data type
modifier
objectMapper Default ObjectMapper
155
Methods Name Access Return type
modifier
findShowRoom Public Optional<Page<Showroom>>
findShowRoomByProfessional Public Optional<Page<Showroom>>
findShowRoomByProfessional Public Optional<List<Showroom>>
findContainName Public Optional< List <Showroom>>
findShowByCateId Public Optional< List <Showroom>>
findSRById Public Optional <Showroom>
getList Private List <Showroom>
AbstractGenericDao
Class AbstractGenericDAO
Description Abstract class
Source File AbstractGenericDao.java
Package com/repository/base/impl/
Attribute Name Access Data type
modifier
entityClass Protecte Class<T>
d
sessionFactory Private SessionFactory
Methods Name Access Return type
modifier
getSession Public Session
getCriteria Public Criteria
count Public Optional<Long>
findById Public Optional<T>
save Public Optional<ID>
saveOrUpdate Public Void
156
findAll Public Optional<List<T>>
findAll Public Optional<Page<T>>
delte Public Void
deleteAll Public Void
findAll Public Optional<List<T>>
findAllByExampleLike Public Optional<List<T>>
findUnique Public Optional< <T>
existsById Public Boolean
clear Public Void
flush Public Void
BaseController
Class BaseController
Description Abstract class
Source File BaseController.java
Package src\main\java\com\controller\base\
Attribute Name Access modifier Data type description
objectMapper Private ObjectMapper
Methods Name Access modifier Return type Description
getLogger Protected Logger
getService Protected IBaseService
existById Public RespondEntity<?>
findById Public RespondEntity<?>
findAll Public RespondEntity<?>
count Public RespondEntity<?>
save Public RespondEntity<?>
update Public RespondEntity<?>
findAllByExampleLike Public RespondEntity<?>
findUnique Public RespondEntity<?>
deleteById Public RespondEntity<?>
findAllByExampleLike Protected RespondEntity<?>
findUnique Protected RespondEntity<?>
count Protected RespondEntity<?>
save Protected RespondEntity<?>
update Protected RespondEntity<?>
findAll Protected RespondEntity<?>
deleteById Protected RespondEntity<?>
findById Protected RespondEntity<?>
existsById Protected RespondEntity<?>
createOrder Private Order
createPageRequest Private PageRequest
BaseServiceImpl
Class BaseServiceImpl
Description Abstract class
Source File BaseServiceImpl.java
Package com/services/base/impl/
157
Attribute Name Access Data type
modifier
getLogger Protecte Logger
d
getRepository Protecte IGenericDAO
d
convertToDto Protecte D
d
convertToEntity Protecte T
d
Methods Name Access Return type
modifier
save Public Optional<ID>
count Public Optional<Long>
saveOrUpdate Public Optional
delete Public Void
existsById Public Boolean
deleteAll Public Void
findAll Public Optional<List<D>>
findAllByExampleLike Public Optional<List<D>>
findUnique Public Optional<D>
findById Public Optional<D>
findAll Public Optional<List<D>>
findAll Public Optional<Page<D>>
IBaseService
Class IBaseService
Description Interface
Source File IBaseService.java
Package com/services/base/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
count Public Optional<Long>
saveOrUpdate Public Optional<D>
Save Public Optional<ILong>
delete Public Void
existsById Public Boolean
deleteAll Public Void
findAll Public <List<D>>
findAllByExampleLike Public Optional<List<D>>
findUnique Public Optional<D>
findById Public Optional<D>
findAll Public Optional<List<D>>
findAll Public Optional<Page<D>>
158
IGenericDao
Class IGenericDAO
Description Interface
Source File IGenericDao.java
Package \src\main\java\com\repository\base\core\
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
save Public Optional<ID>
saveOrUpdate Public Void
count Public Optional<Long>
deleteAll Public Void
findAll Public Void
findAll Public Optional<List<T>>
findAllByExampleLike Public Optional<List<T>>
findUnique Public Optional<T>
findById Public Optional<T>
existsById Public Boolean
clear Public Void
flush Public Void
getSession Public Session
getCriteria Public Criteria
getSessionFactory Public SessionFactory
IOwnerDetailRepository
Class IOwnerDetailRepository
Description Interface
Source File IOwnerDetailRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findByUserDetail Public Optional<OwnerDetail>
findOwnerDetailByEmail Public Optional<OwnerDetail>
findOwnerIdByEmail Public Optional<Long>
findOwnerDetailById Public Optional<OwnerDetail>
checkExist Public Boolean
IOwnerDetailService
Class saveOwner
Description Interface
Source File saveOwner.java
Package com/services/common/core/
159
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
saveOwner Public Optional<OwnerDetailDto>
findCurrentOwner Public Optional<OwnerDetailDto>
IProfessionalDetailRepository
Class IProfessionalDetailRepository
Description Interface
Source File IProfessionalDetailRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findByUserDetail Public Optional<ProfessionalDetail>
findProByUserId Public Optional<Long>
findProDetailByEmail Public Optional<ProfessionalDetail>
findProIdByEmail Public Optional<Long>
findProfessionalById Public Optional<ProfessionalDetail>
findProContainName Public Optional<List<ProfessionalDetail>>
IProfessionalDetailService
Class IProfessionalDetailService
Description Interface
Source File IProfessionalDetailService.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
update Public Optional<ProfessionalDetailDto>
findCurrentPro Public Optional< ProfessionalDetailDto >
getProjectInvite Public Optional<ProjectDto>
IRequestRepository
Class IRequestRepository
Description Interface
Source File IRequestRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
160
Methods Name Access Return type
modifier
getRequestByProID Public Optional<List<Request>>
findRequestByPID Public Optional< Request>
findRequestByOID Public Optional< Request>
findOwnRequest Public Optional< Request>
getRequestByOwnerID Public Optional<List<Request>>
findProRequest Public Optional<Request>
checkExistId Public Optional<Boolean>
markRead Public Optional<Boolean>
markProRequest Public Optional<Boolean>
checkExistId Public Optional<Boolean>
IRequestService
Class IRequestService
Description Interface
Source File IRequestService.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
getProRequests Public Optional<List<RequestDto>>
getOwnerRequests Public Optional<List<RequestDto>>
findRequestByProId Public Optional<RequestDto>
findRequestByOId Public Optional<RequestDto>
saveOwnerMessage Public Optional<List<MessageDto>>
markReadRequest Public Optional<List<MessageDto>>
markReadProRequest Public Optional<Boolean>
saveRequest Public Optional<Boolean>
saveOwnerMessage Public Optional<RequestDto>
saveProMessage Public Optional< MessageDto >
saveFile Public Optional<RequestFileDto>
saveMessage Public MessageDto
IUserDetailRepository
Class IUserDetailRepository
Description Interface
Source File IUserDetailRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findAllByAuthId Public Optional<UserDetail>
findUserDetailIdByEmail Public Optional<Long>
161
getAccountStatus Public Optional<Boolean>
findAuthIdByUserID Public Optional< Long >
saveProfileImage Public Optional< Boolean >
OwnerController
Class OwnerController
Description Public class
Source File OwnerController.java
Package com/controller/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
getLogger Protecte Logger
d
getService Protecte IBaseService
d
createOwner Public RespondEntity<ObjectRespondDto>
findByID Public RespondEntity<ObjectRespondDto>
current Public RespondEntity<ObjectRespondDto>
createProfessional Public RespondEntity<ObjectRespondDto>
demo Public RespondEntity<ObjectRespondDto>
save Public RespondEntity<?>
uploadFile Public RespondEntity<ObjectRespondDto>
getRequests Public RespondEntity<ObjectRespondDto>
markReadRequest Public RespondEntity<ObjectRespondDto>
getMessages Public RespondEntity<ObjectRespondDto>
findById Public RespondEntity<ObjectRespondDto>
OwnerDetailServiceImpl
Class OwnerDetailServiceImpl
Description Public class
Source File OwnerDetailServiceImpl.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
imageAddress Private String
Methods Name Access Return type
modifier
getLogger Protecte Logger
d
getBaseRepository Protecte IGenericDao
d
convertToDto Public OwnerDetail
convertToEntities Public OwnerDetailDto
saveOwner Public Optional<OwnerDetailDto>
findCurrentOwner Public Optional<OwnerDetailDto>
162
ProfessionalDetailRepositoryImpl
Class ProfessionalDetailRepositoryImpl
Description Public class
Source File ProfessionalDetailRepositoryImpl.java
Package com/repository/common/impl/
Attribute Name Access Data type
modifier
userDetailRepository Default IUserDetailRepository
Methods Name Access Return type
modifier
findByUserDetail Public Optional<ProfessionalDetail>
findProIdByUserID Public Optional<Long>
findProDetailByEmail Public Optional<ProfessionalDetail>
findProIdlByEmail Public Optional< Long >
findProfessionalById Public Optional<ProfessionalDetail>
findProContainName Public Optional<List<ProfessionalDetail>>
ProfessionalDetailServiceImpl
Class ProfessionalDetailServiceImpl
Description Public class
Source File ProfessionalDetailServiceImpl.java
Package com/services/common/impl/
Attribute Name Access Data type
modifier
imageAddress Private String
downloadUrl Private String
Methods Name Access Return type
modifier
getLogger Protecte Logger
d
getBaseRepository Protecte IGenericDAO
d
findById Public Optional<ProfessionalDetailDto>
convertToDto Protecte ProfessionalDetailDto
d
convertToEntities Protecte ProfessionalDetail
d
update Public Optional<ProfessionalDetailDto>
getProjectInvite Public Optional<ProjectDto>
convertProjectFile Private ProjectFileDto
getLink Private String
findCurrentPro Public Optional<ProfessionalDetailDto>
RequestRepositoryImpl
Class RequestRepositoryImpl
Description Public class
163
Source File RequestRepositoryImpl.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
getRequestByProID Public Optional<List<Request>>
findRequestByPID Public Optional<Request>
findRequestByOID Public Optional<Request>
findOwnRequest Public Optional<Request>
getRequestByOwnerID Public Optional<List<Request>>
findProRequest Public Optional<Request>
checkExistId Public Optional<Boolean>
markRead Public Optional<Boolean>
markProRequest Public Optional<Boolean>
checkExistId Public Optional<Boolean>
RequestServiceImpl
Class RequestServiceImpl
Description Public class
Source File RequestServiceImpl.java
Package com/services/common/impl/
Attribute Name Access Data type
modifier
imageAddress Private String
downloadUrl Private String
objectMapper Default ObjectMapper
Methods Name Access Return type
modifier
getLogger Protecte Logger
d
getBaseRepository Protecte IGenericDAO
d
convertToDto Protecte RequestDto
d
convertToEntities Protecte Request
d
saveRequest Public Optional<RequestDto>
saveOwnerMessage Public Optional<MessageDto>
saveProMessage Public Optional<MessageDto>
saveFile Public Optional<RequestFileDto>
getProRequests Public Optional<List<RequestFileDto>>
findRequestByProId Public Optional<RequestFileDto>
findMessages Public Optional<List<MessageDto>>
getOwnerRequests Public Optional<List<RequestDto>>
findRequestByOId Public Optional<RequestDto>
saveMessage Public MessageDto
saveOwnerMessage Public Optional<MessageDto>
164
markReadRequest Public Optional<Boolean>
markReadProRequest Public Optional<Boolean>
handlerRequest Public RequestDto
convertMessageDto Private MessageDto
FileController
Class FileController
Description Public class
Source File FileController.java
Package com/controller/
Attribute Name Access Data type
modifier
storageService Private IStorageService
imageAddress Private String
downloadUrl Default String
Methods Name Access Return type
modifier
handleFileUpload Public RespondEntity<ObjectRespondDto>
downloadFile Public RespondEntity<ObjectRespondDto>
save Public RespondEntity<?>
get Public RespondEntity<?>
IPaymentService
Class IPaymentService
Description Interface
Source File IPaymentService.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
165
savePayment Public Optional<PaymentDto>
updatePayment Public Optional<PaymentDto>
findPayment Public Optional<List<PaymentDto>>
changeStatus Public Optional<Boolean>
IStorageService
Class IStorageService
Description Interface
Source File IStorageService.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
storeFile Public Optional<String>
storeImage Public Optional<String>
loadFile Public Optional<Resources>
loadImage Public Optional<Resources>
deleteAll Public Void
deleteByName Public Void
init Public Void
IVersionService
Class IVersionService
Description Interface
Source File IVersionService.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
saveOwnerVersion Public Optional<VersionDto>
saveProVersion Public Optional<VersionDto>
saveProVersion Public Optional<List>
OwnerDetailRepositoryImpl
Class OwnerDetailRepositoryImpl
Description Public class
Source File OwnerDetailRepositoryImpl.java
Package com/repository/common/impl/
Attribute Name Access Data type
modifier
userDetailRepository Default IUserDetailRepository
Methods Name Access Return type
modifier
166
findByUserDetail Public Optional<OwnerDetail>
findOwnerDetailByEmail Public Optional<OwnerDetail>
findOwnerIdByEmail Public Optional<Long>
findOwnerDetailById Public Optional<OwnerDetail>
checkExist Public Boolean
PaymentController
Class PaymentController
Description Public class
Source File PaymentController.java
Package com/controller/
Attribute Name Access Data type
modifier
paymentService Default IPaymentService
Methods Name Access Return type
modifier
savePayment Public RespondEntity<ObjectRespondDto>
updatePayment Public RespondEntity<ObjectRespondDto>
deletePayment Public RespondEntity<ObjectRespondDto>
PaymentRepositoryImpl
Class PaymentRepositoryImpl
Description Public class
Source File PaymentRepositoryImpl.java
Package com/repository/common/impl
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
updateStatus Public Optional<Boolean>
findByProjectId Public Optional<List<Payment> >
deleteByProjectId Public Optional<Boolean>
PaymentServiceImpl
Class PaymentServiceImpl
Description Public class
Source File PaymentServiceImpl.java
Package com/services/common/impl
Attribute Name Access Data type
modifier
paymentRepository Default IPaymentRepository
professionalDetailRepository Default IProfessionalDetailRepository
projectRepository Default IProjectRepository
ownerDetailRepository Default IOwnerDetailRepository
167
Methods Name Access Return type
modifier
getLogger Protecte Logger
d
getBaseRepository Protecte IGenericDAO
d
convertToDto Protecte PaymentDto
d
convertToEntities Protecte Payment
d
convertPayment Private Payment
savePayment Public Optional<PaymentDto>
updatePayment Public Optional<PaymentDto>
findPayment Public Optional<List<PaymentDto>>
changeStatus Public Optional<Boolean>
ProjectController
Class ProjectController
Description Public class
Source File ProjectController.java
Package com/controller/
Attribute Name Access Data type
modifier
projectService Private IProjectService
Methods Name Access Return type
modifier
getLogger Private Logger
save Public RespondEntity<?>
findProByName Default RespondEntity<?>
updateProjectByPro Default RespondEntity<?>
updateProjectByOwner Default RespondEntity<?>
addProjectByPro Default RespondEntity<?>
findProProjectById Default RespondEntity<?>
findProProject Default RespondEntity<?>
updateProject Default RespondEntity<?>
acceptProject Default RespondEntity<?>
findAllProject Default RespondEntity<?>
findOwnProjectById Default RespondEntity<?>
ownerAddProjectFile Default RespondEntity<?>
ownerUpdateProjectfile Default RespondEntity<?>
ownerDeleteFile Default RespondEntity<?>
acceptPayment Default RespondEntity<?>
closeProject Default RespondEntity<?>
rejectProject Default RespondEntity<?>
checkProject Default RespondEntity<?>
ProjectRepositoryImpl
Class ProjectRepositoryImpl
168
Description Public class
Source File ProjectRepositoryImpl.java
Package com/repository/common/impl/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findOwnProject Public Logger
findProProject Public IGenericDAO
findOwnerProjectByd Public VerificationTokenDto
findProProjectByProId Public VerificationToken
findProjectIdByOwnerId Public String
findProjectIdByProId Public Optional<AuthenticationDto>
updatePro Public Optional<Boolean>
changeProjectStatus Public Optional<Boolean>
checkExist Public Boolean
updateProjectByPro Public Long
updateProjectByHO Public Long
checkExistProject Public Boolean
checkProject Public Optional<Boolean>
findReview Public Optional<List<Project>>
changeProjectStatus Public Optional<Boolean>
checkProiectClose Public Optional<Boolean>
StorageServiceImpl
Class StorageServiceImpl
Description Public class
Source File StorageServiceImpl.java
Package com/services/common/impl/
Attribute Name Access Data type
modifier
N/A ROOT_FOLDER_NAME Private Static string
ROOT_DELETE_FILE_PATH Private Static string
rootFileLocation Private Path
rootImagesLocation Private Path
Methods Name Access Return type
modifier
storeFile Public Optional<String>
storeImage Public Optional<String>
loadFile Public Optional<Resource>
loadImage Public Optional< Resource >
deleteAll Public Void
deleteByName Public Void
init Public Void
load Public Optional
169
VersionController
Class VersionController
Description Public class
Source File VersionController.java
Package com/controller/
Attribute Name Access Data type
modifier
versionService Default IVersionService
Methods Name Access Return type
modifier
getLogger Protecte Logger
d
getService Protecte IBaseService
d
saveOwnerVersion Public RespondEntity<ObjectRespondDto>
saveProVersion Public RespondEntity<ObjectRespondDto>
save Public RespondEntity<?>
VersionServiceImpl
Class VersionServiceImpl
Description Public class
Source File VersionServiceImpl.java
Package com/controller/
Attribute Name Access Data type
modifier
versionRepository Default IVersionService
downloadUrl Private String
fileStore Default IStorageService
projectRepository Default IProjectRepository
fileRepository Default IFileRepository
ownerDetailRepository Default IOwnerDetailRepository
professionalDetailRepository Default IProfessionalDetailRepository
objectMapper Default IObjectMapper
Methods Name Access Return type
modifier
getLogger Protecte Logger
d
getBaseRepository Protecte IGenericDAO
d
convertToDto Protecte VersionDto
d
convertToEntities Protecte Version
d
saveOwnerVersion Public Optional<VersionDto>
saveProVersion Public Optional<VersionDto>
saveProVersion Public Optional<List>
handlerVersion Private Optional<VersionDto>
170
Module Admin controller
AbstractGenericDao
Class AbstractGenericDAO
Description Abstract class
Source File AbstractGenericDao.java
Package com/repository/base/impl/
Attribute Name Access Data type
modifier
entityClass Protecte Class<T>
d
sessionFactory Private SessionFactory
Methods Name Access Return type
modifier
getSession Public Session
getCriteria Public Criteria
count Public Optional<Long>
findById Public Optional<T>
save Public Optional<ID>
saveOrUpdate Public Void
findAll Public Optional<List<T>>
findAll Public Optional<Page<T>>
delte Public Void
deleteAll Public Void
findAll Public Optional<List<T>>
findAllByExampleLike Public Optional<List<T>>
findUnique Public Optional< <T>
existsById Public Boolean
clear Public Void
flush Public Void
AuthenticationRepositoryImpl
Class AuthenticationRepositoryImpl
Description Public class
171
Source File AuthenticationRepositoryImpl.java
Package com/repository/common/impl/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findByEmail Public Optional<Authentication>
checkExistEmail Public Optional<Long>
checkSocialEmail Public Optional< Long >
changeAccountStatus Public Optional<Boolean>
findAuthByEmail Public Optional<Authentication>
AdminController
Class AuthenticationRepositoryImpl
Description Public class
Source File AuthenticationRepositoryImpl.java
Package com/repository/common/impl/
Attribute Name Access Data type
modifier
adminService
paymentService
Methods Name Access Return type
modifier
getLogger Protecte Logger
d
findShowRom Default RespondEntity<?>
findShowRomByStatus Default RespondEntity<?>
banUser Default RespondEntity<?>
changeStatus Public RespondEntity<ObjectDto>
findPayments Default RespondEntity<?>
changeStatus Public RespondEntity<ObjectDto>
findProject Public RespondEntity<ObjectDto>
changeStartProject Public RespondEntity<ObjectDto>
BaseController
Class BaseController
Description Abstract class
Source File BaseController.java
Package src\main\java\com\controller\base\
Attribute Name Access modifier Data type description
objectMapper Private ObjectMapper
Methods Name Access modifier Return type Description
getLogger Protected Logger
getService Protected IBaseService
existById Public RespondEntity<?>
findById Public RespondEntity<?>
findAll Public RespondEntity<?>
172
count Public RespondEntity<?>
save Public RespondEntity<?>
update Public RespondEntity<?>
findAllByExampleLike Public RespondEntity<?>
findUnique Public RespondEntity<?>
deleteById Public RespondEntity<?>
findAllByExampleLike Protected RespondEntity<?>
findUnique Protected RespondEntity<?>
count Protected RespondEntity<?>
save Protected RespondEntity<?>
update Protected RespondEntity<?>
findAll Protected RespondEntity<?>
deleteById Protected RespondEntity<?>
findById Protected RespondEntity<?>
existsById Protected RespondEntity<?>
createOrder Private Order
createPageRequest Private PageRequest
BaseServiceImpl
Class BaseServiceImpl
Description Abstract class
Source File BaseServiceImpl.java
Package com/services/base/impl/
Attribute Name Access Data type
modifier
getLogger Protecte Logger
d
getRepository Protecte IGenericDAO
d
convertToDto Protecte D
d
convertToEntity Protecte T
d
Methods Name Access Return type
modifier
save Public Optional<ID>
count Public Optional<Long>
saveOrUpdate Public Optional
delete Public Void
existsById Public Boolean
deleteAll Public Void
findAll Public Optional<List<D>>
findAllByExampleLike Public Optional<List<D>>
findUnique Public Optional<D>
findById Public Optional<D>
findAll Public Optional<List<D>>
findAll Public Optional<Page<D>>
173
IAdminService
Class IAdminService
Description Interface
Source File IAdminService.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findReport Public Optional<Page<ReportDto>>
findReport Public Optional<Page<ReportDto>>
banUser Public Optional<Boolean>
saveOrUpdateOwner Public Optional<Long>
saveOrUpdatePro Public Optional<Integer>
changeStatusProject Public Optional<Boolean>
findProject Public Optional<List<ProjectDto>>
findPayments Public Optional<List<PaymentDto>>
IAuthenticationRepository
Class IAuthenticationRepository
Description Interface
Source File IAuthenticationRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findByEmail Public Optional<Authentication>
checkExistEmail Public Optional<Long>
checkSocailEmail Public Optional<Long>
changeAccountStatu Public Optional<Boolean>
s
findAuthByEmail Public Optional< Authentication >
IBaseService
Class IBaseService
Description Interface
Source File IBaseService.java
Package com/services/base/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
count Public Optional<Long>
174
saveOrUpdate Public Optional<D>
save Public Optional<ILong>
delete Public Void
existsById Public Boolean
deleteAll Public Void
findAll Public <List<D>>
findAllByExampleLike Public Optional<List<D>>
findUnique Public Optional<D>
findById Public Optional<D>
findAll Public Optional<List<D>>
findAll Public Optional<Page<D>>
IGenericDao
Class IGenericDAO
Description Interface
Source File IGenericDao.java
Package \src\main\java\com\repository\base\core\
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
save Public Optional<ID>
saveOrUpdate Public Void
count Public Optional<Long>
deleteAll Public Void
findAll Public Void
findAll Public Optional<List<T>>
findAllByExampleLike Public Optional<List<T>>
findUnique Public Optional<T>
findById Public Optional<T>
existsById Public Boolean
clear Public Void
flush Public Void
getSession Public Session
getCriteria Public Criteria
getSessionFactory Public SessionFactory
IPaymentRepository
Class IGenericDAO
Description Interface
Source File IGenericDao.java
Package \src\main\java\com\repository\base\core\
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
175
modifier
save Public Optional<ID>
saveOrUpdate Public Void
count Public Optional<Long>
deleteAll Public Void
findAll Public Void
findAll Public Optional<List<T>>
findAllByExampleLike Public Optional<List<T>>
findUnique Public Optional<T>
findById Public Optional<T>
existsById Public Boolean
clear Public Void
flush Public Void
getSession Public Session
getCriteria Public Criteria
getSessionFactory Public SessionFactory
IPaymentService
Class IPaymentService
Description Interface
Source File IPaymentService.java
Package com/services/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
savePayment Public Optional<PaymentDto>
updatePayment Public Optional<PaymentDto>
findPayment Public Optional<List<PaymentDto>>
changeStatus Public Optional<Boolean>
IProjectRepository
Class IProjectRepository
Description Interface
Source File IProjectRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findOwnProject Public Optional<Page<Project>>
findProProject Public Optional<Page<Project>>
findOwnerProjectByd Public Optional<Project>
findProProjectByProId Public Optional<Project>
findProjectIdByOwnerId Public Optional<Long>
176
findProjectIdByProId Public Optional<Long>
updatePro Public Optional<Boolean>
changeProjectStatus Public Optional<Boolean>
checkExist Public Boolean
updateProjectByPro Public Long
updateProjectByHO Public Long
checkExistProject Public Boolean
checkProject Public Optional<Boolean>
findReview Public Optional<List<Project>>
changeProjectStatus Public Optional<Boolean>
checkProiectClose Public Optional<Boolean>
IReportRepository
Class IReportRepository
Description Interface
Source File IReportRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findReportByStatus Public Optional<Page<Report>>
IUserDetailRepository
Class IUserDetailRepository
Description Interface
Source File IUserDetailRepository.java
Package com/repository/common/core/
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findAllByAuthId Public Optional<UserDetail>
findUserDetailIdByEmail Public Optional<Long>
getAccountStatus Public Optional<Boolean>
findAuthIdByUserID Public Optional< Long >
saveProfileImage Public Optional< Boolean >
PaymentRepositoryImpl
Class PaymentRepositoryImpl
Description Public class
Source File PaymentRepositoryImpl.java
Package com/repository/common/impl
Attribute Name Access Data type
modifier
177
N/A
Methods Name Access Return type
modifier
updateStatus Public Optional<Boolean>
findByProjectId Public Optional<List<Payment> >
deleteByProjectId Public Optional<Boolean>
ReportRepositoryImpl
Class ReportRepositoryImpl
Description Public class
Source File ReportRepositoryImpl.java
Package com/repository/common/impl
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findReportByStatus Public Optional<Page<Report>>
UserDetailRepositoryImpl
Class UserDetailRepositoryImpl
Description Public class
Source File UserDetailRepositoryImpl.java
Package com/repository/common/impl
Attribute Name Access Data type
modifier
N/A
Methods Name Access Return type
modifier
findAllByAuthId Public Optional<UserDetail>
findUserDetailIdByEmail Public Optional<Long>
getAccountStatus Public Optional<Boolean>
findAuthIdByUserID Public Optional< Long >
saveProfileImage Public Optional< Boolean >
178
4.3.3 User interface design
Register
179
Login
Home
180
Edit profile designer
181
Figure 4- 62 House owner profile
182
Search
Show profile
183
Create request
184
Request
Create project
185
Figure 4- 68 Project page (2)
Project detail
Edit project
186
Figure 4- 70 Designer edit project information
View showroom
View image
187
Figure 4-72 View showroom image
Create showroom
188
Figure 4-74 Create a showroom(2)
Payment history
Change password
189
Figure 4-76 Change password page
190
Figure 4- 77 Receive password page
191
4.3.4 Sequence diagram for each function
Function “Authentication”
Function “Search”
192
Function “View a showroom”
193
Function “Login by CI account”
194
Function “Register a new account”
195
Function “Change password”
196
Function “Designer send message”
197
Function “House owner view a project”
198
Function “Designer create a showroom”
199
Function “User report a user”
200
Function “House owner accept payment”
201
Function “Admin view reports”
202
Function “Admin active a project”
203
Figure 4- 78 Database design
Authentication table
No Field Name Type Max Allow Description
Length Null
1 user_id bigint 20 No Id of user
Primary key
2 email varchar 255 No Email of user use to active account
UNIQUE
3 password varchar 255 No Password of account
4 status int 11 1: not active
2: activated
3: social account
-Role table
Authentication_role table
No Field Name Type Max Allow Description
Length Null
1 user_id bigint 20 No Id of user
Compound primary key
2 role_id bigint 20 No Role of user
Compound primary key
Foreign key references to role_id in
table Role.
204
User_detail table
No Field Name Type Max Allow Description
Length Null
1 user_id bigint 20 No Id of user
Primary key
2 address varchar 255 Address of user
3 avatar varchar 255 Avatar of user
4 birth_date date time Birth date of user
5 first_name varchar 255 First name of user
6 gender int 11 Gender of user
7 last_name varchar 255 Last name of user
8 phone varchar 255 Phone numbers of user
9 status bit 1 0: the information is not updated
1: the information is updated
10 user_authentication_id bigint 20 No Foreign key references user_id in
table authentication
Verification_token table
No Field Name Type Max Allow Description
Length Null
1 id bigint 20 No Primary key
2 expiry_date datetime The expiration date of the token
3 token bigint 255 The token key to authenticate user
4 authentication_id bigint 20 No Foreign key
Professional_detail table
No Field Name Type Max Allow Description
Lengt Null
h
1 professional_id bigint 20 No Id of designer
Primary key
2 city varchar 255 City of designer
3 contact varchar 255 Contact of designer
4 fb_link varchar 20 Link Facebook of designer
5 introduction varchar 255 Designer description
6 youtube_link varchar 255 Link YouTube of designer
7 user_detail_id bigint 20 No Id of user
UNIQUE
Foreign key references to
user_id in table user_detail
8 designer_account_holder_name varchar 255 No
9 designer_bank_account_number varchar 255 No Bank account of designer
10 designer_bank_name varchar 255 No Bank name of designer
11 designer_company_name varchar 255 Company name of designer
12 designer_roll varchar 255 Roll of designer
13 average_rate double Avarage rate of designer
205
Owner_detail table
N Field Name Type Max Allow Description
o Lengt Null
h
1 owner_id bigint 20 No Id of home owner
Primary key
2 area int 11 area of current project
3 description varchar 255 Home’s describe
4 user_detail_id bigint 20 No Id of user
UNIQUE
Foreign key references to user_id in
table user_detail
Show_room table
N Field Name Type Max Allow Description
o Lengt Null
h
1 show_room_id bigint 20 No Id of show room
Primary key
2 show_room_estimate_price double Estimate price of show room
3 show_room_introduction varchar 255 Show room’s describe
4 show_room_location varchar 255 Show room location
Foreign key references to user_id
in table user_detail
5 show_room_title varchar 255 Show room title
6 professional_id bigint 20 No Foreign key references to
professional_id in table
professional_detail
Image_show_room table
N Field Name Type Max Allow Description
o Lengt Null
h
1 image_show_room_id bigint 20 No Id of show room image
Primary key
2 image_estimate_price double Estimate price
3 image_link varchar 255 Image link
4 show_room_id bigint 20 No Id of show room
Foreign key references to
show_room_id in table show_room
5 description varchar 255 Description of image
Request table
N Field Name Type Max Allow Description
o Length Null
1 request_id bigint 20 No Id of request
Primary key
206
2 create_date datetime Date create request
3 description varchar 255 Description of a request
4 title varchar 255 Request title
5 owner_id bigint 20 No Id of owner
Foreign key references to user_id in table
owner_detail
6 professional_id bigint 20 No Foreign key references to professional_id in table
professional_detail
7 status int 11 0: not yet read
1: read
Project table
No Field Name Type Max Allow Description
Lengt Null
h
1 project_id bigint 20 No Id of project
Primary key
2 create_date datetime No Date create project
3 description varchar 255 No Project description
4 designer_account_holder_name varchar 255 No Name of designer’s account
5 designer_address varchar 255 No Address of designer
6 designer_bank_account_number varchar 255 No Bank account numbers of
designer
7 designer_bank_name bigint 255 No Bank name of designer’s
account
8 designer_company_name varchar 255 Company name of designer
9 designer_email varchar 255 No Email of designer
10 designer_full_name varchar 255 No Full name of designer
11 designer_phone varchar 255 No Phone numbers of designer
12 designer_roll varchar 255 Roll of designer
13 end_date datetime End date of project
14 house_owner_account_holder_name varchar 255 No Name of house owner’s
account
15 house_owner_address varchar 255 No House owner address
16 house_owner_bank_account_number varchar 255 No Bank account numbers of
house owner
17 house_owner_bank_name varchar 255 No Bank name of house owner
18 house_owner_company_name varchar 255 Company name of house
owner
19 house_owner_email varchar 255 No Email of house owner
20 house_owner_full_name varchar 255 No Full name of house owner
21 house_owner_phone varchar 255 No Phone numbers of house
owner
22 house_owner_rol varchar 255 Roll of house owner
23 project_name varchar 255 No Name of project
24 status int 11 No Status of project
25 request_id bigint 20 No Id of request
UNIQUE
Foreign key references to
207
request_id in table request
26 rate double rate of a project
27 project_comment varchar 255 comment of house owner in
CI-project
Message table
N Field Name Type Max Allow Description
o Length Null
1 message_id bigint 20 No Id of message
Primary key
2 content varchar 255 Message content
3 receiver_id bigint 20 Id of receiver
4 sender_id bigint 20 Id of sender
5 request_id bigint 20 No Id of request
Foreign key references to request_id in table
request
6 file_link varchar 255 Link of file
Report table
N Field Name Type Max Allow Description
o Length Null
1 report_id bigint 20 No Id of report
Primary key
2 create_date datetime Date create report
3 description varchar 255 Report description
4 status bigint 20 0: not yet read
1: read
5 user_reported_i bigint 20 No Foreign key references to user_id in table
d user_detail
6 user_report_id bigint 20 No Foreign key references to user_id in table
user_detail
Showroom_category table
N Field Name Type Max Allow Description
o Length Null
1 id bigint 20 No Id of showroom
Primary key
2 name varchar 255 Name of showroom
Oauth_access_token table
No Field Name Type Max Allow Description
Length Null
1 authentication_id varchar 255 No Id of authentication
Primary key
2 Token_id varchar 255 No Id of token
3 Token blob No Token
208
4 User_name varchar 255 No Username
5 client_id varchar 255 No Id of client
6 authentication Blob No Authentication key of user
7 Refresh_token varchar 255 No Refresh token key of user
Show_room_like table
N Field Name Type Max Allow Description
o Length Null
1 user_id bigint 20 No Id of showroom
Compound primary key
Foreign key references to show_room_id in
table show_room
2 image_show_room_id bigint 20 No Id of category
Compound primary key
Foreign key references to id in table
showroom_category
3 Show_room_like bit 1 1: showroom is liked
0: showroom is not liked.
Showroom_n_category table
N Field Name Type Max Allow Description
o Length Null
1 showroom_id bigint 20 No Id of showroom
Compound primary key
Foreign key references to show_room_id in table
show_room
2 category_id bigint 20 No Id of category
Compound primary key
Foreign key references to id in table
showroom_category
Version table
N Field Name Type Max Allow Description
o Length Null
1 version_id bigint 20 No Id of project version
Primary key
2 description varchar 255 Version description
3 project_id bigint 20 No Id of project
Foreign key references to project_id in table
project
4 create_date datetime Date create project version
Payment table
N Field Name Type Max Allow Description
o Length Null
1 Id bigint 20 No Id of payment
209
Primary key
2 amount double Amount of payment
3 end_date datetime End date of project
4 Name varchar 255 Date create project version
5 start_date datetime Start date of payment
6 status int 11 0: not paid
1: paid
2: paying
3: paid to designer
7 project_id bigint 20 No Id of project
Foreign key references to project_id in table
project
8 description varchar 255 Description of payment
Payment_history table
N Field Name Type Max Allow Description
o Length Null
1 type bigint 20 No Compound primary key
2 time bigint 20 No Compound primary key
3 payment_id bigint 255 No Id of payment
Compound primary key
Foreign key references to id in table payment
4 description varchar 255 Description of payment
5 payment_amount double Amount money of the payment history
Project_file table
N Field Name Type Max Allow Description
o Length Null
1 project_file_id bigint 20 No Id of project file
Primary key
2 create_date datetime Date create file
3 link varchar 255 Link to resource server
4 name varchar 255 Name of file
5 project_id bigint 20 No Id of project
Foreign key references to project_id in table
project
6 description varchar 255 Description of file
File table
N Field Name Type Max Allow Description
o Length Null
1 file_id bigint 20 No Id of file
Primary key
2 file_description varchar 255 File description
3 file_link varchar 255 Link of file
4 file_name varchar 255 Name of file
5 upload_date datetime Date upload file
210
6 version_id bigint 20 No Id of project version
Foreign key references to version_id in table
version
Oauth_refresh_token table
N Field Name Type Max Allow Description
o Length Null
1 token_id varchar 255 No ID of token , Primary key
2 token blob No Token string
3 authentication blob No Authentication string
211
Chapter 5 - Software Testing Document
5.1 Purpose
This is the software testing document of CI system. The purpose of this chapter is to describe the
strategy and plan, the test approach and defect log.
The strategy defines the objective and scope of testing, human resource and acceptance
criteria for a successful project. The risk list is pre-define by consulting from expert and brain
storming. The strategy is carried out by project manager.
The test plan includes the model of testing that is the most suitable base on human resources
and development processes. The tester leader takes responsibilities to plan the functional to be
tested base on SRS, choose the type of test for each stage and making a plan for schedule and
deliverable to project manager.
Testing environment:
212
5.2.3 Human resources and responsibilities
Name Role Responsibilities
Vũ Việt Anh Project manager - Manage overall of the software quality
Test leader - Define test strategy.
- Define test plan, test approach.
- Create and review test case, defect log.
Nguyễn Đình Mai Tester - Implement integration test following requirement.
- Logging test case and defect log.
Nguyễn Văn Tú Developer - Create unit test
- Execute unit test
Đỗ Duy Tân Developer - Create unit test
- Execute unit test
213
Figure 5- 79 Test process
Description:
214
Figure 5- 80 V-Model testing
The table below are the stages in which test are executed:
217
test
GUI test √ √ √
Functional test √ √ √
Acceptance test √
5.3.6 Test milestone
Start date End date
Task
Iterator 1 Create test plan 21/05/2018 23/05/2018
Review and update test plan 24/05/2018 24/05/2018
Create and review system test 25/05/2018 30/05/2018
Create and review integration test 01/06/2018 04/06/2018
Execute unit test 05/06/2018 20/06/2018
Execute integration test 21/06/2018 26/06/2018
Execute system test 27/06/2018 27/06/2018
Execute Acceptance test 28/06/2018 28/06/2018
Iterator 2 Create test plan 29/06/2018 03/07/2018
Review & update test plan 04/07/2018 04/07/2018
Create and review system test 05/07/2018 10/07/2018
Create and review integration test 10/07/2018 13/07/2018
Execute unit test 16/07/2018 25/07/2018
Execute integration test 25/07/2018 31/07/2018
Execute system test 01/08/2018 10/08/2018
Execute acceptance test 13/08/2018 14/08/2018
5.3.7 Deliverables
No Deliverables Responsibilities Delivered date
1 Test plan Vũ Việt Anh 03/07/2018
2 Unit test Đỗ Duy Tân, Nguyễn Văn Tú 25/07/2018
3 Integration test Phạm Đình Mai, Vũ Việt Anh 31/07/2018
4 System test Phạm Đình Mai, Vũ Việt Anh 10/08/2018
Acceptance test Vũ Việt Anh 13/08/2018
5 Defect logs Vũ Việt Anh , Phạm Đình Mai 13/08/2018
6 Final test summary report Vũ Việt Anh 14/08/2018
218
Figure 5- 81 Choose class to be tested
4. View a result.
219
Figure 5- 83 Result of unit test
220
Figure 5- 85 System test case example
Description:
1. Creative Inside uses Google Docs with template of FPT-Software for logging defects.
2. Processes detail:
Tester will log bugs for each module, change the status and assign for developer.
Developer fix bugs and change status of bugs to resolve.
If the bug is fixed then tester change the status to close, otherwise will be re-open again
to fix.
222
Figure 5-87 Defect log example
223
Chapter 6 - SOFTWARE USER GUIDE
6.1 Deployment guidelines
6.1.1 Environment for user
No System requirement Description
1 CPU Intel Core i3 2.20 Ghz or above
2 RAM 2GB or above
3 Operating system Windows 10 version 1803
Build project:
ii. Using command “ng build --prod --build-optimizer --base-href /”
224
Run project
iii. Using command:
“cd dist”
“pm2 start angular-http-server –p 8080”
Add configuration
vi. press “Esc” and using command “wq” to save and quit
Restart service nginx:
vii. Using command “restart nginx.service”
225
6.1.3 Deploy CI web services for system admin
Build ci-da project
Clone “ci-da” project from git:
viii. Using command “git clone https://gitlab.com/jgeeks-ci/ci-da.git”
Build project
ix. Using command “cd ci-da”
x. Using command “mvn clean install”
226
Buid ci-model project
Get project from git
xi. Using command “git clone https://gitlab.com/jgeeks-ci/ci-model.git”
Build project
xii. Using command “cd ci-model”
Using command “mvn clean install”
Build project
Using command “cd CI-API-SERVER”
Using command “mvn install -Dskiptest“
227
Run CI-API-Server
- Using command “Cd target”
- Using command “Java –jar CreativeInside-0.0.1-SNAPSHOT.jar &disown”
Server configuration
228
6.2 User guide
6.2.1 Guest
Register
229
6.2.2 User
Search
At the Creative Inside website, the search text field is displayed at the top of the page.
230
View showroom
231
In category page, user clicks on a showroom to view showroom detail.
232
View designer profile
233
In category page, user clicks on a designer to view the designer’s profile.
234
Login
Enter your account and password into “E-mail” field and “Mật khẩu” field.
After you enter all your information, click on button “Đăng nhập”.
If you forgot your password, click the “Quên mật khẩu” link.
6.2.3 Designer
Logout
After login to the system at the screen with have “Đăng xuất” link after you click on your
avatar.
Click on “Đăng xuất” link to logout of the system.
235
Edit profile
In Create Inside website, click on your name after clicking on your avatar.
236
In “edit-profile-designer” page, you can edit your personal profile such as your full name,
address, …
o “Họ đệm” field: edit your last name.
o “Tên” field: edit your first name.
o “Địa chỉ” field: edit your address.
o “Tỉnh/Thành phố” field: edit your city.
o “Ngày sinh(năm/tháng/ngày)” field: edit your birth date.
o “Số điện thoại” field: edit your phone numbers.
o “Website” field: edit your website.
o “Tên công ty” filed: edit your compa.
o “Chức vụ” field: edit your position in your compa.
o “YouTube” filed: edit your YouTube link.
o “Facebook” field: edit you Facebook link.
o “Tên tài khoản” field: edit your bank account name.
o “Số tài khoản” field: edit your bank account number.
o “Chi nhánh ngân hàng” field: edit your bank branch.
o “Giới thiệu bản thân” field: edit your introduction.
o “Chọn ảnh” button: edit your avatar.
o “Lưu” button: save your avatar.
Click on button “Lưu”: designer information will be uploaded.
237
Send messages
After house owner sends you a request, in Create Inside website, click on the icon “Yêu cầu”.
238
Enter the message and click on the fly icon or press enter key from keyboard to send message.
Create project
After house owner sends you a request, in Create Inside website, click on the icon “Yêu cầu”.
239
Click a request in list request, the message box will display.
Click on button “Tạo dự án”.
240
You can enter project information of house owner such as “Đại diện Ông/Bà”, “Chức vụ”, … in
the first provision:
o “Tên dự án” field: project name.
o “Đại diện Ông/Bà” field: name of house owner.
o “Chức vụ” field: position of house owner in the compa.
o “Mã số thuế” field: tax number of house owner.
o “Chủ tài khoản” field: bank account of house owner.
o “Số tài khoản” field: bank account number of house owner.
o “Mở tại ngân hàng” field: bank branch of house owner.
o “Địa chỉ” field: address of house owner.
o “Điện thoại” field: phone numbers of house owner.
o “Email” field: email of house owner.
You can enter project information of house owner such as “Đại diện Ông/Bà”, “Chức vụ”, … in
the second provision:
o “Đại diện Ông/Bà” field: name of house owner.
o “Chức vụ” field: position of house owner in the compa.
o “Mã số thuế” field: tax number of house owner.
o “Chủ tài khoản” field: bank account of house owner.
o “Số tài khoản” field: bank account number of house owner.
o “Mở tại ngân hàng” field: bank branch of house owner.
o “Địa chỉ” field: address of house owner.
o “Điện thoại” field: phone numbers of house owner.
o “Email” field: email of house owner.
241
Click on button “Bổ sung điều khoản” to add more provision.
You can add more than one payment, one project has at least one payment.
You can enter information of payment such as “Tên công việc”, “Ghi chú”, …
o “Tên công việc” field: name of payment.
o “Ghi chú” field: description of payment.
o “Khối lượng tiền ước tính (x1000)” field: price of payment.
o “Thời gian làm việc(ngày/tháng/năm)” field: time of payment.
Click on button “Xác nhận” to confirmation payment.
Click outside the pop-up to cancel creating the payment.
Click the “Tạo dự án” button to finish creating the project.
242
View a project
243
Edit a project
244
Click on button “Chỉnh sửa thông tin”.
245
Create showroom
In Creative Inside website, click on “Bộ sưu tập” after click on your avatar.
246
In “create-showroom” page, you can create showroom such as title, description, …
o “Tiêu đề” field: title of showroom.
o “Mô tả” field: description of showroom.
o “Tỉnh/Thành phố” field: address of showroom.
o “Chọn loại dịch vụ” list: type of showroom.
o “Chon ảnh” button: image of showroom.
o “Xóa hết” button: delete all image selected.
247
Click on button “Tạo”: complete creation of showroom.
Edit showroom
In Creative Inside website, click on “Bộ sưu tập” after click on your avatar.
248
Click on button “Chỉnh sửa thông tin”.
249
o “Tiêu đề” field: edit title of showroom.
o “Địa chỉ” field: edit address of showroom.
o “Giới thiệu” field: edit introduction of showroom.
Click on button “Lưu”: showroom information will be uploaded.
Click on button “Hủy”: cancel edit showroom information.
Delete showroom
In Creative Inside website, click on “Bộ sưu tập” after click on your avatar.
250
Click on button “Xóa mẫu thiết kế này” to delete showroom.
Click on button “Đồng ý” to confirmation delete showroom.
251
Report designer
252
Click on button “Báo cáo”.
253
Report house owner
254
Click on button “Báo cáo”.
Like images
255
Click on a showroom.
Click on image.
256
Click on icon heart to like image.
Forgot password
257
Click on link “Quên mật khẩu”.
258
Open your email and click on button “here”.
Enter new password into “Mật khẩu mới” field and repeat new password into “Nhập lại mật
khẩu mới” to create new password.
Change password
259
After login to the system, at the screen with have “Đổi mật khẩu” link after click on your
avatar.
After login to the system, at the screen with have “Đăng xuất” link after you click on your
avatar.
Click on “Đăng xuất” link to logout of the system.
260
Edit profile
In “edit-profile-houseowner” page, you can edit your personal profile such as your name,
address, …
o “Họ đệm” field: edit your last name.
o “Tên” field: edit your first name.
o “Địa chỉ” field: edit your address.
o “Ngày sinh(năm/tháng/ngày)” field: edit your birth date.
o “Số điện thoại” field: edit your phone numbers.
o “Loại nhà cần thiết kế” field: edit type of house you want to find designer.
o “Diện tích” field: edit area of your house.
o “Chọn ảnh” button: edit your avatar.
261
o “Lưu” button: save your avatar.
Click on button “Lưu”: house owner information will be uploaded.
Picture confirmation message
Click on button “OK” to confirmation edit your information successfully.
Create request
262
Click on a showroom.
264
Send messages
After you create a request, in Create Inside website, click on the icon “Yêu cầu”.
Enter the message and click on the fly icon or press enter key from keyboard to send
message.
265
Accept project
If designer create the project as per your request, in Creative Inside website, click on the
icon “Dự án”.
266
267
You have to read the project information carefully then click on the “Xác nhận” button.
Project status has changed from “Mới tạo” to “Chờ duyệt”.
View a project
If you have at least one project, in Creative Inside website, click on the icon “Dự án”.
268
Click on a project.
269
Reject project
If designer create the project as per your request, in Creative Inside website, click on the
icon “Dự án”.
270
You have to read the project information carefully then click on the “Cần sửa đổi” button.
Project status has changed from “Mới” to “Đã từ chối”.
Accept a payment
If designer create the project as per your request, in Creative Inside website, click on the
icon “Dự án”.
271
Click the project have “Đang làm” status.
272
Close project
If designer create the project as per your request, in Creative Inside website, click on the
icon “Dự án”.
273
Click on button “Đóng dự án”.
274
Click on button “OK” to confirmation close project.
Like images
275
Click on a showroom.
276
Click on image.
Forgot password
277
Click on link “Quên mật khẩu”.
278
Open your email and click on button “here”.
Enter new password into “Mật khẩu mới” field and repeat new password into “Nhập lại mật
khẩu mới” to create new password.
Change password
After login to the system, at the screen with have “Đổi mật khẩu” link after click on your
avatar.
279
Enter information to change password:
o “Mật khẩu cũ” field: enter old password.
o “Mật khẩu mới” field: enter new password.
o “Nhập lại mật khẩu mới” field: enter repeat new password.
Click on button “Lưu”: password will be updated.
280
References
https://evbn.org/vietnam-furniture-home-decor-report/
https://math.stackexchange.com/questions/942738/algorithm-to-calculate-rating-based-on-
multiple-reviews-using-both-review-score
https://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html
https://angular.io/guide/styleguide
https://www.w3schools.com/jsref/jsref_tofixed.asp
https://developers.google.com/identity/protocols/OAuth2
https://crypto.stackexchange.com/questions/26064/advantages-disadvantages-of-bcrypt-vs-hash-
salt
https://oauth.net/articles/authentication/
https://angular.io/guide/form-validation
281