private String GetDetalleDeCurso(HorarioBE horario)
 {
     String tipoclase = "";
     switch (horario.tipo)
     {
         case 1: tipoclase = "Clase Regular";
             break;
         case 4: tipoclase = "Examen Parcial";
             break;
         case 5: tipoclase = "Examen Final";
             break;
         case 2: tipoclase = "Recuperación";
             break;
         case 3: tipoclase = "Devolución de Examen";
             break;
     }
     String horainicio = (horario.horainicio % 100).ToString() + ":" + ((horario.horainicio * 100) % 100).ToString();
     String horafin = (horario.horafin % 100).ToString() + ":" + ((horario.horafin * 100) % 100).ToString();
     return horario.nombre + "<br>" + horainicio + " - " + horafin + "<br>" + horario.salon + "<br>" + tipoclase;
 }
 private bool ExisteCruce(HorarioBE horario1, HorarioBE horario2)
 {
     if (horario1.horainicio >= horario2.horainicio && horario1.horainicio < horario2.horafin && horario1.dia == horario2.dia)
         return true;
     if (horario1.horafin > horario2.horainicio && horario1.horafin <= horario2.horainicio && horario1.dia == horario2.dia)
         return true;
     return false;
 }
        private String CrearDivNormal(HorarioBE horario)
        {
            int padding = 5;
            int height = 35;
            int alturaxcurso = (int)(height * (horario.horafin - horario.horainicio) - (padding * 2));

            int topinicial = 210;
            int iniciodia = 7;

            int topxcurso = (int)((horario.horainicio - iniciodia) * height + topinicial);

            string color = "";
            int tipo = horario.tipo;
            string tipoclase = "";
            switch (tipo)
            {
                case 1: color = "rgba(255, 204, 119, 0.5)";
                    tipoclase = "Clase Regular";
                    break;
                case 4: color = "rgba(170, 85, 34, 0.5)";
                    tipoclase = "Examen Parcial";
                    break;
                case 5: color = "rgba(170, 85, 34, 0.5)";
                    tipoclase = "Examen Final";
                    break;
                case 2: color = "rgba(255, 102, 0, 0.5)";
                    tipoclase = "Recuperación";
                    break;
                case 3: color = "rgba(85, 51, 17, 0.5)";
                    tipoclase = "Devolución de Examen";
                    break;
            }

            return "<div  class='estilohorario' style='background-color:" + color.ToString()
                    + "; height:" + alturaxcurso.ToString()
                    + "px; top:" + topxcurso.ToString()
                    + "px; padding:" + padding.ToString()
                    + "px;'>" + horario.nombre + "<br>" +
                    horario.salon + " - " +
                    tipoclase +
                     "</div>";
        }
        private String CrearDivCruceIndividual(HorarioBE horario, bool first)
        {
            int padding = 5;
            int height = 35;
            double horainicio = horario.horainicio;
            double horafin = horario.horafin;
            int alturaxcurso = (int)(height * (horafin - horainicio) - (padding * 2));

            int topinicial = 210;
            int iniciodia = 7;

            int topxcurso = (int)((horainicio - iniciodia) * height + topinicial);

            string color = "rgba(161, 48, 52, 0.5)";
            if (first)
                return "<div  class='estilohorario' style='background-color:" + color.ToString()
                        + "; height:" + alturaxcurso.ToString()
                        + "px; width: 60px; top:" + topxcurso.ToString()
                        + "px; padding:" + padding.ToString()
                        + "px;'>" + "<a href='<%= url_for :controller => :Cruce, :action => :cruce_dos,:query => {:detalle => " + GetDetalleDeCurso(horario) + "} %>'>" + horario.nombre + "</a>" +
                         "</div>";
            else
                return "<div  class='estilohorario' style='background-color:" + color.ToString()
                    + "; height:" + alturaxcurso.ToString()
                    + "px; width: 60px; left: 60px; top:" + topxcurso.ToString()
                    + "px; padding:" + padding.ToString()
                    + "px;'>" + "<a href='<%= url_for :controller => :Cruce, :action => :cruce_dos,:query => {:detalle => " + GetDetalleDeCurso(horario) + "} %>'>" + horario.nombre + "</a>" +
                     "</div>";
        }
 private String CrearDivCruce(HorarioBE horario1, HorarioBE horario2)
 {
     return CrearDivCruceIndividual(horario1, true) + CrearDivCruceIndividual(horario2, false);
 }
        public List<HorarioBE> GetHorario(string codigo, string periodo)
        {
            SqlConnection Conn = null;
            String sCadenaConeccion;
            String sqlUsuarioObtener;
            SqlCommand cmdUsuarioObtener = null;
            SqlDataReader drUsuarioObtener;
            SqlParameter prmCodAlumno;
            SqlParameter prmPeriodo;

            try
            {

                List<HorarioBE> horarios = new List<HorarioBE>();
                HorarioBE horario;

                sCadenaConeccion = Settings.Default.csDesarrollo;
                Conn = new SqlConnection(sCadenaConeccion);
                sqlUsuarioObtener = "usps_Horario";
                cmdUsuarioObtener = Conn.CreateCommand();
                cmdUsuarioObtener.CommandText = sqlUsuarioObtener;
                cmdUsuarioObtener.CommandType = CommandType.StoredProcedure;

                prmCodAlumno = cmdUsuarioObtener.CreateParameter();
                prmCodAlumno.ParameterName = "@Alumno_id";
                prmCodAlumno.SqlDbType = SqlDbType.VarChar;
                prmCodAlumno.Value = codigo;

                prmPeriodo = cmdUsuarioObtener.CreateParameter();
                prmPeriodo.ParameterName = "@Periodo_id";
                prmPeriodo.SqlDbType = SqlDbType.VarChar;
                prmPeriodo.Value = periodo;

                cmdUsuarioObtener.Parameters.Add(prmCodAlumno);
                cmdUsuarioObtener.Parameters.Add(prmPeriodo);
                cmdUsuarioObtener.Connection.Open();
                drUsuarioObtener = cmdUsuarioObtener.ExecuteReader();

                while (drUsuarioObtener.Read())
                {
                    horario = new HorarioBE();
                    horario.id = drUsuarioObtener.GetInt32(drUsuarioObtener.GetOrdinal("id"));
                    horario.dia = drUsuarioObtener.GetInt32(drUsuarioObtener.GetOrdinal("dia"));
                    String[] horainicio = drUsuarioObtener.GetString(drUsuarioObtener.GetOrdinal("h_inicio")).Split(':');
                    String[] horafin = drUsuarioObtener.GetString(drUsuarioObtener.GetOrdinal("h_fin")).Split(':');
                    horario.horainicio = double.Parse(horainicio[0]) + double.Parse(horainicio[1]) * 0.01;
                    horario.horafin = double.Parse(horafin[0]) + double.Parse(horafin[1]) * 0.01;
                    horario.tipo = drUsuarioObtener.GetInt32(drUsuarioObtener.GetOrdinal("tipo"));
                    horario.salon = drUsuarioObtener.GetString(drUsuarioObtener.GetOrdinal("salon"));
                    horario.nombre = drUsuarioObtener.GetString(drUsuarioObtener.GetOrdinal("Nombre"));
                    horario.curso_id = drUsuarioObtener.GetInt32(drUsuarioObtener.GetOrdinal("Curso_id"));
                    horario.cruce = false;
                    horario.frec = drUsuarioObtener.GetInt32(drUsuarioObtener.GetOrdinal("frec"));
                    horario.fechainicio = drUsuarioObtener.GetString(drUsuarioObtener.GetOrdinal("f_inicio"));
                    horario.fechafin = drUsuarioObtener.GetString(drUsuarioObtener.GetOrdinal("f_fin"));
                    horarios.Add(horario);
                }

                cmdUsuarioObtener.Connection.Close();
                cmdUsuarioObtener.Dispose();
                Conn.Dispose();

                return horarios;

            }
            catch (Exception ex)
            {
                cmdUsuarioObtener.Dispose();
                Conn.Dispose();
                throw;
            }
        }