+working shopping-cart
This commit is contained in:
parent
1a115e00a9
commit
d1a45681a2
|
@ -36,6 +36,15 @@ public class Book {
|
||||||
@NonNull private String description;
|
@NonNull private String description;
|
||||||
@NonNull private String image;
|
@NonNull private String image;
|
||||||
|
|
||||||
|
public String getPriceString() {
|
||||||
|
String res = "";
|
||||||
|
res += getPrice() / 100;
|
||||||
|
res += ",";
|
||||||
|
if (getPrice() % 100 < 10) {
|
||||||
|
res += "0";
|
||||||
|
}
|
||||||
|
res += getPrice() % 100;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -4,7 +4,6 @@ import de.hsel.itech.db.Database;
|
||||||
import de.hsel.itech.db.pojo.Book;
|
import de.hsel.itech.db.pojo.Book;
|
||||||
import de.hsel.itech.db.pojo.ShoppingCartItem;
|
import de.hsel.itech.db.pojo.ShoppingCartItem;
|
||||||
import de.hsel.itech.db.pojo.User;
|
import de.hsel.itech.db.pojo.User;
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
import javax.faces.annotation.ManagedProperty;
|
import javax.faces.annotation.ManagedProperty;
|
||||||
|
@ -22,32 +21,40 @@ public class CartBean {
|
||||||
@ManagedProperty("#{userBean.user}")
|
@ManagedProperty("#{userBean.user}")
|
||||||
private User user;
|
private User user;
|
||||||
|
|
||||||
@Getter
|
|
||||||
private ArrayList<Book> bookList;
|
|
||||||
|
|
||||||
public User getUser() {
|
public User getUser() {
|
||||||
FacesContext context = FacesContext.getCurrentInstance();
|
FacesContext context = FacesContext.getCurrentInstance();
|
||||||
return (User) context.getApplication().evaluateExpressionGet(context,"#{userBean.user}", User.class);
|
return (User) context.getApplication().evaluateExpressionGet(context,"#{userBean.user}", User.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String add(Book book){
|
public String add(Book book){
|
||||||
if(user != null){
|
if(getUser() != null){
|
||||||
Database.getInstance().shoppingCart().insert(new ShoppingCartItem(user,book,1));
|
for(ShoppingCartItem item : getItems()){
|
||||||
}else{
|
if(item.getArticle().getId() == book.getId()){
|
||||||
if(bookList == null){
|
Database.getInstance().shoppingCart().delete(item);
|
||||||
bookList = new ArrayList<Book>();
|
item.setCount(item.getCount() + 1);
|
||||||
|
Database.getInstance().shoppingCart().insert(item);
|
||||||
|
return "cart.jsf";
|
||||||
}
|
}
|
||||||
bookList.add(book);
|
}
|
||||||
|
Database.getInstance().shoppingCart().insert(new ShoppingCartItem(getUser(),book,1));
|
||||||
|
}
|
||||||
|
return "cart.jsf";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String remove(ShoppingCartItem item){
|
||||||
|
if(getUser() != null){
|
||||||
|
Database.getInstance().shoppingCart().delete(item);
|
||||||
}
|
}
|
||||||
return "cart.jsf";
|
return "cart.jsf";
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ShoppingCartItem> getItems(){
|
public List<ShoppingCartItem> getItems(){
|
||||||
Database db = Database.getInstance();
|
Database db = Database.getInstance();
|
||||||
if(user==null){
|
if(getUser()!=null){
|
||||||
|
return db.shoppingCart().get(getUser());
|
||||||
|
}else{
|
||||||
return new ArrayList<ShoppingCartItem>();
|
return new ArrayList<ShoppingCartItem>();
|
||||||
}
|
}
|
||||||
return db.shoppingCart().get(user);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setItems(List<ShoppingCartItem> list) {
|
public void setItems(List<ShoppingCartItem> list) {
|
||||||
|
@ -55,11 +62,22 @@ public class CartBean {
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getItemCount(){
|
public int getItemCount(){
|
||||||
int count = getItems().size();
|
return getItems().size();
|
||||||
if(bookList != null){
|
|
||||||
count += bookList.size();
|
|
||||||
}
|
}
|
||||||
return count;
|
|
||||||
|
public String getSum(){
|
||||||
|
int sum = 0;
|
||||||
|
for(ShoppingCartItem item : getItems()){
|
||||||
|
sum += item.getCount() * item.getArticle().getPrice();
|
||||||
|
}
|
||||||
|
String res = "";
|
||||||
|
res += sum / 100;
|
||||||
|
res += ",";
|
||||||
|
if (sum % 100 < 10) {
|
||||||
|
res += "0";
|
||||||
|
}
|
||||||
|
res += sum % 100;
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,6 @@ public class SettingsBean {
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
private boolean darkTheme = false;
|
private boolean darkTheme = true;
|
||||||
|
|
||||||
}
|
}
|
|
@ -8,41 +8,56 @@
|
||||||
<f:view>
|
<f:view>
|
||||||
<ui:composition template="template.xhtml">
|
<ui:composition template="template.xhtml">
|
||||||
<ui:define name="content">
|
<ui:define name="content">
|
||||||
|
<div class="m-row">
|
||||||
|
<h1 class="m-text-center">Warenkorb</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
<ui:repeat value="#{cartBean.items}" var="item">
|
<ui:repeat value="#{cartBean.items}" var="item">
|
||||||
<li>
|
|
||||||
<h:outputLabel value="#{item.article.title}"/>
|
|
||||||
</li>
|
|
||||||
</ui:repeat>
|
|
||||||
|
|
||||||
<ui:repeat value="#{cartBean.bookList}" var="book">
|
|
||||||
<div class="m-row m-block">
|
<div class="m-row m-block">
|
||||||
<div class="m-col-t-4">
|
<div class="m-col-t-4">
|
||||||
<img src="https://source.unsplash.com/#{book.image}/100x100" class="m-image" alt="Buchcover"/>
|
<img src="https://source.unsplash.com/#{item.article.image}/100x100" class="m-image" alt="Buchcover"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="m-col-t-4">
|
<div class="m-col-t-4">
|
||||||
<h3>#{book.title}</h3>
|
<h3>#{item.article.title}</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="m-col-t-4">
|
<div class="m-col-t-4">
|
||||||
<div class="m-row">
|
<div class="m-row">
|
||||||
<h4 class="m-text-right">#{book.price} (in cent)€</h4>
|
<h4 class="m-text-right">#{item.article.priceString}€</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="m-row">
|
<div class="m-row">
|
||||||
<div class="m-col-t-4 m-push-t-6">
|
<div class="m-col-t-4 m-push-t-6">
|
||||||
<input type="number" name="quantity" value="1" min="1" max="10"/>
|
<input type="number" name="quantity" value="#{item.count}" min="1" max="10"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="m-row">
|
<div class="m-row">
|
||||||
<div class="m-col-t-4 m-push-t-6 m-button m-small m-danger">
|
<div class="m-col-t-4 m-push-t-6 m-button m-small m-danger">
|
||||||
<a href="#">Entfernen</a>
|
<h:form>
|
||||||
|
<h:commandLink action="#{cartBean.remove(item)}">
|
||||||
|
Entfernen
|
||||||
|
</h:commandLink>
|
||||||
|
</h:form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ui:repeat>
|
</ui:repeat>
|
||||||
|
|
||||||
|
|
||||||
|
<h:panelGroup type="block" styleClass="m-row" rendered="#{cartBean.itemCount != 0}">
|
||||||
|
<div class="m-col-t-5 m-push-t-7">
|
||||||
|
<h1 class="m-text-right">Summe(#{cartBean.itemCount} Items): #{cartBean.sum}€</h1>
|
||||||
|
</div>
|
||||||
|
</h:panelGroup>
|
||||||
|
|
||||||
|
<h:panelGroup type="block" styleClass="m-row" rendered="#{cartBean.itemCount == 0}">
|
||||||
|
<h1 class="m-text-center">Der Warenkorb ist Leer</h1>
|
||||||
|
</h:panelGroup>
|
||||||
|
|
||||||
|
|
||||||
<div class="m-row">
|
<div class="m-row">
|
||||||
<div class="m-col-t-3 m-push-t-5 m-button m-success">
|
<div class="m-col-t-4 m-push-t-4 m-button m-success">
|
||||||
<a href="#">Jetzt Kaufen</a>
|
<a href="#">Jetzt Kaufen</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue