Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added a return Book feature #136

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions Dummy_Database.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ create table if not exists books(barcode varchar(100) primary key, name varchar(

create table if not exists users(username varchar(100) primary key,password varchar(100), firstname varchar(100),lastname varchar(100),address text, phone varchar(100),mailid varchar(100),usertype int);

create table if not exists returnBook(book_name varchar(1000), email varchar(100), reason varchar(10000));

insert into books values('9780134190500', 'Data Structures Through C', 'G.S. Baluja', 525, 20);

insert into books values('9780134190563','The Go Programming Language','Alan A. A. Donovan and Brian W. Kernighan',400,8);
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ create table if not exists books(barcode varchar(100) primary key, name varchar(
create table if not exists users(username varchar(100) primary key,password varchar(100), firstname varchar(100),
lastname varchar(100),address text, phone varchar(100),mailid varchar(100),usertype int);

create table if not exists returnBook(book_name varchar(1000), email varchar(100), reason varchar(10000));

insert into books values('9780134190563','The Go Programming Language','Alan A. A. Donovan and Brian W. Kernighan',400,8);
insert into books values('9780133053036','C++ Primer','Stanley Lippman and Josée Lajoie and Barbara Moo',976,13);
insert into books values('9781718500457','The Rust Programming Language','Steve Klabnik and Carol Nichols',560,12);
Expand Down
2 changes: 2 additions & 0 deletions WebContent/CustomerHome.html
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@
href="about" id="about">About Us</a></span></li>
<li class="nav-item "><span><a class="nav-link"
href="logout" id="logout">Logout</a></span></li>
<li class="nav-item "><span><a class="nav-link"
href="return" id="return">Return</a></span></li>
</ul>
</div>
</nav>
Expand Down
172 changes: 172 additions & 0 deletions WebContent/ReturnBook.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
<html>
<head>
<meta charset="ISO-8859-1">
<title>Book Store</title>
<link rel="apple-touch-icon" sizes="180x180"
href="./favicons/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32"
href="./favicons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16"
href="./favicons/favicon-16x16.png">
<link rel="manifest" href="./favicons/site.webmanifest">
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="styles.css">
<!-- JavaScript Bundle with Popper -->
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js">

</script>

<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js">

</script>
<link rel="stylesheet" href="styles.css">
<style>
.row {
display: -ms-flexbox; /* IE10 */
display: flex;
-ms-flex-wrap: wrap; /* IE10 */
flex-wrap: wrap;
margin: 0 -16px;
}

.col-25 {
-ms-flex: 25%; /* IE10 */
flex: 25%;
}

.col-50 {
-ms-flex: 50%; /* IE10 */
flex: 50%;
}

.col-75 {
-ms-flex: 75%; /* IE10 */
flex: 75%;
}

.col-25, .col-50, .col-75 {
padding: 0 16px;
}

.container {
background-color: #f2f2f2;
padding: 5px 20px 15px 20px;
border: 1px solid lightgrey;
border-radius: 3px;
}

input[type=text] {
width: 100%;
margin-bottom: 20px;
padding: 12px;
border: 1px solid #ccc;
border-radius: 3px;
}

label {
margin-bottom: 10px;
display: block;
}

.icon-container {
margin-bottom: 20px;
padding: 7px 0;
font-size: 24px;
}

.btn {
background-color: #04AA6D;
color: white;
padding: 12px;
margin: 10px 0;
border: none;
width: 100%;
border-radius: 3px;
cursor: pointer;
font-size: 17px;
}

.btn:hover {
background-color: #45a049;
}

span.price {
float: right;
color: grey;
}

/* Responsive layout - when the screen is less than 800px wide, make the two columns stack on top of each other instead of next to each other (and change the direction - make the "cart" column go on top) */
@media ( max-width : 800px) {
.row {
flex-direction: column-reverse;
}
.col-25 {
margin-bottom: 20px;
}
}
</style>
</head>
<body>
<header>
<nav class="navbar navbar-expand-sm bg-dark">
<a class="navbar-brand"> <!-- The below line can be an image or a h1, either will work -->
<img src="logo.png" alt="Google logo" width="60" height="30px">
</a>

<button style="background-color: white;" class="navbar-toggler"
type="button" data-toggle="collapse" data-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>

<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item"><span><a class="nav-link active"
href="viewbook">Home</a></span></li>
<li class="nav-item "><span><a class="nav-link"
href="viewbook">Available Books</a></span></li>
<li class="nav-item "><span><a class="nav-link"
href="about.html">About Us</a></span></li>
<li class="nav-item "><span><a
class="nav-link glyphicon glyphicon-shopping-cart " href="cart">Cart</a></span></li>
<li class="nav-item "><span><a class="nav-link"
href="logout">Logout</a></span></li>
</ul>
</div>
</nav>
</header>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script
src="https://cdn.jsdelivr.net/npm/popper.js@1.14.6/dist/umd/popper.min.js"></script>
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@4.2.1/dist/js/bootstrap.min.js"></script>
<div class="container">
<div id='topmid' style='background-color:grey'>Return Books</div>
<div class="row">
<div class="col-75">
<div class="container">
<form action="submitReturn" method="post">
<div class="row">
<div class="col-50">
<h3>Details to return Book</h3>
<label for="bookName"><i class="fa fa-user"></i> Book Name</label>
<input type="text" id="bookName" name="bookName"
placeholder="Fluent Python"> <label for="email"><i
class="fa fa-envelope"></i> Email</label> <input type="text" id="email"
name="email" placeholder="john@example.com"> <label
for="adr"><i class="fa fa-address-card-o"></i> Reason for returning</label>
<input type="text" id="reason" name="reason"
placeholder="Damaged Book Received" required>

</div>

</div>

</body>
</html>
165 changes: 165 additions & 0 deletions WebContent/SubmitReturn.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
<html>
<head>
<meta charset="ISO-8859-1">
<title>Book Store</title>
<link rel="apple-touch-icon" sizes="180x180"
href="./favicons/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32"
href="./favicons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16"
href="./favicons/favicon-16x16.png">
<link rel="manifest" href="./favicons/site.webmanifest">
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="styles.css">
<!-- JavaScript Bundle with Popper -->
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js">

</script>

<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js">

</script>
<link rel="stylesheet" href="styles.css">
<style>
.row {
display: -ms-flexbox; /* IE10 */
display: flex;
-ms-flex-wrap: wrap; /* IE10 */
flex-wrap: wrap;
margin: 0 -16px;
}

.col-25 {
-ms-flex: 25%; /* IE10 */
flex: 25%;
}

.col-50 {
-ms-flex: 50%; /* IE10 */
flex: 50%;
}

.col-75 {
-ms-flex: 75%; /* IE10 */
flex: 75%;
}

.col-25, .col-50, .col-75 {
padding: 0 16px;
}

.container {
background-color: #f2f2f2;
padding: 5px 20px 15px 20px;
border: 1px solid lightgrey;
border-radius: 3px;
}

input[type=text] {
width: 100%;
margin-bottom: 20px;
padding: 12px;
border: 1px solid #ccc;
border-radius: 3px;
}

label {
margin-bottom: 10px;
display: block;
}

.icon-container {
margin-bottom: 20px;
padding: 7px 0;
font-size: 24px;
}

.btn {
background-color: #04AA6D;
color: white;
padding: 12px;
margin: 10px 0;
border: none;
width: 100%;
border-radius: 3px;
cursor: pointer;
font-size: 17px;
}

.btn:hover {
background-color: #45a049;
}

span.price {
float: right;
color: grey;
}

/* Responsive layout - when the screen is less than 800px wide, make the two columns stack on top of each other instead of next to each other (and change the direction - make the "cart" column go on top) */
@media ( max-width : 800px) {
.row {
flex-direction: column-reverse;
}
.col-25 {
margin-bottom: 20px;
}
}
</style>
</head>
<body>
<header>
<nav class="navbar navbar-expand-sm bg-dark">
<a class="navbar-brand"> <!-- The below line can be an image or a h1, either will work -->
<img src="logo.png" alt="Google logo" width="60" height="30px">
</a>

<button style="background-color: white;" class="navbar-toggler"
type="button" data-toggle="collapse" data-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>

<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item"><span><a class="nav-link active"
href="viewbook">Home</a></span></li>
<li class="nav-item "><span><a class="nav-link"
href="viewbook">Available Books</a></span></li>
<li class="nav-item "><span><a class="nav-link"
href="about.html">About Us</a></span></li>
<li class="nav-item "><span><a
class="nav-link glyphicon glyphicon-shopping-cart " href="cart">Cart</a></span></li>
<li class="nav-item "><span><a class="nav-link"
href="logout">Logout</a></span></li>
</ul>
</div>
</nav>
</header>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script
src="https://cdn.jsdelivr.net/npm/popper.js@1.14.6/dist/umd/popper.min.js"></script>
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@4.2.1/dist/js/bootstrap.min.js"></script>
<div class="container">
<div id='topmid' style='background-color:grey'>Return Books</div>
<div class="row">
<div class="col-75">
<div class="container">
<form action="submitReturn" method="post">
<div class="row">
<div class="col-50">
<h3>Return Request Placed Successfully</h3>
<h5>We will email with further instructions of the return process</h5>

</div>

</div>

</body>
</html>
16 changes: 16 additions & 0 deletions WebContent/WEB-INF/web.xml
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,22 @@
<servlet-name>ProcessPaymentServlet</servlet-name>
<url-pattern>/pay</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ReturnBookServlet</servlet-name>
<servlet-class>servlets.ReturnBookServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ReturnBookServlet</servlet-name>
<url-pattern>/return</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>SubmitReturnBook</servlet-name>
<servlet-class>servlets.SubmitReturnBook</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SubmitReturnBook</servlet-name>
<url-pattern>/submitReturn</url-pattern>
</servlet-mapping>

<!-- Error Handlers -->
<servlet>
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/com/bittercode/service/BookService.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,6 @@ public interface BookService {

public String updateBook(Book book) throws StoreException;

String addReturn(String bookName, String email, String reason) throws StoreException;

}