package Servlet;

import Datos.AsistenciaDB;
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 Datos.JornadaDB;
import Datos.JugadorDB;
import Modelo.CodClub;
import Modelo.Equipo;
import Modelo.Jornada;
import Modelo.Jugador;
import Modelo.Partido;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
//import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class DescargarAsistenciaServlet 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 = "/principal";
        response.setContentType("application/force-download");
        HttpSession sesion = request.getSession();
        String fecha = request.getParameter("fecha_asistencia");
        Date fecha_asistencia = null;
        SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd");
            try{
                fecha_asistencia = formato.parse(fecha);
            }catch(ParseException ex){
                  ex.printStackTrace();
            }
        Equipo equipo = (Equipo) sesion.getAttribute("equipo");
        ArrayList<ArrayList<String>> asistencia = AsistenciaDB.getAsistenciaEquipo(equipo.getId_equipo(), fecha_asistencia);
        ArrayList <Jugador> lista_jugadores = JugadorDB.getJugadoresEquipo(equipo.getId_equipo());
        String appPath = request.getServletContext().getRealPath("");
        File file = new File(appPath + File.separator + "Asistencia.xls");
        FileOutputStream fileout = new FileOutputStream(file);
        Workbook book = new HSSFWorkbook();
        Sheet sheet = book.createSheet("Asistencia");

        Row row = sheet.createRow(0);
        for(int i = 0; i<lista_jugadores.size();i++){
            String nom_apel = lista_jugadores.get(i).getNombre_jugador() + " "+lista_jugadores.get(i).getApellidos_jugador() ;
            row.createCell(i).setCellValue(nom_apel);
        }
        row = sheet.createRow(1);
        for(int i = 0; i < lista_jugadores.size();i++){
            ArrayList <String> aux = asistencia.get(i);
            row.createCell(i).setCellValue(aux.get(1));
        }

        book.write(fileout);
        fileout.close();
        
        OutputStream out = response.getOutputStream();
        FileInputStream in = new FileInputStream(file);
        byte[] buffer = new byte[4096];
        int length;
        while ((length = in.read(buffer)) > -1) {
            out.write(buffer, 0, length);
        }
        in.close();
        out.flush();
        
        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);
    }
}
