public string r_horario(horariosDTO n)
        {
            try
            {
                List<horarios> ma = new List<horarios>();
                ma = bd.horarios.Where(t => t.id_grupo == n.id_grupo && t.jornada == n.jornada && t.dia == n.dia).OrderBy(t => t.horaI).ToList();
                if (ma.Count != 0)
                {
                    string Duplicado=null ;
                    int i = 0;
                    foreach (horarios item in ma)
                    {  // NOTA: ESTAS VALIDADCIONES ESTAN A MEDIA. FUNCIONA PERO A VECES DE TOEA. DEBES DE AJUSTARLO LUEGO.
                        string[] HI = item.horaI.ToString().Split(':');// HI es la hora que ya esta en la bd
                        string[] HF = item.horaF.ToString().Split(':');
                        int HORA_HI = Convert.ToInt16(HI[1]) + (Convert.ToInt16(HI[0]) * 60);
                        int HORA_HF = Convert.ToInt16(HF[1]) + (Convert.ToInt16(HF[0]) * 60);

                        string[] HIn = n.horaI.ToString().Split(':');// HIn es la hora que se pretende agregar
                        string[] HFn = n.horaF.ToString().Split(':');
                        int HORA_HIn = Convert.ToInt16(HIn[1]) + (Convert.ToInt16(HIn[0]) * 60);
                        int HORA_HFn = Convert.ToInt16(HFn[1]) + (Convert.ToInt16(HFn[0]) * 60);

                        if (HORA_HIn >= HORA_HI && HORA_HIn <= HORA_HF)
                        {
                            Duplicado += "/1"; // true
                        }
                        else if (HORA_HFn >= HORA_HI && HORA_HFn <= HORA_HF)
                        {
                            Duplicado += "/1" ; // true
                        }
                        else
                        {
                            Duplicado += "/0";// false
                        }

                    }
                    // AL FINAL PREGUNTO COMO ESTA LA BANDERA, SI ESTA DISPOBIBLE O NO. De esto no estoy seguro, pero es que no se me ocurre nada mas
                    Boolean Dup = true;
                    int b = 0;
                    string[] duplicado = Duplicado.Split('/');
                    for (int ii = 1; ii < duplicado.Length; ii++)
                    {
                        if (duplicado[ii] == "1")
                        {
                            b=b+1;
                        }
                    }

                    if (b == 1)
                    {
                        // no agrega por que hierra al menos con uno
                        Dup = true;
                    }
                    if (b == Duplicado.Length || b > 1)
                    {
                        // no agrega por que erra con todos
                        Dup = true;
                    }

                    if (b == 0)
                    {
                        // lo agregamos porque no se duplico
                        Dup = false;
                    }

                    if (Dup == false)
                    {
                        // registramos
                        horarios hh = new horarios();
                        hh.dia = n.dia;
                        hh.id_grupo = n.id_grupo;
                        hh.id_asignatura = n.id_asignatura;
                        hh.horaI = n.horaI;
                        hh.horaF = n.horaF;
                        hh.jornada = n.jornada;
                        bd.horarios.Add(hh);
                        bd.SaveChanges();
                        return "¡Registro de horarios de forma éxitosa!";
                    }
                    else
                    {
                        return "¡Las horas que intenta ingresar presentan un cruce de horarios. Ya hay registros en este intervalo.!";
                    }
                }
                else
                {
                    // SI NO HAY NADA ENTONCES REGISTRAMOS COMO NUEVO
                    horarios hh = new horarios();
                    hh.dia = n.dia;
                    hh.id_grupo = n.id_grupo;
                    hh.id_asignatura = n.id_asignatura;
                    hh.horaI = n.horaI;
                    hh.horaF = n.horaF;
                    hh.jornada = n.jornada;
                    bd.horarios.Add(hh);
                    bd.SaveChanges();
                    return "¡Registro de horarios de forma éxitosa!";
                }
            }
            catch { return null; }
        }
        public string r_horario(horariosDTO n)
        {
            try
            {
                List<horarios> ma = new List<horarios>();
                ma = bd.horarios.Where(t => t.id_grupo == n.id_grupo && t.jornada == n.jornada && t.dia == n.dia).OrderBy(t => t.horaI).ToList();
                if (ma.Count != 0)
                {
                    string Duplicado = null;
                    int i = 0;
                    foreach (horarios item in ma)
                    {  
                        string[] HI = item.horaI.ToString().Split(':');
                        string[] HF = item.horaF.ToString().Split(':');
                        int HORA_HI = Convert.ToInt16(HI[1]) + (Convert.ToInt16(HI[0]) * 60);
                        int HORA_HF = Convert.ToInt16(HF[1]) + (Convert.ToInt16(HF[0]) * 60);

                        string[] HIn = n.horaI.ToString().Split(':');
                        string[] HFn = n.horaF.ToString().Split(':');
                        int HORA_HIn = Convert.ToInt16(HIn[1]) + (Convert.ToInt16(HIn[0]) * 60);
                        int HORA_HFn = Convert.ToInt16(HFn[1]) + (Convert.ToInt16(HFn[0]) * 60);
                        if (HORA_HIn >= HORA_HI && HORA_HIn <= HORA_HF)
                            Duplicado += "/1"; 
                        else if (HORA_HFn >= HORA_HI && HORA_HFn <= HORA_HF)
                            Duplicado += "/1"; 
                        else
                            Duplicado += "/0";
                    }
                    Boolean Dup = true;
                    int b = 0;
                    string[] duplicado = Duplicado.Split('/');
                    for (int ii = 1; ii < duplicado.Length; ii++)
                    {
                        if (duplicado[ii] == "1")
                            b = b + 1;
                    }
                    if (b == 1)
                        Dup = true;
                    if (b == Duplicado.Length || b > 1)
                        Dup = true;
                    if (b == 0)
                        Dup = false;
                    if (Dup == false)
                    {
                        horarios hh = new horarios();
                        hh.dia = n.dia;
                        hh.id_grupo = n.id_grupo;
                        hh.id_asignatura = n.id_asignatura;
                        hh.horaI = n.horaI;
                        hh.horaF = n.horaF;
                        hh.jornada = n.jornada;
                        bd.horarios.Add(hh);
                        bd.SaveChanges();
                        return "¡Registro de horarios de forma éxitosa!";
                    }
                    else
                    {
                        return "¡Las horas que intenta ingresar presentan un cruce de horarios. Ya hay registros en este intervalo.!";
                    }
                }
                else
                {
                    horarios hh = new horarios();
                    hh.dia = n.dia;
                    hh.id_grupo = n.id_grupo;
                    hh.id_asignatura = n.id_asignatura;
                    hh.horaI = n.horaI;
                    hh.horaF = n.horaF;
                    hh.jornada = n.jornada;
                    bd.horarios.Add(hh);
                    bd.SaveChanges();
                    return "¡Registro de horarios de forma éxitosa!";
                }
            }
            catch { return null; }
        }