public List<string> ValidarReserva(ReservaClase model)
        {
            List<string> result = new List<string>();

            if (model.IdCurso == null)
                result.Add("Seleccione el curso");

            if (model.Clase == null)
                result.Add("Seleccione la clase");

            if (model.Reunion == null)
                result.Add("Seleccione al menos una reunión");

            if (model.Recurso == null)
                result.Add("Seleccione al menos una aplicación");

            if (model.GetFechaInicio() == null)
            {
                result.Add("Seleccione la fecha de inicio");
            }
            else
            {
                if (model.GetFechaInicio().Date < DateTime.Now.Date)
                    result.Add("Seleccione una fecha de inicio válida");
            }

            if (model.GetFechaFin() == null)
            {
                result.Add("Seleccione la fecha de inicio");
            }
            else
            {
                if (model.GetFechaFin().Date < DateTime.Now.Date)
                    result.Add("Seleccione una fecha fin válida");
            }

            if (model.GetFechaInicio() != null && model.GetFechaFin() != null)
            {
                if (model.GetFechaFin().Date < model.GetFechaInicio().Date)
                    result.Add("Seleccione una fecha de vigencia de la reserva válida");
            }

            if (model.Clase != null && model.Reunion != null && model.Recurso != null)
            {

                var validacionLicencias = this.validarLicencias(model);

                if (validacionLicencias.Count > 0)
                    result.AddRange(validacionLicencias);

                var tieneReserva = this.claseTieneReserva(model);

                if (tieneReserva.Count > 0)
                    result.AddRange(tieneReserva);
            }

            return result;
        }
        public void InsertarReserva(ReservaClase model)
        {
            using (var transaction = dbSql.Database.BeginTransaction())
            {
                try
                {
                    string[] clase = model.Clase.Split('-');
                    var strm = clase[0];
                    var class_nbr = clase[1];

                    foreach (string reunion in model.Reunion)
                    {
                        string[] reu = reunion.Split('-');

                        var dia = Convert.ToByte(reu[0]);
                        var horaInicio = Convert.ToInt16(reu[1]);
                        var horaFin = Convert.ToInt16(reu[2]);

                        reserva reserva = new reserva();

                        reserva.fecha_inicio = model.GetFechaInicio();
                        reserva.fecha_final = model.GetFechaFin();
                        reserva.dia = dia;
                        reserva.hora_inicial = horaInicio;
                        reserva.hora_final = horaFin;
                        reserva.tipo_reserva = "2";
                        reserva.strm = strm;
                        reserva.class_nbr = class_nbr;
                        reserva.crse_id = model.IdCurso;
                        reserva.fecha_registro = DateTime.Now;
                        reserva.curso = model.Curso;

                        dbSql.reservas.Add(reserva);
                        dbSql.SaveChanges();

                        foreach (var recursoId in model.Recurso)
                        {
                            this.insertarRecursoReserva(reserva, Convert.ToInt32(recursoId));
                        }

                        var usuariosClase = this.GetUsuariosByClase(strm, model.IdCurso, class_nbr);

                        foreach (Usuario usuario in usuariosClase)
                        {
                            this.insertarUsuarioReserva(reserva, usuario.OPRID);
                        }

                    }

                    transaction.Commit();

                    //dbSql.RegisterEvents();

                }
                catch (Exception)
                {
                    transaction.Rollback();
                    throw;
                }
            }
        }