Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 90

PROJECT REPORT

ON

HOUSE MAINTENANCE SERVICES SYSTEM

FOR

YOURICSOFT PVT. LTD.

BY

DAMINI DEVABA MHASKE

(SEAT NO.- 12134)

SAVITRIBAI PHULE PUNE UNIVERSITY

MASTER OF COMPUTER APPLICATION

PIMPRI CHINCHWAD COLLEGE OF ENGINEERING

SECTOR NO. 26, PRADHIKARAN, NIGDI, PUNE –

411044.

2020-2021
Certificate from Company
Certificate from Institute
Acknowledgement

It gives us great pleasure in presenting the preliminary project report on


“Houmain Property Management System”
I would like to express my special gratitude and thanks to Prof. Rajkamal
Sangole sir (Asst. Professor-MCA Department) (Internal Project Guide) for
giving me such attention and time.
I am highly indebted to Mrs. Anjana Arakerimath (HOD Dept. of MCA) Pimpri
Chinchwad College of Engineering, Nigadi, Pune for her guidance and
constant supervision as well as for providing necessary information regarding
the project and for their support in completing the project.
It is great pleasure to express my sincere gratitude to Dr. G. N. Kulkarni
Sir(Principal) Pimpri Chinchwad College of Engineering, Nigadi, Pune, for
providing us with excellent facilities and valuable guidance.
I would like to express my gratitude towards Pimpri Chinchwad College of
Engineering MCA Dept. for their kind co-operation and encouragement which
help me in completion of this project.
My thanks and appreciations also go to staff members for helping me in
developing the project and people who have willingly helped me out with their
abilities.

Date: Damini Mhaske


Table of Content

Certificate from Company………………………………………….4

Certificate from Institute…………………………………………….5

Acknowledgement…………………………………………………..6

CHAPTER 1 : INTRODUCTION……………………………………9

1.1 Company Profile ………………………………………………..10

1.2 Existing System and Need for System………………………..11

1.3 Scope of Work……………………………………………………13

1.4 Operating Environment - Hardware and Software…………...14

1.5 Detail Description of Technology Used………………………..15

CHAPTER 2 : PROPOSED

SYSTEM………………………………19

2.1 Proposed

System………………………………………………..20

2.2 Objectives of

System……………………………………………21

2.3 User

Requirements………………………………………………22

2.4 Work Flow

Diagram………………………………………………24
CHAPTER 3 : ANALYSIS &

DESIGN………………………………25

3.1 Class

Diagram…………………………………………………….26

3.2 Use Case

Diagrams………………………………………………27

3.3 Component

Diagram……………………………………………..28

3.4 Deployment

Diagram…………………………………………29

3.5 Module Hierarchy

Diagram………………………………….30

3.6 Module

Specifications……………………………………….31

3.7 Input and Output Screens

………………………………….32

3.8 Table specifications

…………………………………………45

3.8.1 Entity Relationship Diagram (ERD)

………………………45
3.8.2 Table

Design……………………………………………….46

3.9 Test Procedures and

Implementation……………………..49

CHAPTER 4 : USER

MANUAL…………………………………55

4.1 User

Manual………………………………………………….56

DRAWBACKS AND

LIMITATIONS……………………………68

PROPOSED ENHANCEMENTS………………………………

69

CONCLUSION…………………………………………………..

70

BIBLIOGRAPHY………………………………………………..

71

ANNEXURES……………………………………………………

72
CHAPTER 1:

Introduction
1.1 Company Profile

Youricsoft Pvt. Ltd.

Youricsoft, founded in the year 2018 and located in Pune, India, in order to
help our Clients with IT solutions. A complete Information Technology (IT)
solution company dealing in software to hardware along with consulting client
in their problems. Youricsoft has friendly and expert professionals provides
customize IT solutions to clients using advanced technologies to improve
their productivity and efficiency.

At Youricsoft make sure client are in sync with technologies to meet their
business needs. To make a project successful, Youficsoft team understands
the project precisely by understanding client’s problem and their pain area.
Using there work precess they plan the project properly and design it to
provide on time delivery with assured quality.

They are providing different services to clients in all the various sectors. With
self-motivated ideas and concepts, Also focused on transform thoughts into
creation explaining their tag line ‘You Think, We Create’, helping clients to
find solution by converting their ideas to solve their problems.

Address:
Youricsoft Software (India) Pvt. Ltd.,
Office No 404, Crossroad Bld. SN-130,
Bhumkar Chowk, Wakad, Pune 411057
Phone No.: +91 87932 28861

Website: https://www.youricsoft.com/
1.2 Existing System and Need for System

Existing System:

In the existing system, Owner worried about the property maintenance and
the tenant has that headache to maintain and solve the property problems
like Plumbing, Electrical, Electronic, and Home Paint. For those services they
can go through a personal meeting or mobile call. It is difficult for the tenant
to find any service in an emergency at any time and place.

The main problem is to maintain the property and that is not considered in the
current legacy process, we are trying to tackle that problem by providing the
WIN-WIN situation for both the owner and Tenant.

We have observed what are the limitations in existing system:


 Existing system is offline.
 Difficult to manage records.
 No time limit for service to be provided.
 No guarantied service.
 Difficult to find paper service provider.
 24 hours service is not available.
 No security.
 Owner need to take the complete responsibility of Property
 Tenant need to keep the property well maintained.
 Owner need to keep eye on Property accounting individually.
 Its Owner headache to find a new Tenant if older one gets released.
Need for system:

In this fast growing technology, we still have to take the appointment of


person who solve the problems related to our daily life like plumbing related
problem, mechanical problem, electrical problem, electronic problem, pest
control etc.

 Now a days for any services like Plumbing, Electrical, Electronic,


Mechanical, Pest Control, Home Paint and Machine Repairing, if any
customer wants to use this type of services than they can go through a
personal meeting or mobile call. It is difficult for customer to find any
service in emergency at any time and place.

 So with this project we are going to develop website and android app
which will help customers to find out solution for any problems related to
Plumbing, Electrical, Electronic, and Mechanical, Pest Control, Home
Paint and Machine Repairing service.

 Our website and android application will provide a platform for all kind of
house hold services at any time and place. Our project will also provide
the facilities like security, online payment, map navigation and also
advertisement.

So, our purpose is to overcome this limitation with following features.

House hold services easy available.

To provide house hold services any time.

Easy online payment.

Saving of time.
Make available house hold services through website & application.

1.3 Scope of Work

The scope of our project is to designing a complete environment to provide a


safe and user friendly environment for online service booking. The main aim
of the project is to provider an easy to use application for services provided
for customer.

We often get frustrated while taking the appointment of service provider


because there the many problems are occur,  like the service provider is busy
art somewhere else or  his not receiving our call or his cost is very high
according to problem. So in this project we will remove this headache.
1.4 Operating Environment

Hardware Requirements:

• For Server Side:


▪ Processor - i3
▪ RAM - 8 GB
▪ Hard Disk - 2 TB

• For Client Side:

▪ Processor - Pentium IV
▪ RAM - 2 GB
▪ Hard Disk - 2 GB

Software Requirements:

• For Client Side:

▪ Operating System - Windows 7 or higher and Linux


▪ Browser - Google Chrome, Mozilla Firefox

• For Server Side:

▪ Database - MySQL 1.6 or above


▪ Frontend - HTML5, CSS3, Bootstrap,JavaScript, Angular, Ionic
▪ Backend - Java, Spring, Spring Boot, JPA
▪ Server - Tomcat Server 7.0 or above
1.5 Brief Description of Technologies Used

 Java:

Java is a general-purpose computer-programming language that is


concurrent, class-based, object-oriented, and specifically designed to have
as few implementation dependencies as possible. It is intended to let
application developers "write once, run anywhere" (WORA), meaning that
compiled Java code can run on all platforms that support Java without the
need for recompilation. Java applications are typically compiled to bytecode
that can run on any Java virtual machine (JVM) regardless of computer
architecture.

The language was initially called Oak after an oak tree that stood outside
Gosling's office. Later the project went by the name Green and was finally
renamed Java, from Java coffee. Gosling designed Java with a C/C++-style
syntax that system and application programmers would find familiar.

 Angular:

Angular is a platform and framework for building single-page client


applications using HTML and TypeScript. Angular is written in TypeScript. It
implements core and optional functionality as a set of TypeScript libraries that
you import into your apps.The architecture of an Angular application relies on
certain fundamental concepts. The basic building blocks of the Angular
framework are Angular components that are organized into NgModules.
NgModules collect related code into functional sets; an Angular app is
defined by a set of NgModules. An app always has at least a root module that
enables bootstrapping, and typically has many more feature modules.

Components define views, which are sets of screen elements that Angular


can choose among and modify according to your program logic and
data.Components use services, which provide specific functionality not
directly related to views. Service providers can be injected into components
as dependencies, making your code modular, reusable, and efficient.

 HTML:

Hypertext Markup Language (HTML), the languages of the World


Wide Web (www), allows users to produce web pages that include text,
graphics and pointer to other web pages (Hyperlinks). HTML is written in the
form of labels (known as tags), surrounded by angle brackets. HTML can
also describe, to some degree, the appearance and semantics of a
document, and can include embedded scripting language code which can
affect the behavior of web browsers and other HTML processors. Used to
create the User Interface.

 CSS:

Cascading Style Sheets (CSS) is a style sheet language used for


describing the presentation semantics (the look and formatting) of a
document written in a markup language. It is designed primarily to enable the
separation of document content (written in HTML or a similar markup
language) from document presentation including elements such as the
layout, colors and fonts. Used to create the designing for the User Interface.
 JavaScript:

JavaScript is scripting language used for client-side scripting


JavaScript developed by Netscape in 1995 as a method for validating forms
and providing interactive content to website. JavaScript was designed to add
interactivity to HTML pages JavaScript is a scripting language. A scripting
language is a lightweight programming language JavaScript is usually
embedded directly into HTML pages. JavaScript is an interpreted language.
Used to perform browser actions on the User interface.

 DB -MySQL:

A database is a collection of data treated as a unit. The purpose of a


database is to store and retrieve related information. A database server is the
key to solving the problems of information management.

In general, a server reliably manages a large amount of data in a


multiuser environment so that many users can concurrently access the same
data. MySQL is an open source relational database management system.
Used to create database and handle operations.

 Bootstrap:

Bootstrap is a free and open source front end development framework


for the creation of websites and web apps. The Bootstrap framework is built
on HTML, CSS, and JavaScript (JS) to facilitate the development of
responsive, mobile-first sites and apps.
Responsive design makes it possible for a web page or app to detect the
visitor’s screen size and orientation and automatically adapt the display
accordingly: the mobile first approach assumes that smartphones, tablets and

task-specific mobile apps are employee’s primary tools for getting work done
and addresses the requirements of those technologies.

 Framework:

IONIC:

Ionic Framework is an open source UI toolkit for building performant,


high-quality mobile and desktop apps using web technologies — HTML,
CSS, and JavaScript - with integrations for popular frameworks
like Angular, React, and Vue. Ionic Framework focuses on the frontend UX
and UI interaction of an app - UI controls, interactions, gestures, animations.

Spring Boot:

Spring Boot is an open source Java-based framework used to create a


micro Service. It is developed by Pivotal Team and is used to build stand-
alone and production ready spring applications.
CHAPTER 2:

Proposed System
2.1 Proposed System

The Web Application for the House maintenance Services is a Web


Based Application to automate the monitoring and tracking of the progress of
each employee’s quality of work and generation of reports for various
activities under the Quality Assurance Team.

The aim of project is to provide the services to the customers at reasonable


rate. Through this project provide the facilities to the customer such as
registration, display profile of service provider, advertisement,map navigation
etc.

In the proposed system, all the user and House Maintenance related details
will be maintained in a well-structured format and track of the transactions
between several aspects of the automated test designed for the teams and
distributed to their members.
2.2 Objective of System

 The primary objective of the web application for house


maintenance services is about delivering the home services at
the door step just by one click.

 Online system for house maintenance services can be used by


any authorized user intending to seek forhouse maintenance
services through an ingenious web based application or a
mobile application.
.
 To provide an authenticated and authorized login module for
the users such as service seekers, service providers and the
admin, by providing appropriate credentials at the time of
registration.

 To develop a web based application system for opting house


maintenance services and to develop an identical mobile
application for opting the services.

 To provide a secured online payment gateway for service


seekers.

 To acknowledge the conformation of services opted by the


users.
2.3 User Requirement

Owner:

The owner can perform following tasks on application:

1. Register to the system and update correct information to system


2. Add Property and update the correct property information to System.
3. Update property rent and information
4. Disable or delete property
5. Check the monthly rent payout.

Tenant:

1. View property details and send Request to the Admin.


2. Book a property
3. Pay rent to system so system can pay the rent to owner
4. Create ticket for maintenance services

Inspector:

1. Perform inspection for newly added property.


2. Verify the property details and update the correct information to system
3. Declined the property if the provided information is not correct
4. Perform the periodic inspection for property maintenance.
Admin:

Administrator has maximum privileges to access the system. He maintains


user login details, can assign access rights to a user, can manipulate data
and do all the transactions. Administrator is the super-user of the system.

1. Admin can verify service provider and customer.


2. Admin manages all the categories of service.
3. Admin can assign different task to inspector for property verification and
its problems
4. Admin can take the payment from the customer.
5. Admin can add the different users to the system (for eg. Inspector,
System Users, Local User)
6. Admin can Add and update the property information.
7. Admin can enable or disable the property and owner
8. Admin can enable or disable the Service provider account.

Service Provider:

TheService Provider can perform following tasks on application:

1. Service provider can register to the system.


2. Service Provider can add or delete the services provided by them
3. service provider can provide the services to Tenant
4. Service Provider can send the assigned ticket information.
2.4 Workflow Diagram
CHAPTER 3 :

ANALYSIS & DESIGN

3.1 Class Diagram


3.2 Use Case Diagram
3.3 Component Diagram
3.4 Deployment Diagram
3.5 Module Hierarchy Diagram
3.6 Module Specifications
Sprint 1 - Owners Module

 Add Menu coming from menu.json file with a mentioned access specifier
 Add Owner Information Frontend
 A dashboard that contains a welcome message (Later will replace this page with
status)
 Display Owner List Frontend
 Display Owner List with Pagination Logic
 Add Owner Information Backend
 Return Owner Information based on the Unique Owner Id Backend
 Disable Owner based on unique Owner Id backend
 Display Owner Information with All details Frontend
 Disable Owner Frontend

Sprint 2 - Property Module

 View Only owner Information - Provide the Edit option from that
 Add Property
 Amenities Master
 View Property
 Enable and Disable Property
 List All Properties

3.7 Input and Output Screens


Input Screens :

1.Registration Screen - Owner and Tenant

2. Login Screen
3. Forgot Password Screen

4. Add Owner 1
5. Add Owner 2

6. Add Property 1
7. Add Tenant
8.Add System User

Output Screens
1. Owner Tenant Registration

2. Registration Response

3. User Dashboard Screen


4. Owner Profile Completion

5. Owner Added Successfully


6. Register Owner List

7. Display Owner Information


8. Owner Registered Properties

9. Registered Property
10. Register Property Details

11. Register Property To Admin Dashboard


12. Property Assigned to Inspector

13. Tenant Profile Completion


14. Total Register Tenant
15. Tenant Detail Page

16. Total Available Properties for Rent


3.8 Table Specifications

3.8.1 Entity Relationship Diagram

3.8.2 Table Design


RoleMaster
Sr No columnName Type Size Constraints
1 roleId int 11 PK
2 role varchar 25 Not Null
3 roleDescription varchar 255 Not Null

User
Sr No columnName Type Size Constraints
1 userId int 11 PK
2 firstname varchar 255 Not Null
3 lastname varchar 255 Not Null
4 emailid varchar 255 Not Null
5 mobileNumber varchar 15 Not Null
6 password varchar 1000 Not Null
7 active varchar 50 Not Null
8 dateOfBirth date Null
9 photo blob Null

UserRoleMapping
Sr No columnName Type Size Constraints
1 mappingId int 11 PK
2 userId int 11 FK
3 roleId int 11 FK

Owner
Sr No columnName Type Size Constraints
1 ownerId int 11 PK
2 userId int 11 FK
3 EmailId varchar 255 Not Null
4 alternateEmailId varchar 255 Null
5 mobileNumber varchar 15 Not Null
6 Company Name varchar 255 Null
7 address1 varchar 255 Not Null
8 address2 varchar 255 Null
9 city varchar 100 Not Null
10 state varchar 100 Not Null
11 country varchar 100 Not Null
12 zipCode varchar 10 Not Null
13 updatedBy int 11 FK
14 updatedOn datetime Not Null

Property
Sr No columnName Type Size Constraints
1 propertyId int 11 PK
2 propertyTitle varchar 1000 Not Null
3 typeId int 11 FK
4 lat decimal 6,4 Null
5 lng decimal 6,4 Null
6 status ENUM Not Null
7 propertyDescription varchar 1000 Null
8 address1 varchar 255 Not Null
9 address2 varchar 255 Null
10 city varchar 100 Not Null
11 state varchar 100 Not Null
12 country varchar 100 Not Null
13 zipCode varchar 10 Not Null
14 updatedBy int 11 FK
15 updatedOn datetime Not Null

PropertyOwnerMapping
Sr No columnName Type Size Constraints
1 mappingId int 11 PK
2 ownerId int 11 FK
3 propertyId int 11 FK
4 registerDate datetime Null
5 updatedBy int 11 FK
6 updatedOn datetime Not Null

propertyType
Sr No columnName Type Size Constraints
1 typeId int 11 PK
2 type varchar 100 Not Null
3 description varchar 1000 Null
PropertyUnit
Sr No columnName Type Size Constraints
1 propertyUnitId int 11 PK
2 propertyid int 11 FK
3 typeId int 11 FK
4 unit int 3 Not Null
5 address varchar 1000 Not Null
6 bed int Null
7 gallary int Null
8 bath int Null
9 squareFeet decimal 10,2 Not Null
10 carpet decimal 10,2 Null
11 sellable decimal 10,2 Null
12 active boolean
13 updatedBy int 11 FK
14 updatedOn datetime Not Null

propertyPhotos
Sr No columnName Type Size Constraints
1 propertyPhotoId int 11 PK
2 propertyId int 11 FK
3 propertyUnitId int 11 FK
4 photo blob Null
5 photoLink varchar 1000 Null
6 altText varchar 255 Null
7 parking decimal 4,2 Null
8 parkingArea decimal 4,2 Null
9 active boolean Null
10 updatedBy int 11 FK
11 updatedOn datetime Not Null

Rent
Sr No columnName Type Size Constraints
1 propertyId int 11 PK
2 propertyUnitId int 11 FK
3 minRent decimal 10,2 Not Null
4 maxRent decimal 10,2 Not Null
5 securityDeposite decimal 10,2 Null
6 updatedBy int 11 FK
7 updatedOn datetime Not Null

Tanent
Sr No columnName Type Size Constraints
1 tanentId int 11 PK
2 userId int 11 FK
3 taxPayerId varchar 255 Null
4 emergencyContact varchar 255 Null
5 relationship varchar 100 Null
6 emailId varchar 255 Null
7 phoneNumber varchar 15 Null

3.9 Test Procedures and Implementation

Testing is the important step of software development. An elaborate testing of

the data is prepared and the system is using the test data. While doing

testing, errors are noted and correction is made. The users are trained to
operate the developed system. Both hardware and software securities are

made to run the developed system successfully. Here we have performed

test on various modules of the application by manual unit testing

methodology.

UNIT TESTING: Unit testing is a level of software testing where individual

units/ components of software are tested. The purpose is to validate that

each unit of the software performs as designed. A unit is the smallest testable

part of any software. Unit Testing will be done to test field validations,

navigation, functionality of the programs and its block. It is normally

performed by software developers themselves or their peers. In rare cases, it

may also be performed by independent software testers.

Login Module Test Report

Test Case Owner & Tenant Registration

Description Owner and Tenant should register with valid


email id

Expected User should get success message


Result

Actual Result Displaying success message

Status PASS
 

Test Case Owner & Tenant Registration with invalid input

Description User has provided incorrect inputs to firstname


lastname and invalid email Id

Expected System should provide error messages in front of


Result invalid fields and not move forward to next
process

Actual Result Displaying error messages

Status PASS

Test Case Existing user registration

Description If the user enters the existing username

Expected User should prompt the user with an existing


Result user message and not creating any entry in the
database

Actual Result System prompt user with an existing user


message and not create

Status PASS

 
Test Case Edit Owner & Tenant Information 

Description 1. After logged into the system show all profile


information based on roles like owner/Tenant.
2. Logged users should be able to edit their own
information.

3. Email and mobile number should be non-


editable.  

Expected 1. Users should get a success message.


Result
2. Update the edited information into the
database.

3. Need to show updated information on the


same page.   

Actual Result Displaying success message

Status PASS

Property Module Test Report


Test Case Provide propert inputs to Property

Description Provide the proper inputs for Property


Name, Description, Property Type, Unit
inputs.
With all the valid inputs property
information should store to database.

Expected Result If the inputs are valid then system should


store the information and generate one
unique id for stored property for unique
identification.

Actual Result With all the valid inputs system


generating valid unique id for property
and user will get prompted with that
return information

Status PASS
Test Case No Duplicate property for one owner

Description If user adding same dummy property for


himself then system should force him to
stop the execution.

Duplicate property for same user is not


allowed.

Expected Result We are creating one unque property id


for every property, So whenever we are
adding the property, the system should
check whether that information is
available already or not if no then system
should store the information else system
should prompt user with property id with
Duplication error message

Actual Result Actual result as expected

Status PASS
Test Case Request for Service

Description 1. Only tenants can do the request for service.

2. Listed all services on the property page.

3. Select at least one service before submitting


the form.

4. Should store requested data into the


database.    

Expected 1. Users should get a success message after


Result storing data into the database.

2. If the tenant does not select any service then


show a warning message.  

Actual Result Displaying success message

Status PASS
CHAPTER 4 :

USER MANUAL

Owner / Tenant Registration


This is the starting page for the system. With the single screen
Owner and Tenant can register. User can use the email id for
Login to the system.

Register screen offers drop down list to choose the registration


type(OWNER/TENANT).

Once user register successfully system will propmt user with


“Regitration Successful” message.

Now system will redirect user to login screen to enter into the
system.

Login Screen
On the login screen user can enter the previously registered
details to enter into the system.

If user is valid then system will prompt user with “Login


Successful” message else system will prompt the error message
by saying “Authentication Failed”.

If user facing issues to with the the user details then on the
same screen system has provided to reset the login credentials
by clicking on “Forgot Password” link. Now user will redirect to
the forgot password Screen.
Forgot Password Screen

Using this Screen user can reset his account password by


entering the register email id. So system can validate the user
and if valid then user will send an email with new credentials
else system will prompt user with “Invalid User Details”.
Dashboard Page

Once user authenticate successful user will rediect to the


specific page based on role.

Admin: Will redirect to Application Dashboard Page


Inspector: Will redirect to property Approval List page
Owner: Will redirect to Owner Registration Form page
Tenant: Will redirect to complete
Owner Profile Completion Page
Once owner login to the system, system will redirect to complete
his profile. System will populate the existing registered
information and ask user to fill the other information to process
further. With this form system will get the address related
information and tax related information from user.

Profile update success

Once user click on submit button system will prompt user with
Success message. If something went wrong at server side then
system will inform user and ask to contact admin user.
Add Property

Once Owner Registration success then owner can add the


property using “Add Property” sub menu from Property menu.

Here with this form owner need to provide the complete


information about the property and its location.

Once user submit the property the property will go for the
approval from inspector, Admin person can assign that property
to local inspector to visit property and approve the property for
public visibility. Until and unless inspector not approved it, the
property wont be visible for the tenant for its allocation (rent).
Registered Properties by Owner

Owner can check his registered properties from the system and
get the complete information about it and withdraw the property
from the tenant.

Only those property will be withdrawn who dosen’t assigned to


any tenant.
Admin Assign Property to Inspector

Owner has register the property with system, now system will
prompt System user to assign that property to local Inspector to
verify that property and fill the incomplete information.

Property Status Flow


INSPECTION -> APPROVED / REJECT -> ASSIGNED
->BOOKED -> DISABLED

Those are the 4 important phases for property


Inspector Property List Dashboard

Once admin assign that property to the Inspector, inspector will


see the assigned properties and change the property status
based on local visit and verified information.

Here Inspector has all the rights to approve and reject the
properties, Rejected property can be reapply for new inspection.

If the property approved by inspector then property is available


for tenant booking.

Tenant Profile Completion


Now we have added the property and assign property to owner
along the the property verification from the system inspector.
Now the property available for user (Tenant).

With this screen Tenant already fill some basic registration


information but system will required some more information for
future use.

With this form system will get the complete Tenant information
about its address verification.

Once Tenant registration completes then tenant can be able to


book the property.

Property List for Tenant Booking


Now tenant has all the facilities to search the property and book
it based on his choice.

With this screen tenant will get the complete information about
the property, and its locality.

Once user click on Book Now button, system will prompt user to
confirm, once confirm system will assign that property to the
user for Renting.
DRAWBACKS AND LIMITATIONS

PROJECT LIMITATION:

1.Admin has to manually initiate payment to the Property Owner.

2. There is no provision to resolve the issue if the Service Provider for

a specific service is not available.

3. There is no provision to avoid sudden increase in requested

service.
PROPOSED ENHANCEMENTS

This system provides the services which are most

frequently used. Further, the system may provide additional

services like Electronic repairing service, logistic transport

service, etc. If some service provider is not available in an area

or there is sudden increase in demand for service in a particular

area. To avoid such problems yearly reports and feedback can

be provided by the system which can be used in decision

making and planning.

The majority of the population has access to mobile so

integrated mobile applications specially for owners & tenants

can be created.
CONCLUSION

In this project, we have developed a web application that

helps owners to maintain their properties. Which ultimately helps

them reduce the lengthy process of constantly being in contact

with the tenant, finding the vendor, fixing the issue. Also, our

application helps owners to find the tenants and helps tenants to

find homes which makes a win-win situation for tenants as well

as owners of the property. For developing the web application

we have used technologies like angular, java and for databases,

we have used MySql.

Finally, I conclude that the system I have developed will be

helpful for the Admin/Owners/Tenants to help them to manage

all the home maintanance services appropriately.


BIBLIOGRAPHY

A bibliography is a list of all of the sources we have used

(whether referenced or not) in the process of researching our

work.

Web Application Development

1. Frontend Technology

a) AngularIO (https://www.angular.io)

b) W3schools (https://www.w3schools.com)

2. Java -

a) Java Brains (https://www.javabrains.io/)

b) StackOverflow (https://stackoverflow.com/)

c) SpringIO (https://spring.io/)

3. For Domain related Query

a) buildium.com (https://www.buildium.com/)

b) Housing.com (https://www.housing.com)
ANNEXURES:
Login.ts

import { TokenStorageService } from './../../shared/services/token-

storage.service';

import { AuthenticationService } from

'./../../shared/services/authentication.service';

import { Component, OnInit } from '@angular/core';

import { Router, ActivatedRoute } from '@angular/router';

import { FormBuilder, FormGroup, Validators } from '@angular/forms';

import {MatDialog, MatDialogModule} from '@angular/material/dialog';

import Swal from 'sweetalert2';

import { JwtHelperService } from '@auth0/angular-jwt';

@Component({

selector: 'app-signin',

templateUrl: './signin.component.html',

styleUrls: ['./signin.component.scss']

})

export class SigninComponent implements OnInit {

loginForm: FormGroup;

returnUrl: string;

errorMessage: "";
popupText: string;

iconText: string;

roles: string[] = [];

isLoginFailed: boolean;

isLoggedIn: boolean;

constructor(

private formBuilder: FormBuilder,

private route: ActivatedRoute,

private router: Router,

private authService : AuthenticationService,

public dialog: MatDialog,

private tokenStorage: TokenStorageService

) {}

public errorMessages = {

username:[

{type:'required',message:'Username is required'},

{type:'pattern',pattern:'Please enter valid email address'}

],

password:[

{type:'required',message:'Password is required'},

{type:'pattern',message:'Minimum 6 characters & Maximum 15 characters

& must contain at least 1 uppercase letter & 1 special character & 1 number'}

}
ngOnInit() {

this.router.navigate(['/dashboard']);

this.loginForm = this.formBuilder.group({

username: ["",[Validators.required , Validators.pattern("^[a-zA-Z0-9._%-]

+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$")]],

password:["",[Validators.required

]],

});

this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/';

get f() {

return this.loginForm.controls;

onSubmit() {

this.authService.login(this.loginForm).subscribe(

data => {

const helper = new JwtHelperService();

const decodedToken = helper.decodeToken(data['access_token']);

console.log(decodedToken);

this.StoreLoggedUserDetails(data,decodedToken);

},

err => {

this.iconText="error";

if(err.status === 401 ){

this.popupText=" Unauthorized - Username or Password is Incorrect";

this.openDialog(this.popupText,this.iconText);
}else if(err.status === 404){

this.popupText="Not Found - The Authentication URL is not valid";

this.openDialog(this.popupText,this.iconText);

}else if(err.status === 500){

this.popupText="Internal Server Error at Server Side.";

this.openDialog(this.popupText,this.iconText);

else{

this.popupText="Application Problem Please contact to Application

Administrator ";

this.openDialog(this.popupText,this.iconText);

);

openDialog(popupText,iconText){

Swal.fire({

icon: iconText,

title: popupText,

});

StoreLoggedUserDetails(data,decodedToken){

this.tokenStorage.saveToken(data['access_token']);
this.authService.getUserDetailsByUsername(decodedToken.user_name).sub

scribe(

data => {

var roleRedirect = {

'ADMIN_USER' : '/dashboard/applicant',

'INSPECTOR': '/dashboard/applicant',

'OWNER': '/dashboard/applicant',

'TENANT': '/property/showcase-property'

this.tokenStorage.saveUser(data['data']);

this.isLoginFailed = false;

this.isLoggedIn = true;

this.popupText="Login Succesfull";

this.iconText="success";

this.openDialog(this.popupText,this.iconText);

if(data && data['data']['roles']){

var roles = data['data']['roles'];

for(let role of roles ){

this.router.navigate([roleRedirect[role.roleName]]);

break;

},

err => {
this.iconText="error";

if(err.status === 401 ){

this.popupText=" Unauthorized - Username or Password is Incorrect";

this.openDialog(this.popupText,this.iconText);

}else if(err.status === 404){

this.popupText="Not Found - The Authentication URL is not valid";

this.openDialog(this.popupText,this.iconText);

}else if(err.status === 500){

this.popupText="Internal Server Error at Server Side.";

this.openDialog(this.popupText,this.iconText);

else{

this.popupText="Application Problem Please contact to Application

Administrator ";

this.openDialog(this.popupText,this.iconText);

);

}
Backend OwnerController.java

package com.youricsoft.houmain.controller;

import java.util.List;

import java.util.Optional;

import javax.annotation.Resource;

import org.springframework.http.HttpStatus;

import org.springframework.web.bind.annotation.RequestBody;

Import

org.springframework.web.bind.annotation.RequestMapping;

import

org.springframework.web.bind.annotation.RequestMethod;

import

org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;

import com.youricsoft.houmain.bo.ServerResponse;

import com.youricsoft.houmain.dto.OwnerDTO;

import com.youricsoft.houmain.dto.OwnerInterface;

import com.youricsoft.houmain.mapper.OwnerMapper;

import com.youricsoft.houmain.model.Owner;
import com.youricsoft.houmain.model.User;

import com.youricsoft.houmain.service.GenericService;

import com.youricsoft.houmain.service.OwnerService;

import com.youricsoft.houmain.service.PropertyService;

@RestController

@RequestMapping(value="/service/owner")

public class OwnerController {

@Resource private GenericService genericService;

@Resource private OwnerService ownerService;

@Resource private PropertyService propertyService;

@RequestMapping(value="/save",

method=RequestMethod.POST)

public ServerResponse<OwnerInterface>

saveOwner(@RequestBody OwnerDTO ownerDTO){

ServerResponse<OwnerInterface> response = new

ServerResponse<>();

Optional<Owner> existingUser =

ownerService.findByPrimaryEmail(ownerDTO.getPrimaryEmail()

);

if (existingUser.isPresent()) {
populateExistingOwner(existingUser.get(),

ownerDTO);

ownerService.save(existingUser.get());

response.setStatus(HttpStatus.OK);

response.setResponseCode(HttpStatus.OK.value());

response.setData(existingUser.get());

} else {

Owner savedOwner =

ownerService.registerOwner(ownerDTO);

if(savedOwner!=null && savedOwner.getId()>0) {

response.setStatus(HttpStatus.OK);

response.setResponseCode(HttpStatus.OK.value());

response.setData(savedOwner);

} else {

response.setStatus(HttpStatus.NOT_MODIFIED);

response.setResponseCode(HttpStatus.NOT_MODIFIED.value(

));

response.setData(savedOwner);
}

return response;

private void populateExistingOwner(Owner owner,

OwnerDTO ownerDTO) {

owner.setCompanyName(ownerDTO.getCompanyName()==null

? owner.getCompanyName() : ownerDTO.getCompanyName());

owner.setCity(ownerDTO.getCity()==null ?

owner.getCity() : ownerDTO.getCity());

owner.setCountry(ownerDTO.getCountry()==null ?

owner.getCountry() : ownerDTO.getCountry());

owner.setHomeNumber(ownerDTO.getHomeNumber()==null ?

owner.getHomeNumber() : ownerDTO.getHomeNumber());

owner.setMobileNumber(ownerDTO.getMobileNumber()==null ?

owner.getMobileNumber() : ownerDTO.getMobileNumber());
owner.setOfficeNumber(ownerDTO.getOfficeNumber()==null ?

owner.getOfficeNumber() : ownerDTO.getOfficeNumber());

owner.setState(ownerDTO.getState() ==null ?

owner.getState() : ownerDTO.getState());

owner.setStreetAddress(ownerDTO.getStreetAddress()

==null ? owner.getStreetAddress() :

ownerDTO.getStreetAddress());

owner.setTaxIdentityType(ownerDTO.getTaxIdentityType()

==null ? owner.getTaxIdentityType() :

ownerDTO.getTaxIdentityType());

owner.setTaxpayerId(ownerDTO.getTaxpayerId() ==null

? owner.getTaxpayerId() : ownerDTO.getTaxpayerId());

owner.setZip(ownerDTO.getZip() == null ?

owner.getZip() : ownerDTO.getZip());

owner.setStatus(1);

@RequestMapping(value="/get",

method=RequestMethod.GET, consumes="application/json")
public ServerResponse<OwnerDTO>

getOwner(@RequestParam("ownerId") long id){

ServerResponse<OwnerDTO> response = new

ServerResponse<OwnerDTO>();

Optional<Owner> existingOwner =

ownerService.findById(id);

if(existingOwner.isPresent()) {

OwnerDTO dto =

OwnerMapper.INSTANCE.ownerTOOwnerDTO(existingOwner.

get());

dto.setProperties(propertyService.findOwnerProperties(id));

response.setStatus(HttpStatus.OK);

response.setResponseCode(HttpStatus.OK.value());

response.setData(dto);

}else {

response.setStatus(HttpStatus.NOT_FOUND);

response.setResponseCode(HttpStatus.NOT_FOUND.value());

return response;
}

private void populateUserDetails(OwnerDTO ownerDTO,

User user) {

ownerDTO.setFirstName(user.getFirstName());

ownerDTO.setLastName(user.getLastName());

ownerDTO.setStatus(user.getUserStatus()?1:0);

@RequestMapping(value="/getAll",

method=RequestMethod.GET)

public ServerResponse<List<Owner>> getAllOwners(){

ServerResponse<List<Owner>> serverResponse = new

ServerResponse<>();

List<Owner> ownerList = ownerService.findAll();

if(ownerList.isEmpty()) {

serverResponse.setStatus(HttpStatus.NO_CONTENT);

serverResponse.setResponseCode(HttpStatus.NO_CONTENT.

value());
}

else {

serverResponse.setStatus(HttpStatus.OK);

serverResponse.setResponseCode(HttpStatus.OK.value());

serverResponse.setData(ownerList);

return serverResponse;

@RequestMapping(value="/get",

method=RequestMethod.PUT, consumes="application/json")

public ServerResponse<Owner>

disableOwner(@RequestParam("OwnerId") long id){

ServerResponse<Owner> response = new

ServerResponse<Owner>();

Optional<Owner> existingOwner =

ownerService.findById(id);

if(existingOwner==null) {

response.setStatus(HttpStatus.NOT_FOUND);
response.setResponseCode(HttpStatus.NOT_FOUND.value());

}else {

Owner updatedOwner =

genericService.disableOwner(existingOwner.get());

response.setStatus(HttpStatus.OK);

response.setResponseCode(HttpStatus.OK.value());

response.setData(updatedOwner);

return response;

You might also like