/*
 * Generated by the Jasper component of Apache Tomcat
 * Version: Apache Tomcat/9.0.105
 * Generated at: 2025-05-26 06:28:55 UTC
 * Note: The last modified time of this file was set to
 *       the last modified time of the source file after
 *       generation to assist with modification tracking.
 */
package org.apache.jsp.jsp;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.util.List;
import com.nisum.model.CartItem;

public final class cart_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent,
                 org.apache.jasper.runtime.JspSourceImports {

  private static final javax.servlet.jsp.JspFactory _jspxFactory =
          javax.servlet.jsp.JspFactory.getDefaultFactory();

  private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;

  private static final java.util.Set<java.lang.String> _jspx_imports_packages;

  private static final java.util.Set<java.lang.String> _jspx_imports_classes;

  static {
    _jspx_imports_packages = new java.util.LinkedHashSet<>(4);
    _jspx_imports_packages.add("javax.servlet");
    _jspx_imports_packages.add("javax.servlet.http");
    _jspx_imports_packages.add("javax.servlet.jsp");
    _jspx_imports_classes = new java.util.LinkedHashSet<>(3);
    _jspx_imports_classes.add("java.util.List");
    _jspx_imports_classes.add("com.nisum.model.CartItem");
  }

  private volatile javax.el.ExpressionFactory _el_expressionfactory;
  private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;

  public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
    return _jspx_dependants;
  }

  public java.util.Set<java.lang.String> getPackageImports() {
    return _jspx_imports_packages;
  }

  public java.util.Set<java.lang.String> getClassImports() {
    return _jspx_imports_classes;
  }

  public javax.el.ExpressionFactory _jsp_getExpressionFactory() {
    if (_el_expressionfactory == null) {
      synchronized (this) {
        if (_el_expressionfactory == null) {
          _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
        }
      }
    }
    return _el_expressionfactory;
  }

  public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {
    if (_jsp_instancemanager == null) {
      synchronized (this) {
        if (_jsp_instancemanager == null) {
          _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
        }
      }
    }
    return _jsp_instancemanager;
  }

  public void _jspInit() {
  }

  public void _jspDestroy() {
  }

  public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
      throws java.io.IOException, javax.servlet.ServletException {

    if (!javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
      final java.lang.String _jspx_method = request.getMethod();
      if ("OPTIONS".equals(_jspx_method)) {
        response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
        return;
      }
      if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method)) {
        response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
        response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET, POST or HEAD. Jasper also permits OPTIONS");
        return;
      }
    }

    final javax.servlet.jsp.PageContext pageContext;
    javax.servlet.http.HttpSession session = null;
    final javax.servlet.ServletContext application;
    final javax.servlet.ServletConfig config;
    javax.servlet.jsp.JspWriter out = null;
    final java.lang.Object page = this;
    javax.servlet.jsp.JspWriter _jspx_out = null;
    javax.servlet.jsp.PageContext _jspx_page_context = null;


    try {
      response.setContentType("text/html;charset=UTF-8");
      pageContext = _jspxFactory.getPageContext(this, request, response,
      			null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;

      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");

    List<CartItem> cartItems = (List<CartItem>) request.getAttribute("cartItems");
    double cartTotal = (double) request.getAttribute("cartTotal");
    int userId = (int) request.getAttribute("userId");
    int cartId = (int) request.getAttribute("cartId");


      out.write("\r\n");
      out.write("\r\n");
      out.write("<!DOCTYPE html>\r\n");
      out.write("<html lang=\"en\">\r\n");
      out.write("    <head>\r\n");
      out.write("        <meta charset=\"UTF-8\" />\r\n");
      out.write("        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>\r\n");
      out.write("        <title>FashionHub</title>\r\n");
      out.write("          <link rel=\"icon\" href=\"./images/NISUM.jpeg\" type=\"image/x-icon\">\r\n");
      out.write("        <link rel=\"stylesheet\" href=\"./CSS/cart.css\">\r\n");
      out.write("\r\n");
      out.write("    </head>\r\n");
      out.write("    <body>\r\n");
      out.write("        <div class=\"cart-container\">\r\n");
      out.write("            <h1>Your Shopping Cart</h1>\r\n");
      out.write("\r\n");
      out.write("            ");
 for (CartItem item : cartItems) { 
      out.write("\r\n");
      out.write("            <div class=\"cart-item\" id=\"row_");
      out.print( item.getCartItemId() );
      out.write("\" data-price=\"");
      out.print( item.getFinalPrice() / item.getQuantity() );
      out.write("\">\r\n");
      out.write("                <div class=\"product-image\">\r\n");
      out.write("                   <img src=\"");
      out.print( item.getImageurl() );
      out.write("\" alt=\"");
      out.print( item.getProductName() );
      out.write("\" />\r\n");
      out.write("                </div>\r\n");
      out.write("                <div class=\"product-info\">\r\n");
      out.write("                    <h2>");
      out.print( item.getProductName() );
      out.write("</h2>\r\n");
      out.write("                    <p class=\"brand\">by FashionHub</p>\r\n");
      out.write("                    <div class=\"details\">\r\n");
      out.write("                        <span>Color: ");
      out.print( item.getColor() );
      out.write("</span>\r\n");
      out.write("                        <span>Status: <span id=\"status_");
      out.print( item.getCartItemId() );
      out.write("\" class=\"status ");
      out.print( item.getStockStatus().equals("In Stock") ? "in-stock" : "out-of-stock" );
      out.write("\">\r\n");
      out.write("                        ");
      out.print( item.getStockStatus() );
      out.write("</span></span>\r\n");
      out.write("                </div>\r\n");
      out.write("                <div class=\"details\">\r\n");
      out.write("                    <span>Quantity:\r\n");
      out.write("                        <select class=\"quantity\" id=\"qty_");
      out.print( item.getCartItemId() );
      out.write("\"\r\n");
      out.write("                                onchange=\"updateQuantity(");
      out.print( item.getCartItemId() );
      out.write(", this)\"\r\n");
      out.write("\r\n");
      out.write("                            ");
 for (int i = 0; i <= 10; i++) { 
      out.write("\r\n");
      out.write("                                <option value=\"");
      out.print( i );
      out.write('"');
      out.write(' ');
      out.print( i == item.getQuantity() ? "selected" : "" );
      out.write('>');
      out.print( i );
      out.write("</option>\r\n");
      out.write("                            ");
 } 
      out.write("\r\n");
      out.write("                        </select>\r\n");
      out.write("                    </span>\r\n");
      out.write("                </div>\r\n");
      out.write("                <label><input type=\"checkbox\"/> This will be a gift</label>\r\n");
      out.write("                <div class=\"actions\">\r\n");
      out.write("                    <button onclick=\"deleteCartItem(");
      out.print( item.getCartItemId() );
      out.write(")\">Delete</button>\r\n");
      out.write("                    <button disabled>Save for Later</button>\r\n");
      out.write("                    <button disabled>See more like this</button>\r\n");
      out.write("                </div>\r\n");
      out.write("            </div>\r\n");
      out.write("            <div class=\"product-price\">\r\n");
      out.write("                <p class=\"price\">Rs");
      out.print( item.getFinalPrice() );
      out.write("\r\n");
      out.write("                    <span class=\"original\">Rs");
      out.print( item.getUnitPrice() * item.getQuantity() );
      out.write("</span>\r\n");
      out.write("                </p>\r\n");
      out.write("                <p class=\"discount\">(");
      out.print( item.getDiscountPercent() );
      out.write("% OFF)</p>\r\n");
      out.write("            </div>\r\n");
      out.write("        </div>\r\n");
      out.write("    ");
 } 
      out.write("\r\n");
      out.write("\r\n");
      out.write("            <div class=\"cart-total\">\r\n");
      out.write("                <p id=\"total\">Total Cart Subtotal: Rs. ");
      out.print( cartTotal );
      out.write("</p>\r\n");
      out.write("            </div>\r\n");
      out.write("            <div class=\"cart-actions\" style=\"text-align: right; margin-top: 20px;\">\r\n");
      out.write("                <button id=\"placeOrderBtn\" disabled>Place Order</button>\r\n");
      out.write("            </div>\r\n");
      out.write("        </div>\r\n");
      out.write("\r\n");
      out.write("        <script>\r\n");
      out.write("\r\n");
      out.write("                console.log(\"hello\");\r\n");
      out.write("                document.getElementById(\"placeOrderBtn\").addEventListener(\"click\", function () {\r\n");
      out.write("                    if (!this.disabled) {\r\n");
      out.write("                            var contextPath = '");
      out.print( request.getContextPath() );
      out.write("';\r\n");
      out.write("                             var userId = ");
      out.print( request.getAttribute("userId") );
      out.write(";\r\n");
      out.write("                            var cartId = ");
      out.print( request.getAttribute("cartId") );
      out.write(";\r\n");
      out.write("                            window.location.href = contextPath + '/address?userId=' + userId + '&cartId=' + cartId;\r\n");
      out.write("                        }\r\n");
      out.write("                });\r\n");
      out.write("\r\n");
      out.write("            function updateQuantity(cartItemId, selectElement) {\r\n");
      out.write("                const newQuantity = selectElement.value;\r\n");
      out.write("\r\n");
      out.write("                fetch(\"update-quantity\", {\r\n");
      out.write("                    method: \"POST\",\r\n");
      out.write("                    headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\r\n");
      out.write("                    body: \"cartItemId=\" + encodeURIComponent(cartItemId)+\"&newQuantity=\"+encodeURIComponent(newQuantity)\r\n");
      out.write("                })\r\n");
      out.write("                .then(res => res.text())\r\n");
      out.write("                .then(result => {\r\n");
      out.write("                    const statusEl = document.getElementById(\"status_\" + cartItemId);\r\n");
      out.write("                    if (result.trim() === \"out_of_stock\") {\r\n");
      out.write("                        statusEl.innerText = \"Out of Stock\";\r\n");
      out.write("                        statusEl.classList.remove(\"in-stock\");\r\n");
      out.write("                        statusEl.classList.add(\"out-of-stock\");\r\n");
      out.write("                    } else {\r\n");
      out.write("                        statusEl.innerText = \"In Stock\";\r\n");
      out.write("                        statusEl.classList.remove(\"out-of-stock\");\r\n");
      out.write("                        statusEl.classList.add(\"in-stock\");\r\n");
      out.write("                    }\r\n");
      out.write("\r\n");
      out.write("                    checkAllInStock();\r\n");
      out.write("                    location.reload();\r\n");
      out.write("                })\r\n");
      out.write("                .catch(error => {\r\n");
      out.write("                    console.error(\"Error:\", error);\r\n");
      out.write("                    alert(\"Error updating quantity.\");\r\n");
      out.write("                });\r\n");
      out.write("            }\r\n");
      out.write("\r\n");
      out.write("            const contextPath = '");
      out.print( request.getContextPath() );
      out.write("';\r\n");
      out.write("            console.log('hello');\r\n");
      out.write("\r\n");
      out.write("            function deleteCartItem(cartItemId) {\r\n");
      out.write("                console.log(\"Deleting cartItemId:\", cartItemId);\r\n");
      out.write("                fetch(contextPath + \"/delete-item\", {\r\n");
      out.write("                    method: \"POST\",\r\n");
      out.write("                    headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\r\n");
      out.write("                    body: \"cartItemId=\" + encodeURIComponent(cartItemId)\r\n");
      out.write("                })\r\n");
      out.write("                .then(res => res.text())\r\n");
      out.write("                .then(result => {\r\n");
      out.write("                    if (result.trim() === \"deleted\") {\r\n");
      out.write("                        const row = document.getElementById(\"row_\" + cartItemId);\r\n");
      out.write("                        if (row) row.remove();\r\n");
      out.write("                        checkAllInStock();\r\n");
      out.write("                        location.reload(); // update totals\r\n");
      out.write("                    } else {\r\n");
      out.write("                        alert(\"Failed to delete item.\");\r\n");
      out.write("                    }\r\n");
      out.write("                })\r\n");
      out.write("                .catch(err => {\r\n");
      out.write("                    console.error(\"Error:\", err);\r\n");
      out.write("                    alert(\"Error deleting item.\");\r\n");
      out.write("                });\r\n");
      out.write("            }\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("            function checkAllInStock() {\r\n");
      out.write("                const statusElements = document.querySelectorAll(\".status\");\r\n");
      out.write("                const placeOrderBtn = document.getElementById(\"placeOrderBtn\");\r\n");
      out.write("                let allInStock = true;\r\n");
      out.write("\r\n");
      out.write("                statusElements.forEach(status => {\r\n");
      out.write("                    if (status.innerText.trim().toLowerCase() === \"out of stock\") {\r\n");
      out.write("                        allInStock = false;\r\n");
      out.write("                    }\r\n");
      out.write("                });\r\n");
      out.write("\r\n");
      out.write("                placeOrderBtn.disabled = !allInStock;\r\n");
      out.write("            }\r\n");
      out.write("\r\n");
      out.write("            checkAllInStock();\r\n");
      out.write("        </script>\r\n");
      out.write("    </body>\r\n");
      out.write("</html>");
    } catch (java.lang.Throwable t) {
      if (!(t instanceof javax.servlet.jsp.SkipPageException)){
        out = _jspx_out;
        if (out != null && out.getBufferSize() != 0)
          try {
            if (response.isCommitted()) {
              out.flush();
            } else {
              out.clearBuffer();
            }
          } catch (java.io.IOException e) {}
        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
        else throw new ServletException(t);
      }
    } finally {
      _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }
}
