Download as pdf or txt
Download as pdf or txt
You are on page 1of 47

A Major Project Report On

DONATEEASE: MOBILIZING HUMANITY


FOR NOBLE CAUSES VIA DIGITAL
DONATIONS
Submitted in fulfillment of the requirements for the award of the
Bachelor of Technology
In
Department of Computer Science and Engineering
By
Bingi Karthika 20241A05I7
K. Srilekha 20241A05J7
Konchada Harshitha 20241A05K0
Malloju Bhavana 21245A0520

Under the Esteemed guidance of


Mrs. KVSL Harika

Assistant Professor,
Dept of CSE

Department of Computer Science and Engineering


GOKARAJU RANGARAJU INSTITUTE OF ENGINEERING AND TECHNOLOGY
(Autonomous)

Bachupalli, Kukatpally, Hyderabad,Telangana,India,500090


2023-2024

I
GOKARAJU RANGARAJU
INSTITUTE OF ENGINEERING AND TECHNOLOGY
(Autonomous)

CERTIFICATE

This is to certify that the major project entitled “DonateEase: Mobilizing Humanity for
Noble Causes Via Digital Donations” is submitted by Bingi Karthika (20241A05I7), K.
Srilekha (20241A05J7), Konchada Harshitha (20241A05K0), Malloju Bhavana
(21245A0520) in fulfillment of the award of a degree in BACHELOR OF TECHNOLOGY in
Computer Science and Engineering during the academic year 2023-2024.

INTERNAL GUIDE HEAD OF THE DEPARTMENT


Mrs. KVSL Harika Dr. B. SANKARA BABU
Assistant Professor Professor

EXTERNAL EXAMINER

II
Many people helped us directly and indirectly to complete our project successfully. We
would like to take this opportunity to thank one and all. First, we wish to express our deep
gratitude to our internal guide Mrs. KVSL Harika, Assistant Professor, Department of
CSE for his support in the completion of our project report. We wish to express our honest
and sincere thanks to Dr. B. Sankara Babu, HOD, Department of CSE, and to our principal
Dr. J. Praveen for providing the facilities to complete our major project. We would like to
thank all our faculty and friends for their help and constructive criticism during the project
completion phase. Finally, we are very much indebted to our parents for their moral support
and encouragement to achieve goals.

Bingi Karthika 20241A05I7


K. Srilekha 20241A05J7
Konchada Harshitha 20241A05K0
Malloju Bhavana 21245A0520

III
DECLARATION

We hereby declare that the major project entitled “DonateEase: Mobilizing Humanity for
Noble Causes Via Digital Donations” is the work done during the period from 2023-2024 and
is submitted in the fulfillment of the requirements for the award of the degree of Bachelor of
Technology in Computer Science and Engineering from Gokaraju Rangaraju Institute of
Engineering and Technology (Autonomous under Jawaharlal Nehru Technology
University, Hyderabad). The results embodied in this project have not been submitted to any
other university or Institution for the award of any degree or diploma.

Bingi Karthika 20241A05I7


K. Srilekha 20241A05J7
Konchada Harshitha 20241A05K0
Malloju Bhavana 2124A0520

IV
Table of Contents

Chapter TITLE Page No

Abstract 1

1 Introduction 2

2 System Requirements 4

2.1 Software Requirements 4

2.2 Hardware Requirements 6

3 Literature Survey 7

4 Proposed Approach, Modules Description, and UML Diagrams 8

4.1 Modules 8

4.2 UML Diagrams 11

5 Implementation, Experimental Results &Test Cases 13

6 Conclusion and Future Scope 30

7 References 31

Appendix
i) Full Paper-Publication Proof 33
ii) Snapshots of the Result 34
iii) Software Installation 37

V
LIST OF FIGURES
Fig No Fig Title Page No
1 Login 8
2 Registration 9
3 Home Page 9
4 Make a Donation 10
5 Orphanage Module 10
6 Database Schema 11
7 User Use Case Diagram 11
8 Social Service Center Use Case Diagram 11
9 Data Flow Diagram (DFD) of Architecture 12
10 User Registration 23
11 Account Verification 24
12 Successful Registration 24
13 Orphanage Validation 24
14 Status of Orphanages 25
15 Invalid Email Format 25
16 Incorrect Credentials 25
17 Generation of Multiple Tokens 26
18 Generation of Multiple Tokens 26
19 Making a Donation 26
20 Successful Donation 27
21 Donation Acceptance/Rejection 27
22 Donation History 28
23 Research Paper Publication Proof 33
24 Successful Login 34
25 Successful Registration 34
26 Making a Donation 35
27 Successful Donation 35
28 Change of the Status of the Organization by the Admin 36
29 Accepting a Donation 36
30 Installing Visual Studio 2022 Community Edition 37
31 Database in SQL Server Management Studio 37
32 Opening Package Manager Console 38
33 Command add-migration 38
34 Command update-database 39
35 Running the Backend 39
36 Command npm start 40

VI
LIST OF TABLES
Table No Table Name Page No
1 Test Cases 29

VII
Abstract

Food, clothing, and education are the three most fundamental and vital necessities of any
individual. On the one hand, many people enjoy an excess of these resources and
conveniences, while on the other hand, many people are in desperate need of them. Many
well-to-do and educated people waste these vital resources, either intentionally or
unintentionally. Instead, these resources can be provided to those who truly require them.
This application effectively resolves this issue. Its major goal is to bridge the gap between
resource availability and distribution. Using this application, clients can give back to the
community by donating food, clothes, or even books, and other clients can freely collect
them to be donated to the needy. DonateEase is a web application particularly designed
for this purpose and promotes the accessibility of these necessary amenities to non-profit
organizations, reducing their wastage as well. It is a small effort to diminish the
squandering of such valuable resources.

The aforementioned situation is particularly prevalent in India. The non-uniform


distribution and availability of these resources in India underline a persistent challenge in
ensuring resource security for all its citizens. While some regions benefit from a relatively
well-developed supply chain that provides a variety of food options, others face significant
limitations in accessing nutritious and affordable food. Factors such as agricultural
productivity, infrastructure, transportation networks, and economic disparities contribute
to this uneven distribution. Urban areas often have better access to diverse food sources,
while rural communities may contend with limited options and reliance on subsistence
farming.

We can see in many functions and events as well that leftover food being wasted. This
food must be distributed among the ones who are in legitimate need of them. The same
can be seen happening with books and clothes too. The uneven distribution of books in
India underscores a persistent challenge in promoting widespread education and fostering
a reading culture. While some urban centers and well-developed regions boast ample
access to bookstores, libraries, and educational institutions with well-stocked libraries,
rural and economically marginalized areas often face a dearth of such resources.

1
Chapter 1
Introduction
1.1 Existing System
Food waste is a global issue caused by a variety of socioeconomic variables that have resulted
in an increased surplus of food in communities. Charitable organisations gather food donations
from contributors with excess food and distribute it to those in need. Today, technology can help
to reduce food waste and improve food charity operations management. The purpose of this
article is to offer a web-based food charity operations management system that automates
charity operations from food donation to process management within food bank organisations
and re-distributing food to registered needy individuals. The designed operations management
system greatly enhances the efficiency of overall food charity operations while also bridging the
food access gap across the key entities, including food charity organisations, donors and needy
people, ensuring a high level of service quality.

Books are the fountain of knowledge, and access to them is sometimes taken for granted. The
truth is, many people have books lying around the house that they no longer need but could be
valuable to someone who does. Android is one of the most popular mobile application operating
systems in the world due to the support it provides to both users and developers, including its
ease of use and development. This study presents a simple mobile application that connects
people who want to donate books to those in need. This programme was dubbed 'Bridge' with
the intention of connecting the needy and contributors.

1.1.1 Limitations in the Existing System


The existing system does not allow for diverse types of donations. People cannot choose
between various options to donate from.

The existing system also does not allow the social service centers to deny a transaction if
the donated goods do not conform to the quality standards.

1.2 Proposed System

Food, clothing, and education are the three most fundamental and vital necessities of any
individual. On the one hand, many people enjoy an excess of these resources and
conveniences, while on the other hand, many people are in desperate need of them. Many
well-to-do and educated people waste these vital resources, either intentionally or
unintentionally. Instead, these resources can be provided to those who truly require them.
This application effectively resolves this issue. Its major goal is to bridge the gap between
resource availability and distribution. Using this application, clients can give back to the
community by donating food, clothes, or even books, and other clients can freely collect them
to be donated to the needy.

DonateEase is a web application particularly designed for this purpose and promotes the

2
accessibility of these necessary amenities to non-profit organizations, reducing their wastage
as well. It is a small effort to diminish the squandering of such valuable resources.

1.2.1 Advantages over Existing System

Convenience: Donors can easily browse and choose items to donate from the comfort
of their homes using a donation app. The app provides a convenient way to schedule
pickups or drop-offs, saving time and effort for donors.

Increased Access to Resources: Donation apps can connect donors with a wide
range of recipients, ensuring that resources reach those in need efficiently.

Wider Reach: The digital nature of donation apps allows for a broader outreach,
reaching potential donors and recipients beyond local communities.

Real-time Tracking: Donors can track the status of their donations in real time,
providing transparency and assurance that their contributions are making a positive
impact.

Reduced Waste: By facilitating the donation of used items, these apps contribute to
the reduction of waste, promoting a more sustainable and environmentally friendly
approach.

Targeted Giving: Donors can specify the type of items they wish to donate, ensuring
that their contributions align with the specific needs of recipients.

Emergency Response: Donation apps can play a crucial role in emergency situations
by quickly mobilizing resources and connecting donors with those affected by
disasters or crises.

Community Building: These apps foster a sense of community by bringing together


individuals who share a common goal of helping others.

Tax Benefits: In some regions, donations made through these apps may be eligible
for tax deductions, providing an additional incentive for donors to contribute.

Education and Awareness: Donation apps often include information about the
impact of donations, raising awareness about various social issues and inspiring more
people to get involved in charitable activities.

Scalability: These platforms can scale their operations rapidly, adapting to increased
demand during special events, holidays, or times of need.

By leveraging technology to streamline the donation process, these applications


contribute to the efficiency and effectiveness of charitable giving, making it easier for
people to support those in need.

3
Chapter 2
System Requirements
2.1 Software Requirements
At the heart of DonateEase is the formidable, a dynamic amalgamation of React, DotNet Core
Web API, and SQL Server that propels the functionality and prowess of this online food giving
platform.

2.1.1 SQL Server


SQL Server is a powerful relational database management system (RDBMS) developed by
Microsoft. It is designed to store and retrieve data in accordance with other software, making
it an essential part of many business functions. SQL Server supports a variety of transaction
processing, business information management and analytical tasks, making it suitable for a
wide range of applications from small to large enterprises. A standout characteristic of SQL
Server is its seamless integration.

One of the most notable features of SQL Server is its integration with the
Microsoft ecosystem, enabling seamless interaction with other Microsoft products such as
Excel, Power BI and Azure cloud services. It offers strong security features to protect data
integrity and confidentiality, as well as built-in high availability and disaster recovery options.

SQL Server uses a variant of the SQL language called Transact-SQL (T-SQL) that extends SQL
with procedural programming capabilities, allowing developers to build complex stored
procedures, triggers, and functions directly into the database.

2.1.2 ASP.NET Core WebAPI


ASP.NET Core WebAPI is a powerful framework for building HTTP services that can serve a
variety of clients, including browsers and mobile devices. It is based on ASP.NET Core,
a powerful cross-platform framework for building modern cloud-based web applications.

WebAPI enables developers to quickly and easily create RESTful APIs, supporting JSON and
XML serialization and routing, middleware and dependency increase. It provides features such
as model binding, validation, content negotiation, and authorization, making it well suited for
building scalable and secure APIs. ASP.NET Core WebAPI provides seamless integration with
Entity Framework Core, which simplifies data access by providing an ORM (Object-Relational
Mapper) for working with databases.

One of the main advantages of ASP.NET Core WebAPI is its flexibility and
extensibility. Developers can take advantage of .NET Core's rich ecosystem of libraries
and tools and integrate with third-party frameworks and services. In addition, it is designed to
be lightweight and modular, allowing efficient use of resources and optimizing performance.

2.1.3 React.js
React.js is a powerful JavaScript library for creating user interfaces, especially for web
applications. It is managed by Facebook and the developer community. React.js is known for
its declarative and component-based approach, which simplifies complex user interfaces by
breaking them down into reusable components. It uses a virtual DOM to efficiently update
the UI, which improves performance. React.js also encourages unidirectional data flow and
encourages using a state management library like Redux to manage application state. It
4
is widely used for single-page application development and has a vibrant ecosystem with
extensive community support and a rich collection of third-party libraries and tools. It even
makes use of the Virtual DOM in order to render web pages.

React.js is designed to improve developer productivity by enabling the creation of


interactive applications and dynamic user interfaces with less code. Its component-based
architecture encourages modular development, allowing developers to encapsulate UI elements
and logic into reusable building blocks. This modularity not only simplifies development, but
also promotes code maintainability and scalability.

In addition, React.js incorporates the concept of "one-way data flow", where data flows from
parent components to child components, ensuring predictable behavior and scalability, ease
of debugging. This approach makes it easy to build resilient and predictable applications.

Furthermore, React.js is widely used in the industry thanks to performance optimizations,


including the use of a virtual DOM. By minimizing direct manipulation of the actual DOM,
React.js efficiently updates only the necessary parts of the UI, resulting in better rendering and
a smoother user experience.

2.1.4 Integrated Development Environment (IDE)

2.1.4.1 Visual Studio Code

Visual Studio Code, commonly known as VSCode, is the pinnacle of source code editors,
valued by developers around the world for its remarkable combination of simplicity and power.
Developed by Microsoft, its appeal lies in its ability to serve a variety of programming
languages and platforms while maintaining a small footprint. This versatility ensures that
whether you're coding on Windows, macOS, or Linux, the experience remains consistently
great.

The core of VSCode's appeal is its extensibility. With a rich plugin ecosystem, developers can
customize their editing environment according to their needs. This comprehensive library
includes language support tools, debugging tools, version control integration and more. The
flexibility these plugins provide allows developers to create a custom workflow that improves
productivity and efficiency.

One of the most attractive features of VSCode is its intelligent code editing capabilities. With
features like IntelliSense, developers benefit from context-sensitive code completion, syntax
highlighting, and a real-time bird's-eye view. These tools not only speed up the coding process,
but also help reduce errors and promote cleaner, more maintainable code bases.

Despite its lightweight nature, VSCode doesn't compromise on integrated development


environment (IDE) features. It seamlessly integrates with various tools and services commonly
used in software development workflows. From built-in terminal support to Git version control
integration and smooth debugging features, VSCode offers a comprehensive set of tools to
meet the diverse needs of developers for different projects and languages.

In addition, VSCode offers a vibrant and active community that continuously contributes to its
development. This community fosters an environment of collaboration and innovation by
creating new plugins, providing feedback, or sharing tips and tricks. As a result, VSCode

5
remains at the forefront of modern development tools, constantly adapting to meet the
changing demands of developers in an ever-changing technology environment.

2.1.4.2 SQL Server Management Studio

SQL Server Management Studio (SSMS) is a key tool in every SQL Server professional's
arsenal, providing a comprehensive set of features and functions to simplify database
management tasks. At its core, SSMS provides a user-friendly interface designed to facilitate
the creation, modification and management of SQL Server databases. Whether you are an
experienced database administrator or a novice developer, SSMS provides a familiar
environment that simplifies the complexities of database management.

One of the standout features of SSMS is its robust query editor, which serves as a powerful
workspace for writing. and implementation. SQL queries. With syntax highlighting,
IntelliSense and debugging features, the query editor allows users to run complex queries
easily and efficiently. Additionally, its integration with the larger SQL Server ecosystem
ensures seamless communication with database objects and server instances.

Object Explorer is another SSMS cornerstone that provides a hierarchical view of servers,
databases, tables, stored procedures, and other database objects. This intuitive navigation tool
allows users to navigate the database environment effortlessly, providing quick access to
important components for analysis, editing or management. Whether you're exploring the
structure of a database or managing security settings, Object Explorer serves as the center of
database interaction.

Beyond its query and navigation capabilities, SSMS offers a comprehensive set of
administrative tools that simplify common database management tasks. From backup and
recovery features to security management and performance tuning, SSMS gives users the
tools they need to maintain the health and integrity of their SQL Server environment. In
addition, its integration with SQL Server Integration Services (SSIS) enables seamless
design, debugging, and management of SSIS packages, increasing its usefulness for data
integration tasks.

2.2 Hardware Requirements


Processor: Intel Core i3 and above
Memory (RAM): A minimum of 4 GB of RAM is recommended
Network Connectivity: A stable and reliable internet connection through wired Ethernet or
Wi-Fi

6
Chapter 3
Literature Survey

The "Smart Food Donation System Using IoT," published in May 2021, is a mobile application
promoting sustainability by utilizing IoT devices to facilitate surplus food donation. It features two
modules: the user module allows individuals to donate food with details, while the NGO module
enables organizations to access and collect donations efficiently. IoT ensures food safety, and the
system benefits slum areas by reducing waste and addressing food insecurity sustainably.

The "Food Donation App: Food Sharing," released in May 2021, revolutionizes food donation by
allowing direct contributions from individuals and organizations. By cutting out intermediaries, it
promotes sustainability by minimizing food waste and fostering transparency in donations. Users can
select items to donate and specify recipients, whether NGOs or individuals in need, making a tangible
impact on food insecurity in their communities.

"Donate Books: The Gift of Life" is a non-profit organization dedicated to literacy and gender equality
in education. It promotes sustainability by providing books and supporting libraries worldwide,
encouraging people to share books with others. This research focuses on developing and using free
personal comparison algorithms in donation applications for food, clothing, and books. By enhancing
donor-recipient relationships and optimizing the efficiency of the donation process, advanced
algorithms contribute to the sustainability of donation initiatives.

The paper 'A REVIEW ON HUNGER FREE FOOD DONATION ANDROID APP', published in
June-2009, Effective collaboration models between food sharing mobile apps and social enterprises
are being explored. Their research shows examples of collaborations that combine communities'
diverse resources and specific needs, leading to successful food sharing. This study highlights the
social and environmental benefits of food sharing, aiming to reduce food waste and contribute to
development goals.

7
Chapter 4
Proposed Approach, Module Description and UML Diagrams

Proposed Approach

Food, clothing, and education are the three most fundamental and vital necessities of any
individual. On the one hand, many people enjoy an excess of these resources and conveniences,
while on the other hand, many people are in desperate need of them. Many well-to-do and
educated people waste these vital resources, either intentionally or unintentionally. Instead, these
resources can be provided to those who truly require them. This application effectively resolves
this issue. Its major goal is to bridge the gap between resource availability and distribution. Using
this application, clients can give back to the community by donating food, clothes, or even books,
and other clients can freely collect them to be donated to the needy.

DonateEase is a web application particularly designed for this purpose and promotes the
accessibility of these necessary amenities to non-profit organizations, reducing their wastage as
well. It is a small effort to diminish the squandering of such valuable resources.

4.1 Modules

4.1.1 Login and Registration Module

In this system, three types of users—admins, orphanages, and donors—utilize login and signup
functionalities. Orphanage users must submit valid proof for verification; until approval, they have
restricted access. Once verified by admins, approved orphanages gain access to system features. This
controlled access ensures authentication and validity. Donors, unaffected by this verification process,
retain regular access. The system's design segregates permissions, ensuring only verified orphanages
can fully access functionalities, prioritizing authentication while allowing donors unhindered
participation in the platform.

Fig 1. Login
8
Fig 2. Registration

4.1.2 Homepage Module

Upon sustainable login, Orphanage and Donor users access separate sustainable dashboards tailored
to their roles. Donors access features like sustainable donation history and profile management,
showcasing their sustainable donation activities. The orphanages’ view received sustainable
donation history and manage their profiles, focusing on incoming aid. Admins possess complete
CRUD (Create, Read, Update, Delete) authority over all user types, handling their sustainable
operations. In the admin dashboard, pending registrations await sustainable approval, ensuring
vetting before user access. For Donors, the dashboard highlights ongoing sustainable donation
statuses and past donation details, aiding transparency. Similarly, Orphanages observe the same
sustainable donation-related details. This sustainable structure empowers Admins with
comprehensive sustainable control while providing specific, pertinent information to Donors and
Orphanages, aligning with their distinct sustainable roles and objectives within the platform. Such
segregated sustainable dashboards and data views streamline sustainable user experiences and
operational efficiency, ensuring transparency and facilitating crucial interactions between
sustainable donors and orphanages under the oversight of admins.

Fig 3. Home Page

4.1.3 Donor Module

Donors can contribute items such as food, clothes, and books by choosing the nearest orphanage
within a specific zone, facilitating donations. They can view their donation history and monitor the
current status of donation requests, ensuring transparency and tracking their contributions. This
streamlined process empowers donors to select the most convenient orphanage, donate various
items, and stay informed about their past contributions and ongoing donation requests, fostering a
9
seamless and accountable donation experience.

Fig 4. Make a Donation

4.1.4 Orphanage Module

Orphanages access sustainable nearby donors' donation requests, enabling them to collect the
requested donations. They can view the sustainable history of previously received donations,
enhancing visibility into past contributions. This sustainable system streamlines the process,
allowing orphanages to respond to nearby donation requests sustainably efficiently. By accessing
sustainable donation history, they ensure better management and appreciation of past contributions,
fostering a more organized and appreciative approach towards the received donations.

Fig 5. Orphanage Module

4.1.5 Database Module


A sustainable database in the backend stores user information, donation history, and related data.
Admins possess complete access to this database, allowing them to manage and oversee users'
details, donation histories, and other relevant information. This centralized database serves as the
core repository, empowering admins with the necessary tools to monitor, analyze, and administer
the platform efficiently. Admins utilize this database to ensure regulatory compliance, track user
activities, and maintain a cohesive overview of the system's operations, ensuring data integrity and
effective management of user-related information and donation histories. include the word
"sustainable" in the above para and regenerate it.
10
Fig 6. Database Schema

4.2 UML (Unified Modeled Language) Diagrams

Fig 7. User Use Case Diagram

Fig 8. Social Service Center Use Case Diagram

11
Fig 9. Data Flow Diagram (DFD) of Architecture

12
Chapter 5
Implementation, Experimental Results and Test Cases

5.1 Implementation

5.1.1 Frontend code

Donor.js
import React, { useEffect, useLayoutEffect, useState } from "react";
import axios from "axios";
import "../Common Components/Orphanage.css";
import { useNavigate } from "react-router-dom";
import { baseUrl } from "../Common Components/BaseUrl";

function Donor() {
const [donor, getDonor] = useState([]);
const [search, setSearch] = useState([]);
const [donation, setDonation] = useState([]);

const navigate = useNavigate();

var tokenAccess = window.sessionStorage.getItem("token");


if (tokenAccess == null) {
navigate("/donateeasy/login");
}

useEffect(() => {
axios.get(`${baseUrl}/User`).then((response) => {
const donorData = response.data.filter(
(user) => user.userRole === "Donor"
);
getDonor(donorData);
setSearch(donorData);
console.log(donorData);
});
axios.get(`${baseUrl}/Donor`).then((response) => {
setDonation(response.data);
});
var Role = window.sessionStorage.getItem("role");
if (Role != "Admin") {
navigate("/donateeasy/home");
}
//setSearch(h);
}, []);

const Display = () => {


axios.get(`${baseUrl}/User`).then((response) => {
13
const donorData = response.data.filter(
(user) => user.userRole === "Donor"
);
setSearch(donorData);
});
const handleDelete = (id) => {
axios
.delete(`${baseUrl}/User/id?id=` + id, {
headers: {
"Content-Type": "application/json",
},
})
.then(() => {
alert("Confirm Delete Donor");
Display();
})
.catch((error) => {
console.log(error);
});
};

const handleView = (id) => {


var k = true;
navigate(`/donateeasy/adminDashboard/donor/viewDonor/${id}`, {
state: JSON.stringify(k),
});
};
const handleEdit = (id) => {
var k = false;
navigate(`/donateeasy/adminDashboard/donor/viewDonor/${id}`, {
state: JSON.stringify(k),
});
};

//search employee
const Filter = (event) => {
setSearch(
donor.filter((f) =>
f.userName.toLowerCase().includes(event.target.value))
);
};

return (
<div className="table-container">
<h3 className="d-flex justify-content-center m-3">Donor
page</h3>
{/* <button onClick={getDepartment}>Click</button> */}
<input
style={{ textAlign: "center" }}
placeholder="search here"
14
onChange={Filter}
className="form-control"
/>
<br />
<table className="custom-table">
<thead>
<tr>
<th>DonorId</th>
<th>Donor Name</th>
<th>Donor Email</th>
<th>Donor Zone</th>
<th>Account Status</th>
<th>Options</th>
</tr>
</thead>
<tbody>
{search.map((donor, index) => {
const statusClassName = donor.validAccount ? "active" :
"inactive";
//console.log(employee);
return (
<tr key={index}>
<td>{donor.userId}</td>
<td>{donor.userName}</td>
<td>{donor.userEmail}</td>
<td>{donor.userZone}</td>
<td className={`status ${statusClassName}`}>
{donor.validAccount ? "Active" : "Inactive"}
</td>
<td>
<button
className="btn btn-light mr-1"
onClick={() => handleView(donor.userId)}
>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
className="bi bi-eye-fill"
viewBox="0 0 16 16"
>
<path d="M10.5 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1
5 0z" />
<path d="M0 8s3-5.5 8-5.5S16 8 16 8s-3 5.5-8
5.5S0 8 0 8zm8 3.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7z" />
</svg>
</button>
<button
className="btn btn-light mr-1"
15
onClick={() => handleEdit(donor.userId)}
>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
className="bi bi-pencil-square"
viewBox="0 0 16 16"
>
<path d="M15.502 1.94a.5.5 0 0 1 0 .706L14.459
3.69l-2-0 0 1 .707 0l1.293 1.293zm-1.75 2.456-2-2L4.939 9.21a.5.5

Orphanage.js
import axios from "axios";
import React, { useEffect, useLayoutEffect, useState } from "react";
import { NavLink, useNavigate } from "react-router-dom";
import "../Common Components/Orphanage.css";
import { baseUrl } from "../Common Components/BaseUrl";
function Orphanage() {
const [orph, getOrph] = useState([]);
const [search, setSearch] = useState([]);
const [donation, setDonation] = useState([]);
const navigate = useNavigate();
var tokenAccess = window.sessionStorage.getItem("token");
if (tokenAccess == null) {
navigate("/donateeasy/login");
}
useEffect(() => {
axios.get(`${baseUrl}/Orphanage`).then((response) => {
getOrph(response.data);
setSearch(response.data);
console.log(response.data);
});
axios.get(`${baseUrl}/Donor`).then((response) => {
setDonation(response.data);
});
var Role = window.sessionStorage.getItem("role");
if (Role != "Admin") {
navigate("/donateeasy/home");
}
//setSearch(h);
}, []);

const Display = () => {


axios.get(`${baseUrl}/Orphanage`).then((response) => {
setSearch(response.data);
});
};

16
//deleteEmployee details

const handleDelete = (id) => {


axios
.delete(`${baseUrl}/Orphanage?Orphanageid=` + id, {
headers: {
"Content-Type": "application/json",
},
})
.then(() => {
alert("Confirm Delete Employee");
Display();
})
.catch((error) => {
console.log(error);
});
};

const handleView = (id) => {


var k = true;
navigate(`/donateeasy/adminDashboard/orphanage/viewOrphanage/${id}
`, {
state: JSON.stringify(k),
});
};
const handleEdit = (id) => {

var k = false;
navigate(`/donateeasy/adminDashboard/orphanage/viewOrphanage/${id}
`, {
state: JSON.stringify(k),
});
};

//search employee
const Filter = (event) => {
setSearch(
orph.filter((f) =>
f.orphanageName.toLowerCase().includes(event.target.value)
)
);
};

return (
<div className="table-container">
<h3 className="d-flex justify-content-center m-3">Orphanage
page</h3>
{/* <button onClick={getDepartment}>Click</button> */}
<input
17
style={{ textAlign: "center" }}
placeholder="search here"
onChange={Filter}
className="form-control"
/>
<br />
<table className="custom-table">
<thead>
<tr>
<th>Orphanage Id</th>
<th>Orphanage Name</th>
<th>Account Status</th>
<th>Options</th>
</tr>
</thead>
<tbody>
{search.map((orphanage, index) => {
const statusClassName = orphanage.orphanageAccountStatus
? "active"
: "inactive";
//console.log(employee);
return (
<tr key={index}>
<td>{orphanage.orphanageID}</td>
<td>{orphanage.orphanageName}</td>
<td className={`status ${statusClassName}`}>
{orphanage.orphanageAccountStatus ? "Active" :
"Inactive"}
</td>
<td>
<button
className="btn btn-light mr-1"
onClick={() => handleView(orphanage.orphanageID)}>

<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
className="bi bi-eye-fill"
viewBox="0 0 16 16"
>
<path d="M10.5 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1
5 0z" />
<path d="M0 8s3-5.5 8-5.5S16 8 16 8s-3 5.5-8
5.5S0 8 0 8zm8 3.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7z" />
</svg>
</button>
<button
className="btn btn-light mr-1"
18
onClick={() => handleEdit(orphanage.orphanageID)}
>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
className="bi bi-pencil-square"
viewBox="0 0 16 16"
>
<path d="M15.502 1.94a.5.5 0 0 1 0 .706L14.459
3.69l-2-2L13.502.646a.5.5 0 0 1 .707 0l1.293 1.293zm-1.75 2.456-2-
2L4.939 9.21a.5.5 0 0 0-.121.196l-.805 2.414a.25.25 0 0 0
.316.316l2.414-.805a.5.5 0 0 0 .196-.12l6.813-6.814z" />
<path
fillRule="evenodd"
d="M1 13.5A1.5 1.5 0 0 0 2.5 15h11a1.5 1.5 0 0
0 1.5-1.5v-6a.5.5 0 0 0-1 0v6a.5.5 0 0 1-.5.5h-11a.5.5 0 0 1-.5-.5v-
11a.5.5 0 0 1 .5-.5H9a.5.5 0 0 0 0-1H2.5A1.5 1.5 0 0 0 1 2.5v11z"
/>
</svg>
</button>
<button
type="submit"
className="btn btn-light mr-1"
onClick={() =>
handleDelete(orphanage.orphanageID)}
>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
className="bi bi-trash-fill"
viewBox="0 0 16 16"
>
<path d="M2.5 1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1H3v0 2-2V4h.5a1 1 0 0 0
1-1V2a1 1 0 0 0-1-1H10a1 1 0 0 0-1-
1H7a1 1 0 0 0-1 1H2.5zm3 4a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0
0 1 .5-.5zM8 5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7A.5.5 0 0 1 8 5zm3
.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 1 0z" />
</svg>
</button>
</td>
</tr>
);
})}
</tbody>
</table>

19
{/* <NavLink className="btn btn-light btn-outline-primary"
to='/employee/createEmployee'>Add new Orphanage</NavLink> */}
</div>
);
}

export default Orphanage;

5.1.2 Backend

DonationController.cs

using DonateEasy.Data.Services.IRepositories;
using DonateEasy.Data.Services.Repositories;
using DonateEasy.Models;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace DonateEasy.Controllers
{
[Route("api/Donor")]
[ApiController]
public class DonationController : ControllerBase
{
private readonly IDonationRepository _donationService;
private readonly IUserRepository _userService;
public DonationController(IDonationRepository Service,
IUserRepository userService)
{
_donationService = Service;
_userService = userService;
}
[HttpGet]
public async Task<IActionResult> GetAll()
{
var res = await _donationService.GetAllAsync();
return Ok(res);
}

[HttpGet("DonationId")]
public async Task<IActionResult> GetById(int DonationId)
{
var res = await _donationService.GetByConditionAsync(d
=> d.DonationId == DonationId, tracked: false);
return Ok(res);
}
[HttpPost]
public async Task<IActionResult> Create(DonationDto
Dto,int Userid)
{
Donation orp = new Donation()
{
UserId=Userid,
DonationType = Dto.DonationType,
20
DonationStatus = "Not Accepted",
DonationDate = Dto.DonationDate,
OrphanageID = Dto.OrphanageId
};
await _donationService.AddAsync(orp);
return Ok(orp);
}
[HttpPut]
public async Task<IActionResult> Update(DonationDto Dto, int
DonationId)
{
var res = await _donationService.GetByConditionAsync(e =>
e.DonationId == DonationId, tracked: false);

if (res == null)
{
return BadRequest("User Doesn't Exist");
}
Donation orp = new Donation()
{
UserId=res.UserId,
DonationId=DonationId,
DonationStatus = Dto.DonationStatus,
DonationType = Dto.DonationType,
DonationDate= Dto.DonationDate,
OrphanageID= Dto.OrphanageId
};
await _donationService.UpdateAsync(orp);
return Ok(orp);
}
[HttpDelete]
public async Task<IActionResult> Delete(int Donationid)
{
var res = await _donationService.GetByConditionAsync(e =>
e.DonationId == Donationid, tracked: true);
if (res == null)
{
return BadRequest("Donation Exist");
}
await _donationService.DeleteAsync(res);
return Ok(res);
}
[HttpGet("DonorId")]
public async Task<IActionResult> GetByDonorId(int DonorId)
{
var res = await _donationService.GetAllAsync(d => d.UserId
== DonorId);
return Ok(res);
}
[HttpGet("OrphanageId")]
public async Task<IActionResult> GetByOrphanageId(int
OrphanageId)
{
var res = await _donationService.GetAllAsync(d =>
d.OrphanageID == OrphanageId);
return Ok(res);
}
}
21
}
Models

Donation.cs

using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;

namespace DonateEasy.Models
{
public class Donation
{
[Key]
public int DonationId { get; set; }
public string? DonationStatus { get; set; }
public string? DonationType { get; set; }
public DateTime DonationDate { get; set; }

public Orphanage? Orphanage { get; set; }

[ForeignKey("Orphanage")]
public int OrphanageID { get; set; }
public User User { get; set; }

[ForeignKey("User")]
public int UserId { get; set; }
}
}

Orphanage.cs

using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;

namespace DonateEasy.Models
{
public class Orphanage
{
[Key]
public int OrphanageID { get; set; }
public string? OrphanageName { get; set; }
public bool OrphanageAccountStatus { get; set; } = false;
//public ICollection<Donation>? Donations {get; set;} =
new List<Donation>();
public User? User { get; set; }

[ForeignKey("User")]
public int UserId { get; set; }
}
}

RegisterDTo.cs

namespace DonateEasy.Models
{
22
public class RegisterDto
{
public string UserName { get; set; }
public string UserEmail { get; set; }
public string UserPassword { get; set; }
public string UserMobile { get; set; }
public string UserZone { get; set; }
public string UserRole { get; set; }
public string? ConfirmationToken { get; set; }
}
}

LoginDTo.cs

namespace DonateEasy.Models
{
public class LoginDto
{
public string UserEmail { get; set; }
public string UserPassword { get; set; }

}
}

5.2 Experimental Results

5.2.1 New Donor or Social Service Center Registration

Fig 10. User Registration

23
Fig 11. Account Verification

Fig 12. Successful Registration

▪ The user registration form accepts details of the user and the system sends a
verification mail to the registered Email ID.
▪ Upon verification of the user account, the account is successfully updated in the
database.

5.2.2 Admin Privileges

Fig 13. Orphanage Validation


24
Fig 14. Status of Orphanages

▪ The admin has the privilege of changing the status of the social service center, be it an
orphanage, an old-age home, an NGO, etc., to either active/inactive.

5.2.3 Invalid Email Format

Fig 15. Invalid Email Format

▪ If at all the user Email ID is not according to the standard format, the system
immediately prompts them to enter in the correct format.

5.2.4 Incorrect Credentials

Fig 16. Incorrect Credentials

25
▪ When either of the users enter incorrect credentials, a prompt appears on the
screen.

5.2.5 Generation of Multiple Tokens

Fig 17. Generation of Multiple Tokens

Fig 18. Generation of Multiple Tokens

▪ The system sometimes sends multiple verification tokens for a single account.

5.2.6 Donation by Donors

Fig 19. Making a Donation

26
Fig 20. Successful Donation

▪ The registered donor can choose to donate from either of the options:
1. Food
2. Clothes
3. Books
▪ Then he/she can choose from any of the registered social service centers to donate to.

5.2.7 Acceptance/Rejection of a Donation by the Social Service Center

Fig 21. Donation Acceptance/Rejection

27
Fig 22. Donation History

▪ The social service center may choose to either accept or reject a donation
depending upon the feasibility or quality of the goods.

28
5.3 Test Cases

Test Test Test Case Pre- Test Test Expected Post Actual Status
Case Scenario con steps Data Results - Results Pass/Fail
ID ditio con
n ditio
ns
1. New Donor Donor - Donor - Authenticatio - Donor Pass
Authentication Registration n of donor authenticated
2. New Social Service Center - Service - Authenticatio - Social Service Pass
Service Authentication Center n of service Authentication
Center Registration center
3. Granting Admin - Making - Only verified - Accounts Pass
access rights Privileges status of organization verified
to social accounts as will be
service active/inacti granted access
centers ve
4. Wrong Incorrect - Incorrect - User not - User not Pass
email/passw credentials credentials allowed allowed access
ord entered access
during login
5. Multiple Token - Generating - Only one - Multiple tokens Fail
tokens Generation tokens too token must be are generated
generated many times generated for
a single user
6. User trying Change of Role User Trying to - Role cannot - Role cannot be Pass
to change registe change the be changed changed
the role red as role
either
of the
roles
7. Unavailabilit Internet Issue - Trying to - Access not - Access not Pass
y of internet access the granted granted
site
8. Trying to Proximity of - Making a - Only the - Centers in other Fail
make a location donation centers in the zones are
donation respective shown as well
zone have to
be shown

29
Chapter 6
Conclusion and Future Scope

▪ For people, the most fundamental and essential needs are food, clothes and books.
Mankind's three most key needs should be fulfilled quickly.
▪ Considering the fact that there are many individuals in this day and age who can't
manage or involve these basic needs, we are building this application. It is a small
effort in bridging the gap between the demand and distribution of these valuable
resources.
▪ By combining food, clothes, and book donations under one platform, the DonateEase
platform amplifies the collective impact of generosity. It simplifies the donation
process, making it more convenient for donors to extend a helping hand.
▪ This unified approach promotes efficient resource allocation, enabling a broader reach
to those in need. It facilitates cross-collaborations and partnerships between donors,
charitable organizations, and recipients.
▪ Extend the reach of your platform to cover a larger geographical area. This could
involve partnering with more orphanages, NGOs, or charitable organizations in
different regions.
▪ Consider developing a mobile app for DonateEase to make it more accessible and
user-friendly for both donors and orphanages. A mobile app can also provide features
like push notifications for real-time updates.
▪ Develop an inventory management system for orphanages to keep track of the
donations they receive. This can help in preventing wastage and ensuring that
resources are distributed efficiently.

30
Chapter 7
References
[1] N. Alblihed, M. Almutairi, R. Almahmoud, S. Aladhadh and A. Alabdulatif, "Developing Food
Charity Operations Management System," 2022 2nd International Conference on Computing and
Information Technology (ICCIT), Tabuk, Saudi Arabia, (2022), pp. 93-96, doi:
10.1109/ICCIT52419.2022.9711609.
[2] J. A. R. Morilla, F. C. Bagsic, M. K. Dela Cruz, C. D. A. Patio and E. R. Yabut, "Foodernity: A
Mobile and Web Application for Food Sharing," 2021 1st International Conference in Information
and Computing Research (iCORE), Manila, Philippines, (2021), pp. 90-95, doi:
10.1109/iCORE54267.2021.00035.
[3] G. Pandey and A. Kumar, "An Examination on Food, Clothes and Books Donation Based Android
Application," 2022 Fourth International Conference on Emerging Research in Electronics, Computer
Science and Technology (ICERECT), Mandya, India, (2022), pp. 1-6, doi:
10.1109/ICERECT56837.2022.10059757.
[4] P. U. Pratyusha, K. Chaitanya, A. Saranam, K. Manideep and S. Kranthi, "Smart Intelligent Web
based Online Blood Donation System," 2021 2nd International Conference on Smart Electronics and
Communication (ICOSEC), Trichy, India, (2021), pp. 1813-1819, doi:
10.1109/ICOSEC51865.2021.9591811.
[5] A. Singh and S. Sharma, "Implement Android Application For Book Donation," 2020
International Conference on Intelligent Engineering and Management (ICIEM), London, UK, (2020),
pp. 137-141, doi: 10.1109/ICIEM48762.2020.9160283
[6] Diana Hawashin, Raja Jayaraman, Khaled Salah, (Senior Member, IEEE), Ibrar Yaqoob, (Senior
Member, IEEE), "Blockchain-Based Management for Organ Donation and Transplantation," (2022)
the Khalifa University of Science and Technology under Award CIRA-2019-001.
[7] Manan Khanna, Dhruv Pathak, "D-Eazy Donation Platform – An Artificial Intelligence and Video
based Mobile Application,"(2022) Proceedings of the Sixth International Conference on Computing
Methodologies and Communication IEEE Xplore Part Number: CFP22K25-ART; ISBN: 978-1-
6654-1028-1.
[8] Andres Luis R. Gonzales, Elcid A. Serrano, Enrico Joaquin M. Ingalla, Ramon L. Rodriguez,"
CharitAble: A Software Application for Charity Donation" 2022 IEEE 14th International Conference
on Humanoid, Nanotechnology, Information Technology, Communication and Control,
Environment, and Management (HNICEM) DOI: 10.1109/HNICEM57413.2022.10109400.
[9] Emna Feki, Khouloud Boukadi, Faiza Loukil, Mourad Abed," BELONG: Blockchain based
platform for donation & social project funding" (2022), IEEE/ACS 19th International Conference on
Computer Systems and Applications (AICCSA) | 979-8-3503-1008-5/22/$31.00 ©2022 IEEE | DOI:
10.1109/AICCSA56895.2022.10017836.
[10] Che Akmal Che Yahaya, Ahmad Firdaus, Che Yahaya Yaakub, "An Organ Donation
Management System (ODMS) based on Blockchain Technology for Tracking and Security
Purposes," (2021) 4th International Conference on Computational science and Information
management DOI: 10.1109/ICSECS52883.
[11] Hanyang Wu, Andxianchen Zhu,"Developing a Reliable Service System of Charity Donation
During the Covid-19 Outbreak," (2020) Digital Object Identifier 10.1109/ACCESS.2020.3017654.
[12] Zahid Ahmed, Sabina Yasmin," Helping Hand- An efficient Donation Procedure based on
Mobile Banking" (2014) International Conference on Electrical Engineering and Information &
Communication Technology (ICEEICT).

31
[13] Karthikeyan, Shah S, Varde, A., Alo, C. “Interactive Visualization and App Development for
Precipitation Data in Sub-Saharan Africa”, (2020) IEEE IEMTRONICS, pp. 302-308.
[14] Muhammad Nazrul Islam1, Ashratuz Zavin, Sanjana Srabanti, Chowdhury Nawrin
Ferdous,"GiveMed: A Webportal for Medicine Distribution among Poverty-stricken People," (2017)
IEEE Region 10 Humanitarian Technology Conference (R10-HTC).
[15] John Amiel R. Morilla, Fhillip Carl Bagsic, Mark Kenneth Dela Cruz, "Foodernity: A Mobile
and Web Application for Food Sharing," (2021) 1st International Conference in Information and
Computing Research (iCORE) DOI: 10.1109/ICORE54267.2021.00035
[16] BAVYAA R, MITHUN V, RAJA MOHAMED S," LIFELINE – A Unified Solution for
Healthcare Donation," (2023) International Conference on Advancement in Computation &
Computer Technologies (InCACCT) | 979-8-3503-9648-5/23/$31.00 ©2023 IEEE | DOI:
10.1109/InCACCT57535.2023.10141691.
[17] Kamel Boulos, M.N. and Geraghty, E.M, "Geographical tracking and mapping of coronavirus
disease COVID-19," (2020) International Conference on Health Geographics, Springer Nature
DOI:10.1186/s12942-020-00202-8.
[18] Irene Pollach, Horst Treiblmaier, Arne Floh," Online Fundraising for Environmental Nonprofit
Organizations," (2005) 38th Hawaii International Conference on System Sciences doi:7695-2268-
8/05/$20.00 (C) 2005 IEEE.
[19] Jaspreet Kaur, Abhishek Tripathi, Ashish Kumar Gupta,"RaktFlow - Blood Bank Management
and Donation System," (2022) OPJU International Technology Conference on Emerging
Technologies for Sustainable Development (OTCON) | 978-1-6654-9294-2/23/$31.00 ©2023 IEEE
| DOI: 10.1109/OTCON56053.2023.10113983.
[20] Christina Varghese, Drashti Pathak and Aparna S. Varde,"SeVa: A Food Donation App for
Smart Living," (2021) IEEE 11th Annual Computing and Communication Workshop and Conference
(CCWC) | 978-1-6654-1490-6/21/$31.00 ©2021 IEEE | DOI: 10.1109/CCWC51732.2021.9375945.

32
APPENDIX
i) Full-Paper Publication Proof

Fig 23. Research Paper Publication Proof

33
ii) Snapshots of the Result

Fig 24. Successful Login

Fig 25. Successful Registration

34
Fig 26. Making a Donation

Fig 27. Successful Donation

35
Fig 28. Change of the Status of the Organization by the Admin

Fig 29. Accepting a Donation

36
iii) Software Installation

1. Environment Setup:
• Install Visual Studio 2022 for backend development and Visual Studio Code for
frontend.

Fig 30. Installing Visual Studio 2022 Community Edition


• Install the necessary components: .NET SDK, SQL Server Management Studio
(SSMS), Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL).

2. Database Setup:
• Use SQL Server Management Studio to create for DonateEase. Within database,
create tables for Donations, Orphanages, and Users.

Fig 31. Database in SQL Server Management Studio

3. Frontend Setup (Visual Studio Code with React):


• Install Node.js and the Node Package Manager (npm).
• Open Visual Studio Code and navigate to the directory for the frontend.
37
• Create a new React project using npx create-react-app frontend.
• Navigate into the "frontend" directory and implement the code to integrate with the
backend APIs.

4. Backend Setup (Visual Studio Community):


• Create a new project for the backend (e.g., ASP.NET Core Web API).
• Configure project settings and choose the appropriate .NET version.
• Implement backend logic, including API endpoints for user authentication, signup,
login, etc.
• Configure the database connection in the backend code to connect to SQL Server
databases, open Tools -> NuGet Package Manager -> Package Manager Console and
give the commands add-migration name, update-database.

Fig 32. Opening Package Manager Console

• The add-migration programme scaffolds a new migration file. A migration file is a


collection of modifications to the database schema, such as adding new tables, altering
existing tables, or removing tables. When you run add-migration, Entity Framework
compares the differences between your data model's current and prior states and
generates a migration file with the C# code required to apply those changes to the
database schema.

Fig 33. Command add-migration


38
Fig 34. Command update-database
• After you've used the add-migration command to generate a new migration file that
represents changes to your data model, use update-database to apply those changes to
the database.

Fig 35. Running the Backend


• Ensure proper documentation and adherence to RESTful principles.

5. Integration:
• Configure CORS in the backend to allow requests from the frontend.
• Update frontend code to make API requests using Fetch API or Axios.
• Test integration to ensure seamless communication.
• Debug and refine integration as necessary.

6. Running the Application:


• Launch the frontend application with the command npm start in the terminal within
the "frontend" directory.
• The npm start command is used to launch a project in development mode. It
accomplishes this by executing the script specified in the project's package.json file.

39
Fig 36. Command npm start
• Access the application in a web browser at http://localhost:3000/ and test the
functionalities end-to-end.

40

You might also like