Package cz.muni.fi.pa165.stis.web

Source Code of cz.muni.fi.pa165.stis.web.OrderActionBean

package cz.muni.fi.pa165.stis.web;

import cz.muni.fi.pa165.stis.dto.CustomerTO;
import cz.muni.fi.pa165.stis.dto.ExtraServiceTO;
import cz.muni.fi.pa165.stis.dto.OrderTO;
import cz.muni.fi.pa165.stis.dto.TyrePosition;
import cz.muni.fi.pa165.stis.dto.TyreTO;
import cz.muni.fi.pa165.stis.service.CustomerService;
import cz.muni.fi.pa165.stis.service.ExtraServiceService;
import cz.muni.fi.pa165.stis.service.OrderService;
import cz.muni.fi.pa165.stis.service.TyreService;
import cz.muni.fi.pa165.stis.web.wrapper.CustomerTOWrapper;
import cz.muni.fi.pa165.stis.web.wrapper.OrderTOWrapper;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import net.sourceforge.stripes.action.Before;
import net.sourceforge.stripes.action.DefaultHandler;
import net.sourceforge.stripes.action.ForwardResolution;
import net.sourceforge.stripes.action.RedirectResolution;
import net.sourceforge.stripes.action.Resolution;
import net.sourceforge.stripes.action.UrlBinding;
import net.sourceforge.stripes.controller.LifecycleStage;
import net.sourceforge.stripes.integration.spring.SpringBean;
import net.sourceforge.stripes.validation.Validate;
import net.sourceforge.stripes.validation.ValidateNestedProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
*
* @author Peter Mravec
*/
@UrlBinding("/order/{$event}/")
public class OrderActionBean extends BaseActionBean {
    private static final Logger logger = LoggerFactory.getLogger(OrderActionBean.class);
   
    @SpringBean
    private OrderService service;   
    @SpringBean
    private CustomerService custService;
    @SpringBean
    private TyreService tyreService;
    @SpringBean
    private ExtraServiceService esService;
   
    private List<OrderTO> result;
   
    @ValidateNestedProperties(value = {
            @Validate(on = {"create", "save"}, field = "customer.id", required = true),
            @Validate(on = {"create", "save"}, field = "carType", required = true, minvalue = 1),
    })
    private OrderTOWrapper order;
   
    private List<CustomerTO> customers = new ArrayList<CustomerTO>();
    private List<CustomerTOWrapper> customers1 = new ArrayList<CustomerTOWrapper>();
   
    public List<CustomerTOWrapper> getAllCustomers(){
        customers = custService.findAll();
        customers1.clear();
        for (CustomerTO c : customers){
            CustomerTOWrapper c1 = new CustomerTOWrapper();
           
            c1.setId(c.getId());
            c1.setFullName(c.getFirstName() + " " + c.getLastName());
           
            customers1.add(c1);
        }
       
        return customers1;
    }
   
    public List<TyreTO> getAllTyres(){
        return tyreService.findAll();
    }
   
    public TyrePosition[] getTyrePositions() {
        return TyrePosition.values();
    }
   
    public List<ExtraServiceTO> getAllExtraServices(){
        return esService.findAll();
    }

    @DefaultHandler
    public Resolution list() {
        logger.info("listing");
        return new ForwardResolution("/order/list.jsp");
    }
   
    public List<OrderTO> getAllOrders() {
        logger.debug("getting all orders");
        return service.findAll();
    }
   
    public List<OrderTO> getUserOrders() {
        logger.debug("getting user orders");
        return service.findByCustomer(getUser().getCustomer());
    }
   
    public Resolution newOrder() {
        logger.debug("newOrder()");
        //
        return new ForwardResolution("/order/create.jsp");
    }
   
    public Resolution create() {
        Date date = new Date();
        order.setOrderNewDate(date);
        processBeforeSave(order);
        logger.debug("create() {}", order);
        service.create(order);
        //
        return new RedirectResolution(OrderActionBean.class, "list");
    }
   
    public Resolution edit() {
        logger.debug("edit() order={}", order);
        return new ForwardResolution("/order/edit.jsp");
    }

    public Resolution save() {
        processBeforeSave(order);
        logger.debug("save() order={}", order);
        service.update(order);
        return new RedirectResolution(this.getClass(), "list");
    }
   
    public Resolution delete() {
        Long id = Long.parseLong(getContext().getRequest().getParameter("order.id"));
        OrderTO ot = service.get(id);
        logger.debug("delete() {}", ot);
        //
        service.remove(ot);
        //
        return new RedirectResolution(OrderActionBean.class, "list");
    }
   
    public Resolution done() {
        Date date = new Date();
        Long id = Long.parseLong(getContext().getRequest().getParameter("order.id"));
        OrderTO ot = service.get(id);
        ot.setOrderServicedDate(date);
        logger.debug("done() {}", ot);
        service.update(ot);
        //
        return new RedirectResolution(OrderActionBean.class, "list");
    }

    public Resolution paid() {
        Date date = new Date();
        Long id = Long.parseLong(getContext().getRequest().getParameter("order.id"));
        OrderTO ot = service.get(id);
        ot.setOrderPaidDate(date);
        logger.debug("paid() {}", ot);
        service.update(ot);
        //
        return new RedirectResolution(OrderActionBean.class, "list");
    }

    @Before(stages = LifecycleStage.BindingAndValidation, on = {"edit", "save"})
    public void loadOrderFromDatabase() {
        String ids = getContext().getRequest().getParameter("order.id");
        if (ids != null) {
            order = new OrderTOWrapper(service.get(Long.parseLong(ids)));
        }
    }
   
    public Resolution findByCustomer() {
        try {
            Long id = Long.parseLong(getContext().getRequest().getParameter("customerId"));
            CustomerTO customer = custService.get(id);
            if (customer != null) {
                result = service.findByCustomer(customer);
            }
        } catch (NumberFormatException ex) {
            result = new ArrayList<>();
        }
       
        return new ForwardResolution("/order/results.jsp");
    }
   
    public List<OrderTO> getResult() {
        return result;
    }

    public OrderTOWrapper getOrder() {
        return order;
    }

    public void setOrder(OrderTOWrapper order) {
        this.order = order;
    }
   
    private void processBeforeSave(OrderTOWrapper wrapper) {
        BigDecimal price = BigDecimal.ZERO;
        //
        Set<ExtraServiceTO> exSs = new HashSet<>();
        if (wrapper.getExtraServiceIds() != null) {
            for (Long l : order.getExtraServiceIds()) {
                ExtraServiceTO esto = esService.get(l);
                if (esto != null && esto.getPrice() != null) {
                    price = price.add(esto.getPrice());
                    exSs.add(esto);
                }
            }
        }
       
        Map<Long, TyreTO> tyres = new HashMap<>();
        if (wrapper.getTyres() != null) {
            for (Map.Entry<TyrePosition, TyreTO> em : wrapper.getTyres().entrySet()) {
                if (em.getValue() == null) {
                    continue;
                }
                Long id = em.getValue().getId();
                if (id != null) {
                    TyreTO tto = tyres.get(id);
                    if (tto == null) {
                        tto = tyreService.get(id);
                        tyres.put(id, tto);
                    }
                    if (tto != null && tto.getPrice() != null) {
                        price = price.add(tto.getPrice());
                    }
                }
            }
        }
        wrapper.setExtraServices(exSs);
        wrapper.setTotalPrice(price);
    }
   
}
TOP

Related Classes of cz.muni.fi.pa165.stis.web.OrderActionBean

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.