1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Building the resource booking system for the organization

132 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Building The Resource Booking System For The Organization
Tác giả Nguyen Phuoc Dang, Nguyen Minh Dang
Người hướng dẫn Nguyen Duc Khoan, M.Sc.IT
Trường học Ho Chi Minh City University of Technology and Education
Chuyên ngành Information Technology
Thể loại Graduation Thesis
Năm xuất bản 2023
Thành phố Ho Chi Minh City
Định dạng
Số trang 132
Dung lượng 6,93 MB

Cấu trúc

  • CHAPTER 1. INTRODUCTION (21)
    • 1.1. The Urgency of the project (21)
    • 1.2. Problem Definition (21)
    • 1.3. Proposed Solution (21)
    • 1.4. Objective (22)
    • 1.5. Technology (22)
    • 1.6. Requirements (22)
  • CHAPTER 2. APPLICATION REVIEW AND CURRENT SURVEY (23)
    • 2.1. Application Review (23)
      • 2.1.1. Website Calendly Review (23)
      • 2.1.2. Google Calendar (25)
      • 2.1.3. Facebook Event Center (26)
      • 2.1.4. Website SimplyBook (28)
    • 2.2. Overview of survey (30)
      • 2.2.1. What is the conclusion after reviewing these websites? (30)
      • 2.2.2. What is the solution? (30)
    • 2.3. Technologies (30)
      • 2.3.1. Angular (30)
      • 2.3.2. Springboot (34)
  • CHAPTER 3. REQUIREMENT SPECIFICATION (38)
    • 3.1. Description (38)
      • 3.1.1. Description about types of booking resources (38)
      • 3.1.2. Description about roles (38)
    • 3.2. Functional Requirements (39)
      • 3.2.1. User Requirements (39)
      • 3.2.2. System Requirements (Use Case) (42)
      • 3.2.3. Non-Functional Requirements (73)
  • CHAPTER 4. SYSTEM DESIGN (75)
    • 4.1. System Architecture (75)
      • 4.1.1. Front-end architecture (75)
      • 4.1.2. Back-end architecture (77)
    • 4.2. Entity Relation Diagram (ERD) (79)
    • 4.3. Class diagram (80)
    • 4.4. Database Diagram (81)
      • 4.4.1. Physical Diagram (81)
    • 4.5. Sequence Diagram (85)
      • 4.5.1. Sequence Diagram For Create Event Type 1, 2 (85)
      • 4.5.2. Sequence Diagram For Create External Slot, Group Of External Slots (87)
      • 4.5.3. Sequence Diagram For Join Public Event And Make Event 3 (91)
      • 4.5.4. Sequence Diagram For Reschedule Event (95)
    • 4.6. Component Diagram (98)
      • 4.6.1. Backend Component Diagram (98)
      • 4.6.2. Frontend Component Diagram (99)
    • 4.7. User Interfaces Design (99)
      • 4.7.1. Screens Description (99)
      • 4.7.2. Screens Design (103)
  • CHAPTER 5. SYSTEM IMPLEMENTATION AND TESTING (117)
    • 5.1. System Implementation (117)
      • 5.1.1. Software development environment (117)
      • 5.1.2. Source Code Management (117)
      • 5.1.3. Deploy (117)
    • 5.2. Testing (122)
      • 5.2.1. Test Plan (122)
      • 5.2.2. Target (123)
      • 5.2.3. Test Case (123)
  • CHAPTER 6. CONCLUSION (130)
    • 6.1. Result achieved (130)
    • 6.2. Advantages (130)
    • 6.3. Disadvantages (130)
    • 6.4. Direction of development (130)

Nội dung

INTRODUCTION

The Urgency of the project

In today's digital age, utilizing software for work and schedule management has become essential for everyone For employees frequently booking meetings and utilizing organizational resources, tracking work hours and coordinating meetings is crucial As technology advances, the methods for managing employee bookings and resources are becoming more diverse, highlighting the growing need for a centralized website that streamlines schedule management and resource booking.

Realizing that this need is more important than ever, the team decided to choose the topic "Building A Organization’s Resource Scheduling System" for organizations The main purpose:

Building a website which supports the need of booking the resources of organization and scheduling meeting events.

Problem Definition

From the current situation, we can define some major problems that we need to solve:

 The customer needs to be able to book any resource of the organization and use for personal or team event

 The customer needs to be able to book any resource of the organization and use for organization’s event

 The customer needs to be able to book any resource to support for having meetings with public user (user outside of the organization).

Proposed Solution

We need to have a system that can serve the user to interact with the calendar, book events with other partners using the resources of the organization Also, when a

2 business user have an event or meeting with user from outside the organization, booking resources needs to be provided

To book an event, partners only need the details of the user's sharing slot Our system facilitates seamless interaction with the user's sharing slot, enabling event bookings without direct contact between parties.

Objective

Building the system that connects the end user with user’s partner to book meetings with each other using the resources of the organization

Three main objectives to achieve the purpose:

- A user can book the resources of the organization to support for hosting personal meeting, team meeting, organization events

- A user can book the resources of the organization and send their invitation to other people in order to let them book the meeting events.

Technology

Requirements

- The website provides for user options to book the resources of the organization for personal event, team event, organization event

- The website provides for user options to forward sharing slots to other people and people can book the events

APPLICATION REVIEW AND CURRENT SURVEY

Application Review

Our team will assess the website using a comprehensive set of criteria and insights gained from previous evaluations, providing a clear overview of the current survey process and its relevance to the topic.

Link Website Calendly: https://calendly.com/

We chose Calendly for our surveys due to its extensive history in creating and scheduling job appointments, its specialization in this field, and its ability to attract a large user base.

Calendly streamlines the scheduling process by integrating with both personal and business calendars, allowing users to efficiently coordinate meetings with external contacts By connecting with invitees, users can easily determine the most suitable time to meet and finalize their appointments seamlessly.

To serve the project’s topic, we have summarized some important lessons that we learnt while using this website:

Survey Criteria Lessons learned for the topic

User Interface - Eye – catching layout, simple but suitable for users User Service - Link multiple third-party service platforms

User Experience - Completely convenient experience, very scientific and methodical content

Support for the project’s topic

- Support Using third-party platform for meetings

Table 2-1 Website Calendly review table

Home page interface after logging into Calendly's system

Link to Google Calendar: https://calendar.google.com/calendar/u/0/r

Google Calendar was chosen for the survey due to its reputation as a leading technology platform, offering a scientifically organized system for effective calendar management.

To serve the project’s topic, we have summarized some important lessons that we learnt while using Google Calendar:

Survey Criteria Lessons learned for the topic

User Interface - Eye – catching layout, simple but suitable for users

User Service - Link multiple third-party service platforms

User Experience - Completely convenient experience, very scientific and methodical content

Support for the project’s topic

- Manage both Events and Working schedule

- Working Schedule Different View Options

Table 2-2 Google Calendar review table

Google Calendar's work schedule creation interface

Google Calendar’s History view and calendar and meeting information

The reason for choosing Facebook's event system for the survey: is a very good event storage system of one of the most developed social networking platforms today

To serve the project’s topic, we have summarized some important lessons that we learnt while using Google Calendar:

Survey Criteria Lessons learned for the topic

User Interface - Eye – catching layout, simple but suitable for users

User Service - Link multiple third-party service platforms

User Experience - Completely convenient experience, very scientific and methodical content

Support for the project’s topic

Table 2-3 Facebook Events Center review table

SimplyBook is an excellent choice for online appointment booking and reservation services, showcasing a user-friendly interface and reliable customer support For efficient interview scheduling and administrative services, SimplyBook.me stands out as a top solution, providing seamless experiences for both service providers and clients Explore the benefits of SimplyBook for your appointment management needs today.

To serve the project’s topic, we have summarized some important lessons that we learnt while using this website:

Survey Criteria Lessons learned for the topic

User Interface - Eye – catching layout, simple but suitable for users

User Service - Link multiple third-party service platforms

User Experience - Completely convenient experience, very scientific and methodical content

Support for the project’s topic

- Support Custom Booking Page for Reservations

- Support Waiting List and Email contacts

Table 2-4 Website SimplyBook review table

Overview of survey

Following a comprehensive status survey, the team gained valuable insights to enhance the design and implementation of an interface that effectively supports users in managing their work schedules and appointments.

2.2.1 What is the conclusion after reviewing these websites?

In conclusion, the website content highlights the necessity of the project's requirements, showcasing its extensive experience in scheduling and event management By integrating key features from each website, we can create a highly effective resource booking system that enhances user experience and meets diverse needs.

To enhance efficiency in booking events, organizations require a streamlined system that enables quick reservations for users and their partners This system should facilitate simultaneous bookings for multiple partners while addressing the user's need to avoid scheduling conflicts within an organization that has various users and resources.

Technologies

- The Angular is an open-source and helps us build dynamic & single-page applications (SPAs)

- Angular is a development Platform and framework for building single-page client applications using HTML and TypeScript

- As a framework, Angular has clear advantages while also providing a standard structure for developers to work with It enables users to create large applications in a maintainable manner

- Custom Components: Angular allows users to build their own components and can encapsulate functionality and rendering logic into reusable parts It also works well with web components

- Data Binding: Angular allows users to easily move data from JavaScript code to views and respond to user events without having to write any code manually

- Dependency Injection: Angular allows users to write modular services and put them wherever they need to This improves the testability and reusability of the same services

- Testing: Easily Unit test every part of your application

Angular ensures robust cross-platform and cross-browser compatibility, allowing applications to function seamlessly across various browsers like Chrome and Firefox, as well as operating systems including Windows, macOS, and Linux.

Details of technology used in Front-end

- Angular Router is a routing concept that helps us manage navigation between components in a system

Authentication Guard is essential for restricting access to specific pages in a system for users who are not logged in In developing a Single Page Application (SPA) with Angular, we can implement route protection mechanisms through guards to effectively manage user access.

There are four different types of guards that we can use to protect our routes:

- CanActivate: Determines if a route can be activated

- CanActivateChild: Determines if child routes can be activated

- CanDeactivate: Determines if a route can be deactivated

- CanLoad: Determines if a module can be lazy-loaded

Custom route guards enable us to manage access based on conditions like user authentication status and roles By properly implementing and configuring these guards, we can enforce access restrictions and enhance the security of our application's routes.

An Interceptor plays a vital role in managing data prior to dispatching requests to the backend and following the receipt of responses A key function of an Interceptor is to append a token to API requests that necessitate user authentication.

In Angular, an Interceptor is a service that implements the HttpInterceptor interface, allowing developers to intercept and modify outgoing HTTP requests and incoming responses, as well as perform additional actions on them.

To effectively manage token inclusion in API requests, we can implement an interceptor that fetches the user's token from storage, such as local storage or a token service, and appends it to the request headers.

Angular enables two-way data binding, allowing seamless synchronization between HTML inputs and TypeScript variables When an HTML input changes, the corresponding variable in TypeScript is instantly updated, and any modifications in TypeScript are reflected in the HTML interface in real-time.

Components serve as the essential building blocks of our application, integrating HTML templates with TypeScript code Each component operates independently, allowing for easy installation or removal within the system Essentially, a component acts as a visual control, featuring an HTML interface paired with code logic to manage events Furthermore, components can range in scale from a single control to an entire screen, encompassing multiple controls or even a collection of screens.

This means that a component can contain and invoke many other components connected to it

In Angular components, managing events enables us to effectively capture and respond to user interactions and modifications in the component's HTML By utilizing event binding syntax, we can associate event handlers with specific events like (click), (change), and other pertinent events.

A module is the broadest concept in Angular A module can contain components, directives, pipes, and more

Modules can be compiled using two methods: Just-in-Time (JiT) and Ahead-of-Time (AoT) JiT compilation compiles and executes code in the user's browser at runtime, while AoT compilation transforms code into executable format beforehand, allowing for direct display in the browser without additional processing.

An Angular module can import and utilize other modules, enabling collaboration among them By effectively importing and exporting modules, you can organize and manage your application's functionality in a modular and reusable manner.

Modules play a crucial role in structuring and organizing an Angular application They help to encapsulate related functionality, promote reusability, and provide a clear separation of concerns

In Angular and TypeScript, a service is a class designed to encapsulate reusable functionality, enabling data sharing, business logic execution, and communication with external resources like APIs throughout the application.

- Springboot is an open source framework for the Java platform

This platform is ideal for Java developers looking to create standalone applications, allowing them to begin with a basic configuration Developers can progressively add necessary configurations throughout the development process without the need for an extensive initial setup.

- Springboot provides flexible configuration of Java Beans, XML and Database Transactons

- Springboot provides powerful batch processing and manages Restful API endpoints efficiently

- Springboot helps user easily manage dependencies between objects

- Springboot provides annotation-based application management

Details of technology used in Back-end

Spring Security is a vital feature of the Spring Framework, providing essential user authentication and authorization to safeguard resources Our team has tailored specific components of Spring Security to align with our unique authentication and authorization needs.

Swagger Icon Swagger 2 is an open-source software used to develop the design and create documents for Restful APIs

Our team uses Swagger to help the frontend developer easily know which APIs are available, what are the input and output format

JWT, or JSON Web Token, is an open standard (RFC 7519) that enables secure information transmission between system components using a JSON object It ensures that the information can be authenticated and trusted through its signature, which is encoded either with the HMAC algorithm or a public/private key pair using the RSA algorithm.

REQUIREMENT SPECIFICATION

Description

3.1.1 Description about types of booking resources

The resource booking system for the organization has three main booking resources’ type:

First, the resource is defined as any resource belong to the organization, including people, room, device

Authorized users within an organization can reserve resources for small-scale meetings or team events, facilitating effective collaboration among a limited number of participants.

Organizations can efficiently book resources for larger events by empowering authorized users to make reservations This allows for seamless participation from all members within the organization, ensuring that everyone has the opportunity to engage in the event.

- Booking resource for a meeting with public partner: User in organization with a permitted authority book resource to support for a meeting event with a public partner

The resource booking system for the organization has the main structure of roles below:

- The Primary User (non-business): is the person who doesn’t pay to use the system, they can use a trial version and has the limit of permissions

The Manager of the Organization is responsible for overseeing system usage, managing user accounts, assigning calendars, and granting specific roles or permissions to users for resource access.

The primary user within the organization is the individual whose account is imported into the system by the manager This user operates based on the specific role assigned by the manager, enabling them to effectively perform their designated tasks.

19 book resource for meeting events, or sharing time slots to people outside of the organization

The external user receives an invitation email from an authorized user within the organization, allowing them to book a time slot for an event This process ensures that only users with permission can share available slots outside the organization, facilitating seamless event scheduling.

Functional Requirements

An unauthorized user will have the permission to create a new account and choose between trial account (free version) or business account (pay to use)

 Unauthorized user can register a new account

 Unauthorized user can choose trial account to use with a limit of permissions Then, the unauthorized user’s request will need the approval of the administrator of the website

 Unauthorized user can pay a subscription with Paypal to use business account with full of permissions

The organization’s manager is tasked with importing user accounts and creating personalized schedules for each user With full permissions within the organization, the manager can assign various booking resource permissions, such as event hoster and public event hoster, as well as designate resource managers to specific users.

 Manager can import a list of accounts for users using excel and template file

 Manager can create different working schedules in organization

 Manager can create new resource

 Manager can assign different working schedules to any specific user and resources

 Manager can assign different permissions to any specific user Those permissions include: an event hoster, public event hoster, or device manager

Primary users within the organization can access and view all events they participate in, check their main calendar that includes events and schedules, and join any organizational events.

 Primary user can log in to the app

 Primary user can log out of the app

 Primary user can update user profile

 Primary user can view the main active calendar (including all events and working schedule)

 Primary user can view detail of any event which they participated in

 Primary user can join in any organization event

 Primary user can view a list notification based on the notification’s status

 Primary user can synchronized system’s calendar with Google Calendar

An event host can reserve various resources within the organization to facilitate personal, team, or organizational events Additionally, the host has the authority to reschedule the event as needed.

 An event hoster can view different slots to book a single or multiple resources These slots are calculated based on the time working of user and resource, without conflicting event

 An event hoster can book any resource of the organization The request of booking will be forwarded to the manager of that resource

 An event hoster can make a organization event for any organization user to join in

 An event hoster can reschedule the event which they already published

 An event hoster can view the detail of the organization event which they organized

 An event hoster can cancel an event

A public event host has the authority to share available slots with users outside their organization Additionally, when hosting an organizational event, they can invite the public to participate.

Public event hosts can create multiple groups of external slots, each representing the specific purpose of the event they wish to organize These groups of slots will be shared with partners, allowing public users to participate effectively.

 Public event hoster can share a group of external slots to specific partners through email account

 Public event hoster can also share a specific event in case that event is organized as organization event, or multiple events of organization in a date range

 Public event hoster can offer a time for public partner in case they need to reschedule the time in booking slot which the public partner has already participated in

A resource (device type) manager will have permissions to approve or reject the resource’s borrow request for any event

 A resource (device type) manager can approve/ reject resource’s borrow request for any event

A public partner can engage in various ways during an organization’s event For private events, the public user selects from available slots shared with them In contrast, for public events organized by the organization, participation may follow different protocols.

22 event, the public user can join in as long as they got shared, also has right to join multiple public organization events shared based on date range)

 A public partner can view all the external slots in the group of slots shared by the invitor (user in the organization) for booking

 A public partner can join in one of the external slots shared to them

 A public partner can view a single public organization event or multiple public organization events (based on date range) which they are shared

 A public partner can join in a single public organization event or multiple public organization events

A public partner can provide an alternative time for the host of a public event if they need to reschedule a previously booked time slot in which the public partner is involved.

An administrator is responsible for approving or rejecting accounts of the primary user whose account of free version

 Admin can view list of non-registered (requested) accounts

 Admin can approve account’s request

 Admin can reject account’s request

 Admin can view list of approved (legal) accounts

An unauthorized user: is the person will have the permission to create a new account and choose between trial account (free version) or business account (pay to use)

A manager is responsible for managing user accounts within an organization, including creating and assigning schedules With full permissions, the manager can also designate specific booking rights, such as event hoster and resource manager, to individual users.

A primary user has the ability to access and view all their participated events, manage their main calendar that includes both events and schedules, and join any events organized by their organization.

An event host is responsible for booking organizational resources to facilitate various types of events, including personal, team, or organizational gatherings Additionally, the event host has the authority to reschedule events as needed for any reason.

A public event host is responsible for sharing event slots with users outside of their organization Additionally, when organizing an event, the public event host has the authority to invite public users to participate.

Resource (device) manager: is the person who will have permissions to approve or reject the resource’s borrow request for any event

User as a public partner: is the person who participates in event of organization user by booking slots The events’ slots are shared through email account

An administrator: is the person who is responsible for approving or rejecting accounts of the primary user whose account of free version

System Functions Main Use Cases Use Case #

An unauthorized user will have the permission to create a new account and choose between trial account (free version) or business account (pay to use)

Register as trial & free account UC 1.1 Register as business account, use

The organization's manager is tasked with importing user accounts and creating various schedules for users With full permissions within the organization, the manager also has the authority to assign different roles and responsibilities to users.

24 permission of booking resources (event hoster, public event hoster) or resource manager to a specific user in organization

Create different working schedules UC 1.4

Assign working schedules to user and resources UC 1.6

Assign permissions to user UC 1.7 Primary User

Every primary user within the organization can access and view all the events they participate in, check their main calendar that includes scheduled events, and join any organizational activities.

Login to the app UC 1.8

Logout of the app UC 1.9

View main active calendar UC 1.11 View detail of participating event UC 1.12 View detail of organization event UC 1.13

Primary user can view a list of notifications based on the notification’s status

An event host can reserve various organizational resources for personal, team, or corporate events Additionally, the event host has the authority to reschedule the event as needed.

View available resources’ slots for booking UC 1.17

Book organization’s resource UC 1.18 Make organization’s event UC 1.19

View detail of organization’s event UC 1.22 Public Event Hoster

A public event host has the authority to share a list of available slots with users outside of their organization Additionally, when hosting an event for the organization, they are also permitted to invite public users to participate in that event.

Create group of external slots UC 1.23 Share group of external slots to public partner UC 1.24

Share single/multiple organization events to public partner UC 1.25

Reschedule public sharing slot UC 1.26 Resource Manager

A resource (device type) manager will have permissions to approve or reject the resource’s borrow request for any event

Approve/ reject resource’s borrow request UC 1.27

A public partner can have different types of participating in the organization user’s event

SYSTEM DESIGN

System Architecture

The Angular framework architecture is fundamentally centered around Angular Components, which serve as the essential building blocks of every Angular application Each application consists of one or more Angular Components, which are essentially plain JavaScript or TypeScript classes paired with HTML templates and associated names.

The HTML template in Angular can retrieve data from its associated JavaScript or TypeScript class It can also incorporate other components by utilizing their selector names Additionally, an Angular component may have optional CSS styles, which the HTML template can access to enhance its presentation.

Here are some important concepts following the Angular Architecture:

Components: Each component defines a class containing the login in TypeScript format and view of the page in HTML template

Modules: A component or service within an Angular Module context is grouped together into a single component or service

Templates are an advanced version of HTML that encompass all standard HTML features while offering enhanced capabilities They allow for the dynamic generation of HTML DOM elements by integrating component data into the HTML structure.

Data Binding: Used to bind the data from the component to the template

Event Binding: Event binding is used to capture events on the user’s end on the app and respond to it in the target environment by updating the application data

Property Binding: Property binding is used to pass data from component class and facilitates interpolation of values that are computed from the application back into the HTML

Metadata: Angular uses metadata to inform the framework on how to handle a class

It is used to stipulate how a class should be used

Services offer specialized functionalities, excelling in their specific tasks By utilizing service composition, developers can minimize redundancy; rather than embedding utility functions within components, extracting them into services allows for broader application across multiple components.

Backend is a place to handle all request from the client then send a response back to the client, we use Spring boot to

Figure 4-3 Back-end project organization

Annotations: Is the place to custom simple validate API's input data

Configs: Is a place where the entire system configuration is stored

Constants: Is a place to store constant values in the system

Controllers: Is a place to receive the user's API request, process and respond to the user

Dtos: Is a place to store the system's DTO DTO (Data Transfer Object) defines part or all of data defined by the entity used to

Entities: is a place to mapping data with database, it also generates database when using code first

Enums: Is a place to store the system's enum An enum is a special class that represents a group of constants

Exceptions: Is a place to tweak the exception class and exception handler

Hubs: Is a place to handle complex business involving many different entities

Jobs: Is a place to store the system's job The job represents a 'job' to be performed

It will be executed automatically by trigger

Listeners: Is a place to tweak: Job listener, Trigger listener

Repositories: Is a place to query to the database A job needs to be executed It will be executed automatically by trigger

Securities: Is a place for security-related configuration: authentication and authorization

Services: Is a place to handle simple transactions such as: add, delete, edit, view details, of a single entity

Utils: Is a place to store common functions

Validators: Is a place to custom validate the API input data according to the information in the database

Entity Relation Diagram (ERD)

Figure 4-4 Figure Entity Relation Diagram with Crowfoot Style

Class diagram

Figure 4-5 Figure Class Diagram For All Entity In The System

Database Diagram

The organization table stores all relevant information about the organization, while the account_info table holds essential details pertaining to users Additionally, the account_auth table contains data related to user authentication, and the auth_device table tracks information regarding the devices used for authentication.

This is a table containing information related to the token used for validating the authenticity of the token

The article outlines key tables related to organizational data management: the "event" table contains comprehensive information about events and user external slots; the "device" table includes all resource information within the organization; the "schedule" table holds detailed scheduling information; the "time_working" table documents all working hours associated with the schedules; and the "public_share" table facilitates data sharing.

This is table containing all the information regarding the public sharing slots of the user notify

The user notifications table holds comprehensive information about notifications, while the email_queue table contains all emails associated with events scheduled for sending Additionally, the mapping_account_for_organization table organizes account information for each organization.

The article discusses the purpose of specific tables in an organization’s database The "users" table is designed to store user information and their associated permissions, while the "mapping_account_for_event" table contains details of users involved in specific events Additionally, the "mapping_device_for_event" table is utilized to track devices linked to these events.

This is a table containing the resources in an event and the status of each resource request email_host

This is table containing all the email settings used to send emails for the system

64 system_setting This is table containing the settings that the system uses email_template

This article presents a table of email templates utilized by the system for effective communication Additionally, it includes a comprehensive table detailing all roles within the system, along with their respective authorities.

The system includes a comprehensive table that details all authorities, each signifying the right to execute specific functions Additionally, the "mapping_role_for_account" table outlines user roles, while the "mapping_role_for_authority" table defines the authorities associated with each role.

Sequence Diagram

4.5.1 Sequence Diagram For Create Event Type 1, 2

Figure 4-9 Sequence Diagram For Get All Available Slot Of Partner(s), Resource(s)

Figure 4-10 Sequence Diagram Create Event Type 1, 2 Section 1: Create Basic Event

Figure 4-11 Sequence Diagram Create Event Type 1, 2 Section 2: Add host, partner(s), resource(s) for event

Figure 4-12 Sequence Diagram Create Event Type 1, 2 Section 3: Create email queue, event in google calendar and generate meeting link (if need)

4.5.2 Sequence Diagram For Create External Slot, Group Of

External Slots For Sharing And Get Group Of External Slot,

Figure 4-13 Sequence Diagram Create External Slot Section 1: Create basic external slot info

Figure 4-14 Sequence Diagram Create External Slot Section 2: Add host to external and add resource for external slot (if need)

Figure 4-15 Sequence Diagram Create Group Of External Slot

Figure 4-16 Sequence Diagram Get Group Of External Slot For Book Event 3

Figure 4-17 Sequence Diagram Get Group Of Public Event For Join Public Event

4.5.3 Sequence Diagram For Join Public Event And Make Event 3

Figure 4-18 Sequence Diagram For Join Event Section 1: Get Event Info And Add

Figure 4-19 Sequence Diagram For Join Event Section 2: Add Parter(s) To Event In

Google Calendar And Send Notify, Socket Message To Event Hoster

Figure 4-20 Sequence Diagram For Make Event 3 – Section 1: Validate Input

Figure 4-21 Sequence Diagram For Make Event 3 – Section 2: Create event and add host, partner to event

4.5.4 Sequence Diagram For Reschedule Event

Figure 4-22 Sequence Diagram Reschedule Event 1, 2 Section 1: Validate And Update

Event Time Of System Event

Figure 4-23 Sequence Diagram Reschedule Event 1, 2 Section 2: Send Borrow Request

Figure 4-24 Sequence Diagram Reschedule Event 1, 2 Section 3: Update Event In

Google Calendar And Create Email Queue

Figure 4-25 Sequence Diagram Reschedule Event 3 Section 1: Validate And Update

Event Time Of System Event

Figure 4-26 Sequence Diagram Reschedule Event 3 Section 2: Send Borrow Request To

Figure 4-27 Sequence Diagram Reschedule Event 3 Section 3: Update Event In Google

Calendar And Create Email Queue

Component Diagram

User Interfaces Design

This page performs the pricing option for the unauthorized user before registering account

2 Sign Up Google Screen This page requests the unauthorized user to provide a google account for signing up

This page collects the unauthorized user’s information to sign up

This page performs allows the unauthorized user to pay with Paypal for business account

Table 4-1 List of screens for unauthorized users

This page performs the function of approve/denying basic user account (non- business) of administrator

Table 4-2 List of screens for administrator

This page performs the function of importing list of organization user’s account, assigning different authority for user, assiging different time working schedule for user

This page performs an overview information of the organization

This page provides for manager the authority of adding a new resource, assigning chedule for a new resource

Table 4-3 List of screens for manager

Screens for primary organization user

1 Login Screen This page authenticates user and helps user log in the system

This page displays the main calendar of user including all the events

3 Events List Section This section displays all the participating event of the user

4 Event’s Detail Section This section displays all the information of the event that the user selects to view

5 User Profile Screen This section displays the user’s information

This page displays all the organization events for the user

Table 4-4 List of screens for primary organization user

This page is the main the page of any event hoster, it contains all the information that is necessary for booking resources

Table 4-5 List of screens for event hoster

Screens for public event hoster

This page performs the function of creating single/ multiple sharing slots

This page display all the sharing slots and its configuration User can view, update

3 Sharing slot detail Section This section displays all the sharing slot’s information User can view, reschedule

Table 4-6 List of screens for public event hoster

This page displays all the device borrow request and gives the user an option to approve/ reject request

Table 4-7 List of screens for resource approver

This page displays all the sharing slots for the public partner and allow partner to book slot

2 Sharing slot detail Section This section displays all the sharing slot’s information Partner can view, reschedule

Table 4-8 List of screens for public partner

No Name Type Description Action result

1 Logo website and title website

Display logo and name of website

2 Pricing page’s content text Text Display pricing page’s advertisement content

3 Account’s type card Card Display a card for each type of account’s type

4 Account’s type label Text Display label for each type of account’s type

5 Account’s type price label Text Display price for each type of account’s type

6 Select Button Button Select button for each type of account’s type

Navigate to provide information screen

7 Account’s type benefits Text Display benefit for each type of account’s type

Table 4-9 Table 4 9 Pricing Screen Description

Figure 4-31 Sign In Google Screen

No Name Type Description Action result

1 Logo website and title website

Display logo and name of website

2 Sign up title Text Display sign up title

3 Sign up policy and agreement Text Display sign up policy and agreement

Account button Button Sign up Google

Navigate to Provide Information Screen

5 Switch to login Text Switch to login

Cancel registering and back to login screen

Table 4-10 Sign In Google Screen Description

No Name Type Description Action result

Display ‘Provide Information (For Signup)’s title

2 Description text Text Display provide information description

3 User name input Input Input user name for account

4 Full name input Input Input full name for account

5 Address input Input Input address for account

7 Password input Input Input password for account

8 Re-enter password input Input Re-input password for account

9 Confirm button Button Confirmation button

Navigate to Login Screen (free account), Payment Screen (business)

Table 4-11 Provide Information Screen Description

No Name Type Description Action result

1 Signin Title Text Display the title of signin screen

2 Username Input Input Input user name for sign in

3 Password Input Input Input password for sign in

4 Sign In Button Button Confirm signing in button

5 Switch to Register Text Switch to Register Cancel Sign In and switch to Register

No Name Type Description Action result

1 Logo website and title website

Display logo and name of website

Path to Room and Devices Screen

Navigate to Room and Devices Screen

Path to Main Calendar Screen

Navigate to Main Calendar Screen

Path to Booking Dashboard Screen

Navigate to Booking Dashboard Screen

Path to Organization Events Screen

Navigate to Organization Events Screen

Path to Public Meeting Slots Screen

Navigate to Public Meeting Slots Screen

Display basic information of user in the bottom corner

10 User Image Image Display the image of the user

11 User full name Text Display the user’s full name

12 User account type Text Display user’s account type

13 User email Text Display user’s email

14 User address Text Display user’s address

15 User activate date Text Display user’s activate date

16 User expire date Text Display user’s expire date

No Name Type Description Action result

1 Organization’s Name Text Display organization’s name

Display the total number of employees in organization

3 Organization’s Code Text Display the organization’s code

Display the organization’s business type

Display all the schedules of the organization

Display all of organization’s schedules

Table 4-13 Organization Dashboard Screen Description

No Name Type Description Action result

1 Add Employee Button Button Add Employee Button

Toggle Add Employee Side Navigation

Toggle Assign Calendar Side Navigation

Toggle Assign Authority Side Navigation

Display All Users’ Full Name

Display All Users’ activate day

Display whether a user is the manager or not

Display whether a user is an event hoster or not

Display whether a user is a public event hoster or not

Display pagination for the employee table

No Name Type Description Action result

Dropdown Dropdown Display different types of resource to filter

Display all the resources based on the resource’s type

2 Add Resource Button Button Add Resource Button

Toggle Add Resource side navigation

Display some basic information about the resource in a card

Click => toggle Resource information side navigation

Switch to Devices Request Approval Table

Navigate to Devices Request Approval Table

Figure 4-39 Devices Request Approval Screen

No Name Type Description Action result

Text Switch back to Manage

Navigate to Manage Resource Screen

2 Device borrow request table Table

Display all the request sent from the user’s organization will full information about the event and the resource is pending

Display all the states of the request

Display button approve and button reject for each request

The request will change its value in status column

Table 4-16 Devices Request Approval Screen

Figure 4-40 Main Active Calendar Screen

No Name Type Description Action result

Today, Next Button Button Previous,

Change the calendar to next (day/week/month view) or previous, today

2 Current selected day/ week/ month Text

Display the current selected day / week/ month

3 Button day / week/ month Button Button day / week/ month

Change the mode of the calendar to day / week/ month

4 Description of different schedules Text Display different schedules’ icon

Display the information of the current selected day

Toggle list events group by day side navigation

Display all the schedules and events of one user with three different modes: day/ week/ month

Table 4-17 Main Active Calendar Screen

No Name Type Description Action result

1 Resource’s type select Select Allows user to select the resource’s types

Display the value of selected resources’ types

Allow user to select single or multiple resources

Display the value of the selected resources

3 Radio group options for booking events

Allow user to select the type of event that user want to book the resources for

4 Group of tabs for different event’s type

Group of tabs for different event’s type

Switching between the type of events

5 Event’s detail card Card Displays basic information of an event

If the card is clicked, it will toggle a popup with full information of the event

Display the slots based on the day selected

7 Date selected Text Display the currently selected day

Event information such as event name input, event duration dropdown, event description input, event type dropdown, event location input

Input event name, select event duration dropdown, input event description, select event type, input event location

9 Group of cards for available slots

Toggle a confirm menu when a card is clicked

Table 4-18 Booking Dashboard Screen Description

SYSTEM IMPLEMENTATION AND TESTING

System Implementation

- Develop in Eclipse IDE, Spring tool suite 4

- Develop in Visual Code IDE and Web Browser

GitHub management tool is SourceTree and GitHub desktop

Link Backend (branch: feature/KLTN): https://github.com/NMD572/choice-your-calendar.git

Link Frontend (branch: main): https://github.com/anakin9472/choice-your-calendar.git

Deploy Web Client App With Angular

We had deployed our Web Application on AWS server as production

Firstly, we use some commands to build the Docker image for Angular app

There will be two versions of Docker images: one for the specific IP of AWS server and the other one for the host domain

Change baseUrl of api path in file src/app/_utils/utiils.ts to the IP or Domain of the Backend (AWS server)

Figure 5-1 Setting Api Base Url

Next, we will build this source code to an image with name timechoice2: docker build -t timechoice2

Use the ‘docker images’ command to check if the image is already built successfully

Figure 5-2 Build Front-end Image Successfully

Next, we will run this docker image in a docker container name timechoice: docker run -d -it -p 4200:80 name timechoice timechoice2:latest

Then we will use command ‘docker login’ to login with Docker ID, this will help to push image to Dockerhub repository

After, we use this command to commit our current source: docker commit timechoice thach9472/timechoice:v2

Finally, use this command to confirm pushing to Dockerhub repository: docker push thach9472/timechoice:v2

Check the Dockerhub repository as if the image is being pushed successfully:

Figure 5-3 Front End Docker Hub Repository

Deploy on AWS EC2: First, we pull the image from docker hub:

Figure 5-4 Pull Front End Image

Then we run this image with port 4200 and container name is timechoice.

Figure 5-5 Run Front End Image

Open port on AWS EC2 instance inbound/outbound rule for allow user to access web app

Figure 5-6 Open Port For Front End

Results of deploying web client app on AWS:

Figure 5-7 Results of deploying web client app on AWS

Deploy Web Server with Springboot

Firstly, pull backend repository from GitHub

To connect to PostgreSQL, add the connection details in the application-test.yml file If PostgreSQL is not installed on your system, you can easily set up a free instance by visiting [ElephantSQL](https://www.elephantsql.com/) and choosing the 'tiny turtle' plan.

Figure 5-8 Setting PostgreSql Connection For Backend

Build source to jar package with command: mvn clean install -e -Dmaven.javadoc.skip=true

Design a Dockerfile with the following content and name the file Dockerfile:

ARG JAR_FILE=target/*.jar

COPY ${JAR_FILE} app.jar

ENTRYPOINT exec java -jar app.jar

Build Docker Image First we need to point cmd to the correct directory containing the Dockerfile file then run the command line: docker build -t tlcnbackendimage

Build into a container and push to docker hub Run the following commands: docker run -it -d -p 8000:8000 name backendapi tlcnbackendimage docker login docker commit backendapi 19110188:tlcnbackendimage:v1 docker push 19110188:tlcnbackendimage:v1

Deploy on AWS EC2: First, we pull the image from docker hub:

Then we run this image with port 8000 and container name is backendapi.

To handle web client requests and send emails from an AWS EC2 instance, it's essential to configure the inbound and outbound rules to open the necessary ports Specifically, if PostgreSQL is installed on the server, you must ensure that port 5432 is open to facilitate database connections.

Figure 5-11 Open Port For Backend

Results of deploying backend api on AWS:

Figure 5-12 Results of deploying backend api on AWS

If you have a domain, you will need to map it to the IP address of your server

Figure 5-13 Mapping the domain to the IP addresses of the server

Testing

 Schedule management: create, activate, edit, delete schedules, share calendars with partners, track free time schedules between you and your partner

 Event management: create and track your own events

Outside the scope of testing

 In addition to the functions listed above

 Test the performance of the system

 Test the load capacity of the system

- Find bugs created by devs when coding

- Gain confidence and provide information on quality levels

- Ensure that the end result meets business and user requirements

- To gain the trust of customers by providing them with a quality product

TC_01: Booking resource for personal event successfully

Description Expected Result Actual Result Pass/ Fail

Book resources for a private/ team meeting event with a successful result

- The system pops up a success message

- Upcoming Events tab updates with a new event

- User logs in as an event hoster

- User goes to ‘Booking Dashboard’ screen

- User chooses resource’s type and resouce’s option

- User selects the booking resource’s type as Booking for personal or team event

- User clicks on ‘Schedule’ button

- User selects day, fills in necessary information for the event

- User selects one of the available slots between the resources

- User clicks on ‘Confirm’ button in confirmation menu

Table 5-1 TC_01: Booking resource for personal event successfully

TC_02: Booking resource for personal event unsuccessfully

Description Expected Result Actual Result Pass/ Fail

Book resources for a private/ team meeting event with a conflict time error

- The system pops up an error message indicates that the error related to conflict between the time of the event and timeworking of the participant

- User logs in as an event hoster

- User goes to ‘Booking Dashboard’ screen

- User chooses resource’s type and resouce’s option

- User selects the booking resource’s type as Booking for personal or team event

- User clicks on ‘Schedule’ button

- User selects day, fills in necessary information for the event

- User selects one of the available slots between the resources

- User clicks on ‘Confirm’ button in confirmation menu

Table 5-2 TC_02 Booking resource for personal event unsuccessfully

TC_03: Booking resource for an organization event successfully

Description Expected Result Actual Result Pass/ Fail

Book resources for an organization event with a successful result

- The system pops up a success message

- New organization event is updated in the Organization Events screen

- User logs in as an event hoster

- User goes to ‘Booking Dashboard’ screen

- User chooses resource’s type and resouce’s option

- User selects the booking resource’s type as Booking for organization event

- User clicks on ‘Schedule’ button

- User selects day, fills in necessary information for the event

- User selects one of the available slots between the resources

- User clicks on ‘Confirm’ button in confirmation menu

Table 5-3 TC_03: Booking resource for an organization event successfully

TC_04 Booking resource for an organization event unsuccessfully

Description Expected Result Actual Result Pass/ Fail

Book resources for an organization event with a conflict time error

- The system pops up an error message indicates that the error related to conflict between the time of the event and timeworking of the event hoster

- User logs in as an event hoster

- User goes to ‘Booking Dashboard’ screen

- User chooses resource’s type and resouce’s option

- User selects the booking resource’s type as Booking for organization team event

- User clicks on ‘Schedule’ button

- User selects day, fills in necessary information for the event

- User selects one of the available slots between the resources

- User clicks on ‘Confirm’ button in confirmation menu

Table 5-4 TC_04 Booking resource for an organization event unsuccessfully

TC_05 Join in organization event successfully

Description Expected Result Actual Result Pass/ Fail

Join in an organization event with a successful result

- The system pops up a success message

- New event will be schedule in the main active calendar

- User logs in as any primary user

- User goes to ‘Organization Event’ screen

- User chooses one of the organization events to book

- User clicks on ‘Join’ button

Table 5-5 TC_05 Join in organization event successfully

TC_06 Join in organization event unsuccessfully

Description Expected Result Actual Result Pass/ Fail

Join in an organization event with a conflict time error

- The system pops up an error message indicates that the error related to conflict between the time of the event and timeworking of the primary user

- User logs in as any primary user

- User goes to ‘Organization Event’ screen

- User chooses one of the organization events to book

- User clicks on ‘Join’ button

Table 5-6 TC_06 Join in organization event unsuccessfully

TC_07 Create group of external slots successfully

Description Expected Result Actual Result Pass/ Fail

Create group of external slots successfully

- The system pops up a success message

- New group of external slots will be updated in Sharing Slots Dashboard

- User logs in as public event hoster

- User enters the ‘Public Sharing Slots Dashboard’

- User clicks on the ‘Create external slots’ option button

- User selects some of the resources which support for the event

- User clicks on ‘Schedule’ button

- User selects single or multiple slots

- User clicks on ‘Schedule slots’ button

- User clicks on ‘Confirm’ button

Table 5-7 TC_07.Create group of external slots successfully

TC_08 Share group of external slots successfully

Description Expected Result Actual Result Pass/ Fail

Share group of external slots successfully

- The system pops up a success message

- Public parner can check the mail with all the slots shared by user

- User logs in as public event hoster

- User enters the ‘Public Sharing Slots Dashboard’

- User selects single or multiple slots in the public sharing slots to share for public parner

- User provides necessary information for sharing such as the public partner’s email

- User clicks on ‘Share public slot for booking’ button

Table 5-8 TC_08 Share group of external slots successfully

CONCLUSION

Result achieved

Build a calendar management website with Angular and Spring technology

• Learn more about the knowledge of testing a website to become complete

• Learn about Test Case writing and design process

• Practice skills to learn, survey, and analyze application problems

• Practice teamwork, self-study and time management skills.

Advantages

• The site does a good job of completing some simple tasks such as sending calendars and email notifications.

Disadvantages

• The site is not yet complete in terms of users

• Code is still not optimized

Direction of development

• Improve and upgrade the website

• Optimize the code to make the application smoother and reduce the size better

• Develop more features for the web

• Deploy the site so people can go and use it

• Add messaging with product owners

[1] Introduction to the Angular docs, [online] available at: https://angular.io/docs [Accessed 02 August 2023]

[2] Spring Framework Documentation, [online] available at: https://docs.spring.io/spring-framework/reference/ [Accessed 25 January 2023]

[3] Alexei Ledenev (2019), Crafting the perfect Java Docker build flow, [online] available at: https://codefresh.io/blog/java_docker_pipeline/ [Accessed 27 March

[4] Radhika Krishnan (2021), How To Dockerize an Angular Application with

Nginx, [online] available at: https://www.indellient.com/blog/how-to-dockerize-an- angular-application-with-nginx/ [Accessed 27 March 2023]

Ngày đăng: 05/12/2023, 10:02

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w