/// <summary>
        /// Mariela Calvo
        /// Abril/2020
        /// Efecto: Visualmente elimina un asistente de una tarjeta
        /// Requiere: Clickear el boton "eliminar"  de la tabla de nombramientos
        /// Modifica: -
        /// Devuelve: -
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnDetallesNombramiento(object sender, EventArgs e)
        {
            int          idNombramiento = Convert.ToInt32((((LinkButton)(sender)).CommandArgument).ToString());
            Nombramiento nombramiento   = nombramientoServicios.ObtenerDetallesNombramiento(idNombramiento);


            txtAsistenteD.CssClass = "form-control";
            txtDetalles.CssClass   = "form-control";
            txtSolicitudD.Visible  = false;
            Label18.Visible        = false;
            if (nombramiento.aprobado && nombramiento.solicitud == 1)
            {
                txtSolicitudD.Style.Add("background-color", "#0BA55E");
                txtSolicitudD.Text = "APROBADO";
            }
            else if (!nombramiento.aprobado && nombramiento.solicitud == 2)
            {
                txtSolicitudD.Style.Add("background-color", "#D96F6F");
                txtSolicitudD.Text = "RECHAZADO";
            }
            else if (!nombramiento.aprobado && nombramiento.solicitud == 0)
            {
                txtSolicitudD.Style.Add("background-color", "#E88C01");
                txtSolicitudD.Text = "PENDIENTE";
            }

            txtAsistenteD.Text = nombramiento.asistente.nombreCompleto;
            txtDetalles.Text   = nombramiento.observaciones;


            ScriptManager.RegisterStartupScript(this, this.GetType(), "activar", "activarModalDetallesNombramiento();", true);
        }
        protected void AsistenteAprobar_OnChanged(object sender, EventArgs e)
        {
            int idNombramiento = Convert.ToInt32(((LinkButton)(sender)).CommandArgument.ToString());

            nombramientoS = nombramientoServicios.ObtenerDetallesNombramiento(idNombramiento);
            List <Nombramiento> listaAsistentes         = (List <Nombramiento>)Session["listaAsistentes"];
            List <Nombramiento> listaAsistentesFiltrada = (List <Nombramiento>)listaAsistentes.Where(nombramiento => nombramiento.idNombramiento == Convert.ToInt32(idNombramiento)).ToList();



            foreach (Nombramiento nombramiento in listaAsistentesFiltrada)
            {
                txtNumeroCarné.Text      = nombramiento.asistente.carnet;
                txtNombreAsistente.Text  = nombramiento.asistente.nombreCompleto;
                txtCantidadHoras.Text    = Convert.ToString(nombramiento.cantidadHorasNombrado);
                txtObservaciones.Enabled = true;
                AsistenteDDL.Enabled     = true;
                btnGuardar.Visible       = true;
                ButtonCerrar.Visible     = true;
                BtnCerrar.Visible        = false;
            }
            SeleccionarEstado();


            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "#modalObservacionesAsistente", "$('body').removeClass('modal-open');$('.modal-backdrop').remove();$('#modalObservacionesAsistente').hide();", true);
            ScriptManager.RegisterStartupScript(this, this.GetType(), "activar", "observacionesAsistentes();", true);
        }
        public int insertarNombramientoAsistente(Nombramiento nombramiento)
        {
            SqlConnection connection = conexion.ConexionControlAsistentes();

            String consulta
                = @"INSERT Nombramiento (id_asistente,id_periodo,id_unidad, aprobado, cantidad_horas,induccion) 
                    VALUES (@asistente,@periodo,@unidad,@aprobado,@horas,@induccion);
                    SELECT SCOPE_IDENTITY();";

            SqlCommand command = new SqlCommand(consulta, connection);

            command.Parameters.AddWithValue("@asistente", nombramiento.asistente.idAsistente);
            command.Parameters.AddWithValue("@periodo", nombramiento.periodo.idPeriodo);
            command.Parameters.AddWithValue("@unidad", nombramiento.unidad.idUnidad);
            command.Parameters.AddWithValue("@aprobado", nombramiento.aprobado);
            command.Parameters.AddWithValue("@horas", nombramiento.cantidadHorasNombrado);
            command.Parameters.AddWithValue("@induccion", nombramiento.recibeInduccion);

            connection.Open();
            int idNombramiento = Convert.ToInt32(command.ExecuteScalar());

            connection.Close();

            return(idNombramiento);
        }
        /// <summary>
        /// Mariela Calvo
        /// Mayo/2020
        /// Efecto: Guardar los archivos del nombramiento del asistente
        /// Requiere: -
        /// Modifica:
        /// Devuelve: -
        /// </summary>
        public int editarArchivos(Nombramiento nombramiento, FileUpload fileUp, int tipo)
        {
            int editado = 0;


            foreach (HttpPostedFile file in fileUp.PostedFiles)
            {
                String nombreArchivo = Path.GetFileName(file.FileName);
                nombreArchivo = nombreArchivo.Replace(' ', '_');
                DateTime fechaHoy = new DateTime();
                fechaHoy = DateTime.Now;
                String carpeta = nombramiento.asistente.nombreCompleto + "-" + nombramiento.periodo.semestre + "_" + nombramiento.periodo.anoPeriodo;;
                String nuevoTextoConsecutivo = file.FileName;
                editado = Utilidades.OverWriteFile(fileUp, fechaHoy.Year, nombreArchivo, nuevoTextoConsecutivo, carpeta);

                if (editado == 0)
                {
                    Archivo archivoNuevo = new Archivo();
                    archivoNuevo.nombreArchivo = nombreArchivo;
                    archivoNuevo.rutaArchivo   = Utilidades.path + fechaHoy.Year + "\\" + carpeta + "\\" + nombreArchivo;
                    archivoNuevo.fechaCreacion = fechaHoy;
                    archivoNuevo.creadoPor     = "Mariela Calvo";//Session["nombreCompleto"].ToString();
                    archivoNuevo.tipoArchivo   = tipo;
                    int idA = archivoServicios.insertarArchivo(archivoNuevo);
                    archivoServicios.insertarArchivoNombramiento(idA, nombramiento.idNombramiento);
                }
            }

            return(editado);
        }
        /// <summary>
        /// Mariela Calvo
        /// Abril/2020
        /// Efecto: Obtiene los nombramientos de los asistentes
        /// Requiere: -
        /// Modifica:
        /// Devuelve: Lista de nombramiento
        /// </summary>
        public List <Nombramiento> ObtenerNombramientos()
        {
            SqlConnection       sqlConnection = conexion.ConexionControlAsistentes();
            List <Nombramiento> nombramientos = new List <Nombramiento>();

            String consulta = @"SELECT n.solicitud,u.id_unidad, n.induccion, n.id_nombramiento, a.id_asistente, a.nombre_completo,a.carnet,a.telefono, n.aprobado, p.semestre, p.ano_periodo,n.cantidad_horas, a.cantidad_periodos_nombrado, u.nombre as unidad,  e.nombre_completo as nombre_encargado " +
                              " FROM Asistente a JOIN Nombramiento n ON a.id_asistente=n.id_asistente JOIN Encargado_Asistente ea ON a.id_asistente=ea.id_asistente " +
                              " JOIN Encargado e ON ea.id_encargado=e.id_encargado JOIN Encargado_Unidad eu ON ea.id_encargado=eu.id_encargado JOIN Unidad u ON eu.id_unidad=u.id_unidad " +
                              " JOIN Periodo p ON n.id_periodo=p.id_periodo WHERE p.habilitado=1 AND n.disponible=1 ";

            SqlCommand sqlCommand = new SqlCommand(consulta, sqlConnection);


            SqlDataReader reader;

            sqlConnection.Open();
            reader = sqlCommand.ExecuteReader();

            while (reader.Read())
            {
                Nombramiento nombramiento = new Nombramiento();
                nombramiento.idNombramiento        = Convert.ToInt32(reader["id_nombramiento"].ToString());
                nombramiento.recibeInduccion       = Convert.ToBoolean(reader["induccion"].ToString());
                nombramiento.aprobado              = Convert.ToBoolean(reader["aprobado"].ToString());
                nombramiento.cantidadHorasNombrado = Convert.ToInt32(reader["cantidad_horas"].ToString());
                nombramiento.solicitud             = Convert.ToInt32(reader["solicitud"].ToString());

                Asistente asistente = new Asistente();
                asistente.idAsistente              = Convert.ToInt32(reader["id_asistente"].ToString());
                asistente.nombreCompleto           = reader["nombre_completo"].ToString();
                asistente.carnet                   = reader["carnet"].ToString();
                asistente.cantidadPeriodosNombrado = ObtenerCantidadAsistencias(asistente.idAsistente);

                nombramiento.asistente = asistente;


                Periodo periodo = new Periodo();
                periodo.semestre     = reader["semestre"].ToString();
                periodo.anoPeriodo   = Convert.ToInt32(reader["ano_periodo"].ToString());
                nombramiento.periodo = periodo;


                Unidad unidad = new Unidad();
                unidad.nombre   = reader["unidad"].ToString();
                unidad.idUnidad = Convert.ToInt32(reader["id_unidad"].ToString());;

                Encargado encargado = new Encargado();
                encargado.nombreCompleto = reader["nombre_encargado"].ToString();
                unidad.encargado         = encargado;

                nombramiento.unidad = unidad;
                nombramientos.Add(nombramiento);
            }

            sqlConnection.Close();

            return(nombramientos);
        }
        /// <summary>
        /// Mariela Calvo
        /// Abril/2020
        /// Efecto: Guardar un nuevo nombramiento para una unidad en especifico junto con sus archivos
        /// Requiere: -
        /// Modifica:
        /// Devuelve: -
        /// </summary>
        protected void guardarNombramiento_Click(object sender, EventArgs e)
        {
            if (validarNombramiento())
            {
                string    periodoSemestre = periodosDDL.SelectedValue.ToString();
                int       idAsistente     = asistenteSelecionado.idAsistente;
                int       idPeriodo       = Convert.ToInt32(periodosDDL.SelectedValue);
                Periodo   periodo         = periodoServicios.ObtenerPeriodoPorId(idPeriodo);
                Asistente asistente       = (asistenteServicios.ObtenerAsistentesXUnidad(unidadEncargado.idUnidad)).FirstOrDefault(a => a.idAsistente == idAsistente);


                /* INSERCIÓN NOMBRAMIENTO ASISTENTE */
                Nombramiento nombramiento = new Nombramiento();
                nombramiento.asistente = asistente;
                nombramiento.periodo   = periodo;
                Unidad unidad = new Unidad();
                unidad.idUnidad                    = unidadEncargado.idUnidad;
                nombramiento.unidad                = unidad;
                nombramiento.aprobado              = false;
                nombramiento.recibeInduccion       = Convert.ToBoolean(ChckBxInduccion.Checked);
                nombramiento.cantidadHorasNombrado = Convert.ToInt32(txtHorasN.Text);
                int idNombramiento = nombramientoServicios.insertarNombramiento(nombramiento);
                nombramiento.idNombramiento = idNombramiento;

                /* INSERCIÓN ARCHIVOS DEL ASISTENTE */
                int tipo = 1;
                List <FileUpload> listaArchivosInsertar = new List <FileUpload>();
                listaArchivosInsertar.Add(fileExpediente);
                listaArchivosInsertar.Add(fileInforme);
                listaArchivosInsertar.Add(fileCV);
                listaArchivosInsertar.Add(fileCuenta);

                List <Archivo> listaArchivos = guardarArchivos(nombramiento, listaArchivosInsertar);

                foreach (Archivo archivo in listaArchivos)
                {
                    archivo.tipoArchivo = tipo;
                    int idArchivo = archivoServicios.insertarArchivo(archivo);
                    archivoServicios.insertarArchivoNombramiento(idArchivo, idNombramiento);
                    tipo++;
                }
                List <Nombramiento> listaAsistentes = asistenteServicios.ObtenerAsistentesXUnidadSinNombrar(unidadEncargado.idUnidad);
                Session["listaAsistentes"]         = listaAsistentes;
                Session["listaAsistentesFiltrada"] = listaAsistentes;
                MostrarAsistentes();
                ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "toastr.success('" + "El asistente " + nombramiento.asistente.nombreCompleto + " fue registrado exitosamente!');", true);
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "#modalNuevoNombramiento", "$('body').removeClass('modal-open');$('.modal-backdrop').remove();$('#modalNuevoNombramientohide();", true);
            }
            else
            {
                ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "toastr.error('" + "Formulario Incompleto');", true);
                ScriptManager.RegisterStartupScript(this, this.GetType(), "activar", "activarModalNuevoNombramiento();", true);
            }
        }
        /// <summary>
        /// Mariela Calvo
        /// Abril/2020
        /// Efecto: Visualmente elimina un asistente de una tarjeta
        /// Requiere: Clickear el boton "eliminar"  de la tabla de nombramientos
        /// Modifica: -
        /// Devuelve: -
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnEditarNombramiento(object sender, EventArgs e)
        {
            int idNombramiento = Convert.ToInt32((((LinkButton)(sender)).CommandArgument).ToString());
            List <Nombramiento> nombramientos = nombramientoServicios.ObtenerNombramientosPorUnidad(unidadEncargado.idUnidad);

            nombramientoSeleccionado = nombramientos.FirstOrDefault(a => a.idNombramiento == idNombramiento);
            List <Archivo> archivos = nombramientoSeleccionado.listaArchivos;

            asistenteSelecionado = nombramientoSeleccionado.asistente;
            int AS = nombramientoSeleccionado.asistente.idAsistente;

            txtHorasM.CssClass     = "form-control";
            txtAsistenteM.CssClass = "form-control";
            txtPeriodoM.CssClass   = "form-control";
            txtUnidadM.CssClass    = "form-control";

            fileExpedienteM.CssClass = "form-control";
            fileInformeM.CssClass    = "form-control";
            fileCVM.CssClass         = "form-control";
            fileCuenta.CssClass      = "form-control";


            foreach (Archivo archivo in archivos)
            {
                if (archivo.tipoArchivo == 2)
                {
                    btnInforme.CommandArgument = archivo.idArchivo + "";
                }
                if (archivo.tipoArchivo == 1)
                {
                    btnExpediente.CommandArgument = archivo.idArchivo + "";
                }
                if (archivo.tipoArchivo == 3)
                {
                    btnCV.CommandArgument = archivo.idArchivo + "";
                }
                if (archivo.tipoArchivo == 4)
                {
                    btnCuenta.CommandArgument = archivo.idArchivo + "";
                }
            }

            txtUnidadM.Text    = unidadEncargado.nombre;
            checkBM.Checked    = nombramientoSeleccionado.recibeInduccion;
            txtHorasM.Text     = nombramientoSeleccionado.cantidadHorasNombrado + "";
            txtPeriodoM.Text   = nombramientoSeleccionado.periodo.semestre + " Semestre - " + nombramientoSeleccionado.periodo.anoPeriodo;
            txtAsistenteM.Text = nombramientoSeleccionado.asistente.nombreCompleto;


            ScriptManager.RegisterStartupScript(this, this.GetType(), "activar", "activarModalEditarNombramiento();", true);
        }
        // <summary>
        // Mariela Calvo
        // Abril/2019
        // Efecto: Actualiza un Nombramiento de la base de datos
        // Requiere: Nombramiento
        // Modifica: -
        // Devuelve: -
        // </summary>
        // <param name="Unidad"></param>
        public void EditarNombramiento(Nombramiento nombramiento)
        {
            SqlConnection sqlConnection = conexion.ConexionControlAsistentes();

            SqlCommand sqlCommand = new SqlCommand("update Nombramiento set cantidad_horas=@horas_, induccion=@induccion_ where id_nombramiento=@id_nombramiento_;", sqlConnection);

            sqlCommand.Parameters.AddWithValue("@id_nombramiento_", nombramiento.idNombramiento);
            sqlCommand.Parameters.AddWithValue("@induccion_", nombramiento.recibeInduccion);
            sqlCommand.Parameters.AddWithValue("@horas_", nombramiento.cantidadHorasNombrado);

            sqlConnection.Open();

            sqlCommand.ExecuteScalar();

            sqlConnection.Close();
        }
        /// <summary>
        /// Mariela Calvo
        /// Abril/2020
        /// Efecto: Guardar los archivos del nombramiento del asistente
        /// Requiere: -
        /// Modifica:
        /// Devuelve: -
        /// </summary>
        public List <Archivo> guardarArchivos(Nombramiento nombramiento, List <FileUpload> files)
        {
            List <Archivo> listaArchivos = new List <Archivo>();

            String archivosRepetidos = "";

            foreach (FileUpload archivo in files)
            {
                foreach (HttpPostedFile file in archivo.PostedFiles)
                {
                    String nombreArchivo = Path.GetFileName(file.FileName);
                    nombreArchivo = nombreArchivo.Replace(' ', '_');
                    DateTime fechaHoy = new DateTime();
                    fechaHoy = DateTime.Now;
                    String carpeta = nombramiento.asistente.nombreCompleto + "-" + nombramiento.periodo.semestre + "_" + nombramiento.periodo.anoPeriodo;

                    int guardado = Utilidades.SaveFile(file, fechaHoy.Year, nombreArchivo, carpeta);

                    if (guardado == 0)
                    {
                        Archivo archivoNuevo = new Archivo();
                        archivoNuevo.nombreArchivo = nombreArchivo;
                        archivoNuevo.rutaArchivo   = Utilidades.path + fechaHoy.Year + "\\" + carpeta + "\\" + nombreArchivo;
                        archivoNuevo.fechaCreacion = fechaHoy;
                        archivoNuevo.creadoPor     = "Mariela Calvo";//Session["nombreCompleto"].ToString();
                        listaArchivos.Add(archivoNuevo);
                    }
                    else
                    {
                        archivosRepetidos += "* " + nombreArchivo + ", \n";
                    }
                }
            }

            if (archivosRepetidos.Trim() != "")
            {
                archivosRepetidos = archivosRepetidos.Remove(archivosRepetidos.Length - 3);
                ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "toastr.error('" + "Los archivos " + archivosRepetidos + " no se pudieron guardar porque ya había archivos con ese nombre');", true);
            }

            return(listaArchivos);
        }
        /// <summary>
        /// Mariela Calvo
        /// Abril/2020
        /// Efecto: Visualmente elimina un asistente de una tarjeta
        /// Requiere: Clickear el boton "eliminar"  de la tabla de nombramientos
        /// Modifica: -
        /// Devuelve: -
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnEliminarNombramiento(object sender, EventArgs e)
        {
            int idNombramiento = Convert.ToInt32((((LinkButton)(sender)).CommandArgument).ToString());
            List <Nombramiento> nombramientos = nombramientoServicios.ObtenerNombramientosPorUnidad(unidadEncargado.idUnidad);

            nombramientoSeleccionado = nombramientos.FirstOrDefault(a => a.idNombramiento == idNombramiento);

            txtCarneE.CssClass     = "form-control";
            txtHorasNE.CssClass    = "form-control";
            txtPeriodosNE.CssClass = "form-control";
            txtPeriodoNE.CssClass  = "form-control";

            txtCarneE.Text         = nombramientoSeleccionado.asistente.carnet;
            txtHorasNE.Text        = nombramientoSeleccionado.cantidadHorasNombrado + "";
            txtPeriodosNE.Text     = nombramientoSeleccionado.asistente.cantidadPeriodosNombrado + "";
            txtPeriodoNE.Text      = nombramientoSeleccionado.periodo.semestre + " Semestre - " + nombramientoSeleccionado.periodo.anoPeriodo;
            lbNombreAsistente.Text = nombramientoSeleccionado.asistente.nombreCompleto;


            ScriptManager.RegisterStartupScript(this, this.GetType(), "activar", "activarModalEliminarNombramiento();", true);
        }
        public Nombramiento ObtenerDetallesNombramiento(int idNombramiento)
        {
            Nombramiento  nombramiento  = new Nombramiento();
            SqlConnection sqlConnection = conexion.ConexionControlAsistentes();


            String consulta = @"SELECT n.solicitud,n.observaciones, a.id_asistente, a.nombre_completo, n.aprobado FROM Nombramiento n
                                JOIN Asistente a ON n.id_asistente=a.id_asistente WHERE n.disponible=1 AND a.disponible=1 AND n.id_nombramiento=@idNombramiento";

            SqlCommand sqlCommand = new SqlCommand(consulta, sqlConnection);

            sqlCommand.Parameters.AddWithValue("@idNombramiento", idNombramiento);

            SqlDataReader reader;

            sqlConnection.Open();
            reader = sqlCommand.ExecuteReader();

            while (reader.Read())
            {
                nombramiento.idNombramiento = idNombramiento;
                nombramiento.observaciones  = reader["observaciones"].ToString();
                nombramiento.aprobado       = Convert.ToBoolean(reader["aprobado"].ToString());
                nombramiento.solicitud      = Convert.ToInt32(reader["solicitud"].ToString());
                Asistente asistente = new Asistente();
                asistente.idAsistente              = Convert.ToInt32(reader["id_asistente"].ToString());
                asistente.nombreCompleto           = reader["nombre_completo"].ToString();
                asistente.cantidadPeriodosNombrado = ObtenerCantidadAsistencias(asistente.idAsistente);
                nombramiento.asistente             = asistente;
                nombramiento.solicitud             = Convert.ToInt32(reader["solicitud"].ToString());
            }

            sqlConnection.Close();

            return(nombramiento);
        }
        /// <summary>
        /// Mariela Calvo
        /// Abril/2020
        /// Efecto: Guardar un nuevo nombramiento para una unidad en especifico junto con sus archivos
        /// Requiere: -
        /// Modifica:
        /// Devuelve: -
        /// </summary>
        protected void editarNombramiento_Click(object sender, EventArgs e)
        {
            nombramientoSeleccionado.listaArchivos = archivoServicios.ObtenerArchivosAsistente(nombramientoSeleccionado.idNombramiento, nombramientoSeleccionado.periodo.idPeriodo);
            int editado = 0;

            if (validarEditarNombramiento())
            {
                /* INSERCIÓN NOMBRAMIENTO ASISTENTE */
                Nombramiento nombramiento = nombramientoSeleccionado;
                nombramiento.recibeInduccion       = checkBM.Checked;
                nombramiento.cantidadHorasNombrado = Convert.ToInt32(txtHorasM.Text);
                nombramientoServicios.EditarNombramiento(nombramiento);

                List <FileUpload> listaArchivosEditar = new List <FileUpload>();
                List <int>        tipoArchivos        = new List <int>();

                if (fileExpedienteM.HasFiles)
                {
                    listaArchivosEditar.Add(fileExpedienteM);
                    tipoArchivos.Add(1);
                }
                if (fileInformeM.HasFiles)
                {
                    listaArchivosEditar.Add(fileInformeM);
                    tipoArchivos.Add(2);
                }
                if (fileCVM.HasFiles)
                {
                    listaArchivosEditar.Add(fileCVM);
                    tipoArchivos.Add(3);
                }
                if (fileCuentaM.HasFiles)
                {
                    listaArchivosEditar.Add(fileCVM);
                    tipoArchivos.Add(4);
                }



                if (listaArchivosEditar.Count > 0)
                {
                    foreach (FileUpload fileUp in listaArchivosEditar)
                    {
                        foreach (int tipo in tipoArchivos)
                        {
                            editado = editarArchivos(nombramientoSeleccionado, fileUp, tipo);
                        }
                    }
                }

                List <Nombramiento> listaAsistentes = asistenteServicios.ObtenerAsistentesXUnidadSinNombrar(unidadEncargado.idUnidad);
                Session["listaAsistentes"]         = listaAsistentes;
                Session["listaAsistentesFiltrada"] = listaAsistentes;
                MostrarAsistentes();
                ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "toastr.success('" + "Se editó el nombramiento del asistente " + nombramiento.asistente.nombreCompleto + " exitosamente!);", true);

                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "#modalNuevoNombramiento", "$('body').removeClass('modal-open');$('.modal-backdrop').remove();$('#modalNuevoNombramientohide();", true);
            }
            else
            {
                ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "toastr.error('" + "Formulario Incompleto! );", true);
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "#modalNuevoNombramiento", "$('body').removeClass('modal-open');$('.modal-backdrop').remove();$('#modalNuevoNombramiento').hide();", true);
                ScriptManager.RegisterStartupScript(this, this.GetType(), "activar", "activarModalNuevoNombramiento();", true);
            }
        }
 public void EditarNombramiento(Nombramiento nombramiento)
 {
     nombramientoDatos.EditarNombramiento(nombramiento);
 }
 public int insertarNombramiento(Nombramiento nombramiento)
 {
     return(nombramientoDatos.insertarNombramientoAsistente(nombramiento));
 }
        /// <summary>
        /// Mariela Calvo
        /// Mayo/2020
        /// Efecto: Obtiene los asistentes de acuerdo a su Unidad
        /// Requiere: -
        /// Modifica:
        /// Devuelve: Lista de asistentes
        /// </summary>
        public List <Nombramiento> ObtenerNombramientosReporte(int idUnidad, int idPeriodo)
        {
            SqlConnection       sqlConnection = conexion.ConexionControlAsistentes();
            List <Nombramiento> nombramientos = new List <Nombramiento>();

            String consulta = @"SELECT a.id_asistente, a.nombre_completo,a.carnet,a.cantidad_periodos_nombrado, ea.id_encargado,e.nombre_completo as encargado, eu.id_unidad,u.nombre,
                                p.id_periodo, p.semestre, p.ano_periodo, n.id_nombramiento, n.cantidad_horas FROM Asistente a
                                JOIN Encargado_Asistente ea ON a.id_asistente=ea.id_asistente
                                JOIN Encargado_Unidad eu ON ea.id_encargado=eu.id_encargado
                                JOIN Encargado e ON ea.id_encargado=e.id_encargado
                                JOIN Unidad u ON eu.id_unidad=u.id_unidad
                                JOIN Nombramiento n ON a.id_asistente = n.id_asistente
                                JOIN Periodo p ON n.id_periodo=p.id_periodo  ";

            if (idUnidad != 0 && idPeriodo != 0)
            {
                consulta += "WHERE n.solicitud=1 AND p.id_periodo=@idPeriodo AND eu.id_unidad=@idUnidad " +
                            "GROUP BY  p.id_periodo, a.id_asistente, a.nombre_completo,a.carnet,a.cantidad_periodos_nombrado, ea.id_encargado,e.nombre_completo, " +
                            "eu.id_unidad,u.nombre, p.semestre, p.ano_periodo, n.id_nombramiento, n.cantidad_horas";
            }
            else if (idUnidad != 0)
            {
                consulta += "WHERE n.solicitud=1 AND eu.id_unidad=@idUnidad " +
                            "GROUP BY  p.id_periodo, a.id_asistente, a.nombre_completo,a.carnet,a.cantidad_periodos_nombrado, ea.id_encargado,e.nombre_completo, " +
                            "eu.id_unidad,u.nombre, p.semestre, p.ano_periodo, n.id_nombramiento, n.cantidad_horas";
            }
            else if (idPeriodo != 0)
            {
                consulta += "WHERE n.solicitud=1 AND  p.id_periodo=@idPeriodo " +
                            "GROUP BY  p.id_periodo, a.id_asistente, a.nombre_completo,a.carnet,a.cantidad_periodos_nombrado, ea.id_encargado,e.nombre_completo, " +
                            "eu.id_unidad,u.nombre, p.semestre, p.ano_periodo, n.id_nombramiento, n.cantidad_horas";
            }
            else
            {
                consulta += "WHERE n.solicitud=1" +
                            "GROUP BY  p.id_periodo, a.id_asistente, a.nombre_completo,a.carnet,a.cantidad_periodos_nombrado, ea.id_encargado,e.nombre_completo, " +
                            "eu.id_unidad,u.nombre, p.semestre, p.ano_periodo, n.id_nombramiento, n.cantidad_horas";
            }
            SqlCommand sqlCommand = new SqlCommand(consulta, sqlConnection);

            sqlCommand.Parameters.AddWithValue("@idUnidad", idUnidad);
            sqlCommand.Parameters.AddWithValue("@idPeriodo", idPeriodo);


            SqlDataReader reader;

            sqlConnection.Open();
            reader = sqlCommand.ExecuteReader();

            while (reader.Read())
            {
                Nombramiento nombramiento = new Nombramiento();
                nombramiento.idNombramiento        = Convert.ToInt32(reader["id_nombramiento"].ToString());
                nombramiento.cantidadHorasNombrado = Convert.ToInt32(reader["cantidad_horas"].ToString());


                Asistente asistente = new Asistente();
                asistente.idAsistente              = Convert.ToInt32(reader["id_asistente"].ToString());
                asistente.nombreCompleto           = reader["nombre_completo"].ToString();
                asistente.carnet                   = reader["carnet"].ToString();
                asistente.cantidadPeriodosNombrado = ObtenerCantidadAsistencias(asistente.idAsistente);

                nombramiento.asistente = asistente;


                Periodo periodo = new Periodo();
                periodo.idPeriodo    = periodo.anoPeriodo = Convert.ToInt32(reader["id_periodo"].ToString());
                periodo.semestre     = reader["semestre"].ToString();
                periodo.anoPeriodo   = Convert.ToInt32(reader["ano_periodo"].ToString());
                nombramiento.periodo = periodo;


                Unidad unidad = new Unidad();
                unidad.nombre   = reader["nombre"].ToString();
                unidad.idUnidad = idUnidad;

                Encargado encargado = new Encargado();
                encargado.nombreCompleto = reader["encargado"].ToString();
                unidad.encargado         = encargado;

                nombramiento.unidad = unidad;

                List <Archivo> archivos = new List <Archivo>();
                archivos = archivoDatos.getArchivosAsistente(asistente.idAsistente, periodo.idPeriodo);

                nombramiento.listaArchivos = archivos;
                nombramientos.Add(nombramiento);
            }

            sqlConnection.Close();

            return(nombramientos);
        }