private void CargarGestion()
        {
            List <gestion_laboral> ListaGestionLaboral = new List <gestion_laboral>();

            ListaGestionLaboral = Mgr_GestionLaboral.Get_GestionLaboral(Convert.ToInt32(idGestion));

            foreach (var itemGestionLaboral in ListaGestionLaboral)
            {
                int ContadorTrabajadores = 0;

                #region 1erbloque consulta
                lbEmpresa.Text = Convert.ToString(itemGestionLaboral.usuario.trabajador.puesto_trabajo.area.sucursal.empresa.nombre);

                lbFecha.Text = Convert.ToString(itemGestionLaboral.fecha);

                lbDesc.Text = itemGestionLaboral.descripcion;

                if (itemGestionLaboral.tipo_gestion == 2)
                {
                    phCapacitacion.Visible = true;
                }

                lbHoras.Text = Convert.ToString(itemGestionLaboral.cant_horas);

                lbResponsable.Text = Convert.ToString(itemGestionLaboral.usuario.login);

                hpSoporte.NavigateUrl = itemGestionLaboral.soporte;

                #endregion

                #region 2do bloque consulta
                List <trabajador_gestion> ListaTrabajadorGestion = Mgr_Trabajador.Get_TrabajadorInGestion(0, Convert.ToInt32(idGestion));

                ControlesDinamicos.CrearLiteral("<div class='row'>", pListaTrab);
                foreach (var item in ListaTrabajadorGestion)
                {
                    string ruta = item.trabajador.foto;
                    ruta = ruta.Replace("~/source", "../..");

                    ContadorTrabajadores++;
                    ControlesDinamicos.CrearLiteral("" +
                                                    "<div class='col-md-2'>" +
                                                    "<img class='img-circle' src='" + ruta + "' width='128' height='128'/>" +
                                                    "<h4 class='text-info text-left'>Trabajador " + ContadorTrabajadores + "</h4>" +
                                                    "<div class='col-md-12 text'>" +
                                                    "<h4>Nombre: </h4>" +
                                                    "</div>" +
                                                    "<div class='col-md-10 text'>" +
                                                    "" + item.trabajador.primer_nombre + " " + item.trabajador.primer_apellido + "" +
                                                    "</div>" +
                                                    "</div>", pListaTrab);
                }
                ControlesDinamicos.CrearLiteral("</div>", pListaTrab);
                #endregion
            }
        }
        private void CargarListas()
        {
            if (BoolEmpSuc.Item1)
            {
                Mgr_Empresa.Lista_Empresa(ddlEmpresa);
            }
            else
            {
                Mgr_Sucursal.Lista_Sucursal(ddlSucursal, ObjUsuario.Id_empresa);
            }


            if (!BoolEmpSuc.Item2)
            {
                int nroTrabajadores = 0;
                int cantGestiones   = 0;
                ViewState["sucursal"] = ObjUsuario.Id_sucursal;
                cargarDatos();

                //Buscar cantidad de trabajadores para la empresa seleccionada.(Cantidad de filas)

                nroTrabajadores = Mgr_Trabajador.Get_Trabajadores_ByCapacidad(ObjUsuario.Id_sucursal, fechaInicial, fechaFinal);
                //Cantidad de gestiones laborales de tipo capacitacion para el trimestre seleccionado (Cantidad de Columnas)

                cantGestiones = Mgr_GestionLaboral.Get_GestionLaboralByFecha(fechaInicial, fechaFinal);
                if (nroTrabajadores > 0)
                {
                    crearTabla(nroTrabajadores, cantGestiones);
                    phAsistenciasLeyenda.Visible = true;
                }
                else
                {
                    Table _table;
                    _table          = new Table();
                    _table.ID       = "tbCapacitacion";
                    _table.CssClass = "table";
                    TableHeaderRow _header_fila = new TableHeaderRow();
                    //Nro
                    TableHeaderCell _header_celda = new TableHeaderCell();
                    _header_celda.Text     = "No Existen trabajadores asociados a ninguna gestion laboral.";
                    _header_celda.CssClass = "text-center";
                    _header_fila.Cells.Add(_header_celda);
                    _table.Rows.Add(_header_fila);
                    pnTablaCapacitacion.Controls.Add(_table);
                }
            }
        }
        private void LlenarGridView()
        {
            int IdEmpresa  = Mgr_Empresa.Set_IdEmpresa(ObjUsuario, Convert.ToInt32(ViewState["empresa"]));
            int IdSucursal = Mgr_Sucursal.Set_IdSucursal(ObjUsuario, Convert.ToInt32(ViewState["sucursal"]));
            int IdUsuario  = 0;

            if (ObjUsuario.isResponsable())
            {
                IdUsuario = ObjUsuario.Id_usuario;
            }

            Mgr_GestionLaboral.Grid_GestionLaboral(GridView1,
                                                   IdEmpresa,
                                                   IdSucursal,
                                                   Convert.ToInt32("0" + ViewState["TipoGestion"]),
                                                   string.Empty + ViewState["FechaInicio"],
                                                   string.Empty + ViewState["FechaFin"],
                                                   string.Empty + ViewState["search"],
                                                   IdUsuario);
        }
        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName.Equals(ComandosGrid.Editar.Value))
            {
                int         RowIndex = Convert.ToInt32((e.CommandArgument).ToString());
                GridViewRow gvrow    = GridView1.Rows[RowIndex];
                string      tipo     = (gvrow.FindControl("tipo") as Label).Text;

                foreach (ListItem item in chkTrabajadores.Items)
                {
                    item.Selected = false;
                }

                if (tipo == "1")
                {
                    hdfEditEntregaID.Value = Utilidades_GridView.DevolverIdRow(e, GridView1);

                    List <gestion_laboral> EditCapacitacion = new List <gestion_laboral>();
                    EditCapacitacion = Mgr_GestionLaboral.Get_GestionLaboral(Convert.ToInt32(hdfEditEntregaID.Value));

                    foreach (var item in EditCapacitacion)
                    {
                        int idEmpresa  = Convert.ToInt32(item.usuario.trabajador.puesto_trabajo.area.sucursal.id_empresa);
                        int idSucursal = Convert.ToInt32(item.usuario.trabajador.puesto_trabajo.area.id_sucursal);
                        int idUsuario  = Convert.ToInt32(item.id_usuario);
                        ddlEmpEditEnt.SelectedValue = idEmpresa.ToString();

                        Mgr_Sucursal.Lista_Sucursal(ddlSucEditEnt, idEmpresa);
                        ddlSucEditEnt.SelectedValue = idSucursal.ToString();

                        chkTrabajadores.Items.Clear();
                        Cargartrabajadores(idSucursal);
                        Mgr_Usuario.Lista_UsuarioBySucursal(ddlUsuEditEnt, idSucursal);
                        ddlUsuEditEnt.SelectedValue = idUsuario.ToString();

                        DateTime fechaGestion = Convert.ToDateTime(Convert.ToString(item.fecha));
                        txtFechaEditEntrega.Text = fechaGestion.ToString("yyyy-MM-dd");

                        txtDescEditEntrega.Text = item.descripcion;

                        List <trabajador_gestion> _listatrab = Mgr_Trabajador.Get_TrabajadorInGestion(0, Convert.ToInt32(hdfEditEntregaID.Value));

                        foreach (var trab in _listatrab)
                        {
                            if (chkTrabajadores.Items.FindByValue(trab.id_trabajador.ToString()) != null)
                            {
                                chkTrabajadores.Items.FindByValue(trab.id_trabajador.ToString()).Selected = true;
                            }
                        }
                    }

                    Modal.registrarModal("EditEntrega", "EditModalScript", this);
                }
                else if (tipo == "3")
                {
                    hdfEditJornadaID.Value = Utilidades_GridView.DevolverIdRow(e, GridView1);

                    List <gestion_laboral> EditJornada = new List <gestion_laboral>();
                    EditJornada = Mgr_GestionLaboral.Get_GestionLaboral(Convert.ToInt32(hdfEditJornadaID.Value));

                    foreach (var item in EditJornada)
                    {
                        int idEmpresa  = Convert.ToInt32(item.usuario.trabajador.puesto_trabajo.area.sucursal.id_empresa);
                        int idSucursal = Convert.ToInt32(item.usuario.trabajador.puesto_trabajo.area.id_sucursal);
                        int idUsuario  = Convert.ToInt32(item.id_usuario);
                        ddlEmpEditJor.SelectedValue = idEmpresa.ToString();

                        Mgr_Sucursal.Lista_Sucursal(ddlSucEditJor, idEmpresa);
                        ddlSucEditJor.SelectedValue = idSucursal.ToString();

                        chkTrabajadores.Items.Clear();
                        Cargartrabajadores(idSucursal);
                        Mgr_Usuario.Lista_UsuarioBySucursal(ddlUsuEditJor, idSucursal);
                        ddlUsuEditJor.SelectedValue = idUsuario.ToString();

                        DateTime fechaGestion = Convert.ToDateTime(Convert.ToString(item.fecha));
                        txtFechaEditJornada.Text = fechaGestion.ToString("yyyy-MM-dd");

                        txtDescEditJornada.Text = item.descripcion;

                        List <trabajador_gestion> _listatrab = Mgr_Trabajador.Get_TrabajadorInGestion(0, Convert.ToInt32(hdfEditJornadaID.Value));

                        foreach (var trab in _listatrab)
                        {
                            if (chkTrabajadores.Items.FindByValue(trab.id_trabajador.ToString()) != null)
                            {
                                chkTrabajadores.Items.FindByValue(trab.id_trabajador.ToString()).Selected = true;
                            }
                        }
                    }

                    Modal.registrarModal("EditJornada", "EditModalScript", this);
                }
                else if (tipo == "4")
                {
                    hdfEditActividadID.Value = Utilidades_GridView.DevolverIdRow(e, GridView1);

                    List <gestion_laboral> EditActividad = new List <gestion_laboral>();
                    EditActividad = Mgr_GestionLaboral.Get_GestionLaboral(Convert.ToInt32(hdfEditActividadID.Value));

                    foreach (var item in EditActividad)
                    {
                        int idEmpresa  = Convert.ToInt32(item.usuario.trabajador.puesto_trabajo.area.sucursal.id_empresa);
                        int idSucursal = Convert.ToInt32(item.usuario.trabajador.puesto_trabajo.area.id_sucursal);
                        int idUsuario  = Convert.ToInt32(item.id_usuario);
                        ddlEmpEditAct.SelectedValue = idEmpresa.ToString();

                        Mgr_Sucursal.Lista_Sucursal(ddlSucEditAct, idEmpresa);
                        ddlSucEditAct.SelectedValue = idSucursal.ToString();

                        chkTrabajadores.Items.Clear();
                        Cargartrabajadores(idSucursal);
                        Mgr_Usuario.Lista_UsuarioBySucursal(ddlUsuEditAct, idSucursal);
                        ddlUsuEditAct.SelectedValue = idUsuario.ToString();

                        DateTime fechaGestion = Convert.ToDateTime(Convert.ToString(item.fecha));
                        txtFechaEditActividad.Text = fechaGestion.ToString("yyyy-MM-dd");

                        txtDescEditActividad.Text = item.descripcion;

                        List <trabajador_gestion> _listatrab = Mgr_Trabajador.Get_TrabajadorInGestion(0, Convert.ToInt32(hdfEditActividadID.Value));

                        foreach (var trab in _listatrab)
                        {
                            if (chkTrabajadores.Items.FindByValue(trab.id_trabajador.ToString()) != null)
                            {
                                chkTrabajadores.Items.FindByValue(trab.id_trabajador.ToString()).Selected = true;
                            }
                        }
                    }
                    Modal.registrarModal("EditActividad", "EditModalScript", this);
                }
                else if (tipo == "2")
                {
                    hdfEditCapacitacionID.Value = Utilidades_GridView.DevolverIdRow(e, GridView1);

                    Modal.registrarModal("EditCapacitacion", "EditModalScript", this);


                    List <gestion_laboral> EditCapacitacion = new List <gestion_laboral>();
                    EditCapacitacion = Mgr_GestionLaboral.Get_GestionLaboral(Convert.ToInt32(hdfEditCapacitacionID.Value));

                    foreach (var item in EditCapacitacion)
                    {
                        int idEmpresa  = Convert.ToInt32(item.usuario.trabajador.puesto_trabajo.area.sucursal.id_empresa);
                        int idSucursal = Convert.ToInt32(item.usuario.trabajador.puesto_trabajo.area.id_sucursal);
                        int idUsuario  = Convert.ToInt32(item.id_usuario);
                        ddlEmpEditCap.SelectedValue = idEmpresa.ToString();

                        Mgr_Sucursal.Lista_Sucursal(ddlSucEditCap, idEmpresa);
                        ddlSucEditCap.SelectedValue = idSucursal.ToString();

                        chkTrabajadores.Items.Clear();
                        Cargartrabajadores(idSucursal);
                        Mgr_Usuario.Lista_UsuarioBySucursal(ddlUsuEditCap, idSucursal);
                        ddlUsuEditCap.SelectedValue = idUsuario.ToString();

                        DateTime fechaGestion = Convert.ToDateTime(Convert.ToString(item.fecha));
                        txtFechaEditCapacitacion.Text = fechaGestion.ToString("yyyy-MM-dd");

                        txtDesCapEdit.Text            = item.descripcion;
                        txtObjCapEdit.Text            = item.objetivos;
                        txtHorasEditCapacitacion.Text = item.cant_horas.ToString();

                        List <trabajador_gestion> _listatrab = Mgr_Trabajador.Get_TrabajadorInGestion(0, Convert.ToInt32(hdfEditCapacitacionID.Value));

                        foreach (var trab in _listatrab)
                        {
                            if (chkTrabajadores.Items.FindByValue(trab.id_trabajador.ToString()) != null)
                            {
                                chkTrabajadores.Items.FindByValue(trab.id_trabajador.ToString()).Selected = true;
                            }
                        }
                    }
                }
            }
            else if (e.CommandName.Equals(ComandosGrid.Eliminar.Value))
            {
                hdfIDDel.Value = Utilidades_GridView.DevolverIdRow(e, GridView1);

                Modal.registrarModal("deleteModal", "DeleteModalScript", this);
            }
            else if (e.CommandName.Equals(ComandosGrid.Asistencia.Value))
            {
                string idGestion = Utilidades_GridView.DevolverIdRow(e, GridView1);

                Response.Redirect(Paginas.Update_AsistenciaCapacitacion.Value + "?id=" + objUtilidades.cifrarCadena(idGestion));
            }
            else if (e.CommandName.Equals(ComandosGrid.Upload.Value))
            {
                hdfIDEsc.Value = Utilidades_GridView.DevolverIdRow(e, GridView1);
                Modal.registrarModal("EscaneadoModal", "EscaneadoModalScript", this);
            }
            else if (e.CommandName.Equals(ComandosGrid.Imprimir.Value))
            {
                hImprimir.Value = Utilidades_GridView.DevolverIdRow(e, GridView1);

                ViewState["Imprimir"] = string.Empty + hImprimir.Value;

                Modal.registrarModal("PrintListaModal", "PrintListaModalScript", this);
            }
            else if (e.CommandName.Equals(ComandosGrid.Consultar.Value))
            {
                hdfIDDel.Value = Utilidades_GridView.DevolverIdRow(e, GridView1);
                hdfIDDel.Value = objUtilidades.cifrarCadena(Convert.ToString(hdfIDDel.Value));
                Response.Redirect(Paginas.View_GestionLaboral.Value + "?id=" + hdfIDDel.Value);
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            Page.Form.Attributes.Add("enctype", "multipart/form-data");

            ObjUsuario = Utilidades.ValidarSesion(HttpContext.Current.User.Identity as FormsIdentity, this);

            BoolEmpSuc = Mgr_Empresa.Get_Empresa_Sucursal(ObjUsuario);

            phEmpresa.Visible  = BoolEmpSuc.Item1;
            phSucursal.Visible = BoolEmpSuc.Item2;

            fechaInicial = Convert.ToDateTime("01/01/" + DateTime.Now.Year);
            fechaFinal   = Convert.ToDateTime("31/12/" + DateTime.Now.Year);

            if (!IsPostBack)
            {
                CargarListas();
            }
            else
            {
                foreach (var ctlID in Page.Request.Form.AllKeys)
                {
                    if (ctlID != null)
                    {
                        Control c = Page.FindControl(ctlID) as Control;
                        if (c is DropDownList)
                        {
                            if (c.ClientID.Contains("ddlSucursal"))
                            {
                                int nroTrabajadores = 0;
                                int cantGestiones   = 0;
                                //Buscar cantidad de trabajadores para la empresa seleccionada.(Cantidad de filas)
                                nroTrabajadores = Mgr_Trabajador.Get_Trabajadores_ByCapacidad(Convert.ToInt32(ddlSucursal.SelectedValue), fechaInicial, fechaFinal);
                                //Cantidad de gestiones laborales de tipo capacitacion para el trimestre seleccionado (Cantidad de Columnas)

                                cantGestiones = Mgr_GestionLaboral.Get_GestionLaboralByFecha(fechaInicial, fechaFinal);
                                if (nroTrabajadores > 0)
                                {
                                    crearTabla(nroTrabajadores, cantGestiones);
                                    phAsistenciasLeyenda.Visible = true;
                                }
                                else
                                {
                                    phAsistenciasLeyenda.Visible = false;

                                    Table _table;
                                    _table          = new Table();
                                    _table.ID       = "tbCapacitacion";
                                    _table.CssClass = "table";
                                    TableHeaderRow _header_fila = new TableHeaderRow();
                                    //Nro
                                    TableHeaderCell _header_celda = new TableHeaderCell();
                                    _header_celda.Text     = "No Existen trabajadores asociados a ninguna gestion laboral.";
                                    _header_celda.CssClass = "text-center";
                                    _header_fila.Cells.Add(_header_celda);
                                    _table.Rows.Add(_header_fila);
                                    pnTablaCapacitacion.Controls.Add(_table);
                                }
                            }
                        }
                    }
                }
            }
        }
        private void crearTabla(int cantTrab, int cantGest)
        {
            Table _table;

            #region variables
            _table          = new Table();
            _table.ID       = "tbCapacitacion";
            _table.CssClass = "table";
            TableHeaderRow _header_fila = new TableHeaderRow();
            #endregion

            #region cabecera tabla
            #region  Nro
            TableHeaderCell _header_celda = new TableHeaderCell();
            _header_celda.Text     = "Nro";
            _header_celda.CssClass = "text-center";
            _header_fila.Cells.Add(_header_celda);
            _table.Rows.Add(_header_fila);
            #endregion

            #region Trabajador
            _header_celda          = new TableHeaderCell();
            _header_celda.Text     = "NOMBRE";
            _header_celda.CssClass = "text-center";
            _header_fila.Cells.Add(_header_celda);
            _table.Rows.Add(_header_fila);
            #endregion

            #region Cedula
            _header_celda          = new TableHeaderCell();
            _header_celda.Text     = "DOCUMENTO DE IDENTIDAD";
            _header_celda.CssClass = "text-center";
            _header_fila.Cells.Add(_header_celda);
            _table.Rows.Add(_header_fila);
            #endregion

            #region cantidad Horas
            _header_celda          = new TableHeaderCell();
            _header_celda.Text     = "CANTIDAD HORAS ACUMULADAS";
            _header_celda.CssClass = "text-center";
            _header_fila.Cells.Add(_header_celda);
            _table.Rows.Add(_header_fila);
            #endregion

            Tuple <int, int> IdEmpSuc = Mgr_Empresa.Get_IdEmpresa_IdSucursal(ObjUsuario, ddlEmpresa, ddlSucursal);
            IdEmpresa  = IdEmpSuc.Item1;
            IdSucursal = IdEmpSuc.Item2;

            List <gestion_laboral> gestion_lista = new List <gestion_laboral>();
            gestion_lista = Mgr_GestionLaboral.Get_GestionLaboralByCapacitacion(fechaInicial, fechaFinal, IdEmpresa, IdSucursal);

            foreach (gestion_laboral gl in gestion_lista)
            {
                #region  Temas
                _header_celda = new TableHeaderCell();
                string titulo = gl.descripcion + " <br/> " + Convert.ToDateTime(gl.fecha).ToString("dd-MM-yyy") + " Horas:" + gl.cant_horas;
                _header_celda.Text     = titulo.ToUpperInvariant();
                _header_celda.CssClass = "text-center";
                _header_fila.Cells.Add(_header_celda);
                _table.Rows.Add(_header_fila);
                #endregion
            }

            #endregion

            TableCell _fila = new TableCell();
            TableRow  _columna = new TableRow();
            int       NumTrab = 1, gestion = 1, HorasAsistio = 0, inaJust = 0, InaInjust = 0, Asistencias = 0;
            bool      CantHoras = false;

            List <trabajador> List_Trab = Mgr_Trabajador.Get_Trabajador(0, 0, Convert.ToInt32(IdSucursal), 0);

            foreach (var item1 in List_Trab)
            {
                HorasAsistio = 0;
                CantHoras    = false;

                List <trabajador_gestion> trab_lista = Mgr_Trabajador.Get_TrabajadoresByCapacitacion(item1.id_trabajador, fechaInicial, fechaFinal);

                foreach (var item2 in trab_lista)
                {
                    if (HorasAsistio == 0)
                    {
                        #region datos trabajador
                        _columna    = new TableRow();
                        _columna.ID = "columna" + NumTrab;
                        _fila       = new TableCell();
                        _fila.Text  = "" + (NumTrab);
                        _columna.Cells.Add(_fila);
                        _table.Rows.Add(_columna);

                        _fila      = new TableCell();
                        _fila.Text = string.Empty + (item1.primer_nombre + ' ' + item1.primer_apellido);
                        _fila.Attributes.Add("style", "white-space: nowrap;");
                        _columna.Cells.Add(_fila);
                        _table.Rows.Add(_columna);

                        _fila      = new TableCell();
                        _fila.Text = string.Empty + (item1.cedula);
                        _columna.Cells.Add(_fila);
                        _table.Rows.Add(_columna);
                        #endregion
                    }

                    #region asistencias
                    _fila    = new TableCell();
                    _fila.ID = "fila" + gestion + "_" + NumTrab;
                    if (item2.asistencia.Contains("SI"))
                    {
                        _fila.Text      = "Asistió";
                        HorasAsistio    = HorasAsistio + Convert.ToInt32(item2.gestion_laboral.cant_horas);
                        _fila.BackColor = System.Drawing.Color.MediumPurple;
                        Asistencias++;
                    }
                    else if (item2.asistencia.Contains("-"))
                    {
                        _fila.Text      = "Sin Asistencia";
                        _fila.BackColor = System.Drawing.Color.YellowGreen;
                    }
                    else
                    {
                        if (item2.asistencia.Contains("Justificada"))
                        {
                            _fila.Text      = "No Asistió";
                            _fila.BackColor = System.Drawing.Color.SkyBlue;
                            inaJust++;
                        }
                        else if (item2.asistencia.Contains("Injustificada"))
                        {
                            _fila.Text      = "No Asistió";
                            _fila.BackColor = System.Drawing.Color.Tomato;
                            InaInjust++;
                        }
                    }
                    #endregion

                    _fila.CssClass = "text-center";
                    _columna.Cells.Add(_fila);
                    gestion++;
                    CantHoras = true;
                }

                if (CantHoras)
                {
                    _table.Rows.Add(_columna);
                    _fila           = new TableCell();
                    _fila.Text      = "" + HorasAsistio;
                    _fila.CssClass  = "text-center";
                    _fila.BackColor = System.Drawing.Color.DarkSeaGreen;
                    _columna.Cells.AddAt(3, _fila);
                    _table.Rows.Add(_columna);

                    NumTrab++;
                    pnTablaCapacitacion.Controls.Add(_table);
                }
            }

            #region  Generar la grafica
            int totalIna = inaJust + InaInjust;
            lblTotalInasistencias.Text = totalIna.ToString();
            lblTotalAsistencias.Text   = "" + Asistencias;
            Double[] yAsistencias = { 0, 0 };
            yAsistencias[0] = totalIna;
            yAsistencias[1] = Asistencias;
            String[] xCadenas = { "Inasistencia", "Asistencia" };
            graficoAsistencia.Series["asistencias"].Label = "#PERCENT{P0}";
            graficoAsistencia.Series["asistencias"].Points.DataBindXY(xCadenas, yAsistencias);
            #endregion
        }