package Servlet;

import Datos.JugadorDB;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import Modelo.Jugador;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Locale;
import java.util.UUID;

public class CrearEquipo3Servlet extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        String encoding = request.getCharacterEncoding();
        if (encoding==null) {
            request.setCharacterEncoding("UTF-8");
        }
        String url = "";
        HttpSession sesion = request.getSession();
        String id_equipo = request.getParameter("id_equipo");
        String operacion = request.getParameter("operacion");
        
        if(operacion.equals("MOD")){
            int tamaño = Integer.parseInt(request.getParameter("tamaño"));
            ArrayList<Jugador> jugadoresdb = JugadorDB.getJugadoresEquipo(id_equipo);
            for(int i = 0; i<tamaño;i++){
                String id_jugador = request.getParameter("id_jugador"+i);
                String nombre = request.getParameter("nombreJugador"+i);
                String apellidos = request.getParameter("apellidosJugador"+i);
                String direccion = request.getParameter("direccionJugador"+i);
                String fecha = request.getParameter("fechaNacimiento"+i);
                String fechadb = jugadoresdb.get(i).getFecha_nacimiento().toString();
                SimpleDateFormat formato = null;
                if(fecha.equals(fechadb)){
                    formato = new SimpleDateFormat("yyyy-MM-dd");
                }else{
                    formato = new SimpleDateFormat("MMM dd, yyyy", Locale.ENGLISH);
                }
                Date fecha_nac = null;
                try{
                    fecha_nac = formato.parse(fecha);
                }catch(ParseException ex){
                    ex.printStackTrace();
                }
                if(!id_jugador.isEmpty() && nombre.isEmpty()){
                    if(JugadorDB.borrarJugador(id_jugador)){
                        url = "/mensaje.jsp?mensaje=Equipo modificado correctamente";
                    }else{
                        url = "/mensaje.jsp?mensaje=Error al modificar el equipo";
                    }
                }else{
                    Jugador jug = new Jugador(id_jugador,id_equipo,nombre,apellidos,direccion,fecha_nac);
                    if(JugadorDB.updateJugador(jug)){
                        url = "/mensaje.jsp?mensaje=Equipo modificado correctamente";
                    }else{
                        url = "/mensaje.jsp?mensaje=Error al modificar el equipo";
                    }
                }
            }
            for(int j = tamaño; j<15; j++){
                String nombre = request.getParameter("nombreJugador"+j);
                if(!nombre.isEmpty()){
                    String apellidos = request.getParameter("apellidosJugador"+j);
                    String direccion = request.getParameter("direccionJugador"+j);
                    String fecha = request.getParameter("fechaNacimiento"+j);
                    SimpleDateFormat formato = new SimpleDateFormat("MMM dd, yyyy", Locale.ENGLISH);
                    Date fecha_nac = null;
                    try{
                        fecha_nac = formato.parse(fecha);
                    }catch(ParseException ex){
                        ex.printStackTrace();
                    }
                    String id_jugador = UUID.randomUUID().toString();
                    Jugador jug = new Jugador(id_jugador,id_equipo,nombre,apellidos,direccion,fecha_nac);  
                    if(JugadorDB.addJugador(jug)){
                        url = "/mensaje.jsp?mensaje=Equipo modificado correctamente";
                    }else{
                        url = "/mensaje.jsp?mensaje=Error al modificar el equipo";
                    }
                }
                
            }
        } else {
            for(int i = 0; i<15;i++){
                String nombre_jugador = request.getParameter("nombreJugador"+i);
                if(!nombre_jugador.isEmpty()){
                    String apellidos_jugador = request.getParameter("apellidosJugador"+i);
                    String direccion_jugador = request.getParameter("direccionJugador"+i);
                    String fecha = request.getParameter("fechaNacimiento"+i);
                        SimpleDateFormat formato = new SimpleDateFormat("MMM dd, yyyy", Locale.ENGLISH);
                        Date fecha_nac = null;
                        try{
                            fecha_nac = formato.parse(fecha);
                        }catch(ParseException ex){
                            ex.printStackTrace();
                        }
                    String id_jugador = UUID.randomUUID().toString();

                    Jugador jugador = new Jugador(id_jugador, id_equipo, nombre_jugador, apellidos_jugador, direccion_jugador, fecha_nac);
                    if(JugadorDB.addJugador(jugador)){
                        url = "/mensaje.jsp?mensaje=Equipo añadido correctamente";
                    }else{
                        url = "/mensaje.jsp?mensaje=Error al añadir el equipo";
                    }
                }
            }
        }
        RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url);
        dispatcher.forward(request, response);
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
