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_guardar_detalle_dia_ServerClick(object sender, EventArgs e)
        {
            //guardar
            Dia dia = Session["DiaSeleccionado"] as Dia;
            List<fila_detalle_dia> filas = Session["Detalle"] as List<fila_detalle_dia>;

            string errores = string.Empty;
            bool tiene_error = false;
            Feriado feriado = null;
            bool soldador = false;
            using (var cxt = new Model1Container())
            {
                feriado = cxt.Feriados.FirstOrDefault(ff => ff.fecha == dia.fecha);
                soldador = cxt.Empleados.First(x => x.id_empleado == dia.id_empleado).Categoria.nombre == "Soldador";
            }

            Estado_turno_dia estadotm = (Estado_turno_dia)Enum.Parse(typeof(Estado_turno_dia), ddl_estado_turno_m.SelectedValue);
            Estado_turno_dia estadott = (Estado_turno_dia)Enum.Parse(typeof(Estado_turno_dia), ddl_estado_turno_t.SelectedValue);

            if (dia.fecha.DayOfWeek != DayOfWeek.Sunday && feriado == null)
            {
                tiene_error = estadotm != Estado_turno_dia.Ninguno ? false : true;
                errores = !tiene_error ? string.Empty : errores + "• Debe agendar estado para el turno mañana <br/>";
            }
            if (!tiene_error)
            {
                if (dia.fecha.DayOfWeek != DayOfWeek.Saturday && dia.fecha.DayOfWeek != DayOfWeek.Sunday && feriado == null)
                {
                    tiene_error = estadott != Estado_turno_dia.Ninguno ? false : true;
                    errores = !tiene_error ? string.Empty : errores + "• Debe agendar estado para el turno tarde <br/>";
                }
            }

            if (errores == string.Empty)
            {
                using (var cxt = new Model1Container())
                {
                    if (dia.id_dia == 0)
                    {
                        Dia dia_cxt = new Dia();
                        dia_cxt.ausente = "00:00";
                        dia_cxt.guardia = "00:00";
                        dia_cxt.varios_taller = "00:00";

                        dia_cxt.id_empleado = Convert.ToInt32(ddl_empleado.SelectedItem.Value);
                        if (dia.fecha.DayOfWeek == DayOfWeek.Sunday || feriado != null)
                        {
                            if (estadotm != Estado_turno_dia.Ausente && estadotm != Estado_turno_dia.Ausente_injust)
                            {
                                dia_cxt.estado_tm = estadotm;
                            }
                            else
                            {
                                dia_cxt.estado_tm = Estado_turno_dia.Ninguno;
                            }
                        }
                        else
                        {
                            dia_cxt.estado_tm = estadotm;
                        }

                        if (dia.fecha.DayOfWeek == DayOfWeek.Sunday || dia.fecha.DayOfWeek == DayOfWeek.Saturday || feriado != null)
                        {
                            if (estadott != Estado_turno_dia.Ausente && estadott != Estado_turno_dia.Ausente_injust)
                            {
                                dia_cxt.estado_tt = estadott;
                            }
                            else
                            {
                                dia_cxt.estado_tt = Estado_turno_dia.Ninguno;
                            }
                        }
                        else
                        {
                            dia_cxt.estado_tt = estadott;
                        }

                        dia_cxt.fecha = dia.fecha;
                        dia_cxt.horas_normales = dia.horas_normales;
                        dia_cxt.horas_extra_50 = dia.horas_extra_50;
                        dia_cxt.horas_extra_100 = dia.horas_extra_100;

                        foreach (fila_detalle_dia item_detalle in filas)
                        {
                            if (item_detalle.id_detalle_dia == 0)
                            {
                                dia_cxt.Detalles.Add(new Detalle_dia() { id_equipo = item_detalle.id_equipo, hora_desde = item_detalle.desde, hora_hasta = item_detalle.hasta });
                            }

                            if (item_detalle.equipo == "Ausencia")
                            {
                                dia_cxt.ausente = Horas_string.SumarHoras(new string[] { dia_cxt.ausente, item_detalle.total_movimiento });
                            }

                            if (item_detalle.equipo == "Guardia")
                            {
                                if (!soldador)
                                {
                                    dia_cxt.guardia = Horas_string.SumarHoras(new string[] { dia_cxt.guardia, item_detalle.total_movimiento });
                                }
                                else
                                {
                                    dia_cxt.guardia = "00:00";
                                    dia_cxt.varios_taller = Horas_string.SumarHoras(new string[] { dia_cxt.varios_taller, item_detalle.total_movimiento });
                                }
                            }

                            if (item_detalle.equipo == "Varios Taller")
                            {
                                dia_cxt.varios_taller = Horas_string.SumarHoras(new string[] { dia_cxt.varios_taller, item_detalle.total_movimiento });
                            }

                        }

                        try
                        {
                            cxt.Dias.Add(dia_cxt);
                            cxt.SaveChanges();
                            Session["DiaSeleccionado"] = null;
                            Session["Detalle"] = null;
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(this, "Error!!!!!!<br/>Error: " + ex.Message + "<br/>Inner: " + ex.InnerException, MessageBox.Tipo_MessageBox.Danger);
                        }

                    }
                    else
                    {
                        //ya existe el dia, hay que agregar los cambios
                        Dia dia_cxt = cxt.Dias.First(d => d.id_dia == dia.id_dia);
                        if (dia.fecha.DayOfWeek == DayOfWeek.Sunday || feriado != null)
                        {
                            if (estadotm != Estado_turno_dia.Ausente && estadotm != Estado_turno_dia.Ausente_injust)
                            {
                                dia_cxt.estado_tm = estadotm;
                            }
                            else
                            {
                                dia_cxt.estado_tm = Estado_turno_dia.Ninguno;
                            }
                        }
                        else
                        {
                            dia_cxt.estado_tm = estadotm;
                        }

                        if (dia.fecha.DayOfWeek == DayOfWeek.Sunday || dia.fecha.DayOfWeek == DayOfWeek.Saturday || feriado != null)
                        {
                            if (estadott != Estado_turno_dia.Ausente && estadott != Estado_turno_dia.Ausente_injust)
                            {
                                dia_cxt.estado_tt = estadott;
                            }
                            else
                            {
                                dia_cxt.estado_tt = Estado_turno_dia.Ninguno;
                            }
                        }
                        else
                        {
                            dia_cxt.estado_tt = estadott;
                        }

                        dia_cxt.horas_normales = dia.horas_normales;
                        dia_cxt.horas_extra_50 = dia.horas_extra_50;
                        dia_cxt.horas_extra_100 = dia.horas_extra_100;
                        dia_cxt.ausente = "00:00";
                        dia_cxt.guardia = "00:00";
                        dia_cxt.varios_taller = "00:00";

                        foreach (fila_detalle_dia item_detalle in filas)
                        {
                            if (item_detalle.id_detalle_dia == 0)
                            {
                                dia_cxt.Detalles.Add(new Detalle_dia() { id_equipo = item_detalle.id_equipo, hora_desde = item_detalle.desde, hora_hasta = item_detalle.hasta });
                            }
                            else
                            {
                                Detalle_dia detalle = cxt.Detalles_dias.FirstOrDefault(dd => dd.id_detalle_dia == item_detalle.id_detalle_dia);
                                detalle.id_equipo = item_detalle.id_equipo;
                                detalle.hora_desde = item_detalle.desde;
                                detalle.hora_hasta = item_detalle.hasta;
                            }

                            if (item_detalle.equipo == "Ausencia")
                            {
                                dia_cxt.ausente = Horas_string.SumarHoras(new string[] { dia_cxt.ausente, item_detalle.total_movimiento });
                            }

                            if (item_detalle.equipo == "Guardia")
                            {
                                if (!soldador)
                                {
                                    dia_cxt.guardia = Horas_string.SumarHoras(new string[] { dia_cxt.guardia, item_detalle.total_movimiento });
                                }
                                else
                                {
                                    dia_cxt.guardia = "00:00";
                                    dia_cxt.varios_taller = Horas_string.SumarHoras(new string[] { dia_cxt.varios_taller, item_detalle.total_movimiento });
                                }
                            }

                            if (item_detalle.equipo == "Varios Taller")
                            {
                                dia_cxt.varios_taller = Horas_string.SumarHoras(new string[] { dia_cxt.varios_taller, item_detalle.total_movimiento });
                            }
                        }

                        try
                        {
                            cxt.SaveChanges();
                            Session["DiaSeleccionado"] = null;
                            Session["Detalle"] = null;
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(this, "CHANN!!! <br/>Error: " + ex.Message + "<br/>Inner: " + ex.InnerException, MessageBox.Tipo_MessageBox.Danger);
                        }
                    }
                }
                CargarValoresMes();
            }
            else
            {
                errores = "<label>Corrija los siguientes errores antes de continuar:</label><br/>" + errores;
                div_error_detalle.Visible = true;
                p_error.InnerHtml = errores;
                MostrarPopUpValoresDia();
            }
        }