/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.siso.horario.Servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONArray;
import pe.siso.horario.Beans.Docente;
import pe.siso.horario.Beans.Merito;
import pe.siso.horario.Beans.PeriodoAcademico;
import pe.siso.horario.Services.DocenteServices;
import pe.siso.horario.Services.MeritoServices;
import pe.siso.horario.Services.PeriodoAcademicoServices;

/**
 *
 * @author sistem02user
 */
public class ServletTablaMerito extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String param = request.getParameter("Accion");
        if ("listarDocentes".equals(param)) {
            listarDocentes(request, response);
        } else if ("quitarAsignacionCoordinador".equals(param)) {
            quitarAsignacionCoordinador(request, response);
        } else if ("asignarCoordinador".equals(param)) {
            asignarCoordinador(request, response);
        } else if ("listarDocentePlana".equals(param)) {
            listarDocentePlana(request, response);
        } else if ("quitarAsignacionCoordinadorPlana".equals(param)) {
            quitarAsignacionCoordinadorPlana(request, response);
        } else if ("asignarCoordinadorPlana".equals(param)) {
            asignarCoordinadorPlana(request, response);
        } else if ("mostrarTablaEvaluacionDocente".equals(param)) {
            mostrarTablaEvaluacionDocente(request, response);
        } else if ("registrarNotaTablaEvaluacion".equals(param)) {
            registrarNotaTablaEvaluacion(request, response);
        }else if("registrarPuesto".equals(param)){
					registrarPuesto(request,response);
				}else if("registrarObservacion".equals(param)){
					registrarObservacion(request,response);
				}
    }

    private void listarDocentes(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String apellidoDocente = request.getParameter("apellidoDocente");
        String codigoArea = request.getParameter("codigoArea");
        String codigoPeriodoAcademico = request.getParameter("codigoPeriodo");
        ArrayList<Docente> lista = null;

        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();

        DocenteServices servicioDocente = new DocenteServices();

        lista = servicioDocente.listaDocentesPorArea(codigoArea, apellidoDocente);
        int contador = 1;
        int coordinador = 0;
        int cantidad = 0;
        pw.println("<table class=\"table table-striped table-bordered table-hover\">\n"
                + " <thead class=\"thin-border-bottom\">\n"
                + "     <tr>\n"
                + "         <th class=\"text-center\">\n"
                + "             N°\n"
                + "         </th>\n"
                + "         <th class=\"text-center\">\n"
                + "             APELLIDOS\n"
                + "         </th>\n"
                + "         <th class=\"text-center\">\n"
                + "             NOMBRES\n"
                + "         </th>\n"
                + "         <th class=\"text-center\">\n"
                + "             ACCIÓN\n"
                + "         </th>\n"
                + " </thead>"
                + "<tbody>");
        cantidad = servicioDocente.cantidadCoordinadorAsignado(codigoArea, codigoPeriodoAcademico);
        for (int i = 0; i < lista.size(); i++) {
            String codigoDocente = lista.get(i).getCodigoDocente();
            String apellido = lista.get(i).getApe_pro();
            String nombre = lista.get(i).getNom_pro();
            coordinador = servicioDocente.consultarCoordinadorArea(codigoDocente, codigoPeriodoAcademico, codigoArea);

            pw.println("<tr>"
                    + "<td class=\"text-center\">" + contador + "</td>"
                    + "<td>" + apellido + "</td>"
                    + "<td>" + nombre + "</td>"
                    + "<td class=\"text-center\">");
            if (coordinador == 1) {
                pw.println("<a href=\"javascript:conformidadAsignarCoordinador('" + codigoDocente + "',0);\" class='yellow'><img src='imagenes/icons/star.png'></a>");
            } else {
                pw.println("<a href=\"javascript:conformidadAsignarCoordinador('" + codigoDocente + "',1);\" class='blue'><img src='imagenes/icons/user.png'></a>");
            }

//                            + "<a href=\"javascript:conformidadAsignarCoordinador('"+lista.get(i).getCodigoDocente()+"');\" class='green'><i class='fa fa-star'> </i></a>"
            pw.println("</td>"
                    + "</tr>");
            contador++;
        }
        pw.println("</tbody>");

        pw.println("<input id='txtCantAsi' type='hidden' value = '" + cantidad + "' >");

    }

    private void quitarAsignacionCoordinador(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String codigoDocente = request.getParameter("codigoDocente");
        String codigoPeriodoAcademico = request.getParameter("codigoPeriodo");
        String codigoArea = request.getParameter("codigoArea");
        int dato = 0;
        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();
        DocenteServices servicioDocente = new DocenteServices();
        dato = servicioDocente.quitarAsignacionCoordinador(codigoDocente, codigoPeriodoAcademico, codigoArea);
        if (dato > 0) {
            pw.print("1");
        } else {
            pw.print("0");
        }

    }

    private void asignarCoordinador(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String codigoDocente = request.getParameter("codigoDocente");
        String codigoArea = request.getParameter("codigoArea");
        String codigoPeriodoAcademico = request.getParameter("codigoPeriodo");
        int dato = 0;

        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();

        DocenteServices servicioDocente = new DocenteServices();
        dato = servicioDocente.asignarCoordinador(codigoDocente, codigoPeriodoAcademico, codigoArea);
        if (dato > 0) {
            pw.print("1");
        } else {
            pw.print("0");
        }

    }

    private void listarDocentePlana(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String apellidoDocente = request.getParameter("apellidoDocente");
        String codigoPeriodoAcademico = request.getParameter("codigoPeriodo");
        String codigoPlana = request.getParameter("codigoPlana");
        ArrayList<Docente> lista = null;

        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();

        DocenteServices servicioDocente = new DocenteServices();

        lista = servicioDocente.listaDocentesPorPlana(codigoPlana, codigoPeriodoAcademico, apellidoDocente);
        int contador = 1;
        int coordinador = 0;
        int cantidad = 0;
        pw.println("<table class=\"table table-striped table-bordered table-hover\">\n"
                + " <thead class=\"thin-border-bottom\">\n"
                + "     <tr>\n"
                + "         <th class=\"text-center\">\n"
                + "             N°\n"
                + "         </th>\n"
                + "         <th class=\"text-center\">\n"
                + "             APELLIDOS\n"
                + "         </th>\n"
                + "         <th class=\"text-center\">\n"
                + "             NOMBRES\n"
                + "         </th>\n"
                + "         <th class=\"text-center\">\n"
                + "             ACCIÓN\n"
                + "         </th>\n"
                + " </thead>"
                + "<tbody>");
        cantidad = servicioDocente.cantidadCoordinadorAsignadoPlana(codigoPlana, codigoPeriodoAcademico);
        for (int i = 0; i < lista.size(); i++) {
            String codigoDocente = lista.get(i).getCodigoDocente();
            String apellido = lista.get(i).getApe_pro();
            String nombre = lista.get(i).getNom_pro();
            coordinador = servicioDocente.consultarCoordinadorPlana(codigoDocente, codigoPeriodoAcademico, codigoPlana);

            pw.println("<tr>"
                    + "<td class=\"text-center\">" + contador + "</td>"
                    + "<td>" + apellido + "</td>"
                    + "<td>" + nombre + "</td>"
                    + "<td class=\"text-center\">");
            if (coordinador == 1) {
                pw.println("<a href=\"javascript:conformidadAsignarCoordinador('" + codigoDocente + "',0);\" class='yellow'><img src='imagenes/icons/star.png'></a>");
            } else {
                pw.println("<a href=\"javascript:conformidadAsignarCoordinador('" + codigoDocente + "',1);\" class='blue'><img src='imagenes/icons/user.png'></a>");
            }

            pw.println("</td>"
                    + "</tr>");
            contador++;
        }

        if (lista.size() == 0) {
            pw.println("<tr colspan='4'><td>NO HAY DOCENTES ASIGNADOS A ESTA PLANA</td></tr>");
        }
        pw.println("</tbody>");

        pw.println("<input id='txtCantAsi' type='hidden' value = '" + cantidad + "' >");

    }

    private void quitarAsignacionCoordinadorPlana(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String codigoDocente = request.getParameter("codigoDocente");
        String codigoPeriodoAcademico = request.getParameter("codigoPeriodo");
        String codigoPlana = request.getParameter("codigoPlana");

        int dato = 0;
        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();

        DocenteServices servicioDocente = new DocenteServices();
        dato = servicioDocente.quitarAsignacionCoordinadorPlana(codigoDocente, codigoPeriodoAcademico, codigoPlana);
        if (dato > 0) {
            pw.print("1");
        } else {
            pw.print("0");
        }
    }

    private void asignarCoordinadorPlana(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String codigoDocente = request.getParameter("codigoDocente");
        String codigoPlana = request.getParameter("codigoPlana");
        String codigoPeriodoAcademico = request.getParameter("codigoPeriodo");
        int dato = 0;

        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();

        DocenteServices servicioDocente = new DocenteServices();
        dato = servicioDocente.asignarCoordinadorPlana(codigoDocente, codigoPeriodoAcademico, codigoPlana);
        if (dato > 0) {
            pw.print("1");
        } else {
            pw.print("0");
        }
    }

    private void mostrarTablaEvaluacionDocente(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String codigoPlana = request.getParameter("codigoPlana");
        String codigoPeriodo = request.getParameter("codigoPeriodo");
        String nombrePlana = request.getParameter("nombrePlana");

        ArrayList<Merito> lista = null;
        MeritoServices servicioMerito = new MeritoServices();

        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();

       

        DocenteServices servicioDocente = new DocenteServices();
        String codigoEncuesta = "";

        codigoEncuesta = servicioDocente.consultarCodigoEncuesta();
        PeriodoAcademico periodo = null;

        PeriodoAcademicoServices servicioPeriodoAcademico = new PeriodoAcademicoServices();
        periodo = servicioPeriodoAcademico.mostrarPeriodo(codigoEncuesta);
        String nombrePeriodo = periodo.getNombrePeriodo();
        if (codigoEncuesta.equals("")) {
            nombrePeriodo = "-";
        }
        
        lista = servicioMerito.listaTablaEvaluacionDocente(codigoPlana, codigoPeriodo,codigoEncuesta);
        pw.println("<div style=\"\">"
                + "         <!-- #section:custom/widget-box.options -->\n"
                + "         <div class=\"table-header\">\n"
                + "                <table width=\"100%\" height=\"50\">\n"
                + "                    <tbody>\n"
                + "                        <tr>\n"
                + "                            <td>Docentes de la Plana: " + nombrePlana + " :: Periodo: " + nombrePeriodo + "</td>\n"
                + "                            <td align=\"right\"><div id=\"boton\" class=\"\">\n"
                + "                            <button id='btnRegistrar' class=\"btn btn-sm btn-success\" onclick=\"conformidadRegistrarNota();\" type=\"button\">\n"
                + "                            <i class=\"ace-icon fa fa-save icon-on-right bigger-110\"></i>\n"
                + "                            Registrar\n"
                + "                            </button></div>\n"
                + "                            </td>\n"
									// BOTON REGISTRAR PUESTO
//								+ "                            <td align=\"right\"><div id=\"boton\" class=\"\">\n"
//                + "                            <button id='btnRegistrarPuesto' class=\"btn btn-sm btn-success\" onclick=\"conformidadRegistrarPuesto();\" type=\"button\">\n"
//                + "                            <i class=\"ace-icon fa fa-save icon-on-right bigger-110\"></i>\n"
//                + "                            Registrar Puesto\n"
//                + "                            </button></div>\n"
//                + "                            </td>\n"
									
									
									
                + "                            <td width=\"10\"></td>\n"
                + "                        </tr>\n"
                + "                    </tbody>\n"
                + "                </table>"
                + "         </div>\n"
                + "         <!-- /section:custom/widget-box.options -->\n"
                + "         <div>\n"
                + "             <div class=\"dataTables_wrapper form-inline no-footer\" id=\"sample-table-2_wrapper\">\n"
                + "                 <table class=\"table table-striped table-bordered table-hover\" id=\"tablaDatos\">\n"
                + "                     <thead class=\"thin-border-bottom\">\n "
                + "                         <tr>\n "
                + "                             <th class='text-center'>\n "
                + "                                N°\n "
                + "                             </th>\n "
                + "                             <th class='text-center'>\n "
                + "                                 APELLIDOS Y NOMBRES\n "
                + "                             </th>\n "
                + "                             <th class='text-center'>\n "
                + "                                 PROM. PLANA\n "
                + "                             </th>\n "
                + "                             <th class='text-center'>\n "
                + "                                 EX. BIM.\n "
                + "                             </th>\n "
                + "                             <th class='text-center'>\n "
                + "                                 ENCUESTA\n "
                + "                             </th>\n "
                + "                             <th class='text-center'>\n "
                + "                                 PROM. BIM.\n "
                + "                             </th>\n "
								+ "                             <th class='text-center'>\n "
                + "                                 PUESTO.\n "
                + "                             </th>\n "
								+ "                             <th class='text-center'>\n "
                + "                                 OBSERVACION.\n "
                + "                             </th>\n "
				
                + "                         </tr>\n "
                + "                     </thead>\n "
                + "                     <tbody id=\"listadoBody\">");
        int cont = 1;
        String etiqueta = "";

        for (int i = 0; i < lista.size(); i++) {
            String nombres = lista.get(i).getNombreProfesor();
            String codigoDocente = lista.get(i).getCodigoProfesor();
            String notaEncuesta = lista.get(i).getPuntajeEncuesta();
            String promedio = lista.get(i).getPromedio();
            String notaPlana = lista.get(i).getPuntajePlana();
            String notaExamen = lista.get(i).getPuntajeExamen();
            String puesto = lista.get(i).getPuesto();
            String observacion = lista.get(i).getObservacion();
//          merito = servicioMerito.consultarNotas(codigoDocente,codigoPeriodo);

            double puntajeEncuesta = Double.parseDouble(notaEncuesta);
            if (puntajeEncuesta > 8.49 && puntajeEncuesta <= 10) {
                etiqueta = "label label-success  arrowed-in arrowed-right";
            } else if (puntajeEncuesta < 8.5) {
                etiqueta = "label label-danger arrowed arrowed-in-right";
            }

            pw.println("<tr>"
                    + "<td class='text-center align-middle'>" + cont + "</td>"
                    + "<td class='align-middle'>" + nombres + "<input id='codDoc_" + i + "' type='hidden' value='" + codigoDocente + "'><input id='nomDoc_" + i + "' type='hidden' value='" + nombres + "'></td>"
                    + "<td class='text-center align-middle'><input id='notaPlana_" + i + "' type='text' class='form-control validate[max[10.00]]' onkeypress=\"return validarIngreso(event, this);\" value='" + notaPlana + "'></td>"
                    + "<td class='text-center align-middle'><input id='notaExamen_" + i + "' type='text' class='form-control validate[max[10.00]]' onkeypress=\"return validarIngreso(event, this);\" value='" + notaExamen + "'></td>"
                    + "<td class='text-center align-middle'><span class='" + etiqueta + "'>" + notaEncuesta + "</span><input type='hidden' value='" + notaEncuesta + "' id='notaEncuesta_" + i + "'></td>"
                    + "<td class='text-center align-middle'>" + promedio + "</td>"
	                  + "<td class='text-center align-middle'><input id='txtPuesto_"+i+"'  value='"+puesto+"' maxlength=\"4\" class='text-center align-middle' onkeypress=\"return validaSoloNumericos(event);\"  type='text' style='width:90px;' /></td>"
	                  + "<td class='form-control'><input id='txtObservacion_"+i+"'  value='"+observacion+"' type='text' style='width:100px;' /></td>"
                    + "</tr>");
            cont++;
        }

        if (lista.size() == 0) {
            pw.println("<tr><td colspan='8' class='text-center'>NO HAY ENCUESTA MIGRADA</td></tr>");
        }

        pw.println("                    </tbody><input type='hidden' id='cantidad' value='" + lista.size() + "'><input type='hidden' id='codEnc' value='" + codigoEncuesta + "'>"
                + "                 </table>\n"
                + "             </div>\n"
                + "         </div>\n"
                + "     </div>");

    }

    private void registrarNotaTablaEvaluacion(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String codigoPeriodoAcademico = request.getParameter("codigoPeriodo");
        String codigoPlana = request.getParameter("codigoPlana");
        String datos = request.getParameter("datos");
        String codigoEncuesta = request.getParameter("codigoEncuesta");
     
        String array[] = datos.split("!");
        int dato = 0;
        MeritoServices servicios = new MeritoServices();

        for (int i = 0; i < array.length; i++) {
            float suma = 0;
            float promedio = 0;
            String array1[] = array[i].split("#");
            String codigoDocente = array1[0];
            String nombreDocente = array1[1];
            String notaPlana = array1[2];
            String notaExamen = array1[3];
            String notaEncuesta = array1[4];
            
            String puesto = array1[5];
            String observacion = array1[6];
          

            int contador = 0;

            if (notaPlana.equals("vacio")) {

            } else {
                suma = Float.parseFloat(notaPlana);
                contador++;
            }

            if (notaExamen.equals("vacio")) {

            } else {
                suma += Float.parseFloat(notaExamen);
                contador++;
            }

            if (notaEncuesta.equals("vacio")) {

            } else {
                suma += Float.parseFloat(notaEncuesta);
                contador++;
            }

            if (contador == 0) {

            } else {
                promedio = suma / contador;
                double prom = promedio;
                prom = Math.round(prom * Math.pow(10, 2)) / Math.pow(10, 2);
                // DecimalFormat formatter = new DecimalFormat("#0.00");//imprime decimal con comas
                DecimalFormatSymbols simbolos = new DecimalFormatSymbols();
                simbolos.setDecimalSeparator('.');
                DecimalFormat formateador = new DecimalFormat("#0.00", simbolos); // imprime decimal con puntos
                dato = servicios.registrarNotaTablaEvaluacion(codigoDocente, nombreDocente, codigoPlana, codigoPeriodoAcademico, notaEncuesta, notaPlana, notaExamen, formateador.format(prom),codigoEncuesta,puesto,observacion);

            }
        }
        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();

        if (dato > 0) {
            pw.print("1");
        } else {
            pw.print("0");
        }

    }

	private void registrarPuesto(HttpServletRequest request, HttpServletResponse response) throws IOException {
		MeritoServices servicioMerito = new MeritoServices();

        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();
				String codDocente=request.getParameter("codigoDoc");
				String codPlana=request.getParameter("codigoPlana");
				String codEncuesta=request.getParameter("codigoEncuesta");
				String puesto=request.getParameter("puesto");
				int dato=servicioMerito.registrarPuesto(codDocente, codPlana, codEncuesta, puesto);
				pw.println(dato);
				
	}

	private void registrarObservacion(HttpServletRequest request, HttpServletResponse response) throws IOException {
			MeritoServices servicioMerito = new MeritoServices();

        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();
				String codDocente=request.getParameter("codigoDoc");
				String codPlana=request.getParameter("codigoPlana");
				String codEncuesta=request.getParameter("codigoEncuesta");
				String observacion=request.getParameter("observacion");
				int dato=servicioMerito.registrarObservacion(codDocente, codPlana, codEncuesta, observacion);
				pw.println(dato);
	}

}
