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

            if (model.Grupo == null)
                result.Add("Seleccione el grupo personalizado");

            if (model.DiaReserva == null)
                result.Add("Seleccione el día de la reserva");

            if (model.HoraInicio == null)
                result.Add("Seleccione la hora de inicio de la reserva");

            if (model.HoraFin == null)
                result.Add("Seleccione la hora final de la reserva");

            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");
            }

            //Validar la hora de la reserva
            if (Convert.ToInt16(model.HoraInicio) >= Convert.ToInt16(model.HoraFin))
                result.Add("Seleccione un horario de la reserva válido");

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

            if(result.Count == 0)
            {
                var validacionLicencias = this.validarLicencias(model);

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

                //Validar si ya existe una reserva
                var tieneReserva = this.grupoTieneReserva(model);

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

            return result;
        }
        public void insert(ReservaGrupo model)
        {
            using (var transaction = db.Database.BeginTransaction())
            {
                try
                {
                    var grupo_id = Convert.ToInt32(model.Grupo);
                    var grupo = db.grupoes.Find(grupo_id);
                    var dia = Convert.ToByte(model.DiaReserva);
                    var horaInicio = Convert.ToInt16(model.HoraInicio);
                    var horaFin = Convert.ToInt16(model.HoraFin);

                    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 = "3";
                    reserva.grupo_id = grupo_id;
                    reserva.fecha_registro = DateTime.Now;

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

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

                    foreach (var usuario in grupo.usuarios_grupo.ToList<usuarios_grupo>())
                    {
                        this.insertarUsuarioReserva(reserva, usuario.oprid);

                    }

                    transaction.Commit();

                    //db.RegisterEvents();

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