Introduction
Project Information
Project name: Air Conditioning Services Application
Product Type: Website & Android Application
Introduction
In recent years, booking services have gained popularity among households as a convenient and cost-effective solution, allowing users to access services without incurring additional fees These services provide a valuable alternative for families seeking more leisure time while managing expenses However, many suppliers are facing challenges in developing an effective management system for booking services that meets customer needs and ensures ease of use.
ACSA is an innovative system designed to enable users in Vietnam to register as suppliers or easily find and book services tailored to their specific needs Our goal is to deliver a professional, reliable, and user-friendly booking service that encompasses essential features such as service management, contract management, and user management ACSA prioritizes an exceptional user experience with an attractive interface and streamlined business processes to ensure satisfaction for all users.
Current Situation
Many booking service applications, such as bTaskee, Okiaf, and Rada, are compatible with both Android and iOS platforms, offering features like service information, service lists, and route navigation However, these apps often lack crucial details such as supplier information and pricing, making it difficult for users to identify the nearest service providers and leading to prolonged wait times for services.
Problem Definition
Below are the advantages and disadvantages of applications related to booking services in the app store and website in Viet Nam:
- Provide users with more services: clean up the air-conditioning, water supply, repair of appliances, …
- Do not show suppliers near you
- No information about the price of the service
- No information about the supplier.
Proposed Solution
The application enables users to access supplier information and store evaluations, enhancing their service experience By leveraging GPS technology, users can search for services based on specific proximity, ensuring accurate location results Additionally, users have the option to provide feedback, which helps in updating their data on the server.
- Users can define the type of service they want to use and where they want to use the service
- Users can view service charges for all stores near you
- Users can quickly call or make an appointment to quickly use the service
- Users can send their feedback
- Users can view store service information
- Users can see the feedback of people about the supplier
- Suppliers can view their financial reports
- Suppliers can add promotional information as well as the price of each service
- Suppliers can add branchs of the company
The advantages of this service include providing users with comprehensive information to select the best shop, facilitating effective communication between users and suppliers for quick service access, delivering real-time functionality for immediate results, and offering supplier recommendations based on ratings and location.
Disadvantages: o Internet connection may not response stable enough which lead to application low performance, so it is essential to maximum internet usage and performance.
Functional Requirements
Function requirements of the system are listed as below:
To create an account, users can select either a standard user or supplier profile, each requiring distinct information and images All submitted user information will be reviewed and verified by our staff to ensure accuracy and compliance.
View Supplier of Service List: o The user can find the supplier of service available near to the desired user location by using GPS or input location
Page 16 of 186 o The user can choose the time to use the service o The user also can find the appropriate store the problem, the system will favor stores based on rank, price, and quality of service o The user can view detail of service money, distance, information, reviews of users about the supplier
Feedback and Manage Saved Data o The user can send feedback to the server o The user can manage and update their saved data such as personal information, history, …
History and Profitability Report o Suppliers can monitor daily profits, monthly o Users and Suppliers can view their history of using the service
The System Management feature allows suppliers to efficiently oversee service information, pricing, and promotions, while administrators can manage user details, supplier relationships, and service contracts Additionally, administrators have access to various reports that provide insights into occupancy rates and profitability, enhancing overall operational efficiency.
Roles and Responsibility
No Full Name Role Position Contact
Manager Instructor Huongntc2@fe.edu.vn
2 Phan Nhat Hoang Developer Leader HoangPNSE62077@fpt.edu.vn
3 Duong Ngoc Phu Developer Member PhuDNSE61865@fpt.edu.vn
4 Nguyen Huu Diep Developer Member HiepNHSE61975@fpt.edu.vn
Software Project Management Plan
Problem Definition
1.1 Name of this Capstone Project
- Official name: Air Conditioning Services Application (ACSA)
The demand for booking services in households is growing daily, yet the number of available supplier outlets remains unclear To address this gap, the Air Conditioning Services Application is being developed to provide users with quick access to reliable air conditioning services.
Mobile applications: There are several applications which provide air condition services Some applications have the function of hiring people to complete the work
Advantages: Easy to use, helpful with the variety of services
Disadvantages: There is only one air-conditioned cleaning service that does not provide home delivery service The app does not provide pricing information and a reputable service store
The system simplifies the process for first-time users to easily find and select suppliers that meet their needs Additionally, it assists users in locating nearby suppliers based on their desired location.
Create an account: Users can create an account to use the app
View service list: Users can view the list of all services available on the app
View supplier’s information: Users can view detailed information about the supplier
Search supplier: Users can search for supplier listings near where they want
Communication: Users can call, message or schedule an appointment with a supplier for support or advice
Users can send feedback about the service they had the booking in the system
Supplier can manager data such as service information, promotion, statistics, affiliates, …
Admins have the ability to manage critical data, including supplier and user information, as well as statistical reports All accounts registered as users or suppliers must undergo verification and approval by an admin prior to being activated for use.
- The system can be used by every people with Android Phone 6.0 devices or later, or with a laptop with internet connection
- The language of the application is Vietnamese
The mobile application for the user
The website, for supplier and admin
All the process document involved
The current system only support for Android and staff has to approve request manually, so we recommend some features for future plans:
The mobile application will be available on iOS
The request can be approved automatically by compare with a government database
Apply multi-languages and currencies
Internet Connection Cable, Wi-Fi (4 Mbps) Cable, Wi-Fi (8 Mbps)
Operating System Linux Ubuntu 16.04 Linux Ubuntu 16.04
Computer Processor Intel® Xeon ® 1.4GHz Intel® Xeon ® Quad Core
Computer Memory 1GB RAM 2GB or more
Table 3 Hardware requirement for continuous integrating server
Operating System Windows Vista, 7, 8 Windows 7, 8
460 @ 2.53GHz Intel® Core(TM) i5 CPU,
Computer Memory 1GB of RAM 3GB of RAM or more
Table 4 Hardware requirement for web development
Operating System Android Phone 6.0 Android Phone 7.0
Hardware GPS supported GPS supported
Memory 150MB 150MB or more
Table 5 Hardware requirement for mobile development
Operating system Windows 7 or above
IDE Android Studio 3.+, Intellij IDEA 14.1
Web browser Chrome 42 or above
Project organization
For more information: http://www.waterfall-model.com/sashimi-waterfall- model/
Explanation: We use Modified Waterfall Development Model for Air Conditioning Service Application development for several reasons, mostly because:
During the Design phase, both functional and non-functional requirements may undergo changes due to variations in service type and service elements, ultimately influencing the functions that need to be modified and redesigned.
During the implementation phase of Android phone application development, the architecture established during the design phase may undergo changes This is often due to the discovery of new supporting features that can influence the overall architecture Additionally, updates or modifications to certain functions necessitate revisions to the design document to ensure it remains aligned with the current project requirements.
No Full name Role in Group Responsibilities
Hương Project manager - Specify user requirement
- Give out technique and business analysis support
2 Phan Nhật Hoàng Team leader, BA,
3 Dương Ngọc Phú BA, Developer,
4 Nguyễn Hữu Hiệp BA, Developer,
5 Đoàn Minh Hải BA, Developer,
Backend Java, Spring Framework, JSP, Hibernate
Development tool Android Studio 3.+, IntelliJ IDEA 14
Project Management Plan
Below are all the major tasks that need to be performed sequentially during the development of the system
Phase Description Deliverables Resource needed Dependencies and
Definition Identify and clarify system requirements
Introduction 20 man- days N/A - Missing requirement
- Project’s scope can be unclear
Software Design - Identify hardware and software requirements
- Decide software architect and clarify software detail design
Report No.2 Software Project Management Plan, Report No 3 Software Requirement Specification and
Report No 4 Software Design Description
- Misunderstood or unclear system’s requirement
- Lack of practical experience leading to unreasonable design
Implementation and Unit Testing - Implements all functions of system
Software package 120 man- days - Base on Software
Requirement Specification and Software Design Description
- Coding try to follow coding convention
- Member does not performs unit test
System Testing - Perform integration test and system test
- Lack of testing experience leading to lack of test cases
- Not enough time for performing test
User’s Manual 15 man- days Integration and
User’s manual may be difficult for user to understand and confuse
Table 9 Software development life cycle
Collect requirements Find which systems currently provide similar service, theirs strengths and weakness
Phan Nhat Hoang Duong Ngoc Phu Doan Minh Hai Nguyen Huu Hiep
Identify and clarify system requirements
Research current systems to collect requirements
Define main and needed functions the system must include
Phan Nhat Hoang Duong Ngoc Phu Doan Minh Hai Nguyen Huu Hiep
Prototype Build a prototype of proposed system (Website/Mobile) Phan Nhat Hoang
Duong Ngoc Phu Doan Minh Hai Nguyen Huu Hiep
3.2.2 Phase 2: System and Software Design
Identify hardware and software requirements
Find out the suitable hardware and software for the system, as well as its minimum and recommended requirements
Phan Nhat Hoang Duong Ngoc Phu Doan Minh Hai Nguyen Huu Hiep
Decide software architect and clarify software detail design
- Define the major software components and interfaces
- Draw core flow diagram, use case diagram, …
- Group meeting to review and modify
Phan Nhat Hoang Duong Ngoc Phu Doan Minh Hai Nguyen Huu Hiep
Design database - Design database for the system Phan Nhat Hoang
Duong Ngoc Phu Doan Minh Hai Nguyen Huu Hiep
3.2.3 Phase 3: Implementation and Unit Testing
Implements all functions of system
Coding all the components Phan Nhat Hoang
Duong Ngoc Phu Doan Minh Hai Nguyen Huu Hiep
Create test plan Planning for testing Phan Nhat Hoang
Duong Ngoc Phu Doan Minh Hai Nguyen Huu Hiep
Perform Unit testing - Write Unit test cases
Phan Nhat Hoang Duong Ngoc Phu Doan Minh Hai Nguyen Huu Hiep
3.2.4 Phase 4: Integration and System Testing
Perform integration test and system test
- Test groups of modules and test whole the system Phan Nhat Hoang
Duong Ngoc Phu Doan Minh Hai Nguyen Huu Hiep
Deploy the system Deploy the system in client environment Phan Nhat Hoang
Duong Ngoc Phu Doan Minh Hai Nguyen Huu Hiep
Create the user’s manuals Create a guideline to instruct users using system Phan Nhat Hoang
Duong Ngoc Phu Doan Minh Hai Nguyen Huu Hiep
Do routine maintenance activities for client system
Phan Nhat Hoang Duong Ngoc Phu Doan Minh Hai Nguyen Huu Hiep
Refer to “Task sheet” folder
Refer to “Meeting minutes” folder.
Coding Convention
This project follows “Code Conventions for the Java TM Programming Language, by Sun Microsystems, rev April 20, 1999” http://www.oracle.com/technetwork/java/codeconventions-150003.pdf
We use followings naming convention from the reference to capable with the current situation in our team:
- Naming: o Class names must be in Pascal case o Variable names must be in Camel case o Each Java class belongs to a single file
Page 26 of 186 o Use four spaces intentions o Avoid lines with more than 80 characters
For optimal readability and engagement, it is recommended to declare one variable per line, as this practice encourages commenting Additionally, it is crucial to avoid declaring variables and functions on the same line Lastly, ensure that different data types are not placed on the same line to maintain clarity in your code.
Software Requirement Specification
User Requirement Specification
A guest is an individual who lacks access to the full system but can utilize certain functions To unlock all features, a guest must log in Some of the functions available to guests include limited access to specific system capabilities.
- Login in Mobile Application to become the member
Customer is guest who uses his account to login to the system The customer can use some following functions:
- View location, distance of supplier
Supplier is guest who uses his account to login to the web system The supplier can use some following functions:
Staff members are responsible for managing customer, car owner, and vehicle information directly within the system They are equipped to address and resolve issues that may arise from customers, utilizing various functions to effectively handle these situations.
System Requirement Specification
- General requirement for graphics user interface of website and application on mobile device is the GUI should be simple, clear, intuitive, and reminiscent
- Some design principle will be taken into consideration:
User Interface Guidelines - Google [Ref: Appendix 1]
Android Design Guidelines - Android Developers [Ref: Appendix 2]
- Chromes (Version 66.0.3359.181), Firefox (version 59.0.2) with Resolution
(1024 x 768) or bigger and must support JavaScript and HTML5
- Mobile application: Android operating system (v 4.2 or above)
- Use HTTP protocol 1.1 for communication between the web browser and the web server
- Use HTTP protocol 1.1 for communication between the mobile application and the web service
2.2.1 Android Application Overview Use Case
Figure 2: Android Application Overview Use Case
Figure 3 Web Application Overview Use Case
2.3.1.1. Overview Use Case
Figure 4 < Unauthorized user> Overview Use Case
Figure 5 Sign up
Use Case No ACSAU01 Use Case Version 2.0
Use Case Name Sign up
- This use case allows guest to create new account request in the system
- Guest create new account request success
- Guest sends command to create account request
- Success: New account will be created for guest
Step Actor Action System Response
1 Guest goes to new account view Display new view with the following information
System requires information from guest:
Personal information (all information below are required)
- Username: free text input, required, length 1 – 20
- Password: free text input, required, length 6 – 12
- RePassword: free text input, required, length 3 – 80
- Full Name: free text input, required, length 1 – 50
- Email: free text input, required, length
3 Guest sends command to create new account request
System validates information, request for confirmation and redirect to home screen [Exception 1, 2]
No Actor Action System Response
1 Guest sends command to create new account request System shows error message to ask user input missing required fields
2 Guest’s email is existed in the system Show message to notify guest that their email is existed in the system
- New customer account will be stored in the system with inputted information
- System must ensure has no duplicate customer
- An email will be sent to user to notify email verification
- User can start using the system
Table 10 Use case ACSAU01 - Sign up
Use Case No ACSAU02 Use Case Version 2.0
- This use case allows guest to login in the system
- Guest sends command to login request
- Success: Redirect to home page
Step Actor Action System Response
1 Guest goes to login screen Display new view with following information
- Username: free text input, required, length 1 – 20
- Password: free text input, required, length 6 – 12
3 Guest sends “Login” command [Alternative 1]
System validate data and return login result [Exception 1, 2]
No Actor Action System Response
1 If user click on “Register” tab Display new view with following information
System requires information from guest:
Personal information (all information below are required)
- Username: free text input, required, length 1 – 20
- Password: free text input, required, length 6 – 12
- RePassword: free text input, required, length 3 – 80
- Full Name: free text input, required, length 1 – 50
- Email: free text input, required, length 11 – 50
3 User sends command to continue process System validate information and request for confirmation
No Actor Action System Response
1 Guest sends command to create new account request System shows error message to ask user input missing required fields
2 Guest’s email is existed in the system Show message to notify guest that their email is existed in the system
- New customer account will be stored in the system with inputted information
- System must ensure has no duplicate customer
- An email will be sent to user to notify email verification
- User can start using the system
Table 11 Use case ACSAU02 - Login
Figure 7 Overview Use Case
Use Case No ACSAC01 Use Case Version 2.0
Use Case Name Booking service
- This use case helps user to find supplier’s services which are near customer location and booking request
- User booking service request successfully
- User sends “Find service” command
- User must login into the system with role Customer
- Customer device must be enabled GPS location and have internet connection
- Success: User booking service successfully
Step Actor Action System Response
1 User sends booking service command Display new view with following information:
2 User sends continue command Display new view with following information:
3 User send start booking command Show message to notify user that order has been created
4 User goes to view order Display new view with following information:
5 User send start booking command Forward to paypal page
6 User login to paypal and execute payment process Show message to notify user that contract has been pay
No Actor Action System Response
1 If device GPS and internet connection is not enabled Show message to notify user that device
GPS and internet is not enable and redirect to device setting
2 If supplier data is wrong Show message to notify user that supplier detail is wrong and the supplier detail has been aborted
3 If user not select anything and click on “Booking”
Show message to notify user that user must select bank to continue process
4 If user cannot complete payment Show message to notify user that payment is not success and renting process has been aborted
- If device GPS and internet connection is not enabled, system cannot find user location and suitable supplier near user
- User cannot appointment day in the past
- If user cannot complete the payment process, system will cancel the reservation
Table 12 Use case ACSAC01 - Booking service
Use Case No ACSAC02 Use Case Version 2.0
Use Case Name Cancel order
- This case allows users who have a booking service request which is on standby mode, can cancel a reservation
- User can cancel a reservation successfully
- User must login into the system with role Customer
- Customer device must be enabled GPS location and have internet connection
- Customer must have a service reservation and service is not yet provided
- Success: Show cancel reservation success message
Step Actor Action System Response
1 User sends cancel service command in order detail view
Display confirm dialog “Please fill reason cancel order ”
2 User fill reason and select accept command [Alternative 1]
Display dialog with following text:
No Actor Action System Response
1 If user doesn’t fill reason and select accept command Display confirm dialog “Please fill reason cancel order”, reservation process still continues
No Actor Action System Response
1 If system fail to process refund for customer Show message to notify user that user request is still processing, please wait for a few minutes and redo refund process
Relationships: Include booking service process
- If user did not have a service reservation, cancel process cannot be executed
- If the system cannot complete the refund process, the system must automatically redo the process until it succeeds
Table 13 Use case ACSAC01- Cancel order
Figure 10 View booking history
Use Case No ACSAC03 Use Case Version 2.0
Use Case Name View booking history
- This use case allow user to view all of the customer’s transactions in the past
- Customer can view booking history
- Customer sends view history request
- User must login into the system with role Customer
- Success: Show the customer’s transactions history to the user
Step Actor Action System Response
1 User goes to booking history view Display booking history view with following information: o Booking time: date o Service name: text o Supplier name: text o Service price: int [Alternative 1]
No Actor Action System Response
1 If user have not booking service yet Display booking history view with blank data
- The information is loaded from the system
- List of transactions will be sorted by date in descending order
- Orders had payment and user had use service will at tab complete
Table 14 Use case ACSAC03 - View booking history
Figure 11 View profile information
Use Case No ACSAC04 Use Case Version 2.0
Use Case Name View profile information
- This use case allows user to view their information and profile in the system
- User view account information stored in the system successfully
- User sends view account information command
- User must login into the system with role Customer
- Success: Show the customer’s information to the user
Step Actor Action System Response
1 User sends view account information command Display account information view that shows user list of account information includes:
- The information is loaded from the system
Table 15 Use case ACSAC04 - View profile information
Use Case No ACSAC05 Use Case Version 2.0
Use Case Name Update profile
- This use case allows user to update their profile and information stored in the system
- User can update the profile
- User sends update information command
- User must login into the system with role Customer
- User must stand at view profile information
- Success: Show the new customer’s information to the user
Step Actor Action System Response
1 User goes to update information view
Display update information view allow user to update information includes:
- Full name: free text input, required, length 3-80
- Email: free text input, required, length 10-250
- Address: free text input, required, length 10-250
- Phone: free text input, required, length 8-15
2 User fill required information [Alternative 1, 2]
3 User sends request update command Show message to notify that request is submit successfully
No Actor Action System Response
1 User input missed one of requirement information Show message to notify user what required information is missing
2 The inputted information length is out of range Show message to notify user what information is out of range
- The information is loaded from the system
- Information will be sent to the system with inputted information
Table 16 Use case ACSAC05 - Update profile
Figure 13 Chat with supplier
Use Case No ACSAC06 Use Case Version 2.0
Use Case Name Chat with supplier
- This use case allows user to chat with supplier in the system
- User can chat with supplier
- User sends message to supplier
- User must login into the system with role Customer
- Success: Show the chat screen to the user
Step Actor Action System Response
1 User goes to supplier’s information
Display supplier’s information view allows user to seen
2 User sends request chat command Show the chat screen to the user
No Actor Action System Response
1 User goes to chat’s information Show list supplier has chat
2 User choose supplier to chat Show message between customer and supplier
- The message is loaded from the system
Table 17 Use case ACSAC06 - Chat with supplier
Figure 14 Chat with supplier
Use Case No ACSAC06 Use Case Version 2.0
- This use case allows user to feedback with supplier in the system
- User can feedback with supplier
- User sends feedback to system
- User must login into the system with role Customer
- Success: Show the chat screen to the user
Step Actor Action System Response
1 User goes to supplier’s information Display supplier’s information view allows user to seen
2 User sends request feedback command Show the feedback screen to the user
Display feedback view allow user to feedback information includes:
- Content: free text input, required, length 0-250
3 User rating star and fill reason feedback
4 Guest sends “Send” command System shows success message
No Actor Action System Response
1 If user doesn’t rating star System shows error message
- The feedback is loaded from the system
- User can’t feedback if hadn’t ordered yet
- User can’t feedback if didn’t rating star
Table 18 Use case ACSAC06 - Feedback
Figure 13 Overview Use Case
Use Case No ACSAA01 Use Case Version 2.0
Use Case Name Approve supplier
- This use case helps admin to view, verify and approve account information
- Admin approve account information successfully
- Admin receive a create account request from Supplier
- User must login into the system with role Admin
- Success: New account information will be saved to database
Step Actor Action System Response
1 User sends approve information command Display a new view with flowing information:
2 Admin select “Edit” in tab
Display a new view with flowing information:
- Branch o Branch ID o Branch name o Address
- Service o Service ID o Service name o Status
[Alternative 2] System save data to database
Account status change to Action
Page re-load Information dialog disable
No Actor Action System Response
1 Admin select “Delete” in tab
System delete data to database
2 Admin select Search button System search date to database
No Actor Action System Response
1 System not show account information System reload view and re-fetch data from database
- The information is loaded from the system
- User must login into the system with role Admin
Table 17 Use case ACSAA01 - Approve supplier
Figure 16 View total profit
Use Case No ACSAA08 Use Case Version 2.0
Use Case Name View total profit
- This use case helps admin to view total report in the system
- Admin can view total report
- Admin sends view total report command
- User must login into the system with role Admin
Step Actor Action System Response
1 Admin goes to view total report view Display new view contains the following information:
- Account status chart: line chart
- Service status chart: line chart
Relationships: extend by View report (Actor select between view total and view specific report)
- User must login into the system with role Admin
- The information is loaded from the system
Table 19 Use case ACSAA08 - View total profit
Figure 17 Overview Use Case
Use Case No ACSAS01 Use Case Version 2.0
Use Case Name Insert service
- This use case allows owner to request insert new service information to the system
- User sends new service request command
- User must login into the system with role Supplier
- Account status is “Waiting for approcal”
- Success: New service request will be sent to the system
Step Actor Action System Response
1 User sends insert service information command Display new view with following information
- Service name: free text input, required, length 1-50
- Type of service: can be multiple optional selected from these selections: o Air-conditioner o Electricity o Water
- Price: free text input, required, length 1-18
- Status: can be multiple optional selected from these selections: o Active o Suspended
3 User sends command to create new service request Show message to notify that request is submit successful
No Actor Action System Response
1 Supplier sends command to continue process request System shows error message to ask supplier input missing required fields
2 Supplier’s service is existed in the system Show message to notify supplier that their service is existed in the system
- The information is loaded from the system
Table 20 Use case ACSAS01 - Insert service
Figure 19 Update service information
Use Case No ACSAS02 Use Case Version 2.0
Use Case Name Update service information
- This use case help user to send their update service information
- User sends update service information command
- User must login into the system with role Supplier
- There is at least 1 service belongs to supplier in the system
- Success: Show message update information is successful
Step Actor Action System Response
1 User sends update service request command Display new view with following information
- Service name: free text input, required, length 1-50
- Type of service: can be multiple optional selected from these selections: o Air-conditioner
- Price: free text input, required, length 1-18
- Status: can be multiple optional selected from these selections: o Active o Suspended
3 User sends command to update service request
Show message to notify that request is submit successful
No Actor Action System Response
1 Supplier sends command to continue process request
System shows error message to ask supplier input missing required fields
2 Supplier’s service is existed in the system Show message to notify supplier that their service is existed in the system
- The information is loaded from the system
Table 21 Use case ACSAS02 - Update service information
Use Case No ACSAS03 Use Case Version 2.0
Use Case Name Delete service
- This use case helps user to delete service in the system
- User sends delete service command
- User must login into the system with role Supplier
- There is at least 1 service belongs to supplier in the system
- Success: Show message service deleted successfully
Step Actor Action System Response
1 User sends delete service command Display confirm dialog “Do you really want to delete vehicle” and following information includes:
[Alternative 1] Show message vehicle deleted success
No Actor Action System Response
1 User select No option Dialog disable, delete vehicle process aborted
- Service information will be deleted from database
Table 22 Use case ACSAS03 - Delete service
Use Case No ACSAS01 Use Case Version 2.0
Use Case Name Insert branch
- This use case allows owner to request insert new branch information to the system
- User sends new branch request command
- User must login into the system with role Supplier
- Account status is “Waiting for approcal”
- Success: New branch request will be sent to the system
Step Actor Action System Response
1 User sends insert branch information command Display new view with following information
- Branch name: free text input, required, length 1-250
- Branch name: free text input, required, length 1-250
- Address: free text input, required, length 1-205
3 User sends command to create new branch request Show message to notify that request is submit successful
No Actor Action System Response
1 Supplier sends command to continue process request System shows error message to ask supplier input missing required fields
2 Supplier’s service is existed in the system Show message to notify supplier that their service is existed in the system
- The information is loaded from the system
Table 23 Use case ACSAS01 - Insert service
Figure 22 Update branch information
Use Case No ACSAS02 Use Case Version 2.0
Use Case Name Update branch information
- This use case help user to send their update branch information
- User sends update branch information command
- User must login into the system with role Supplier
- There is at least 1 branch belongs to supplier in the system
- Success: Show message update information is successful
Step Actor Action System Response
1 User sends update branch request command Display new view with following information
- Branch name: free text input, required, length 1-250
- Branch name: free text input, required, length 1-250
- Address: free text input, required, length 1-205
3 User sends command to update branch request Show message to notify that request is submit successful
No Actor Action System Response
1 Supplier sends command to continue process request System shows error message to ask supplier input missing required fields
2 Supplier’s service is existed in the system Show message to notify supplier that their service is existed in the system
- The information is loaded from the system
Table 24 Use case ACSAS02 - Update service information
Use Case No ACSAS03 Use Case Version 2.0
Use Case Name Delete branch
- This use case helps user to delete branch in the system
- User sends delete branch command
- User must login into the system with role Supplier
- There is at least 1 branch belongs to supplier in the system
- Success: Show message branch deleted successfully
Step Actor Action System Response
1 User sends delete branch command Display confirm dialog “Do you really want to delete branch” and following information includes:
[Alternative 1] Show message branch deleted success
No Actor Action System Response
1 User select No option Dialog disable, delete branch process aborted
- Service information will be deleted from database
Table 25 Use case ACSAS03 - Delete branch
Use Case No ACSAS01 Use Case Version 2.0
Use Case Name Insert promotion
- This use case allows owner to request insert new promotion information to the system
- User sends new promotion request command
- User must login into the system with role Supplier
- Account status is “Waiting for approcal”
- Success: New promotion request will be sent to the system
Step Actor Action System Response
1 User sends insert promotion information command
Display new view with following information
- Promotion name: free text input, required, length 1-250
- Add service: can be multiple optional selected from these selections selections
- Describe: free text input, required, length 1-250
3 User sends command to create new promotion request
Show message to notify that request is submit successful
No Actor Action System Response
1 Supplier sends command to continue process request System shows error message to ask supplier input missing required fields
2 Supplier’s service is existed in the system Show message to notify supplier that their service is existed in the system
- The information is loaded from the system
Table 26 Use case ACSAS01 - Insert service
Figure 25 Update service information
Use Case No ACSAS02 Use Case Version 2.0
Use Case Name Update promotion information
- This use case help user to send their update service information
- User sends update service information command
- User must login into the system with role Supplier
- There is at least 1 service belongs to supplier in the system
- Success: Show message update information is successful
Step Actor Action System Response
1 User sends update promotion request command
Display new view with following information
- Promotion name: free text input, required, length 1-250
- Add service: can be multiple optional selected from these selections selections
- Describe: free text input, required, length 1-250
3 User sends command to update promotion request Show message to notify that request is submit successful
No Actor Action System Response
1 Supplier sends command to continue process request System shows error message to ask supplier input missing required fields
2 Supplier’s service is existed in the system Show message to notify supplier that their service is existed in the system
- The information is loaded from the system
Table 27 Use case ACSAS02 - Update service information
Use Case No ACSAS03 Use Case Version 2.0
Use Case Name Delete promotion
- This use case helps user to delete promotion in the system
- User sends delete promotion command
- User must login into the system with role Supplier
- There is at least 1 promotion belongs to supplier in the system
- Success: Show message promotion deleted successfully
Step Actor Action System Response
1 User sends delete promotion command Display confirm dialog “Do you really want to delete promotion” and following information includes:
Show message promotion deleted success
No Actor Action System Response
1 User select No option Dialog disable, delete promotion process aborted
- Promotion information will be deleted from database
Table 28 Use case ACSAS03 - Delete promotion
Figure 27 View revenue report
Use Case No ACSAS04 Use Case Version 2.0
Use Case Name View revenue report
- This use case allows supplier to view the profit report of service in the system
- User can view service profit report
- User sends view report command
- User must login into the system with role Supplier
- There is at least 1 service belongs to owner in the system
- Success: service report is show
Step Actor Action System Response
1 User goes to view profit report view Display new view contains the following information:
- Appointment in the next 5 days: text
- Order status chart: line chart
- User must login into the system with role Supplier
- There is at least 1 service belongs to owner in the system
- If service of supplier had not been using, service income is 0
Table 29 Use case ACSAS04 - View revenue report
Use Case No ACSAS05 Use Case Version 2.0
Use Case Name View profile
- This use case allows user to view their information and profile in the system
- User view account information stored in the system successfully
- User sends view account information command
- User must login into the system with role Supplier
- Success: Show the supplier’s information to the user
Step Actor Action System Response
1 User sends view account information command Display account information includes:
- Status: can be multiple optional selected from these selections: o Active o Suspended
- Main address: can be multiple optional selected from these selections
2 User sends view logo command Display account information includes:
3 User sends view payment command
- The information is loaded from the system
Table 30 Use case ACSAC04 - View profile
Use Case No ACSAS06 Use Case Version 2.0
Use Case Name Update profile
- This use case allow user to updated their profile and information store in the system
- User sends update information command
- User must login into the system with role Supplier
- User must be stand at view profile information
- Success: Show the new supplier’s information to the user
Step Actor Action System Response
1 User goes to update information view Display account information view that show user list of account information includes:
- Status: can be multiple optional selected from these selections: o Active o Suspended
- Main address: can be multiple optional selected from these selections
3 User sends view logo command Display account information includes:
4 User choose image to update logo
5 User sends view payment command Display account information includes:
7 User sends request save command Show message to notify that request is submit successful
No Actor Action System Response
1 User input missed one of requirement information Show message to notify user what required information is missing
2 The inputted information length is out of range Show message to notify user what information is out of range
- The information is loaded from the system
Table 31 Use case ACSAS06 - Update profile
Software System Attribute
All the texts, labels and alerts will be written in English
- The system usability is easy to use that will need less than 1 days of training for customer to use the system
- User can follow installation and manual guide for installation If there are any problems, user cans contacts developer for help
- System notification success rate is less than 2 failed notifications per 1000 sent
- Web service API response success rate is less than 2 failed requests per 10,000 requests
- All input data are validated before saving to database
- All privacy information such as password is encrypted to ensure security
- Users is authentication/authorization for all users when they login to the system
- The system is separated into modules
- Admin, supplier can use application on every supported web browser
- Customer can use mobile application on every Android smartphone that have version greater than 4.0
- Requests from web application are responded in less than 10 seconds at 8 Mbps bandwidth speed
- Mobile checker application should return card information in less than 1 minute at 8 Mbps bandwidth speed.
Conceptual Diagram
Entity Data dictionary: describe all content of all entities
Account Contain the account information
Account Type Contain the type of account
Supplier Contain the supplier information
Branch Contain the branch information
Service Contain the service information
ServiceStatus Contain the service status
ServiceType Contain the type of service
Customer Contain the customer information
Order Contain the order information
OrderDetail Contain the all detail of each order
Promotion Contain the promotion information
PromotionDetail Contain the all detail of each promotion
Order Status Contain the statuses for order
PromotionStatus Contain the statuses for promotion
Feedback Contain the feedback of customer
City Contain all cities in Vietnam
District Contain all district in Vietnam
Table 32 Conceptual Diagram Data Dictionary
Software Design Description
Design Overview
This document outlines the technical and user interface design of the Air Conditioning Services Application for both web and mobile platforms It encompasses the architectural design, detailed specifications for common and business functions, as well as the database model design.
- The architectural design describes the overall architecture of the system and the architecture of each main component and subsystem
- The detailed design describes static and dynamic structure for each component and functions It includes class diagrams, class explanations and sequence diagrams for each use cases
- The database design describes the relationships between entities and details of each entity
This document provides a comprehensive overview of the system architecture design, detailing the component diagrams that illustrate the connections and integrations within the system Additionally, it includes an in-depth design description featuring class diagrams, explanations of each class, and sequence diagrams that outline the application's functions Finally, the document presents a fully attributed Entity Relationship Diagram, encapsulating the system's data structure.
System Architecture Design
The web application is built using ASP.NET MVC, along with Repository and Unit of Work patterns, leveraging Entity Framework for efficient data management This architectural choice facilitates the division of a large project into manageable modules, allowing our four-member team to effectively assign tasks and enhance collaboration.
This project follows MVC architecture with following components:
The controller serves as the component of the application that functions as an event handler, managing user interactions It typically processes data from user requests, invokes the relevant business methods, and determines the appropriate view to present back to the user.
- JSP/HTML (View) is the parts of the application that handles the display of the data The selection of View is under control of Controller
- Business is the parts of the application that do business processing to solve domain problems
- Model is the parts of the application that acts like a data transfer object between the system and database
- Web Service is the parts of the application that acts like event handler for web and mobile communication via REST method
About Repository and Unit Of Work patterns with Entity Framework for this Project
The repository and unit of work patterns are intended to create an abstraction layer between the data access layer and the business logic layer of an application
Implementing these patterns can help insulate your application from changes in the data store and can facilitate automated unit testing or test-driven development
The application is developed as an Android application We choose Ionic with Angular 4 to develope this project
Reference: Ionic: An AngularJS based framework on the rise
Component Diagram
Component Dictionary: Describes components Web Application Web application package: View, Controller
Mobile Application Mobile application package
Business Logic Component to handle all business logic of system
Restful Service Provide API for mobile applications to interact with the system
Supplier Component Component to handle supplier activities in the system
Customer Component Component to handle customer activities in the system
Admin Component Component to handle admin activities in the system
Detailed Description
Class dictionary: describe Class Class Name Mapping column with Conceptual diagram
Account Account Contain the account information
Account Type Account Type Contain the type of account
Supplier Supplier Contain the supplier information
Branch Branch Contain the branch information
Service Service Contain the service information
ServiceStatus Service Status Contain the service status
ServiceType Service Type Contain the type of service
Customer Customer Contain the customer information
Order Order Contain the order information
OrderDetail Order Detail Contain the all detail of each order
Promotion Promotion Contain the promotion information
PromotionDetail Promotion Detail Contain the all detail of each promotion
Order Status Order Status Contain the statuses for order
PromotionStatus Promotion Status Contain the statuses for promotion
Feedback Feedback Contain the feedback of customer
City City Contain all cities in Vietnam
District District Contain all district in Vietnam
AccountId Integer Public Unique identifier of an account
Username String Public Account’s username
Password String Public Account’s password
AccountTypeId Integer Public Account’s Account Type ID
Created Date Date time Public Account’s Created Date
Created By String Public Define who created this account
Updated date Date time Public Account’s Updated Date
Updated By String Public Define who updated this account
IsDeleted Boolean Public Mark account as deleted or not
Method Return Type Visibility Description
Getter Attribute type Public Get attribute value
Setter Void Public Set value of attribute
AccountTypeId Integer Public Unique identifier of an account type
Name String Public Account Type Name
CreatedDate Date Time Public Account Type’s created date
CreatedBy DateTime Public Define who created this type
UpdatedDate DateTime Public Account Type’s updated date
UpdatedBy Integer Public Define who updated this type
IsDeleted Boolean Public Mark account type as deleted or not
Method Return Type Visibility Description
Getter Attribute type Public Get attribute value
Setter Void Public Set value of attribute
SupplierId Integer Public Unique identifier of a supplier
Name Integer Public Supplier’s name
AccountId Integer Public Supplier’s account id in system
Avatar string Public Supplier’s avatar link
SupplierStatusId Integer Public Supplier’s status
MainBranchId int Public Supplier’s main brach Id
Email String Public Supplier’s email
PhoneNumber String Public Supplier’s phone number
CreatedDate Date time Public Supplier’s Created Date
CreatedBy String Public Define who created this
UpdatedDate Date time Public Supplier’s updated date
UpdatedBy String Public Define who updated this supplier
IsDeleted Boolean Public Mark supplier as deleted or not
Method Return Type Visibility Description
Getter Attribute type Public Get attribute value
Setter Void Public Set value of attribute
SupplierStatusId Integer Public Unique identifier of a supplier status
Name String Public Supplier status’ name
CreatedDate Date time Public Supplier status’ created date
CreatedBy String Public Define who created this status
UpdatedDate Date time Public Supplier status’ updated date
UpdatedBy String Public Define who updated this type
IsDeleted Boolean Public Mark supplier status as deleted or not
Method Return Type Visibility Description
Getter Attribute type Public Get attribute value
Setter Void Public Set value of attribute
BranchId Integer Public Unique identifier of a branch
Name String Public Branch’s name
SupplierId Integer Public Brach’s supplier Id
CityId Integer Public Define city where the branch is located
DistrictId Integer Public Define district where the branch is located
Address String Public Address details to help find correct location
Longitude String Public Branch’s longitude
Latitude String Public Branch’s latitude
CreatedDate Date time Public Branch’s created date
CreatedBy String Public Define who created this branch
UpdatedDate Date time Public Branch’s updated date
UpdatedBy String Public Define who updated this branch
IsDeleted Boolean Public Mark branch as deleted or not
Method Return Type Visibility Description
Getter Attribute type Public Get attribute value
Setter Void Public Set value of attribute
CityId Integer Public unique identifier of a city
Name String Public The city’s name
CreatedDate Date time Public City’s created date
CreatedBy String Public Define who created data for this city
UpdatedDate Date time Public City’s updated date
UpdatedBy String Public Define who updated this city
IsDeleted Boolean Public Mark city as deleted or not
Method Return Type Visibility Description
Getter Attribute type Public Get attribute value
Setter Void Public Set value of attribute
DistrictId Integer Public Unique identifier of a district
Name String Public The district’s name
CtityId Float Public District’s CityId
CreatedDate Date time Public District’s created date in system
CreatedBy String Public Define who created data for this district
UpdatedDate Date time Public District’s updated date in system
UpdatedBy String Public Define who updated this district
IsDeleted Boolean Public Mak district as delete or not
Method Return Type Visibility Description
Getter Attribute type Public Get attribute value
Setter Void Public Set value of attribute
CustomeId Integer Public Unique identifier of a customer
Name String Public Customer’s name
PhoneNumber String Public Customer’s phone number
Address String Public Customer’s address
Email String Public Customer’s email
DateOfBirth Date Public Customer’s Date of
AccountId Integer Public Account Id of this customer in system
CreatedDate Date time Public Customer’s created
CreatedBy String Public Define who created data
UpdatedDate Date time Public Customer’s updated date
UpdatedBy String Public Define who updated this Customer
IsDeleted Boolean Public Mark Customer as deleted or not
Method Return Type Visibility Description
Getter Attribute type Public Get attribute value
Setter Void Public Set value of attribute
ServiceId Integer Public Unique identifier of the service
SupplierId Integer Public Define which supplier created this service
ServiceTypeId Integer Public Type of this service
Name String Public Service name
Price Decimal Public Current service price
ServiceStatusId Integer Public Current status of this service
CreatedDate Datetime Public Service’s create date
CreatedBy String String Define who created this service
UpdatedDate Datetime Public Service’s updated date
UpdatedBy String Public Define who updated this service
IsDeleted Boolean Public Mark service as deleted or not
Method Return Type Visibility Description
Getter Attribute type Public Get attribute value
Setter Void Public Set value of attribute
ServiceTypeId Integer Public Unique identifier of service type
Name String Public The name of service type
CreatedDate Date time Public ServiceType’s created date
CreatedBy String Public Define who created this type
UpdateDate Date time Public ServiceType’s updated date
UpdatedBy String Public Define who updated this type
IsDeleted String Boolean Mark service type as deleted or not
Method Return Type Visibility Description
Getter Attribute type Public Get attribute value
Setter Void Public Set value of attribute
ServiceStatusId Integer Public Unique identifier of service status
Name String Public The name of this status
CreatedDate Date time Public Service status’s created date
CreatedBy String Public Define who created this status
UpdatedDate Date time Public Service status’s updated date
UpdatedBy String Public Define who updated this status
IsDeleted Boolean Public Mark service type as deleted or not
Method Return Type Visibility Description
Getter Attribute type Public Get attribute value
Setter Void Public Set value of attribute
OrderId Integer Public Unique identifier of order
CustomerId Integer Public Define who orders
Address String Public Customer’s address
PhoneNumber String Public Customer’s phone number
TotalPrice Decimal Public Total price of order
OrderStatusId Integer Public The current status of order
CreatedDate Date time Public Order’s created date
CreatedBy String Public Define who created this order
UpdatedDate Date time Public Order’s updated date
UpdatedBy String Public Defin who updated this order
IsDeleted Boolean Public Mark this order as deleted or not
Method Return Type Visibility Description
Getter Attribute type Public Get attribute value
Setter Void Public Set value of attribute
OrderStatusId Integer Public Unique identifier of order status
Name String Public The name of status
CreatedDate Date time Public Created date of this status
CreatedBy String Public Define who created this status
UpdatedDate Date time Public Updated date of this status
UpdatedBy String Public Defin who updated this status
IsDeleted Boolean Public Mark status as deleted or not
Method Return Type Visibility Description
Getter Attribute type Public Get attribute value
Setter Void Public Set value of attribute
OrderDetailId Integer Public Unique identifier of order detail
ServiceId Integer Public Service customer ordered
OrderId Integer Public OrderId of this order detail
Price Decimal Public Pirce of service
Description String Public Description for service
CreatedDate Date time Public Created date of this order detaik
CreatedBy String Public Define who created this status
UpdatedDate Date time Public Updated date of this order detail
UpdatedBy String Public Define who updated this order detail
IsDeleted Boolean Public Mark this order detail as deleted or not
Method Return Type Visibility Description
Getter Attribute type Public Get attribute value
Setter Void Public Set value of attribute
PromoitonId Integer Public Unique identifier of promotion
SupplierId Integer Public The supplier who created promotion
Title String Public Title of promotion
Description String Public Description of promotion
EffectiveStartDate Date Public Promotion’s effective start date
EffectiveEndDate Date Public Promotion’s effective end date
CreatedDate Date time Public Promtion’s created date
CreatedBy String Public Define who created this promotion
UpdatedDate Date time Public Updated date of this promotion
UpdatedBy String Public Define who updated this promotion
IsDeleted Boolean Public Mark status as deleted or not
Method Return Type Visibility Description
Getter Attribute type Public Get attribute value
Setter Void Public Set value of attribute
PromoitonDetailId Integer Public Unique identifier of promotion detail
PromotionPercent Integer Public Promotion percent for this detail
ServiceId Integer Public ServiceId for this detail
PromotionId String Public Promotion Id of this detail
OrginalPrice Decimal Public Orginal price of service
CreatedDate Date time Public Promtion detail ’s created date
CreatedBy String Public Define who created this promotion detail
UpdatedDate Date time Public Updated date of this promotion detail
UpdatedBy String Public Define who updated this promotion detail
IsDeleted Boolean Public Mark detail as deleted or not
Getter Attribute type Public Get attribute value
Setter Void Public Set value of attribute
FeedbackId Integer Public Unique identifier of feedback
CustomerId Integer Public Who created feedback
OrderId Integer Public Customer can do feedback for each order or supplier
FeedbackContent String Public Content of feedback
RatingStar Integer Public Number of star
CreatedDate Date time Public Feedback ’s created date
CreatedBy String Public Define who created this feedback
UpdatedDate Date time Public Updated date of this feedback
UpdatedBy String Public Define who updated this feedback
IsDeleted Boolean Public Mark feedback as deleted or not
Method Return Type Visibility Description
Getter Attribute type Public Get attribute value
Setter Void Public Set value of attribute
Summary: this diagram shown process of customer view service list
Figure 33 Sequence diagram - View service list
Summary: this diagram shown process of customer booking service
Figure 34 Sequence diagram - Booking service
Summary: this diagram shown process of customer cancel service
Figure 35 Sequence diagram - Create rental contract
Summary: this diagram shown process of customer feedback
Figure 36 Sequence diagram - Feedback
Summary: this diagram shown process of user does payment
Figure 37 Sequence diagram - Paypal payment
Summary: this diagram shown process of customer view suggested location
Figure 38 Sequence diagram - View suggested locations
Summary: this diagram shown process of guest registers new account
Figure 39 Sequence diagram - Register new account
Summary: this diagram shown process of admin approve account
Figure 40 Sequence diagram - Approve account
Summary: this diagram shown process of supplier create service
Figure 41 Sequence diagram - Create service
Summary: this diagram shown process of supplier create branch
Figure 42 Sequence diagram - Create branch
Summary: this diagram shown process of supplier create promotion
Figure 43 Sequence diagram - Create promotion
Summary: this diagram shown process of supplier manage service
Figure 44 Sequence diagram - Manage service
Summary: this diagram shown process of supplier manage branch
Figure 45 Sequence diagram - Manage branch
Summary: this diagram shown process of supplier manage promotion
Figure 46 Sequence diagram - Manage promotion
Interface
Signature Description Input Output Output
Create new account for customer
Request object r contains: username: string email : string password : string fullName: string
ResponseMess age for create success or fail
Json string The username already exists in the system public
Request object r contains: username: string password: string
ResponseMess age for login success or fail
If user is valid, return access token and basic detail information of this customer
Json string The user role is not customer role public
Fullname: string PhoneNumber: string Email: string
ResponseMess age for update success or fail
Json string CustomerId does not exist in the system
Get customer information by Id
CustomerId: integer ResponseMess age for customer information
Json string CustomerId does not exist in the system public
Create new feedback Request object r contains: customerId: Integer supplierId : integer numberOfStar: integer content: string
ResponseMess age for create success or fail
Json string CustomerId does not exist in the system public
Get all orders by customerId customerId: integer ResponseMess age for a list of orders
CustomerId does not exist in the system public
Get order detail by orderId orderId: integer ResponseMess age for detail of order
Json string OrderId does not exist in the system public
NotifyFinishPayment(int orderId, string bookingId)
Update order status to “Done” status and update firebase database to notify to supplier orderId: string, bookingId: integer ResponseMess age for update success or fail
Json string OrderId does not exist in the system
Customer cancel order Notify to supplier
Request object r contains: orderId: Integer Reason: integer
ResponseMess age for update success or fail
Json string OrderId does not exist in the system public
GetAllSupplierWithLocatio nLatLong(string latitude, string longtitude, string service)
Get all supplier near a location base on latitude , longtitude and service name latitude: string longtitude : string service : string
ResponseMess age for a list of suppliers
Get supplier detail by supplierId supplierId : integer ResponseMess age for detail of supplier
Json string SupplierId does not exist in the system
Figure 47 Interface - Manage supplier
Name Description Read only Mandator y Control
1 Menu Navigation bar Yes Yes Menu bar N/A N/A
2 Title Title of the page Yes Yes Label N/A N/A
Fill search keyword No Yes Textbox String N/A
4 Table Table of contain account information Yes Yes Table N/A N/A
Table 65 Manage supplier fields
No Function Description Validation Outcome
5 btnSearch Load table contain information of searched account N/A Reload supplier information table
6 btnEdit Load new page contain information of account to edit N/A Reload supplier information table
7 btnDelete Load notification delete account N/A Reload supplier information table
Table 66 < Admin> Manage supplier buttons/hyperlinks
Figure 48 Interface - Approve and view supplier
Name Description Read only Mandatory Control
1 txtName Account’s name Yes Yes Textview String 3 – 80
2 txtPhone Account’s phone number Yes Yes Textview Integer 8 – 15
3 txtEmail Account’s email Yes Yes Textview String 3 – 250
4 txtDateO fParti Account’s date of participation Yes Yes Textview Integer 8 – 15
5 Table Table of contain account’s branch
6 Table Table of contain account’s service
7 txtStatus Account’s status Yes Yes Textview String 3 – 80
9 txtReaso n Account’s note No No Text String 3 – 250
11 Menu Navigation bar Yes Yes Menu bar N/A N/A
12 Title Title of the page Yes Yes Label N/A N/A
Table 67 Approve and view supplier fields
No Function Description Validation Outcome
8 drpStatus Drop down contain status of the account N/A Transfer to approve supplier page
10 btnSave Approve account information is valid N/A Transfer to manage supplier page
Table 68 Approve and view supplier buttons/hyperlinks
Figure 49 Interface - Manage customer
Name Description Read only Mandator y Control
1 Menu Navigation bar Yes Yes Menu bar N/A N/A
2 Title Title of the page Yes Yes Label N/A N/A
3 txtSear chValue Fill search keyword No Yes Textbox String N/A
4 Table Table of contain account information Yes Yes Table N/A N/A
Table 69 Manage customer fields
No Function Description Validation Outcome
5 btnSearch Load table contain information of searched account N/A Reload customer information table
6 btnView Load new page contain information of account to view N/A Reload customer information table
Table 70 Manage customer buttons/hyperlinks
Figure 50 Interface - View customer
Name Description Read only Mandatory Control
1 Menu Navigation bar Yes Yes Menu bar N/A N/A
2 Title Title of the page Yes Yes Label N/A N/A
3 txtName Account’s name Yes Yes Textview String 3 – 80
4 txtAge Account’s age Yes Yes Textview String 3 – 80
5 txtPhone Account’s phone number Yes Yes Textview Integer 8 – 15
6 txtAddre ss Account’s address Yes Yes Textview String 3 – 250
7 txtUsern ame Account’s user name Yes Yes Textview String 3 – 80
8 txtDateO fParti Account’s date of participation Yes Yes Textview Integer 8 – 15
9 Table Table of contain account’s branch
Table 71 View customer fields
No Function Description Validation Outcome
10 btnClose Close view customer page N/A Transfer to manage customer page
Table 72 View customer buttons/hyperlinks
Figure 51 Interface - Manage service
Name Description Read only Mandator y Control
1 Menu Navigation bar Yes Yes Menu bar N/A N/A
2 Title Title of the page Yes Yes Label N/A N/A
4 txtSear chValue Fill search keyword No Yes Textbox String N/A
6 Table Table of contain service information Yes Yes Table N/A N/A
Table 73 Manage service fields
No Function Description Validation Outcome
3 btnAdd Load new page to create service
5 btnSearch Load table contain information of service N/A Reload service information table
7 btnEdit Load new page contain information of account to edit N/A Reload service information table
8 btnDelete Load notification delete account N/A Reload service information table
Table 74 Manage service buttons/hyperlinks
Figure 52 Interface - Create new service
Name Description Read only Mandatory Control
1 Menu Navigation bar Yes Yes Menu bar N/A N/A
2 Title Title of the page Yes Yes Label N/A N/A
3 txtName Service’s name No Yes Text String 3 – 80
5 txtPrice Service’s price No Yes Text String 3 – 80
Table 75 Create new service fields
No Function Description Validation Outcome
4 drpTypeService Drop down contain type of service N/A Transfer to create service page
6 drpStatus Drop down contain status of the service N/A Transfer to create service page
7 btnSave Create new service information is valid N/A Transfer to manage service page
8 btnClose Close create new service page N/A Transfer to manage service page
Table 76 Create new service buttons/hyperlinks
Figure 53 Interface - Manage branch
Name Description Read only Mandator y Control
1 Menu Navigation bar Yes Yes Menu bar N/A N/A
2 Title Title of the page Yes Yes Label N/A N/A
4 txtSear chValue Fill search keyword No Yes Textbox String N/A
6 Table Table of contain branch information
Table 77 Manage branch fields
No Function Description Validation Outcome
3 btnAdd Load new page to create branch N/A Reload branch information table
5 btnSearch Load table contain information of service N/A Reload branch information table
7 btnEdit Load new page contain information of account to edit N/A Reload branch information table
8 btnDelete Load notification delete account N/A Reload branch information table
Table 78 Manage branch buttons/hyperlinks
Figure 54 Interface - Create new branch
Name Description Read only Mandatory Control
1 Menu Navigation bar Yes Yes Menu bar N/A N/A
2 Title Title of the page Yes Yes Label N/A N/A
3 txtName Branch’s name No Yes Text String 3 – 80
4 txtAddrO nMap Address’s branch on map No Yes Text String 3 – 250
5 Map Map of Google No Yes Map N/A N/A
6 txtLatitu de Branch’s latitude on map Yes Yes Text String 3 – 250
7 txtLongit ude Branch’s longitude on map
9 txtCount ry Branch’s country No Yes Text String 3 – 250
10 txtAddre ss Branch’s address No Yes Text String 3 – 250
Table 79 Create new branch fields
No Function Description Validation Outcome
8 drpCity Drop down contain city of the branch N/A Transfer to create branch page
11 btnSave Create new branch information is valid N/A Transfer to manage branch page
Table 80 Create new branch buttons/hyperlinks
Figure 55 Interface - Manage promotion
Name Description Read only Mandator y Control
1 Menu Navigation bar Yes Yes Menu bar N/A N/A
2 Title Title of the page Yes Yes Label N/A N/A
4 txtSear chValue Fill search keyword No Yes Textbox String N/A
6 Table Table of contain promotion information
Table 81 Manage promotion fields
No Function Description Validation Outcome
3 btnAdd Load new page to create promotion N/A Reload promotion information table
5 btnSearch Load table contain information of promotion N/A Reload promotion information table
7 btnEdit Load new page contain information of promotion to edit
8 btnDelete Load notification delete account N/A Reload promotion information table
Table 82 Manage promotion buttons/hyperlinks
Figure 56 Interface - Create new promotion
Name Description Read only Mandatory Control
1 Menu Navigation bar Yes Yes Menu bar N/A N/A
2 Title Title of the page Yes Yes Label N/A N/A
3 txtName Promotion’s name No Yes Text String 3 – 80
4 txtStartD ay Start day of promotion No Yes Text String 3 – 80
7 txtDescri be Promotion’s describe No Yes Text String 3 – 250
Table 83 Create new promotion fields
No Function Description Validation Outcome
6 drpService Drop down contain service N/A Transfer to create promotion page
8 btnSave Create new promotion information is valid N/A Transfer to manage promotion page
11 btnClose Close create new promotion page N/A Transfer to manage promotion page
Table 84 Create new promotion buttons/hyperlinks
Figure 57 Interface - Manage request
Name Description Read only Mandatory Control
1 Menu Navigation bar Yes Yes Menu bar N/A N/A
2 Title Title of the page Yes Yes Label N/A N/A
6 Table Table of contain request information
Table 85 Manage request fields
No Function Description Validation Outcome
4 btnSearch Load table contain information of request
5 btnClear Load table contain information of request
7 btnLink Load page transaction history N/A Reload request information table
8 btnChat Load page chat with customer N/A Reload request information table
Table 86 Manage request buttons/hyperlinks
Name Description Read only Mandatory Control
1 Menu Navigation bar Yes Yes Menu bar N/A N/A
2 Title Title of the page Yes Yes Label N/A N/A
3 Title Name’s customer Yes Yes Label N/A N/A
4 Chat box Display the message Yes Yes Box N/A N/A
6 List Display customer list Yes Yes Table N/A N/A
No Function Description Validation Outcome
3 btnAdd Load new page to create promotion
5 btnSearch Load table contain information of promotion
7 btnEdit Load new page contain information of promotion to edit
8 btnDelete Load notification delete account N/A Reload promotion information table
Table 88 Chat buttons/hyperlinks
Figure 59 Interface - Manage feedback
Name Description Read only Mandator y Control
1 Menu Navigation bar Yes Yes Menu bar N/A N/A
2 Title Title of the page Yes Yes Label N/A N/A
3 Table Table of contain feedback information
Table 89 Manage feedback fields
No Function Description Validation Outcome
4 btnLink Load page transaction history N/A Reload feedback information table
Table 90 Manage feedback buttons/hyperlinks
Figure 60 Interface - Manage history
Name Description Read only Mandatory Control
1 Menu Navigation bar Yes Yes Menu bar N/A N/A
2 Title Title of the page Yes Yes Label N/A N/A
3 txtSear chValue Fill search keyword No Yes Textbox String N/A
6 Table Table of contain history information
Table 91 Manage history fields
No Function Description Validation Outcome
4 btnSearch Load table contain information of history
5 btnClear Load table contain information of history
7 btnEdit Load new page contain history to edit N/A Reload history information table
8 btnDelete Load notification delete history N/A Reload history information table
Table 92 Manage history buttons/hyperlinks
Figure 61 Interface - Register account
No Field Name Description Read only Mandatory Control
2 txtPassword Fill customer password No Yes Textbox String 8-250
3 txtRepass ReFill customer password No Yes Textbox String 8-250
4 txtFullname Fill customer full name No Yes Textbox String 8-250
5 txtEmail Fill customer email No Yes Textbox String 8-250
Table 93 Register account fields
No Function Description Validation Outcome
6 btnSave Confirm to create new customer If customer doesn’t input mandatory field, system will notify
Table 94 Register account buttons/hyperlinks
Figure 62 Interface - Search service
No Field Name Description Read only Mandatory Control
1 txtSearch Fill search keyword No Yes Textbox String N/A
4 txtLocation User current location Yes Yes Textview N/A N/A
5 Map Map of Google Yes Yes Label N/A N/A
7 List Supplier’s list Yes Yes N/A N/A N/A
Table 95 Search service page fields
No Function Description Validation Outcome
2 btnFilter Button to advance filter search N/A Show advance filter box
3 btnLocation Button to change location N/A Show your location
Table 96 Search service buttons/hyperlinks
Figure 63 Interface - Supplier detail
No Field Name Description Read only Mandatory Control
1 lblTitle Supplier title Yes Yes Label N/A N/A
2 imgSupplier Supplier’s avatar Yes Yes Image N/A N/A
9 lblDetail Service detail Yes Yes Label N/A N/A
10 Map Map of Google Yes Yes Map N/A N/A
11 lblTitle Location title Yes Yes Label N/A N/A
12 lblDetail Supplier detail Yes Yes Label N/A N/A
Table 97 Supplier detail fields
No Function Description Validation Outcome
3 btnCalendar Service booking time N/A Transfer to booking page
4 btnCall Call to supplier N/A Transfer to call
5 btnChat Chat with supplier N/A Transfer to chat page
6 btnService Service’s list N/A Transfer to supplier detail page
7 btnInfo Supplier’s information N/A Transfer to supplier detail page
8 btnFeedback Customer’s feedback N/A Transfer to supplier detail page
Table 98 Supplier detail button/hyperlinks
Figure 64 Interface - Home page
No Field Name Description Read only Mandatory Control
1 lblTitle App title Yes Yes Label N/A N/A
2 txtSearch Fill search keyword No Yes Textbox String N/A
3 Menu Menu of service type Yes Yes N/A N/A N/A
Table 99 Home page fields
Figure 65 Interface - Booking service
Name Description Read only Mandatory Control
1 lblTitle Booking title Yes Yes Label N/A N/A
2 txtName Fill customer username No Yes Textbox String 8-250
3 txtPhone Fill customer password No Yes Textbox String 8-250
4 txtAddress ReFill customer password No Yes Textbox String 8-250
7 txtNote Fill customer username No Yes Textbox String 8-250
Table 100 Booking service fields
No Function Description Validation Outcome
8 checkbox Choose service of air conditioning N/A N/A
9 Checkbox Choose service of water N/A N/A
10 checkbox Choose service of electric N/A N/A
11 btnSubmit Confirm to create booking service If customer doesn’t input mandatory field, system will notify
Table 101 Booking service button/hyperlinks
Figure 66 Interface - View history
No Field Name Description Read only Mandatory Control
1 lblTitle History title Yes Yes Label N/A N/A
4 lblDetail History detail Yes Yes Label N/A N/A
Table 102 View history fields
No Function Description Validation Outcome
2 tabProcessing Display all orders being processing of customer
If customer don’t have orders being processing System don’t show
3 tabCompleted Display all orders being completed of customer
If customer don’t have orders being completed System don’t show
Table 103 View history buttons/hyperlinks
Figure 67 Interface - Supplier detail
Name Description Read only Mandatory Control
1 lblTitle Booking title Yes Yes Label N/A N/A
2 txtName Fill customer username No Yes Textbox String 8-250
3 txtPhone Fill customer password No Yes Textbox String 8-250
4 txtAddress ReFill customer password No Yes Textbox String 8-250
7 txtNote Fill customer username No Yes Textbox String 8-250
Table 104 Supplier detail fields
No Function Description Validation Outcome
8 checkbox Choose service of air conditioning N/A N/A
9 Checkbox Choose service of water N/A N/A
10 checkbox Choose service of electric N/A N/A
11 btnSubmit Confirm to create booking service If customer doesn’t input mandatory field, system will notify
Table 105 Supplier detail button/hyperlinks
Database Design
Entity Data Dictionary: describe content of all entities Entity name Description
Account Table which contains all user account
Supplier Table which contains all supplier account
Customer Table which contains all customer account
Service Table which contains all service information
Branch Table which contains all branch information
Feedback Table which contains all feedback information
Promotion Table which contains all promotion information
PromotionDetail Table which contains promotion detail information
Order Table which contains all order information
OrderDetail Table which contains order detail information
City Table which contains city information
District Table which contains district information
Entity name Attributes Description Domain Null Account AccountId {PK} Unique identifier of account int No
Username Username of account nvarchar(20) Yes
Password Password of account nvarchar(20) Yes CreatedDate Date create account datetime Yes
CreatedBy Account creator nvarchar(30) Yes
UpdatedDate Date update account datetime Yes UpdatedBy Account updateer nvarchar(30) Yes IsDeleted Value to check account is delete or not bit No
{PK} Unique identifier of account type int No
Name Name of account type nvarchar(20) Yes
CreatedDate Date create account type datetime Yes
CreatedBy Account type creator nvarchar(30) Yes
UpdatedDate Date create account type datetime Yes
UpdatedBy Account type updateer nvarchar(30) Yes
IsDeleted Value to check account type is delete or not bit No
Branch BranchId {PK} Unique identifier of branch int No
Name Name of branch nvarchar(50) Yes
Address Address of branch nvarchar(50) Yes
Longitude Longitude of branch on map varchar(MAX) Yes
Latitude Latitude of branch on map varchar(MAX) Yes
CreatedDate Date create branch datetime Yes
CreatedBy Branch creator nvarchar(30) Yes
UpdatedDate Date create branch datetime Yes
UpdatedBy Branch updateer nvarchar(30) Yes
GoogleMapSearchK ey Key to search map of Google nvarchar(MA
IsDeleted Value to check branch is delete or not bit No
City CityId {PK} Unique identifier of city int No
Name City’s name nvarchar (50) Yes
CreatedDate Date create city datetime Yes
CreatedBy City creator nvarchar(30) Yes
UpdatedDate Date update city datetime Yes
UpdatedBy City updateer nvarchar(30) Yes
IsDeleted Value to check city is delete or not bit No
Customer CustomerId {PK} Unique identifier of customer int No
Name Customer’s name nvarchar(50) Yes
PhoneNumber Phone number’s customer nvarchar(15) Yes
Email Customer’s email nvarchar(50) Yes
CreatedDate Date create customer datetime Yes
CreatedBy Customer creator nvarchar(30) Yes UpdatedDate Date update customer datetime Yes
UpdatedBy Customer updateer nvarchar(30) Yes
DateOfBirth Customer’s birthday date Yes
IsDeleted Value to check customer is delete or not bit No
IsActived Value to check customer is active or not bit Yes
District DistrictId {PK} Unique identifier of district int No
Name District’s name nvarchar(50) Yes
CreatedDate Date create district datetime Yes
CreatedBy District creator nvarchar(30) Yes UpdatedDate Date update district datetime Yes UpdatedBy District updateer nvarchar(30) Yes IsDeleted Value to check district is delete or not bit No
Feedback FeedbackId {PK} Unique identifier of feedback int No
NumberOfStart Number of rating int Yes
FeedbackContent Feedback content nvarchar(MA
CreatedDate Date create feedback datetime Yes
CreatedBy Feedback creator nvarchar(30) Yes UpdatedDate Date update feedback datetime Yes
UpdatedBy Feedback updateer nvarchar(30) Yes IsDeleted Value to check feedback is delete or not bit No
Order OrderId {PK} Unique identifier of order int No
PhoneNumber Phone number nvarchar(15) Yes
TotalPrice Total price decimal(18, 0) Yes
CreatedDate Date create order datetime Yes
CreatedBy Order creator nvarchar(30) Yes
UpdatedDate Date update order datetime Yes
UpdatedBy Order updater nvarchar(30) Yes
IsDeleted Value to check order is delete or not bit No
IsPaid Value to check paid is pass or fail bit Yes
OrderDetail OrderDetailId {PK} Unique identifier of order detail int No
Price Order’s price decimal(18, 0) Yes
Description Order’s description nvarchar(MA
CreatedDate Date create order detail datetime Yes
CreatedBy Order detail creator nvarchar(30) Yes UpdatedDate Date update order detail datetime Yes
UpdatedBy Order detail updater nvarchar(30) Yes IsDeleted Value to check order detail is delete or not bit No
OrderStatus OrderStatusId {PK} Unique identifier of order status int No
Name Name of order status nvarchar(50) Yes
CreatedDate Date create order status datetime Yes
CreatedBy Order status creator nvarchar(30) Yes UpdatedDate Date update order status datetime Yes
UpdatedBy Order status updater nvarchar(30) Yes
IsDeleted Value to check order status is delete or not bit No
Promotion PromotionId {PK} Unique identifier of promotion int No
Title Promotion’s title nvarchar(50) Yes
Description Promotion’s description nvarchar(MA
EffectiveStartDate Effective start date date Yes EffectiveEndDate Effective end date date Yes CreatedDate Date create promotion datetime Yes
CreatedBy Promotion creator nvarchar(30) Yes UpdatedDate Date update promotion datetime Yes
UpdatedBy Promotion updater nvarchar(30) Yes IsDeleted Value to check promotion is delete or not bit No
{PK} Unique identifier promotion detail int No
PromotionPercent Promotion’s percent int Yes OriginalPrice Original price decimal(18, 0) Yes CreatedDate Date create promotion detail datetime Yes CreatedBy Promotion detail creator nvarchar(30) Yes
UpdatedDate Date update promotion detail datetime Yes UpdatedBy Promotion detail updater nvarchar(30) Yes
IsDeleted Value to check promotion detail is delete or not bit No
{PK} Unique identifier of promotion status int No
Name Name of promotion status nvarchar(30) Yes
CreatedDate Date create promotion status datetime Yes
CreatedBy Promotion status creator nvarchar(30) Yes
UpdatedDate Date update promotion status datetime Yes
UpdatedBy Promotion status updater nvarchar(30) Yes
IsDeleted Value to check promotion status is delete or not bit No
Service ServiceId {PK} Unique identifier of service int No
Name Service’s name nvarchar(50) Yes
Price Service’s price decimal(18, 0) Yes
CreatedDate Date create service datetime Yes
CreatedBy Service creator nvarchar(30) Yes
UpdatedDate Date update service datetime Yes
UpdatedBy Service updater nvarchar(30) Yes
IsDeleted Value to check service is delete or not bit No
ServiceStatu s ServiceStatusId Unique identifier of service status int No
Name Name of service status nvarchar(20) Yes
CreatedDate Date create service status datetime Yes
CreatedBy Service status creator nvarchar(30) Yes
UpdatedDate Date update service status datetime Yes
UpdatedBy Service status updater nvarchar(30) Yes
IsDeleted Value to check service status is delete or not bit No
ServiceType ServiceTypeId {PK} Unique identifier of service type int No
Name Name of service type nvarchar(50) Yes
CreatedDate Date create service type datetime Yes
CreatedBy Service type creator nvarchar(30) Yes UpdatedDate Date update service type datetime Yes
UpdatedBy Service type updater nvarchar(30) Yes
IsDeleted Value to check service type is delete or not bit No
Avatar Avatar of service type nvarchar(200
Supplier SupplierId {PK} Unique identifier of supplier int No
Name Supplier’s name nvarchar(50) Yes
CreatedDate Date create supplier datetime Yes CreatedBy Supplier creator nvarchar(30) Yes UpdatedDate Date update supplier datetime Yes
UpdatedBy Supplier updater nvarchar(30) Yes
Email Supplier’s email nvarchar(50) Yes
PhoneNumber Phone number of supplier nvarchar(11) Yes
IsDeleted Value to check supplier is delete or not bit No
Description Supplier’s description nvarchar(MA
PaymentEmail Email to use payment nvarchar(50) Yes
{PK} Unique identifier of supplier status int No
Name Name of supplier status nvarchar(50) Yes
CreatedDate Date create supplier status datetime Yes
CreatedBy Supplier status creator nvarchar(30) Yes
UpdatedDate Date update supplier status datetime Yes UpdatedBy Supplier status updater nvarchar(30) Yes
IsDeleted Value to check supplier status is delete or not bit No
Algorithms
Upon user login, our application identifies suppliers located within a designated distance from the user's location, ensuring that only those within a specific preset range are displayed in the search results.
To optimize user experience, it is essential to identify suppliers based on their proximity to the user's location, as each supplier has unique coordinates and varying distances Often, when users log into the system, the available suppliers may fall outside the designated distance zone or be close but not categorized within it Therefore, implementing a flexible algorithm is crucial for efficiently locating nearby and convenient suppliers for users.
To solve this problem, we should follow these steps:
Each time user logs in to application, nearby supplier list will be found and update through:
2 Get all available supplier coordinates in the system and sort in ascending
3 Find cross point in supplier list
4 Calculate nearest suppliers from user location and add to supplier list
5 If supplier list is not empty, the nearby supplier list will show
6 The nearby list structure will be as bellow: o Nearby list is not empty, system loads nearby list into home page o Nearby list is empty, predefined list will be display to home page
In total, the complexity of this algorithm is N
Figure 69: Find nearby vehicle flow chart
Notification is a feature of ACSA application to notify customer and supplier when important events occurs
Show notification icon on web interface
Type Trigger Receiver Notify method
1 User creates new account Admin Web
2 Supplier creates new service Admin Web
3 Supplier create new branch Admin Web
4 Supplier create new promotion Admin Web
3 Supplier sends update request Admin Web
4 Employee approve create / update request Customer Application
5 Contract is start created Supplier Web
6 Customer is finished booking Supplier Web
7 Supplier is complete create bill Customer Application
8 Contract is expired Customer Application
9 Contract is cancelled by customer Supplier Web
10 Refund request is resolved Customer Application