Checkout.java

package control.ordine;
import model.CarrelloModel;
import model.acquisto.AcquistoBean;
import model.acquisto.AcquistoDAO;
import model.maglietta.MagliettaOrdine;
import model.misura.MisuraDAO;
import model.ordine.OrdineBean;
import model.ordine.OrdineDAO;
import model.utente.UtenteBean;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.time.LocalDate;

@WebServlet("/Checkout")
public class Checkout extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        final String ERROR_PAGE = "/pages/errorpage.jsp";
        CarrelloModel carrelloModel = (CarrelloModel) req.getSession().getAttribute("carrello");
        UtenteBean utenteBean = (UtenteBean) req.getSession().getAttribute("utente");

        LocalDate dataConsegna;
        try {
            dataConsegna = LocalDate.parse(req.getParameter("data-consegna"));
        } catch (java.time.format.DateTimeParseException | NullPointerException e) {
            req.getRequestDispatcher(ERROR_PAGE).forward(req, resp);
            return;
        }

        float prezzoTot;
        try {
            prezzoTot = Float.parseFloat(req.getParameter("prezzo-totale"));
        } catch (NumberFormatException | NullPointerException e) {
            req.getRequestDispatcher(ERROR_PAGE).forward(req, resp);
            return;
        }

        OrdineBean ordineBean = new OrdineBean();
        ordineBean.setUsername(utenteBean.getUsername());
        ordineBean.setPrezzoTotale(prezzoTot);
        ordineBean.setDataConsegna(dataConsegna);
        ordineBean.setDataOrdine(LocalDate.now());
        ordineBean.setNomeConsegna(req.getParameter("nome-spedizione"));
        ordineBean.setCognomeConsegna(req.getParameter("cognome-spedizione"));
        ordineBean.setCap(req.getParameter("cap-spedizione"));
        ordineBean.setVia(req.getParameter("via-spedizione"));
        ordineBean.setCitta(req.getParameter("citta-spedizione"));
        OrdineDAO ordineDAO = new OrdineDAO();

        try {
            ordineDAO.doSave(ordineBean);
        } catch (SQLException e) {
            req.getRequestDispatcher(ERROR_PAGE).forward(req, resp);
        }

        for (MagliettaOrdine p: carrelloModel.getCarrello()) {
            try {
                AcquistoBean acquistoBean = new AcquistoBean();
                acquistoBean.setIDOrdine(new OrdineDAO().getMaxID() - 1);
                acquistoBean.setIDMaglietta(p.getMagliettaBean().getID());
                acquistoBean.setQuantita(p.getQuantita());
                acquistoBean.setImmagine(p.getMagliettaBean().getGrafica());
                acquistoBean.setPrezzoAq(p.getMagliettaBean().getPrezzo());
                acquistoBean.setIvaAq(p.getMagliettaBean().getIVA());
                acquistoBean.setTaglia(p.getTaglia());

                AcquistoDAO acquistoDAO = new AcquistoDAO();
                acquistoDAO.doSave(acquistoBean);

                MisuraDAO misuraDAO = new MisuraDAO();
                misuraDAO.doUpdateUtente(acquistoBean, p.getTaglia());

            } catch (SQLException e) {
                req.getRequestDispatcher(ERROR_PAGE).forward(req, resp);
            }
        }

        req.getSession().removeAttribute("carrello");

        resp.sendRedirect("pages/acquisto.jsp");
    }
}