0% found this document useful (0 votes)
11 views111 pages

CS6004NI Application Development Report

The document outlines the details of a group coursework assignment submitted by five students. It includes the module code and title, assessment type, submission dates, group member names and college IDs. It also includes an acknowledgment section thanking the module leaders and teachers for their support and guidance.

Uploaded by

princeadhikari51
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views111 pages

CS6004NI Application Development Report

The document outlines the details of a group coursework assignment submitted by five students. It includes the module code and title, assessment type, submission dates, group member names and college IDs. It also includes an acknowledgment section thanking the module leaders and teachers for their support and guidance.

Uploaded by

princeadhikari51
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 111

Module Code & Title

CS6004NI Application Development

Assessment Weightage & Type

30% Group Coursework

Academic Year: 2022 Spring

Assignment Due Date: 3rd May 2023

Assignment Submitted Date: 3rd May 2023

Group Name
SN Student Name (Group) College ID University ID
1 Amish Budhathoki (C3) NP01CP4A190188 19030706
2 Apson Sapkota (C3) NP01CP4S210277 20048831
3 Sakshi Gupta (C3) NP01CP4S210071 20049006
4 Sarthak Pradhan (C3) NP01CP4S210330 20049028
5 Siddhartha Pradhan (C3) NP01CP4S210078 20049051

I confirm that I understand my coursework needs to be submitted online via MySecondTeacher under the
relevant module page before the deadline in order for my assignment to be accepted and marked. I am
fully aware that late submissions will be treated as non-submission and a mark of zero will be awarded.
Link of system:

https://drive.google.com/file/d/1fw4bvduOWgjhNOvqr_LScbZVRIg4UoLV/view?usp=sha
ring
Acknowledgment

We would like to express our sincere gratitude to our module leader, Mr. Samyush
Maharjan, for their unwavering support and guidance throughout the completion of the
coursework. Your expertise in the subject matter, as well as your dedication to helping us
succeed, has been invaluable.

Also, we would like to gratefully thank Mr. Abhishek Humagain, our teacher and
supervisor of the group coursework for guiding us about the module contents, providing
valuable learning resources, and your dedication to teaching us and clearing out our
confusion. Your constructive feedback and insightful comments have challenged us to
push the boundaries of our knowledge and abilities. Your encouragement and motivation
have inspired us to strive for excellence and to always give our best effort.

We would also like to extend our thanks to the teaching assistants and staff who have
contributed to making this course a success. Your hard work and dedication have not
gone unnoticed.

Thank you once again for your exceptional leadership and for making this learning
experience a memorable one. We are truly grateful for everything you have done to
support us in achieving our academic goals.
Table of Contents

1. Introduction ................................................................................................................. 1

2. Program Execution ...................................................................................................... 2

3. Solution Description .................................................................................................... 6

4. Software Architecture ................................................................................................ 10

4.1. MVC Pattern ....................................................................................................... 10

4.2. Clean Architecture .............................................................................................. 11

4.3. Classes and Purposes ........................................................................................ 14

4.3.1. Controllers .................................................................................................... 14

4.3.2. Models.......................................................................................................... 16

4.4. Classes, Methods, and Properties ...................................................................... 18

4.4.1. Controllers .................................................................................................... 18

4.4.2. Models.......................................................................................................... 25

5. Individual Experiences .............................................................................................. 35

5.1. Amish Budhathoki ............................................................................................... 36

5.2. Apson Sapkota ................................................................................................... 36

5.3. Sakshi Gupta ...................................................................................................... 37

5.4. Sarthak Pradhan ................................................................................................. 38

5.5. Siddhartha Pradhan ............................................................................................ 38

7. Testing ...................................................................................................................... 40

8. Conclusion .............................................................................................................. 100


List of Figures

Figure 1: Program Execution: Project Setup ................................................................... 2

Figure 2: Program Execution: Set up of Connection Strings ........................................... 3

Figure 3: Program Execution: Preparation for Migrations................................................ 3

Figure 4: Program Execution: Addition of Migrations ...................................................... 4

Figure 5: Program Execution: Creation of Migration File ................................................. 4

Figure 6: Program Execution: Update of Database ......................................................... 5

Figure 7: Program Execution: Execution ......................................................................... 5

Figure 8: Architecture: MVC Pattern.............................................................................. 10

Figure 9: Software Architecture: Clean Architecture ..................................................... 12

Figure 10: Software Architecture: Execution of Clean Architecture ............................... 13

Figure 11: Entity Relationship Diagram: Model Definitions............................................ 17

Figure 12: Program in Visual Studio .............................................................................. 40

Figure 13: Program running in Visual Studio ................................................................. 41

Figure 14: Result of running program ............................................................................ 41

Figure 15: Admin Login form with credentials ............................................................... 42

Figure 16: Login form with password visible.................................................................. 43

Figure 17: After successful admin login......................................................................... 43

Figure 18: Registration form with details ....................................................................... 44

Figure 19: Email Confirmation Message ....................................................................... 45

Figure 20: Confirming Email .......................................................................................... 45

Figure 21: Registration Successful Message ................................................................ 46

Figure 22. Customer Login with credentials .................................................................. 47


Figure 23. After Successful Customer Login ................................................................. 48

Figure 24. Selecting staff menu ..................................................................................... 49

Figure 25. Filling in staff details ..................................................................................... 49

Figure 26. Staff Registered Successfully....................................................................... 50

Figure 27: Staff Login with credentials .......................................................................... 51

Figure 28: Staff Login Successful .................................................................................. 52

Figure 29: Selecting brand in menu bar ........................................................................ 53

Figure 30: Adding a new brand ..................................................................................... 53

Figure 31: Adding a new brand detail: 1 ........................................................................ 54

Figure 32: Adding a new brand detail: 2 ........................................................................ 54

Figure 33: Brand added Successfully ............................................................................ 55

Figure 34: Clicking info icon .......................................................................................... 56

Figure 35: Brand detail displayed .................................................................................. 57

Figure 36: Clicking edit icon .......................................................................................... 58

Figure 37: Editing brand detail ...................................................................................... 59

Figure 38: Brand detail edited successfully ................................................................... 59

Figure 39: Clicking delete icon ...................................................................................... 60

Figure 40: Clicking delete button ................................................................................... 61

Figure 41: Vehicle deleted successfully ........................................................................ 61

Figure 42: Selecting vehicles in menu bar..................................................................... 62

Figure 43: Clicking add a new vehicle button ................................................................ 62

Figure 44: Adding vehicle details : 1 ............................................................................. 63

Figure 45: Adding vehicle details: 2 .............................................................................. 63


Figure 46: Vehicle added successfully .......................................................................... 64

Figure 47: Added Vehicle in Home Page ...................................................................... 64

Figure 48: Click info icon ............................................................................................... 65

Figure 49: Vehicle Details ............................................................................................. 66

Figure 50: Clicking edit icon .......................................................................................... 67

Figure 51: Editing Vehicle Details ................................................................................. 68

Figure 52: Saving Vehicle Details ................................................................................. 68

Figure 53: Vehicle detail updated successfully .............................................................. 69

Figure 54: Clicking delete icon ...................................................................................... 70

Figure 55: Deleting vehicle ............................................................................................ 71

Figure 56: Vehicle deleted successfully ........................................................................ 71

Figure 57: Clicking on Offers Menu ............................................................................... 72

Figure 58: Adding new offer .......................................................................................... 72

Figure 59: Adding offer detail ........................................................................................ 73

Figure 60: Creating offer ............................................................................................... 73

Figure 61: Offer Created Successfully........................................................................... 74

Figure 62: Offer displayed in home page ...................................................................... 74

Figure 63: Clicking info icon .......................................................................................... 75

Figure 64: Viewing offer details ..................................................................................... 76

Figure 65: Clicking on delete icon ................................................................................. 77

Figure 66: Deleting offer ................................................................................................ 78

Figure 67: Offer deleted successfully ............................................................................ 78

Figure 68: Clicking on My Documents ........................................................................... 79


Figure 69: Uploading Documents .................................................................................. 79

Figure 70: Documents Uploaded Successfully .............................................................. 80

Figure 71: Clicking on details of selected vehicle .......................................................... 81

Figure 72: Clicking on rent this vehicle .......................................................................... 82

Figure 73: Selecting Dates to request vehicle renting ................................................... 82

Figure 74: Renting request successful .......................................................................... 83

Figure 75: Clicking Requested rents on menu .............................................................. 84

Figure 76: Approving rents ............................................................................................ 84

Figure 77: Rent approved successfully ......................................................................... 85

Figure 78: Notifying customer for successful rent ......................................................... 85

Figure 79: Current rents viewed by admin..................................................................... 86

Figure 80: Currently renting viewed by customer .......................................................... 87

Figure 81: Returning Vehicle ......................................................................................... 88

Figure 82: Vehicle Returned successfully ..................................................................... 89

Figure 83: Clicking Fill Damage From ........................................................................... 90

Figure 84: Entering damage details .............................................................................. 91

Figure 85: Damage request notified successfully .......................................................... 91

Figure 86: Clicking on Damage Request on Menu ........................................................ 92

Figure 87: Clicking on info icon ..................................................................................... 92

Figure 88: Updating damage details.............................................................................. 93

Figure 89: Damage details updated .............................................................................. 93

Figure 90: User not allowed to rent ............................................................................... 94

Figure 91: Entering Invalid login credentials.................................................................. 95


Figure 92: Invalid Login attempt .................................................................................... 96

Figure 93: Empty Field Validation (1) ............................................................................ 97

Figure 94: Empty Field Validation (2) ............................................................................ 98

Figure 95. Sales and Stats ............................................................................................ 99

List of Tables
Table 1: Software Architecture: Components of Clean Architecture ............................. 12

Table 2: Controller Method Description: Account .......................................................... 18

Table 3: Controller Method Description: Home ............................................................. 19

Table 4: Controller Method Description: Rental ............................................................. 19

Table 5: Controller Method Description: Rental ............................................................. 20

Table 6: Controller Method Description: Vehicle ........................................................... 21

Table 7: Controller Method Description: Users .............................................................. 21

Table 8: Controller Method Description: Sales .............................................................. 22

Table 9: Controller Method Description: Damage Request ........................................... 22

Table 10: Controller Method Description: Offer ............................................................. 23

Table 11: Controller Method Description: Brand ........................................................... 24

Table 12: Controller Method Description: Profile ........................................................... 24

Table 13: Data Dictionary: User Model.......................................................................... 26

Table 14: Data Dictionary: Brand Model........................................................................ 27

Table 15: Data Dictionary: Customer Model .................................................................. 28

Table 16: Data Dictionary: Damage Request Model ..................................................... 29

Table 17: Data Dictionary: Offer Model ......................................................................... 31


Table 18: Data Dictionary: Rental Model ....................................................................... 33

Table 19: Data Dictionary: Vehicle Model ..................................................................... 34

Table 20: Test Case 1: Run Program ........................................................................... 40

Table 21: Test Case 2: Admin Login ............................................................................. 42

Table 22. Test Case 3: Register Customer ................................................................... 44

Table 23. Test Case 4: Customer Login ........................................................................ 47

Table 24. Test Case 5: Staff Registration...................................................................... 49

Table 25: Test Case 6: Staff Login ................................................................................ 51

Table 26: Test Case 7: Add Brands .............................................................................. 53

Table 27: Test Case 8: Viewing Brand Details .............................................................. 56

Table 28: Test Case 8: Edit Brand Detail ...................................................................... 58

Table 29: Test Case 12: Delete Vehicle ........................................................................ 60

Table 30. Test Case 11: Add vehicles ........................................................................... 62

Table 31: Test Case 12: View Vehicle Detail ................................................................ 65

Table 32: Test Case 13: Edit Vehicle Detail .................................................................. 67

Table 33: Test Case 14: Delete Vehicle ........................................................................ 70

Table 34: Test Case 11: Add Offers .............................................................................. 72

Table 35: Test Case 12: View Offer Detail .................................................................... 75

Table 36: Test Case 17: Delete Offer ............................................................................ 77

Table 37: Test Case 18: Upload Documents................................................................. 79

Table 38: Test Case 19: Requesting vehicle renting ..................................................... 81

Table 39: Test Case 20: Approving Vehicle Renting ..................................................... 84

Table 40: Test Case 21: Currently Renting Vehicles ..................................................... 86


Table 41: Test Case 22: Returning Vehicle ................................................................... 88

Table 42: Test Case 23: Damage Request ................................................................... 90

Table 43: Test Case 24: Updating Damage Details ...................................................... 92

Table 44: Test Case 25: Renting with damage cost not paid ........................................ 94

Table 45: Test Case 26: Login with invalid credentials.................................................. 95

Table 46: Test Case 27: Registering with empty field ................................................... 97

Table 47. Test Case 28 - Sales and Stats ..................................................................... 99


CS6004NI Application Development

1. Introduction

The assigned group work consists of 30% of the total module grades of the module
“Application Development”. This group work aims towards building a web-based
application with specific requirements and features along with the coordinative
collaboration from the team members. The motive of this assignment is to create a vehicle
renting management system for the company “Hajur ko Rentals”.

The developed application must be able to support its vehicle renting operations as
mentioned and should be developed in C# programming language and the .NET Core
Framework. The vehicle rental management system must consist of specific requirements
mentioned by the company. The development of the features must be specified for 3
different users, the admin, the staff, and the customers. The admin must be able to handle
operations such as adding new staff and assigning their roles, changing passwords, rates
of the vehicles, and many more. The staff members must be able to add/remove cars for
rent, validate client requests, publish offers, and change their passwords. The customer
must and should be able to create an account to access the features of the system. Active
verification is required for both the staff and the customer.

The main objective of this project is to create a vehicle renting management system to
handle the inventory, rent records, billing, view car details, and report damaged cars while
under rental, role assignment for the rental service company. This system shall help them
manage rental records of customers, vehicle details and their condition, customer details
and rental reciprocals, and staff’s assigned tasks accordingly. The designed system
should consist of login and registration for customers and also their authorization.

1
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

2. Program Execution

Project setup instructions are documented in a document called a project setup guide. It
will normally include the actions to take and the recommended resources and
technologies to get the project off the ground. A project's success hinges on everyone's
shared understanding of the first steps, which is why a setup guide is so important. In
order to execute the program, these instructions should be carefully followed:

1. Install Microsoft SQL Server and SQL Server Management Studio as a database
service provider.
2. Install Visual Studio 2022 and .NET Core 6 for ensuring framework versioning while
program execution.
3. Download the project from the submitted link or clone from the repository.
4. Open the solution file in Visual Studio 2022.
• Navigate to the appsettings.json file and adjust the connection string as stated in
the below pictorial representation.

Figure 1: Program Execution: Project Setup

2
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 2: Program Execution: Set up of Connection Strings

5. Generate new migration scripts through package manager console.

Figure 3: Program Execution: Preparation for Migrations

6. The following command is applicable for running a new migration.

add-migration [migration name]

3
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 4: Program Execution: Addition of Migrations

Figure 5: Program Execution: Creation of Migration File

4
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

7. The next step is to migrate the scripts from the code to the database, so the following
command is used to update the database.

update-database

Figure 6: Program Execution: Update of Database

8. Run the application in IIS Express

Figure 7: Program Execution: Execution

Hence, the project is set up and instantiated in a local environment at its local port with
proper migrations and database connections.

5
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

3. Solution Description

The solution description for designing and implementing each of the features are outlined
below based on their numbering:

Feature 1

The first step was to seed the admin during migration and program execution, further on
a section to define the index of staffs was established and a basic CRUD implementation
was done so as to add a new user to the database following the identity’s function of
UserManager and RoleManager to create a user and further on assign roles to them.
Similarly, the change password function was also inherited from the UserManager and
the passwords were changed as per validations from the old and new password.

Feature 2

Similarly, a basic CRUD operation for cars and offers were validated through the
Repository Pattern. Again, the same way to examine the logged in user’s information from
the SignInManager was used to extract the details of the logged in user and the
UserManager’s function to change password was executed. For validation of client
requests, the logged in staff was displayed all the list of pending requests and a button to
accept or reject the request was validated.

Feature 3

For a logged in customer, a list of available cars is displayed, and their respective details
are also shown. When requesting a rental, the system firstly examines if the customer
has validated their Licenses and Citizenships or not and processes the request
accordingly so as the rental data are then stored in the database. Implementing the
cancellation feature included removal of the rental data from the database and making
the rented vehicle on the available status.

6
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Feature 4

As a table to define rental history was created, data were thusly manipulated to display
the sales of each vehicle along with the customer’s details and rental history. Group By
functions were applied in the LINQ query to extract and fetch sales details by joining them
accordingly with the vehicle and customer in each instance. As rental history requires
action from a member of staff, details of the staff who approved or returned the rent was
also stored in the database.

Feature 5

Customers can register themselves to the system through the registration page which
allows them to enter their basic details. Upon registration, the UserManager was called,
and a user was created through its method. Further on, email confirmations were also
sent to the respective customer so as to approve their registration through the SMTP
procedures synced with the code. Similar processes of changing password were
implemented in the following feature as well.

Feature 6

Once a staff or an admin approves the rental request of the customer, an email is sent
regarding successful rental and thus the logged in user can also view out the accepted
rent at their Accepted Rental Stories tab to view the details of the vehicle and approver.
For special offers, they are joined along with the vehicle so as to define the offer presented
in the vehicle.

Feature 7

Once a vehicle is requested for rental or accepted, a flag status of IsAvailable is set to
false, till the rental request is rejected, cancelled or accepted rent is returned. So, in the
available vehicle lists, the vehicles only with a true availability status is displayed.

7
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Feature 8

The following feature is implemented as per data manipulations from the rental details
table. To display the vehicles currently on rent, the RentalStatus column is examined to
view the vehicles currently on rent. Similarly, the vehicles with a true availability status
are checked to show all the currently available vehicles. To display rental history between
cars, the same table is optimized to the group by function to view total number of rents
for each vehicle.

Feature 9

Similar process to the above step, the same table of Rental Details are utilized and are
grouped by as per the customer’s identifier to view the total number of rents executed by
each of the customer along with their last rental date.

Feature 10

When an accepted rent is displayed in the customer’s tab, a list of currently rented
vehicles is displayed along with the details of the rent and vehicle. Again, a damage
request function is applicable only for currently rented vehicles which then adds data of
the damage description to the respective table linking with the rented data.

Feature 11

The damage request is then processed by the staff to view the details of the damage and
the staff then estimates the repair cost for the damage done. This then stores details of
the staff who processed the request and the cost details to the respective table. To
process function of unpaid bills, the payment status column is added, and it is processed
further on during the customer’s rent.

8
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Feature 12

The following feature is also implemented based on the damage request table so as to
view the damage details and thus joined with the rental table followed by the vehicles and
customers table to view the customer who rented the vehicle and the vehicle details.

Feature 13

As the development focused on physical payment procedure, all the payment statuses
were set to offline status once the rent was returned and the damage request was paid
as per the staff’s approval.

Feature 14

The functionality feature follows the same pattern of registration while entering their email
address, phone number and residential address. Further on, on the profile section, the
customer is opted to input their driving license and citizenship papers by which the system
them evaluates the selected files and stores in the local storage. This is a mandatory
process before vehicle rental as the rental process requires examining the customer’s
attributes such as license and citizenship numbers before processing the request.

Feature 15

Following the implementation of the above feature, input fields for type of file is set and
acceptance of files are only set up to .pdf or .png extensions. The image size was also
validated as per examination of the selected file and thus validations were done to display
an error if it exceeded a size of 1.5MB.

9
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

4. Software Architecture

Software architecture is an architectural pattern that reveals the system's structure while
concealing implementation details and defining how the elements and components of a
system interact.

4.1. MVC Pattern

When it comes to development, the application must also adhere to a set of guidelines
describing its structure and organization. As the subsequent.NET Core framework
includes an MVC architectural pattern, it facilitates the definition of a holistic solution
based on logically connected and consistent principles, concepts, and attributes. In this
instance, MVC stands for Model View Controller, and their corresponding explanations
are provided below.

Figure 8: Architecture: MVC Pattern

10
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Model: It corresponds to all the data-related logic that the user works with.

View: It corresponds to all the UI logic and front-end view of the application.

Controller: It corresponds as an interface between Model and View components to


process all the business logic and incoming requests, manipulate data using the Model
component and interact with the Views to render the final output.

4.2. Clean Architecture

Implementing use cases with minimal coupling is a primary goal of clean architecture.
Use cases provide a high-level organizing structure that is abstracted from the specifics
of frameworks and technologies. Domains, in this sense, are the topics on which a
currently-under-development application focuses. The entities or models around which
an application is created remain fundamental to clean architecture, as does the business
logic, its implementation, and subsequent practices.

In Clean Architecture, the Core refers to the intersection of the Domain and Application
layers. These layers include the logic and rules that govern the business. Because of this,
the Presentation and Infrastructure layers are mere details, and the business layers
should not rely on them. The traditional dependency of business logic on data access and
other infrastructure issues has been inverted, with infrastructure and implementation
details now being dependent on the Application layer. To do this, abstractions (or
interfaces) are specified in the Application layer, while types are created in the
infrastructure layer to provide their implementation. Core does not rely on any higher-
level abstractions and all dependencies are inverted there. Both Infrastructure and
Presentation rely on Core, although neither is necessary for the other.

11
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 9: Software Architecture: Clean Architecture

Project Layer Components


Domain Layer Entities / Models, Constants
Application Layer Interfaces
Infrastructure Layer Service and Repository Implementation, Persistence Layer
Persistence Layer Data Context, Data Seeding, Data Migrations
Presentation Layer Controllers, Views, View Models, Areas

Table 1: Software Architecture: Components of Clean Architecture

12
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 10: Software Architecture: Execution of Clean Architecture

13
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

4.3. Classes and Purposes

The following heading represents all the list of classes defined in the program execution
along with their purposes.

4.3.1. Controllers

ASP.NET Core MVC Controllers are responsible for directing the execution flow of an
application. A controller is responsible for delivering the response to a request made to
an MVC application when a user requests a page. It is a class that implements the API
defined operations of an application.

Account Controller

The following controller is responsible for handling account transactions such as


registration, login, confirmations, change in passwords and user log out.

Home Controller

The following controller is defined to navigate the user to their respective home landing
pages and dashboard so as to display the rental system and processes.

Rental Controller

The following controller is exhibited in two areas, one for users to provide their renting
request and view details of the rent along with acceptance and returns and the next for
admin or staff side so as to present their action on the respective rent, either to accept,
reject or cancel.

14
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

History Controller

The following controller is defined so that the user may visualize all the history of their
rents, which may be the rents that they have returned or the rents that are currently on.

Damage Request Controller

The purpose of the following controller is to operate requests on a rented vehicle damage
by the customer. It is also then processed by the admin or staff to handle other attributes.

User Controller

The purpose of the following controller is to define an index of list of all users of the system
along with their rental history.

Vehicle Controller

The purpose of the following controller is to operate on the functions of vehicle such as
creating, editing, updating and deleting an instance of a vehicle.

Profile Controller

The following controller is utilized so as to update the logged in user’s profile such as their
basic details and change passwords and also define a tab to add documents such as
licenses and citizenship for the case of a logged in customer.

15
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

4.3.2. Models

A Model is the representation of the data being posted to the controller or the API, and
the data being worked on in a view, or the representation of the domain-specific entities
operating in the business tier.

Brand To store and define the details of the brand of a vehicle.

Customer To store and define an instance of the customer of the system.

Damage To store and initiate damage requests of a rented vehicle.

Image To store and represent images of a set of vehicles.

Offer To store and initiate offer details linked to a vehicle.

Rental To store and define a rental request from a user regarding a vehicle.

Staff To store details and represent staff of the system.

User To store details of all available users of the system.

Vehicle To store and define an instance of vehicles present in the system.

16
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Images
Id

ProfileImage

ImageURL

VehicleId

Customers
Id

CitizenshipNumber
Vehicles
Rentals
CitizenshipURL Id
Id
LicenseNumber Brands
Model
VehicleId Id
LicenseURL Color
UserId Name
ExpirationDate PlateNumber
RequestedDate Description
UserId PricePerDay
StartDate Image
Description
EndDate ImageURL
DamageRequests Features
ReturnedDate IsActive
Id
BrandId
ActionDate CreatedDate
RentalId
OfferId
IsApproved CreatedBy
RepairCost
IsAvailable
IsReturned LastModifiedDate
DamageDescription
CreatedDate
RentalStatus LastModifiedBy
IsPaid
CreatedBy
PaymentStatus
ApprovedBy
LastModifiedDate
ActionBy
IsApproved

Offers
Users Id

Id Name

Discriminator Description

FullName Discount

Image StartDate

ImageURL EndDate
UserRoles Address IsExpired
UserId
State CreatedDate
RoleId
UserName CreatedBy
Discriminator
NormalizedUserName LastModifiedDate

Email LastModifiedBy

NormalizedEmail

Roles EmailConfirmed
Id PasswordHash Staffs
Discriminator Id
SecurityStamp
Name UserId
ConcurrencyStamp
NormalizedName PhoneNumber

Figure 11: Entity Relationship Diagram: Model Definitions

17
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

4.4. Classes, Methods, and Properties

The following section defines all the detailed aspects of the methods present in a
controller and the properties of a model.

4.4.1. Controllers

A method is a segment of code that contains multiple statements. A program executes


the statements by invoking the method and passing any required method parameters.

Account Controller

HTTP
Method Name Description
Request
Register Retrieves a new view for user registration.
Register Retrieves a new view for confirming a registration
Confirmation process.
GET
Email Retrieves a new view indicating successful registration
Confirmation via email confirmation.
Login Retrieves a new view for users to log in to the system.
Handles user or customer registrations processing user’s
Register
requested details to begin registration transaction.
Handles user’s log in to the system as per session based
POST Login
signing in to authorize the user
Handles user to log out the currently logged-in user and
Logout
redirects them to the home page.

Table 2: Controller Method Description: Account

18
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Home Controller

HTTP
Method Name Description
Request
Retrieves data from services for brands and available
Index
vehicles to display the view on the home page.
GET
Retrieves the details of a vehicle as per a specified to
Detail
returns a view with the selected vehicle’s information.

Table 3: Controller Method Description: Home

Rental Controller

HTTP
Method Name Description
Request
Retrieves a vehicle by its identifier and displays a rental
GET Rental form as per the vehicle and rental price, also handling
any customer’s pending damage requests.
Processes a rental request by calculating the rental price
based on the vehicle type, user role, and rental duration,
POST Rental and adds the rental to the database. It also updates the
availability status of the vehicle and redirects the user to
the homepage with a success message.

Table 4: Controller Method Description: Rental

History Controller

HTTP
Method Name Description
Request
Retrieves the rental history of a user who has requested
GET Requested a rental in the car rental system and returns the rental
history view with rental details.

19
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Returns a view with a list of rentals that have been


Accepted approved by an admin and are currently ongoing, for the
currently logged-in user.
Retrieves a list of rental records that have been
Returned approved and returned by the current user and displays
them on the view.
Retrieves information about a damage request for a
Damage
particular rental, including the name of the vehicle, the
Details
details of the damage request, and returns it to the view.
Damage Returns a view to submit a damage request for a rental
Requests with a given rental identifier.
Returns a cancellation of a rental by calling the service
Requested
to cancel a rental with sets of messages.
Returns to cancel an approved rental with the given
Accepted
rental identifier.
POST Processes a damage request for a rental, updates the
rental information, and creates a new damage request
Damage
with the description and image of the damage. It also
Requests
sets the customer's status to inactive and saves the
changes to the database.

Table 5: Controller Method Description: Rental

Vehicle Controller

HTTP
Method Name Description
Requests
Retrieves all brands, vehicles, and offers from the
database by joining them based on their foreign key
GET Index
relationships and returns the view with the resulting list
as a model.

20
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Retrieves the details of a particular vehicle by its ID,


along with the rental history of the vehicle. The retrieved
Details
information is then used to populate a view model,
which is passed to the view for display.
Retrieves a vehicle by its identifier, and if the ID is
empty, creates a new vehicle object and returns the
Upsert view for adding a new vehicle. If the ID is not empty, it
returns the view for editing the existing vehicle with the
corresponding identifier.
Retrieves a vehicle by its identifier and displays it in a
Delete
view for deletion.
Receives a vehicle object, extracts some information
from it, and adds or updates it to the database. If the ID
Upsert of the vehicle is empty, it creates a new vehicle, sets
POST some properties, and adds it to the database.
Otherwise, updates the data in the database.
Deletes a vehicle with a given identifier and returns a
Delete
redirection to the Index action method.

Table 6: Controller Method Description: Vehicle

User Controller

HTTP
Method Name Description
Requests
Customer Retrieves all sets of customers of the system.
Retrieves specified data of the customer such as their
Details
GET detailed information and rental history.
Staff Retrieves all sets of staff present in the system.
Register Retrieves a staff registration view to add a new staff.
POST Register Stores a new data of staff registration to the system.

Table 7: Controller Method Description: Users

21
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Sales Controller

HTTP Method Description


Request
Retrieves various statistics related to the car rental
system, including the number of customers, rentals,
GET Index pending requests, sales, brand and vehicle counts,
user and vehicle rental counts, and inactive customers,
and then returns a view that displays these statistics.

Table 8: Controller Method Description: Sales

Damage Request

HTTP Method Description


Request
Retrieves all the details of the damage requests that
have been filled up by the customer regarding their
Index
details in the form of the customer’s name, rented
GET vehicle and payment status.
Retrieves a more specified detail of the selected
Details damage request with stats on the damage of the
vehicle.
Returns a stored data to update the damage request
POST Details submission regarding the payment status and due
amount.

Table 9: Controller Method Description: Damage Request

Offer Controller

HTTP Method Description


Request
Retrieves all the details of all the available offers of the
GET Index
system.

22
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Retrieves a more specified detail of the selected offer


Details defining the description of the offer and its category on
available vehicles.
Retrieves a new submission form to insert a new set of
Insert
data to the offer’s database table.
Delete Retrieves a selected offer to process it for deletion.
Returns a new stored data to add a new offer and
Insert
update it on the cases of selected vehicles.
POST Returns an updated set of offers by deleting the
Delete selected offer and removing it from the sets of the
applicable vehicle.

Table 10: Controller Method Description: Offer

Brand Controller

HTTP
Method Name Description
Requests
Retrieves all the available brands of the system and
Index
returns the view with the resulting list as a model.
Retrieves the details of a particular brand by its ID, along
Details
with the details to be passed to the view for display.
Retrieves a brand by its identifier, and if the ID is empty,
GET creates a new object and returns the view for adding a
Upsert new brand. If the ID is not empty, it returns the view for
editing the existing brand with the corresponding
identifier.
Retrieves a brand by its identifier and displays it in a
Delete
view for deletion.
Receives a brand object, extracts information from it,
POST Upsert and adds or updates it to the database. If the ID of the
vehicle is empty, it creates a new brand, sets some

23
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

properties, and adds it to the database. Otherwise, it


finds the brand in the database, updates some
properties, and modifies it in the database.
Deletes a brand with a given identifier and returns a
Delete
redirection to the Index action method.

Table 11: Controller Method Description: Brand

Profile Controller

HTTP
Method Name Description
Requests
Retrieves the currently logged in user’s information
Profile
such as their names, phone number and profile image.
Retrieves the currently logged in customer’s
information related to customer documents, such as
GET Document their citizenship and license numbers, expiration dates,
and URLs for the documents, and passes it to a view
for display.
Retrieves a new view to allow the user to change their
Password
password.
Returns an updated set of profile to the user based on
Profile
the user’s action for changes.
Returns an updated sets of documents as per addition
Document
POST and modification by the logged in customer.
Returns a change in password encryption for the
Password logged in user so as to use it the next session to sign
into the system.

Table 12: Controller Method Description: Profile

24
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

4.4.2. Models

A property is a member that provides a flexible mechanism to read, write, or compute the value of a private field, allowing
data to be accessed without compromising the safety or flexibility of methods.

User Model

Column Reference Reference


Data Type Constraint Description Example Data
Name Table Identifier
VARCHAR2 PRIMARY
Id It identifies app users. Random GUID
(450) KEY
VARCHAR2 It displays the full name
Full Name NOT NULL Harry Potter
(450) of the user.
VARCHAR2 It stores the image in bit
Image Bit Format
(450) format.
It stores the Image URL
VARCHAR2
Image URL and the path of the Image Path
(450)
image.
VARCHAR2 It stores the address of
Address 45th Street
(450) the user.
VARCHAR2 It stores the state
State Zonal Area
(450) address of the user.

25
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

VARCHAR2 It stores the email of the


Email NOT NULL [email protected]
(450) user.
Email It examines the email
BIT NOT NULL 1
Confirmed confirmation.
Phone VARCHAR2 It displays the phone
NOT NULL 9803364638
Number (450) number of the user.

Table 13: Data Dictionary: User Model

Brand Model

Column Reference Reference


Data Type Constraint Description Example Data
Name Table Identifier
VARCHAR2 PRIMARY
Id It identifies the brand. Random GUID
(450) KEY
VARCHAR2 It displays the name of
Name NOT NULL BMW
(450) the brand.
VARCHAR2 It stores the image in bit
Image Bit Format
(450) format.
It stores the Image URL
VARCHAR2
Image URL and the path of the Image Path
(450)
image.

26
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

It stores the activation


Is Active bit NOT NULL 1
status of the brand.
It stores the deletion
Is Deleted bit NOT NULL 0
status of the brand.
It stores the identifier of
VARCHAR2
Created By NOT NULL Users Id the brand’s creator User’s GUID
(450)
user.
Created It stores the date time of ‘2023-01-01 T
DATETIME2 NOT NULL
Date the brand creation. 12:00:00’
It stores the identifier of
Last VARCHAR2
Users Id the brand’s last modifier User’s GUID
Modified By (450)
user.
Last It stores the date time of
‘2023-01-01 T
Modification DATETIME2 the brand’s last
12:00:00’
Date modification date.
VARCHAR2 It stores the identifier of
Deleted By Users Id User’s GUID
(450) the brand’s delete user.
Deleted It stores the date time of ‘2023-01-01 T
DATETIME2
Date the brand deletion. 12:00:00’

Table 14: Data Dictionary: Brand Model

27
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Customer Model

Column Reference Reference


Data Type Constraint Description Example Data
Name Table Identifier
VARCHAR2 PRIMARY
Id It identifies the brand. Random GUID
(450) KEY
VARCHAR2 It refers the user of the
User Id NOT NULL Users Id User’s GUID
(450) system.
Citizenship VARCHAR2 It stores the user’s
A45-090-1
Number (450) citizenship number.
It stores the URL and
Citizenship VARCHAR2
the path of the Image or PDF Path
URL (450)
citizenship.
License VARCHAR2 It stores the user’s
1045-09-CF
Number (450) license number.
License VARCHAR2 It stores the URL and
Image or PDF Path
URL (450) the path of the license.
It stores the activation
Is Active bit NOT NULL Users Id 1
status of the user.
It stores the regularity
Is Regular bit NOT NULL 0
status of the user.

Table 15: Data Dictionary: Customer Model

28
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Damage Request Model

Column Reference Reference


Data Type Constraint Description Example Data
Name Table Identifier
VARCHAR2 PRIMARY It identifies the damage
Id Random GUID
(450) KEY request.
It refers the specific rental
VARCHAR2
Rental Id NOT NULL Rentals Id with which it was Rental’s GUID
(450)
requested.
It stores the cost of the
Repair Cost FLOAT 4500.00
damage.
It stores paid status of the
Is Paid bit damage in a Boolean 0
format.
Damage It stores the descriptive
VARCHAR2 Tire Punctured
Description information of the request
bit It stores if the request has
Is Approved 1
been approved or not.
Approved VARCHAR2 It stores the staff handling
Users Id User’s GUID
By (450) the request.

Table 16: Data Dictionary: Damage Request Model

29
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Offers Model

Column Reference Reference


Data Type Constraint Description Example Data
Name Table Identifier
VARCHAR2 PRIMARY
Id It identifies the offer. Random GUID
(450) KEY
VARCHAR2 It stores the name of the “Inauguration
Name
(450) offer. Offer”
VARCHAR2 It stores the descriptive
Description “Offer for 20 days”
(450) details of the offer.
It stores discount 2023-01-01 T
Discount FLOAT
percentage of the offer. 12:00:00’
It stores the start date of
Start Date DATETIME2 Tire Punctured
the offer.
It stores the end date of 2023-05-01 T
End Date DATETIME2
the offer. 12:00:00’
VARCHAR2 It stores the identifier of
Created By NOT NULL Users Id User’s GUID
(450) the offer’s creator user.
Created It stores the date time of ‘2023-01-01 T
DATETIME2 NOT NULL
Date the offer creation. 12:00:00’

30
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

It stores the identifier of


Last VARCHAR2
Users Id the offer’s last modifier User’s GUID
Modified By (450)
user.
Last It stores the date time of
‘2023-01-01 T
Modification DATETIME2 the offer’s last
12:00:00’
Date modification date.
VARCHAR2 It stores the identifier of
Deleted By Users Id User’s GUID
(450) the offer’s delete user.
Deleted It stores the date time of ‘2023-01-01 T
DATETIME2
Date the offer deletion. 12:00:00’

Table 17: Data Dictionary: Offer Model

Rental Model

Column Reference Reference


Data Type Constraint Description Example Data
Name Table Identifier
VARCHAR2 PRIMARY It identifies the rental
Id Random GUID
(450) KEY request.
VARCHAR2 It stores the vehicle
Vehicle Id NOT NULL Vehicle Id Vehicle’s ID
(450) being rented.
VARCHAR2 It stores the user who
User Id NOT NULL User Id User’s ID
(450) initiated the rental.

31
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Requested It stores the requested 2023-01-01 T


DATETIME2 NOT NULL
Date date of the rental. 12:00:00’
It stores the start date of 2023-01-05 T
Start Date DATETIME2 NOT NULL
the rent. 12:00:00’
It stores the end date of 2023-01-10 T
End Date DATETIME2 NOT NULL
the end. 12:30:00’
It stores the date of
2023-01-02 T
Action Date DATETIME2 action performed by the
12:00:00’
staff.
It stores the date time
Returned ‘2023-01-12 T
DATETIME2 when the vehicle was
Date 12:00:00’
returned.
It stores the approval
Is Approved bit 1
status of the rental.
It stores the returned
Is Returned bit 0
status of the vehicle.
Rental VARCHAR2 It stores the rental
Approved
Status (450) status of the rent.
It stores the user
VARCHAR2
Action By User Id responsible for handling User’s ID
(450)
the rent.

32
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Total It stores the total


FLOAT 45000.00
Amount amount due on the rent

Table 18: Data Dictionary: Rental Model

Vehicle Model

Column Reference Reference


Data Type Constraint Description Example Data
Name Table Identifier
VARCHAR2 PRIMARY
Id It identifies the vehicle. Random GUID
(450) KEY
VARCHAR2 It stores the vehicle’s
Model NOT NULL 450-T
(450) model.
VARCHAR2 It stores the vehicle’s
Color NOT NULL Red
(450) color.
Plate VARCHAR2 It stores the vehicle’s
NOT NULL 2023-PA-450
Number (450) plate number.
Price Per It stores the vehicle’s
FLOAT NOT NULL 12000
Day price as per each day.
VARCHAR2 It stores the vehicle’s
Description NOT NULL Very good car
(450) description.
VARCHAR2 It stores the vehicle’s Smooth, Fast,
Features NOT NULL
(450) features. Pacey

33
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

It stores the date time


VARCHAR2 FOREIGN
Brand Id Brand Id when the vehicle was Brand’s GUID
(450) KEY
returned.
VARCHAR2 FOREIGN It stores the approval
Offer Id Offer Id Offer’s GUID
(450) KEY status of the rental.
It stores the returned
Is Available bit NOT NULL 1
status of the vehicle.
VARCHAR2 It stores the identifier of
Created By NOT NULL Users Id User’s GUID
(450) the offer’s creator user.
Created It stores the date time of ‘2023-01-01 T
DATETIME2 NOT NULL
Date the offer creation. 12:00:00’
It stores the identifier of
Last VARCHAR2
Users Id the offer’s last modifier User’s GUID
Modified By (450)
user.
Last It stores the date time of
‘2023-01-01 T
Modification DATETIME2 the offer’s last
12:00:00’
Date modification date.
VARCHAR2 It stores the identifier of
Deleted By Users Id User’s GUID
(450) the offer’s delete user.
Deleted It stores the date time of ‘2023-01-01 T
DATETIME2
Date the offer deletion. 12:00:00’

Table 19: Data Dictionary: Vehicle Model

34
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

5. Individual Experiences

Completing the group assignments presented a significant challenge, but the results were
well worth the effort. It demanded everyone in the team to work together, communicate
clearly, and manage their time well. Everyone on the team knew what they were supposed
to do and how their work would affect the whole. Therefore, we accomplished our mission
by establishing reasonable objectives, sticking to strict deadlines, and always keeping
lines of communication open. The group's sense of pride and solidarity grew as they
completed the project together.

Amish Apson Sakshi Sarthak Siddhartha


Activities
Budhathoki Sapkota Gupta Pradhan Pradhan
Analysis of
✓ ✓ ✓ ✓ ✓
Assignment
Database
✓ ✓ ✓
Design
Designing
✓ ✓ ✓
UI/UX

Front End ✓ ✓ ✓ ✓

SQL ✓ ✓

Testing ✓ ✓

Backend ✓ ✓

Documentation ✓ ✓ ✓ ✓ ✓

35
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

5.1. Amish Budhathoki

It has been both thrilling and demanding to work on a web app for vehicle rental as a first-
time front-end developer. To design a user interface that is both beautiful and
straightforward, I've had to familiarize myself with new tools and techniques, such as
HTML, CSS, and JavaScript. It feels good to know that people will be able to use the
things I've designed. However, there have also been times of frustration when my code
didn't function as intended or when I couldn't figure out how to fix a problem. Developing
a useful web application requires patience, careful attention to detail, and close
cooperation with other team members, all of which I have learned the value of via this
experience. I enjoyed working with the team and the support for HTML5 form types
including email, URL, numeric input, date selection and selection and search is a feature
I really appreciated in ASP.NET while integrating Razor pages.

5.2. Apson Sapkota

Because of my dual roles on my team as front-end developer and quality assurance


tester, I've gotten an inside look at how our web software is built. In addition to making
sure our product is of the highest quality possible, I have overseen designing the
interfaces our users interact with. The time spent testing and fixing bugs has been both
difficult and worthwhile. It's been rewarding to discover issues and see them resolved
before they reach people. There have been times, however, when I've been frustrated
because I couldn't figure out what was causing a problem. In sum, I've learned the value
of paying close attention to detail and conducting extensive testing in order to improve
our product for customers. The features I really appreciated at the end of the project were
the smooth and fast communication of MVC protocol in the ASP.NET version for
integrating both the backend and client-side procedures. Further on, addition of
validations was the major task assigned to me for which I used external third-party
libraries so as to add notifications and proper messaging in the system so as to beautify
the application.

36
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

5.3. Sakshi Gupta

As the UI and frontend developer, database administrator, and a key member of our web
project team, I have been instrumental in bringing our project to life. My responsibilities
have been diverse and have included everything from designing the database schema to
developing an intuitive UI and seamlessly integrating it into the system through frontend
development. The importance of these tasks cannot be overstated, as they have been
fundamental in ensuring that our users are able to access the required data in a clear,
concise, and easily navigable manner.

To achieve these goals, I have had to develop a deep understanding of the data flow,
data handling, and database schema, which has allowed me to create an interface that
is both user-friendly and highly functional. Additionally, my experience in UI and frontend
development using Bootstrap has been vital in the creation of a smooth and intuitive user
experience.

Throughout the project, I have worked closely with the backend developers to identify and
address any bugs that have been found, resulting in an enhanced system performance
and scalability. Though there have been some challenges along the way, such as
resolving issues with database queries and data manipulation, I have found these
obstacles to be an opportunity to hone my skills and further develop my knowledge of
database design concepts and UI development.

Overall, my versatile skill set and deep understanding of the intricacies of database
design and UI and frontend development have proven to be invaluable to the project's
success. It has been a rewarding experience to work with such a dedicated team and to
contribute to the creation of a web project.

37
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

5.4. Sarthak Pradhan

As my team's ASP.NET back-end developer and quality assurance specialist, I've gotten
an inside look at how our web app came to be. In addition to writing and maintaining the
server-side code, I was also tasked with testing and fixing bugs in the program. This has
necessitated that I have an excellent grasp of the application architecture and a keen eye
for spotting problems. It's satisfying to know that my work as a developer has helped
improve our product and that I can pinpoint and eliminate errors with relative ease. But
there have also been times of frustration when I've been unable to reproduce a problem
or figure out how to fix a particularly tricky one. In sum, I've learned the value of a well-
rounded skill set and the significance of working closely with my teammates to produce a
superior result through this experience. Out of all the tasks I had handled, I had gained
much knowledge regarding maintaining a proper flow of the application and handling all
the user authentication and authorization process. Even if it’s a very common and basic
feature, I enjoyed working on validating user’s request for registration, login, log out and
profile management.

5.5. Siddhartha Pradhan

Considering my experience with C# and .NET Core framework, my peers overwhelmingly


voted for me to take charge of this project and serve as sole backend developer and
project manager. Thereby, Clickup was utilized as the project management tool for this
endeavor considering my experience with Clickup. To start things off, we let everyone
decide what we wanted to contribute to the project, and then we divided up the
responsibilities and kept tabs on progress based on our preferences using notion.

As my prior experience with clean architecture, the clean architecture was chosen as
software architecture along with the MVC application framework. I took an active role in
every possible part of the project's development from helping with handling HTTP
requests, developing controllers, and implementing the repository pattern and services to
performing SQL queries through LINQ and Lambda and validating response. Alongside

38
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

the backend development, I was also actively involved in managing data flow from
Backend to the Front End. Following the completion of development, I was involved in
fixing the issues highlighted by my teammates to make sure everything worked as
intended.

In terms of the things I've learned, I believe that I've come a long way as a .NET developer
thanks to this whole project that allowed me to improve on a variety of skills including
enhanced critical thinking, researching capabilities and superior debugging efficiency.
Throughout the phases of development, I learned valuable lessons about developing full-
pledged applications in the real world. The significance of soft skills in development was
the most significant insight I gained from this educational experience. As a developer, I'm
constantly reminded of the significance of "Soft Skills," and as this project has progressed,
I've come to appreciate how crucial it is for an individual to be able acknowledge their
mistake, request for assistance, when necessary, keep the lines of communication open,
and work collaboratively with teammates to resolve problems.

39
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

7. Testing

Run Program

Test No 1
Objective To run the program.
Action The run button was clicked in Visual Studio 2022.
Expected Result The program will run successfully.
Actual Result The program ran successfully.
Conclusion The test was successful.

Table 20: Test Case 1: Run Program

Figure 12: Program in Visual Studio

40
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 13: Program running in Visual Studio

Figure 14: Result of running program

41
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Admin Login

Test No 2
Objective To log in as admin.
Action → The login link was clicked on the navigation menu.
→ The login form was filled with valid credentials.
→ The login button was clicked.
Expected Result The admin will be logged in.
Actual Result The admin was logged in.
Conclusion The test was successful.

Table 21: Test Case 2: Admin Login

Figure 15: Admin Login form with credentials

42
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 16: Login form with password visible

Figure 17: After successful admin login

43
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Customer Registration

Test No 3
Objective: To register as a customer.
Action: → The register link was clicked on the navigation menu.
→ The registration form was filled with valid details.
→ The register button was clicked.
→The registration link was confirmed via email.
Expected Result: The user will be registered as a customer.
Actual Result: The user was registered as a customer.
Conclusion: The test was successful.

Table 22. Test Case 3: Register Customer

Figure 18: Registration form with details

44
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 19: Email Confirmation Message

Figure 20: Confirming Email

45
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 21: Registration Successful Message

46
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Customer Registration

Test No 4
Objective To log in as customer.
Action → The login link was clicked on the navigation menu.
→ The login form was filled with valid credentials.
→ The login button was clicked.
Expected Result The customer will be logged in.
Actual Result The customer was logged in.
Conclusion The test was successful.

Table 23. Test Case 4: Customer Login

Figure 22. Customer Login with credentials

47
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 23. After Successful Customer Login

48
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Staff Registration

Test No 5
Objective To register a staff.
Action → The users menu was clicked and the staffs was clicked by
the admin.
→ The add a new staff button was clicked.
→ The staff details were filled.
→ The register button was clicked.
Expected Result The staff will be registered.
Actual Result The staff was registered.
Conclusion The test was successful.
Table 24. Test Case 5: Staff Registration

Figure 24. Selecting staff menu

Figure 25. Filling in staff details

49
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 26. Staff Registered Successfully

50
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Staff Login

Test No 6
Objective To login as staff.
Action → The login link was clicked on the navigation menu.
→ The login form was filled with valid credentials.
→ The login button was clicked.
Expected Result The staff will be logged in.
Actual Result The staff was logged in.
Conclusion The test was successful.

Table 25: Test Case 6: Staff Login

Figure 27: Staff Login with credentials

51
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 28: Staff Login Successful

52
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Add Brands

Test No 7
Objective To add brands.
Action → Under the store menu, the Brands menu was clicked.
→ The add a new brand button was clicked.
→ The create button was clicked.
Expected Result The brand will be added.
Actual Result The brand was added.
Conclusion The test was successful.

Table 26: Test Case 7: Add Brands

Figure 29: Selecting brand in menu bar

Figure 30: Adding a new brand

53
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 31: Adding a new brand detail: 1

Figure 32: Adding a new brand detail: 2

54
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 33: Brand added Successfully

55
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

View Brands

Test No 8
Objective To view brands.
Action → Under the store menu, the Brands menu was clicked.
→ The info icon respective to vehicle was clicked.
→ The details were displayed.
Expected Result The brand details will be displayed.
Actual Result The brand details were displayed.
Conclusion The test was successful.

Table 27: Test Case 8: Viewing Brand Details

Figure 34: Clicking info icon

56
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 35: Brand detail displayed

57
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Edit Brand

Test No 9
Objective To edit brand details.
Action → Under the store menu, the Brands menu was clicked.
→ The edit icon respective to brand was clicked.
→ The details were edited and saved
Expected Result The brand details will be edited.
Actual Result The brand details were edited.
Conclusion The test was successful.
Table 28: Test Case 8: Edit Brand Detail

Figure 36: Clicking edit icon

58
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 37: Editing brand detail

Figure 38: Brand detail edited successfully

59
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Delete Brand

Test No 10
Objective To delete brand.
Action → Under the store menu, the Brands menu was clicked.
→ The delete icon respective to brand was clicked.
→ The delete button was clicked.
Expected Result The brand details will be edited.
Actual Result The brand details were edited.
Conclusion The test was successful.
Table 29: Test Case 12: Delete Vehicle

Figure 39: Clicking delete icon

60
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 40: Clicking delete button

Figure 41: Vehicle deleted successfully

61
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Add Vehicles

Test No 11
Objective To add vehicles.
Action → Under the store menu, the Vehicles menu was clicked.
→ The add a new vehicle button was clicked.
→ The create button was clicked.
Expected Result The brand will be added.
Actual Result The brand was added.
Conclusion The test was successful.

Table 30. Test Case 11: Add vehicles

Figure 42: Selecting vehicles in menu bar

Figure 43: Clicking add a new vehicle button

62
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 44: Adding vehicle details : 1

Figure 45: Adding vehicle details: 2

63
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 46: Vehicle added successfully

Figure 47: Added Vehicle in Home Page

64
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

View Vehicle Details

Test No 12
Objective To view vehicles details.
Action → Under the store menu, the Vehicles menu was clicked.
→ The info icon respective to the vehicle was clicked.
Expected Result The vehicle details will be displayed.
Actual Result The vehicle details were displayed.
Conclusion The test was successful.

Table 31: Test Case 12: View Vehicle Detail

Figure 48: Click info icon

65
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 49: Vehicle Details

66
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

7.13. Edit Vehicle Details

Test No 13
Objective To edit vehicle details.
Action → Under the store menu, the Vehicles menu was clicked.
→ The edit icon respective to vehicle was clicked.
→ The details were edited and updated.
Expected Result The vehicle details will be edited.
Actual Result The vehicle details were edited.
Conclusion The test was successful.

Table 32: Test Case 13: Edit Vehicle Detail

Figure 50: Clicking edit icon

67
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 51: Editing Vehicle Details

Figure 52: Saving Vehicle Details

68
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 53: Vehicle detail updated successfully

69
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

7.14. Delete Vehicle

Test No 14
Objective To delete vehicle.
Action → Under the store menu, the Vehicles menu was clicked.
→ The delete icon respective to vehicle was clicked.
→ The delete button was clicked.
Expected Result The brand details will be deleted.
Actual Result The brand details were deleted.
Conclusion The test was successful.

Table 33: Test Case 14: Delete Vehicle

Figure 54: Clicking delete icon

70
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 55: Deleting vehicle

Figure 56: Vehicle deleted successfully

71
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Creating Offer

Test No 15
Objective To create offers.
Action → Under the store menu, the Offers menu was clicked.
→ The add a new offer button was clicked.
→ The create button was clicked.
Expected Result The offer will be added.
Actual Result The offer was added.
Conclusion The test was successful.

Table 34: Test Case 11: Add Offers

Figure 57: Clicking on Offers Menu

Figure 58: Adding new offer

72
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 59: Adding offer detail

Figure 60: Creating offer

73
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 61: Offer Created Successfully

Figure 62: Offer displayed in home page

74
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

View Offer Details

Test No 16
Objective To view offer details.
Action → Under the store menu, the Offers menu was clicked.
→ The info icon respective to the offer was clicked.
Expected Result The offer details will be displayed.
Actual Result The offer details were displayed.
Conclusion The test was successful.
Table 35: Test Case 12: View Offer Detail

Figure 63: Clicking info icon

75
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 64: Viewing offer details

76
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Delete Offer

Test No 17
Objective To delete vehicle.
Action → Under the store menu, the Vehicles menu was clicked.
→ The delete icon respective to vehicle was clicked.
→ The delete button was clicked.
Expected Result The offer details will be deleted
Actual Result The offer details were deleted.
Conclusion The test was successful.

Table 36: Test Case 17: Delete Offer

Figure 65: Clicking on delete icon

77
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 66: Deleting offer

Figure 67: Offer deleted successfully

78
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

7.18. Uploading Documents

Test No 18
Objective To upload documents.
Action → Under the username, the My Documents menu was clicked.
→ The delete icon respective to vehicle was clicked.
→ The delete button was clicked.
Expected Result The documents will be updated.
Actual Result The documents were updated.
Conclusion The test was successful.

Table 37: Test Case 18: Upload Documents

Figure 68: Clicking on My Documents

Figure 69: Uploading Documents

79
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 70: Documents Uploaded Successfully

80
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Requesting Vehicle Renting

Test No 19
Objective To rent a vehicle.
Action → In the home page the details button on the vehicle to be
rented was clicked.
→ The rent this button was clicked.
→ The dates were entered, and the button was clicked.
Expected Result The vehicle will be requested for renting.
Actual Result The vehicle was requested for renting.
Conclusion The test was successful.

Table 38: Test Case 19: Requesting vehicle renting

Figure 71: Clicking on details of selected vehicle

81
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 72: Clicking on rent this vehicle

Figure 73: Selecting Dates to request vehicle renting

82
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 74: Renting request successful

83
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Approving Vehicle Renting

Test No 20
Objective To approve vehicle renting.
Action → In the navigation bar under the rental stories the requested
rents menu was clicked.
→ The approve button was clicked.
→ A mail is sent to customer.
Expected Result The vehicle will be approved for renting.
Actual Result The vehicle was approved for renting.
Conclusion The test was successful.

Table 39: Test Case 20: Approving Vehicle Renting

Figure 75: Clicking Requested rents on menu

Figure 76: Approving rents

84
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 77: Rent approved successfully

Figure 78: Notifying customer for successful rent

85
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

View Currently Renting

Test No 21
Objective To view currently renting vehicle renting by admin and
customer.
Action Admin
→ In the navigation bar under the rental stories the current rents
menu was clicked.
Customer
→ In the navigation bar under my history the currently rented
menu was clicked.
Expected Result The currently renting vehicles will be displayed.
Actual Result The currently renting vehicles were displayed.
Conclusion The test was successful.
Table 40: Test Case 21: Currently Renting Vehicles

Figure 79: Current rents viewed by admin

86
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 80: Currently renting viewed by customer

87
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Returning Vehicle

Test No 22
Objective To return vehicle of a customer
Action → In the navigation bar under the rental stories the current rents
menu was clicked.
→ The return button was clicked.
Expected Result The vehicle will be returned and available for renting.
Actual Result The vehicle was returned and available for renting.
Conclusion The test was successful.

Table 41: Test Case 22: Returning Vehicle

Figure 81: Returning Vehicle

88
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 82: Vehicle Returned successfully

89
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Filling Damage Request Form

Test No 23
Objective To fill damage request form.
Action → In the navigation bar under my history the currently rented
menu was clicked.
→ The fill damage form button was clicked.
→ The submit a request button was clicked.
Expected Result The damage request will be notified.
Actual Result The damage request will be notified.
Conclusion The test was successful.

Table 42: Test Case 23: Damage Request

Figure 83: Clicking Fill Damage From

90
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 84: Entering damage details

Figure 85: Damage request notified successfully

91
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Updating Damage Details

Test No 24
Objective To update damage details.
Action → In the navigation bar the Damage Request menu was clicked.
→ The info icon respective to the request was clicked.
→ The cost was entered, and the payment done was selected
accordingly.
→ The update button was clicked.
Expected Result The damage request will be updated.
Actual Result The damage request will be updated.
Conclusion The test was successful.

Table 43: Test Case 24: Updating Damage Details

Figure 86: Clicking on Damage Request on Menu

Figure 87: Clicking on info icon

92
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 88: Updating damage details

Figure 89: Damage details updated

93
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Renting with Damage Cost Not Paid

Test No 25
Objective To rent vehicle while damage cost is not paid.
Action → In home page the details button of the respective vehicle was
clicked.
Expected Result The customer will not be able to rent.
Actual Result The customer was not able to rent.
Conclusion The test was successful.

Table 44: Test Case 25: Renting with damage cost not paid

Figure 90: User not allowed to rent

94
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Login with invalid credentials

Test No 26
Objective To login with invalid credentials.
Action → The login form was filled with invalid credentials and the login
button was clicked.
Expected Result An invalid message will be displayed
Actual Result An invalid message was displayed
Conclusion The test was successful.

Table 45: Test Case 26: Login with invalid credentials

Figure 91: Entering Invalid login credentials

95
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 92: Invalid Login attempt

96
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Registering with empty fields

Test No 27
Objective To register with empty fields.
Action → The registration form was filled with one empty field and the
register button was clicked.
Expected Result An invalid message will be displayed alongside the empty field.
Actual Result An invalid message was displayed alongside the empty field.
Conclusion The test was successful.

Table 46: Test Case 27: Registering with empty field

Figure 93: Empty Field Validation (1)

97
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Figure 94: Empty Field Validation (2)

98
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

Stats and Sales

Test No 28
Objective To view stats and sales of system.
Action → The sales menu was clicked on the navigation bar.
Expected Result The sales and stats will be displayed.
Actual Result The sales and stats will be displayed.
Conclusion The test was successful.
Table 47. Test Case 28 - Sales and Stats

Figure 95. Sales and Stats

99
19030706 | 20048831 | 20049006 | 20049028 | 20049051
CS6004NI Application Development

8. Conclusion

Our group was tasked with a complex project - developing a management system for a
Rental system that can handle inventory, rentals, rental requests, damages, and offers
using C# programming language and .NET technology. We found ourselves facing
challenges early on as we navigated the unfamiliar territory of C# programming and .NET
technology. However, our tutor and lecturer were a great source of support, providing us
with resources and guidance that helped us understand the technology better.

As we delved deeper into the project, we encountered roadblocks that made the
development process more challenging. But instead of giving up, we turned to research
and collaboration to overcome these obstacles. With each challenge we overcame, we
grew more confident in our abilities to develop a robust and efficient management system.

Despite the enormity of the project, we managed to complete and submit it on time. We
put in a tremendous amount of effort and worked tirelessly to ensure the project was not
only functional but also aesthetically pleasing and user-friendly.

Overall, the experience of creating a web application using C# and .NET technology was
an invaluable learning opportunity for us. We gained a wealth of knowledge and skills,
including project management, collaboration, and technical skills such as programming,
database management, and user interface design. We feel confident that the skills we
acquired during this project will prove useful in our future endeavors.

100
19030706 | 20048831 | 20049006 | 20049028 | 20049051

You might also like