protected void btn_ver_ServerClick(object sender, EventArgs e)
        {
            Usuario usuariologueado = Session["UsuarioLogueado"] as Usuario;
            string str_id_dia = ((System.Web.UI.HtmlControls.HtmlButton)sender).Attributes["data-id"];
            Dia dia;
            List<fila_detalle_dia> detalle = new List<fila_detalle_dia>();
            div_error_detalle.Visible = false;
            bool soldador = false;
            using (var cxt = new Model1Container())
            {
                if (str_id_dia.Contains("id"))
                {
                    int id_dia = Convert.ToInt32(str_id_dia.Replace("id_", ""));

                    dia = cxt.Dias.FirstOrDefault(d => d.id_dia == id_dia);
                    soldador = dia.Empleado.Categoria.nombre == "Soldador";
                    foreach (Detalle_dia item_detalle in dia.Detalles)
                    {
                        fila_detalle_dia fila_detalle = new fila_detalle_dia();
                        fila_detalle.id_equipo = item_detalle.Equipo.id_equipo;
                        fila_detalle._out = item_detalle.Equipo.OUT;
                        fila_detalle.fecha = item_detalle.Dia.fecha;
                        fila_detalle.id_dia = item_detalle.id_dia;
                        fila_detalle.id_detalle_dia = item_detalle.id_detalle_dia;
                        fila_detalle.equipo = item_detalle.Equipo.nombre;
                        fila_detalle.desde = item_detalle.hora_desde;
                        fila_detalle.hasta = item_detalle.hora_hasta;
                        fila_detalle.total_movimiento = Horas_string.RestarHoras(item_detalle.hora_hasta, item_detalle.hora_desde);

                        detalle.Add(fila_detalle);
                    }
                }
                else
                {
                    int fecha_dia = Convert.ToInt32(str_id_dia.Replace("fecha_", "").Split('_')[2]);
                    int fecha_mes = Convert.ToInt32(str_id_dia.Replace("fecha_", "").Split('_')[1]);
                    int fecha_año = Convert.ToInt32(str_id_dia.Replace("fecha_", "").Split('_')[0]);

                    dia = new Dia();
                    dia.fecha = new DateTime(fecha_año, fecha_mes, fecha_dia);
                    dia.horas_normales = "00:00";
                    dia.horas_extra_50 = "00:00";
                    dia.horas_extra_100 = "00:00";
                    dia.ausente = "00:00";
                    dia.guardia = "00:00";
                    dia.varios_taller = "00:00";
                    dia.estado_tm = Estado_turno_dia.Ninguno;
                    dia.estado_tt = Estado_turno_dia.Ninguno;
                    dia.id_empleado = Convert.ToInt32(ddl_empleado.SelectedValue);

                    cxt.Dias.Add(dia);
                }

            }

            if (soldador)
            {
                QuitarColumnaOUT();
            }

            if (usuariologueado.perfil == perfil_usuario.Jefe)
            {
                gv_detalle_dia_view.DataSource = detalle;
                gv_detalle_dia_view.DataBind();
            }
            else
            {
                gv_detalle_dia.DataSource = detalle;
                gv_detalle_dia.DataBind();
            }

            lbl_fecha.Text = lbl_fecha_view.Text = dia.fecha.ToString("dddd', ' dd 'de' MMMM 'del' yyyy");
            ddl_estado_turno_m.SelectedValue = dia.estado_tm.ToString();
            ddl_estado_turno_t.SelectedValue = dia.estado_tt.ToString();

            lbl_horas_normales.Text = lbl_horas_normales_view.Text = dia.horas_normales;
            lbl_horas_extra_cincuenta.Text = lbl_horas_extra_cincuenta_view.Text = dia.horas_extra_50;
            lbl_horas_extra_cien.Text = lbl_horas_extra_cien_view.Text = dia.horas_extra_100;

            Session["DiaSeleccionado"] = dia;
            Session["Detalle"] = detalle;

            if (usuariologueado.perfil == perfil_usuario.Jefe)
            {
                MostrarPopUpValoresDia_view();
            }
            else
            {
                MostrarPopUpValoresDia();
            }
        }
        protected void btn_agregar_detalle_dia_Click(object sender, EventArgs e)
        {
            string errores = string.Empty;
            bool tiene_error = false;

            int id_movimiento = 0;
            int.TryParse(hidden_id_detalle.Value, out id_movimiento);

            errores = ddl_equipo.SelectedItem.Text != string.Empty ? errores : "• Debe seleccionar un equipo.";
            tiene_error = ddl_equipo.SelectedItem.Text != string.Empty ? false : true;

            if (!tiene_error)
            {
                tiene_error = tb_hora_desde.Value != string.Empty ? false : true;
                errores = !tiene_error ? errores : "• Debe agregar hora desde.<br/>";
            }

            if (!tiene_error)
            {
                tiene_error = tb_hora_hasta.Value != string.Empty ? false : true;
                errores = !tiene_error ? errores : "• Debe agregar hora hasta.<br/>";
            }

            if (!tiene_error)
            {
                tiene_error = Horas_string.AMayorQueB(tb_hora_hasta.Value, tb_hora_desde.Value) ? false : true;
                errores = !tiene_error ? errores : "• La hora desde debe ser menor a la hora hasta.<br/>";
            }

            if (!tiene_error)
            {
                Dia dia = Session["DiaSeleccionado"] as Dia;
                Equipo equipo = null;
                bool soldador = false;
                using (var cxt = new Model1Container())
                {
                    int id_equipo = Convert.ToInt32(ddl_equipo.SelectedItem.Value);
                    equipo = cxt.Equipos.FirstOrDefault(ee => ee.id_equipo == id_equipo);
                    soldador = cxt.Empleados.First(x => x.id_empleado == dia.id_empleado).Categoria.nombre == "Soldador";
                    equipo.OUT = soldador ? false : equipo != null ? equipo.OUT : false;
                }

                div_error_detalle.Visible = false;

                List<fila_detalle_dia> filas = Session["Detalle"] as List<fila_detalle_dia>;

                if (id_movimiento != 0)
                {
                    fila_detalle_dia fila = filas.FirstOrDefault(ff => ff.id_detalle_dia == id_movimiento);
                    filas.Remove(fila);

                    fila._out = equipo != null ? equipo.OUT : false;
                    fila.id_equipo = equipo != null ? equipo.id_equipo : 0;
                    fila.fecha = dia.fecha;
                    fila.equipo = equipo != null ? equipo.nombre : ddl_equipo.SelectedItem.Text;
                    fila.desde = tb_hora_desde.Value;
                    fila.hasta = tb_hora_hasta.Value;
                    fila.total_movimiento = Horas_string.RestarHoras(tb_hora_hasta.Value, tb_hora_desde.Value);

                    filas.Add(fila);

                }
                else
                {
                    if (hidden_editar.Value == "si")
                    {
                        int index = -1;
                        foreach (fila_detalle_dia item in filas)
                        {
                            if (item.id_equipo.ToString() == hidden_editar_equipo.Value && item.desde == tb_hora_desde.Value && item.hasta == tb_hora_hasta.Value && item.id_detalle_dia == 0)
                            {
                                index = filas.IndexOf(item);
                                break;
                            }
                        }

                        filas.RemoveAt(index);
                    }

                    fila_detalle_dia detalle = new fila_detalle_dia();
                    detalle._out = equipo != null ? equipo.OUT : false;
                    detalle.id_equipo = equipo != null ? equipo.id_equipo : 0;
                    detalle.fecha = dia.fecha;
                    detalle.equipo = equipo != null ? equipo.nombre : ddl_equipo.SelectedItem.Text;
                    detalle.desde = tb_hora_desde.Value;
                    detalle.hasta = tb_hora_hasta.Value;
                    detalle.total_movimiento = Horas_string.RestarHoras(tb_hora_hasta.Value, tb_hora_desde.Value);
                    filas.Add(detalle);
                }

                hidden_id_detalle.Value = "0";
                hidden_editar.Value = "no";
                tb_hora_desde.Value = "";
                tb_hora_hasta.Value = "";
                btn_agregar_detalle_dia.Text = "Agregar";
                ddl_equipo.SelectedIndex = 0;

                string horasTotales = "00:00";
                string horasAusente = "00:00";
                string horasGuardia = "00:00";
                string horasVariosTaller = "00:00";

                foreach (fila_detalle_dia item_detalle in filas)
                {
                    if (!item_detalle._out)
                    {
                        if (item_detalle.equipo != "Ausencia")
                        {
                            horasTotales = Horas_string.SumarHoras(new string[] { horasTotales, Horas_string.RestarHoras(item_detalle.hasta, item_detalle.desde) });

                            if (item_detalle.equipo == "Guardia")
                            {
                                if (!soldador)
                                {
                                    horasGuardia = Horas_string.SumarHoras(new string[] { horasGuardia, Horas_string.RestarHoras(item_detalle.hasta, item_detalle.desde) });
                                }
                                else
                                {
                                    horasVariosTaller = Horas_string.SumarHoras(new string[] { horasVariosTaller, Horas_string.RestarHoras(item_detalle.hasta, item_detalle.desde) });
                                }
                            }

                            if (item_detalle.equipo == "Varios Taller")
                            {
                                horasVariosTaller = Horas_string.SumarHoras(new string[] { horasVariosTaller, Horas_string.RestarHoras(item_detalle.hasta, item_detalle.desde) });
                            }

                        }
                        else
                        {
                            horasAusente = Horas_string.SumarHoras(new string[] { horasAusente, Horas_string.RestarHoras(item_detalle.hasta, item_detalle.desde) });
                        }
                    }
                }

                dia.horas_normales = ObtenerHoras(horasTotales, dia.fecha, TipoHora.Normales);
                dia.horas_extra_50 = ObtenerHoras(horasTotales, dia.fecha, TipoHora.Extra50);
                dia.horas_extra_100 = ObtenerHoras(horasTotales, dia.fecha, TipoHora.Extra100);
                dia.ausente = horasAusente;
                dia.guardia = horasGuardia;
                dia.varios_taller = horasVariosTaller;

                if (soldador)
                {
                    QuitarColumnaOUT();
                }

                gv_detalle_dia.DataSource = filas;
                gv_detalle_dia.DataBind();

                lbl_horas_normales.Text = dia.horas_normales;
                lbl_horas_extra_cincuenta.Text = dia.horas_extra_50;
                lbl_horas_extra_cien.Text = dia.horas_extra_100;

                Session["DiaSeleccionado"] = dia;
                Session["Detalle"] = filas;

            }
            else
            {
                errores = "<label>Corrija los siguientes errores antes de continuar:</label><br/>" + errores;
                div_error_detalle.Visible = true;
                p_error.InnerHtml = errores;
            }

            MostrarPopUpValoresDia();
        }