public ActionResult Crear()
 {
     Exposicion exposicion = new Exposicion();
     return PartialView("_Crear", exposicion);
 }
        //IMPORTAR EXPOSICION
        public ActionResult ImportarCat_Exposicion()
        {
            ViewBag.NombreTabla = "CATALOGO DE EXPOSICIONES";

            ViewBag.error = "";
            try
            {
                //abrir conexion
                con1.Open();

                // mandar mensaje de conexcion
                ViewBag.mensaje = "Conexión establecida";

                //revisar el contador de registros
                if (db.Exposiciones.ToList().Count > 0)
                {
                    //si hay por lo menos un registro ya se ocupo la tabla
                    ViewBag.error = "error";
                }
                else
                {
                    //definir el sql
                    string textSql = string.Format("SELECT * FROM [m_guion]");
                    SqlCommand sql = new SqlCommand(textSql, con1);
                    //ejecutar el sql
                    SqlDataReader leer = sql.ExecuteReader();
                    //realizar el foreach
                    while (leer.Read())
                    {
                        //definir el tipo de tabla
                        Exposicion exposicion = new Exposicion();

                        //llenar el registro con los valores viejos

                        exposicion.Nombre = leer["gui_nombre"].ToString();
                        exposicion.Status = true;
                        exposicion.AntID = leer["gui_id"].ToString();

                        db.Exposiciones.Add(exposicion);
                        db.SaveChanges();
                    }

                    var lista = db.Exposiciones.ToList();
                    ViewBag.TotalRegistros = lista.Count;

                    return PartialView("_ImportarCat_Exposicion", lista);
                }
            }
            catch (Exception)
            {
                ViewBag.mensaje = "Conexión fallida";
            }
            return PartialView("_ImportarCat_Exposicion");
        }
 public ActionResult AgregarValor(string valor, bool aceptar)
 {
     if (aceptar)
     {
         if (valor != null || valor != "")
         {
             var lista = db.Exposiciones.Where(a => a.Nombre == valor).ToList();
             if (lista.Count == 0)
             {
                 var exposicion = new Exposicion()
                 {
                     Nombre = valor,
                     Status = true,
                 };
                 db.Exposiciones.Add(exposicion);
                 db.SaveChanges();
                 AlertaSuccess(string.Format("Exposición: <b>{0}</b> se agregó con exitó.", exposicion.Nombre), true);
                 return Json(new { success = true, valor = exposicion.ExposicionID, texto = exposicion.Nombre });
             }
             else
             {
                 AlertaSuccess(string.Format("Exposición: <b>{0}</b> se agregó con exitó.", lista.FirstOrDefault().Nombre), true);
                 return Json(new { success = true, valor = lista.FirstOrDefault().ExposicionID, texto = lista.FirstOrDefault().Nombre });
             }
         }
     }
     return Json(new { success = false });
 }
        private void ActualitzarListPreguntas(Nivel nivel)
        {
            Exposicion expo = GetSelectedExposicion();

            // if (expo.Preguntas != null && expo.Preguntas[nivel] != null)

            if (expo.Preguntas != null)
            {
                if (expo.Preguntas.ContainsKey(nivel))
                {
                    List <Pregunta> preguntas = expo.Preguntas[nivel];
                    if (tabControlIdiomas.SelectedTab != null)
                    {
                        int cnt = 0;
                        foreach (TabPage pageid in tabControlIdiomas.Controls)
                        {
                            ListView listview = (ListView)pageid.Controls[0];
                            listview.Items.Clear();
                            listview.Items.AddRange(ListViews.AddItems(preguntas, expo.Idiomas[cnt]));
                            cnt++;
                        }
                        SelectedPreguntaIdioma = null;
                    }
                }
                else
                {
                    if (tabControlIdiomas.Controls.Count > 0)
                    {
                        ListView vista = ((ListView)tabControlIdiomas.Controls[0].Controls[0]);
                        vista.Items.Clear();
                    }
                }
            }
        }
        private void AñadirPregunta(Nivel nivel, Exposicion expo)
        {
            Dictionary <Idioma, PreguntaIdioma> emptypreguntaIdiomas = ControladorPrincipal.GetEmptyPreguntaIdiomas(expo.Idiomas);
            Pregunta p = new Pregunta(emptypreguntaIdiomas);

            expo.Preguntas[nivel].Add(p);
            SelectedPreguntaIdioma = p.PreguntaIdiomas[expo.Idiomas[0]];
        }
        private void EliminarPreguntaByPreguntaIdioma(PreguntaIdioma preguntaIdioma)
        {
            Exposicion exposicion = GetSelectedExposicion();
            int        pregunta   = BuscadorDePreguntas.GetPreguntaPos(exposicion.Preguntas[GetSelectedNivel()], preguntaIdioma);

            if (pregunta != -1)
            {
                exposicion.Preguntas[GetSelectedNivel()].Remove(exposicion.Preguntas[GetSelectedNivel()][pregunta]);
            }
            ActualitzarListPreguntas(GetSelectedNivel());
        }
        /// <summary>
        /// Devuelve la exposición que actualmente está seleccionada en ListViewExposiciones.
        /// </summary>
        /// <returns>
        /// Retorna la exposicion actualmente seleccionada en ListViewExposiciones.
        /// Si no hay ninguna exposicion seleccionada devuelve null.
        /// </returns>
        private Exposicion GetSelectedExposicion()
        {
            Exposicion exposicion = null;

            if (listViewExposiciones.SelectedItems.Count > 0)
            {
                ListViewItem item = (ListViewItem)listViewExposiciones.SelectedItems[0];
                exposicion = (Exposicion)item.Tag;
            }

            return(exposicion);
        }
        /***********
        * MÉTODOS *
        ***********/



        /// <summary>
        /// Elimina la exposción seleccionada de la lista de exposiciónes del ControladorPrincipal
        /// </summary>
        private void EliminarExposicion()
        {
            Exposicion exposicion = GetSelectedExposicion();

            if (exposicion != null)
            {
                Exposiciones.Remove(exposicion);

                ControladorPrincipal.Exposiciones = Exposiciones;

                ActualizarListViewExposiciones();
            }
        }
        /// <summary>
        /// Controla las acciones que se tienen que hacer cuando se cambia/deselecciona una exposición
        /// </summary>
        /// <param name="exposicion">Exposiciona a controlar la selección</param>
        private void SeleccionaExposicion(Exposicion exposicion)
        {
            if (exposicion != null)
            {
                // Consigue el numero de preguntas que tiene la exposición
                int numeroPreguntas = Preguntas.CountPreguntas(exposicion);

                // Asignamos el nombre de la exposición a LableNombreActual
                labelNombreActual.Text = exposicion.Nombre;
                // Asignamos la descripcion de la exposición a LabelDescripcion de la exposición
                labelDescripcionActual.Text = exposicion.DescripcionExpo;
                // Asignamos el número de preguntas que la exposición tiene
                labelNumeroPreguntasActual.Text = Convert.ToString(numeroPreguntas);

                // TODO:
                //
                // labelIdiomasSeleccionadosActual.Text;

                // Si la exposición tiene algún nivel
                if (exposicion.Niveles.Count > 0)
                {
                    // Recorremos los niveles de la exposicion
                    foreach (Nivel nivel in exposicion.Niveles)
                    {
                        // Cremamos un ComboBoxItem para poder añadir también el objeto y usarlo posteriormente
                        ComboBoxItem item = new ComboBoxItem
                        {
                            Text = nivel.Nombre,
                            Tag  = nivel
                        };

                        // Añadimos el ComboBoxItem a ComboBoxNivel
                        comboBoxNivel.Items.Add(item);
                    }

                    // Seleccionamos el primer elemento de ComboboxNivel
                    comboBoxNivel.SelectedItem = 0;
                    comboBoxNivel.Text         = exposicion.Niveles[0].Nombre;
                    // Aplicamos los cambios que se deban hacer al cambiar de nivel en una exposición
                    CambiarNivel(exposicion.Niveles[0]);

                    // Añadimos los idiomas como TabPage en TabControlIdiomas
                    AnadirTabPagesIdiomas(exposicion.Idiomas);
                }
            }
            else
            {
                // Limpiamos del formulario la información de la exposición
                ClearExposicion();
            }
        }
        public void SaveInfo(Exposicion exposicion)
        {
            exposicion.Nombre          = NombreExpo.Text;
            exposicion.DescripcionExpo = DescripcioExpo.Text;
            exposicion.FechaInicio     = FechaInicio.Value;
            exposicion.FechaFin        = FechaFin.Value;

            exposicion.Idiomas   = ListLoadIdiomas(exposicion.Id); // - - - - - - - - - - carga idiomas desde json
            exposicion.Niveles   = ListLoadNiveles(exposicion.Id); // - - - - - - - - - - carga niveles desde json
            exposicion.Personaje = ListLoadPersonajes(exposicion.Id);

            exposicion.QuestionsXLvl   = int.Parse(PreguntasXNivel.Value.ToString());
            exposicion.AnswerTimeOut   = int.Parse(TimeOutAnswer.Text.ToString());
            exposicion.QuestionTimeOut = int.Parse(TimeOutQuestion.Text.ToString());
            exposicion.ReviewTimeOut   = int.Parse(TimeOutResum.Text.ToString());
            exposicion.AdminUser       = UserAdmin.Text;
            exposicion.AdminPassword   = PasswordAdmin.Text;
        }
Exemple #11
0
        /***********
        * MÉTODOS *
        ***********/
        public static int CountPreguntas(Exposicion exposicion)
        {
            Dictionary <Nivel, List <Pregunta> > preguntas = exposicion.Preguntas;

            int count = 0;

            if (preguntas != null)
            {
                foreach (KeyValuePair <Nivel, List <Pregunta> > preguntasSet in preguntas)
                {
                    if (preguntasSet.Value != null)
                    {
                        count += preguntasSet.Value.Count;
                    }
                }
            }

            return(count);
        }
        public bool Read()
        {
            try
            {
                //Obetener sitio de db
                DALC.sitio sitio = CommonBC.BaseDeDatos.sitio.First(lugar => lugar.idsitio == IdSitio);

                Nombre         = sitio.nombre;
                Direccion      = sitio.direccion;
                Entrada        = sitio.entrada;
                Salida         = sitio.salida;
                EsGratis       = Convert.ToChar(sitio.gratuito);
                TipoExposicion = this.EnumExposicion(sitio.exposicion_tipo);

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
        public void LoadInfo(Exposicion exposicion)
        {
            NombreExpo.Text     = exposicion.Nombre;
            DescripcioExpo.Text = exposicion.DescripcionExpo;
            FechaInicio.Value.ToString(exposicion.FechaInicio.ToString());
            FechaFin.Value.ToString(exposicion.FechaFin.ToString());

            //FALTA: Depende de si existe del form carga las lists de expo o del JSON.
            ListLoadIdiomas(exposicion.Id);    // - - - - - - - - - - carga idiomas desde json
            ListLoadNiveles(exposicion.Id);    // - - - - - - - - - - carga niveles desde json
            ListLoadPersonajes(exposicion.Id); // - - - - - - - - - - carga personales desde json

            PreguntasXNivel.Value = exposicion.QuestionsXLvl;
            TimeOutQuestion.Text  = exposicion.AnswerTimeOut.ToString();
            TimeOutAnswer.Text    = exposicion.QuestionTimeOut.ToString();
            TimeOutResum.Text     = exposicion.ReviewTimeOut.ToString();
            UserAdmin.Text        = exposicion.AdminUser;
            PasswordAdmin.Text    = exposicion.AdminPassword;
            cargarImagen("sumimage.jpg", ImagenResumen, exposicion.Id);
            cargarImagen("appimage.jpg", ImagenApp, exposicion.Id);
        }
        /// <summary>
        /// Controla las acciones que se deben hacer cuando se cambia el nivel en una exposición
        /// </summary>
        /// <param name="nivel">Nivel a controlar el cambio</param>
        private void CambiarNivel(Nivel nivel)
        {
            // Declariamos e inicializamos la exposición y la lista de preguntas con las que trataremos
            Exposicion      exposicion = null;
            List <Pregunta> preguntas  = null;

            // Si la ListViewExposiciones tiene algún elemento seleccionado
            if (listViewExposiciones.SelectedItems.Count > 0)
            {
                // Guardamos en variable la exposicón seleccionada
                exposicion = (Exposicion)listViewExposiciones.SelectedItems[0].Tag;
            }

            // Si la exposición tiene preguntas
            if (exposicion.Preguntas != null)
            {
                // Si existen preguntas para el nivel seleccionado en la exposición seleccionada
                if (exposicion.Preguntas.ContainsKey(nivel))
                {
                    // Guardamos en variable las preguntas del nivel seleccionado para esa exposicón
                    preguntas = exposicion.Preguntas[nivel];
                }
            }

            // Si tenemos preguntas
            if (preguntas != null)
            {
                // Asignamos el número de preguntas a LabelNumTotalPreguntas
                labelNumTotalPreguntas.Text = Convert.ToString(preguntas.Count);
            }
            // Si no tenemos preguntas
            else
            {
                // Asignamos igualmente un 0 a LabelNumTotalPreguntas
                labelNumTotalPreguntas.Text = "0";
            }
        }
        /// <summary>
        /// Se ejecuta cuando el usuario hace click en el ButtonAnadirPregunta
        /// </summary>
        /// <param name="sender">Elemento que envia el evento</param>
        /// <param name="e">Evento llamado</param>
        private void buttonAnadirPregunta_Click(object sender, EventArgs e)
        {
            if (SelectedPreguntaIdioma == null || (SelectedPreguntaIdioma == null && (!GetSelectedIdioma().Equals(GetSelectedExposicion().Idiomas[0]))))
            {
                AñadirPregunta(GetSelectedNivel(), GetSelectedExposicion());
            }
            else if (!GetSelectedIdioma().Equals(GetSelectedExposicion().Idiomas[0]))
            {
                Console.WriteLine("NonEquals");
                Exposicion      exposicion      = GetSelectedExposicion();
                List <Pregunta> Preguntasxlevel = exposicion.Preguntas[GetSelectedNivel()];
                int             PreguntPos      = BuscadorDePreguntas.GetPreguntaPos(Preguntasxlevel, SelectedPreguntaIdioma);

                SelectedPreguntaIdioma = exposicion.Preguntas[GetSelectedNivel()][PreguntPos].PreguntaIdiomas[exposicion.Idiomas[0]];
            }

            if (SelectedPreguntaIdioma != null)
            {
                FormModificarPregunta formModificarPregunta = new FormModificarPregunta(SelectedPreguntaIdioma, GetSelectedExposicion().Preguntas, GetSelectedExposicion().Niveles, GetSelectedExposicion().Idiomas, GetSelectedExposicion().Id);
                formModificarPregunta.ShowDialog();
                formModificarPregunta.Dispose();
            }
            ActualitzarListPreguntas(GetSelectedNivel());
        }
 public Form_CrearExpo(Exposicion expo)
 {
     InitializeComponent();
     contenedor = new Contenedores(textBoxCrearExpo_Nombre, textBoxCrearExpo_Descr, dateTimePickerCrearExpo_FechaInicio, dateTimePickerCrearExpo_FechaFin, listViewCrearExpo_Idiomas, listViewCrearExpo_NumeroNiveles, listViewCrearExpo_NumeroPersonajes, numericUpDownCrearExpo_PregXNivel, textBoxCrearExpo_TimeOutQ, textBoxCrearExpo_TimeOutA, textBoxCrearExpo_TimeOutR, textBoxCrearExpo_UserAdmin, textBoxCrearExpo_PassAdmin, pictureBoxImagenApp, pictureBoxImagenSum);
     exposicion = expo;
 }
        /// <summary>
        /// Añade un TabPage dinámicamente con el nombre del idioma en TabControlIdiomas
        /// </summary>
        /// <param name="idioma">Idioma a añadir</param>
        private void AnadirTabPageIdioma(Idioma idioma)
        {
            // Creamos un nuevo TabPage con el texto del nombre del idioma
            TabPage tabPage = new TabPage(idioma.Nombre);

            // Añadimos el TabPage a TabControlIdiomas
            tabControlIdiomas.TabPages.Add(tabPage);

            // TODO: Recolocar creación de elementos
            ListViewPreguntas = new ListView
            {
                Dock          = System.Windows.Forms.DockStyle.Fill,
                FullRowSelect = true,
                HideSelection = true,
                UseCompatibleStateImageBehavior = false,
                View = System.Windows.Forms.View.Details,
            };

            ListViewPreguntas.SelectedIndexChanged += new System.EventHandler(listViewPreguntas_SelectedIndexChanged);

            tabPage.Controls.Add(ListViewPreguntas);



            Exposicion exposicion = GetSelectedExposicion();

            if (exposicion != null)
            {
                // Numero
                ColumnHeader columnNumero = new ColumnHeader();
                columnNumero.Text = "Nº";

                // Pregunta
                ColumnHeader columnPregunta = new ColumnHeader();
                columnPregunta.Text  = "Pregunta";
                columnPregunta.Width = 137;

                // Respuesta Correcta
                ColumnHeader columnRespuestaCorrecta = new ColumnHeader();
                columnRespuestaCorrecta.Text  = "Respuesta Correcta";
                columnRespuestaCorrecta.Width = 115;

                // Respuesta Incorrecta 1
                ColumnHeader columnRespuestaIncorrecta1 = new ColumnHeader();
                columnRespuestaIncorrecta1.Text  = "Respuesta Inc 1";
                columnRespuestaIncorrecta1.Width = 123;

                // Respuesta Incorrecta 2
                ColumnHeader columnRespuestaIncorrecta2 = new ColumnHeader();
                columnRespuestaIncorrecta2.Text  = "Respuesta Inc 2";
                columnRespuestaIncorrecta2.Width = 137;

                // Respuesta Incorrecta 3
                ColumnHeader columnRespuestaIncorrecta3 = new ColumnHeader();
                columnRespuestaIncorrecta3.Text  = "Respuesta Inc 3";
                columnRespuestaIncorrecta3.Width = 130;

                // Añadimos columnas a la ListVIew
                ListViewPreguntas.Columns.Add(columnNumero);
                ListViewPreguntas.Columns.Add(columnPregunta);
                ListViewPreguntas.Columns.Add(columnRespuestaCorrecta);
                ListViewPreguntas.Columns.Add(columnRespuestaIncorrecta1);
                ListViewPreguntas.Columns.Add(columnRespuestaIncorrecta2);
                ListViewPreguntas.Columns.Add(columnRespuestaIncorrecta3);

                Dictionary <Nivel, List <Pregunta> > preguntasNivel = exposicion.Preguntas;
                Nivel nivel = GetSelectedNivel();

                if (nivel != null && preguntasNivel != null && preguntasNivel.ContainsKey(nivel))
                {
                    ListViewPreguntas.Items.AddRange(ListViews.AddItems(preguntasNivel[nivel], idioma));
                }
            }
        }
        public ActionResult Crear([Bind(Include = "PiezaID,ExposicionID")] ExposicionPieza exposicionPieza)
        {
            exposicionPieza.Status = true;
            //verificar que ExposicionID NULL ó 0
            if (exposicionPieza.ExposicionID == 0)
            {
                //si es NULL ó 0
                //agregar valor de la busqueda a la tabla EXPOSICION
                //extraer el ID y asignarlo a EXPOSICIONPIEZA

                //validar que BuscarDato no sea "" o NULL
                var text_BuscarDato = Request.Form["BuscarDato"].ToString();
                if (!String.IsNullOrEmpty(text_BuscarDato))
                {
                    var a_existe = db.Exposiciones.Where(a => a.Nombre == text_BuscarDato).ToList();
                    // si es repetido agregar su ID a ExposicionPieza
                    if (a_existe.Count > 0)
                    {
                        //ya existe
                        exposicionPieza.ExposicionID = a_existe.FirstOrDefault().ExposicionID;
                        db.Entry(exposicionPieza).State = EntityState.Modified;
                    }
                    else
                    {
                        //no existe
                        var exposicionNew = new Exposicion()
                        {
                            Nombre = text_BuscarDato,
                            Status = true
                        };

                        db.Exposiciones.Add(exposicionNew);
                        db.SaveChanges();

                        exposicionPieza.ExposicionID = exposicionNew.ExposicionID;
                        db.ExposicionPiezas.Add(exposicionPieza);
                    }

                    db.SaveChanges();
                    //AlertaSuccess(string.Format("Exposición: <b>{0}</b> se agrego con exitó.", exposicion.Nombre), true);
                    string url = Url.Action("Lista", "ExposicionPieza", new { id = exposicionPieza.PiezaID });
                    return Json(new { success = true, url = url, modelo = "ExposicionPieza", lista = "lista", idPieza = exposicionPieza.PiezaID });
                }
            }
            else
            {
                //no es NULL ó 0
                //verificar que no exista ya el registro para la pieza
                var expoPieza_existe = db.ExposicionPiezas.Where(a => a.PiezaID == exposicionPieza.PiezaID && a.ExposicionID == exposicionPieza.ExposicionID).ToList();
                // si es repetido agregar su ID a ExposicionPieza
                if (expoPieza_existe.Count <= 0)
                {
                    //crear
                    db.ExposicionPiezas.Add(exposicionPieza);
                    db.SaveChanges();
                }

                //AlertaSuccess(string.Format("Exposición: <b>{0}</b> se agrego con exitó.", exposicion.Nombre), true);
                string url = Url.Action("Lista", "ExposicionPieza", new { id = exposicionPieza.PiezaID });
                return Json(new { success = true, url = url, modelo = "ExposicionPieza", lista = "lista", idPieza = exposicionPieza.PiezaID });
            }
            //AlertaSuccess(string.Format("Exposición: <b>{0}</b> se agrego con exitó.", exposicion.Nombre), true);
            ViewBag.ExposicionID = new SelectList(db.Exposiciones.Where(e => e.Status == true), "ExposicionID", "Nombre", exposicionPieza.ExposicionID);
            return PartialView("_Crear", exposicionPieza);
        }
        /// <summary>
        /// Se ejecuta cuando el usuario hace click en ButtonExportarExposicion
        /// </summary>
        /// <param name="sender">Elemento que envia el evento</param>
        /// <param name="e">Evento llamado</param>
        ///
        private void buttonExportarExposicion_Click(object sender, EventArgs e)
        {
            //SaveFileDialog saveFileDialog = new SaveFileDialog();
            //saveFileDialog.FileName = (GetSelectedExposicion().Nombre);
            //saveFileDialog.Filter = "Archivo .JSON (*.JSON)|*.JSON|Todos los archivos (*.*)|*.*";
            //saveFileDialog.ShowDialog();
            //saveFileDialog.FileName
            //ControladorPrincipal.Guardar();
            // - - - - - - - - - - - - - - - - - - - - - - - - MAGOMO
            Exposicion expo = GetSelectedExposicion();

            if (expo != null)
            {
                string fullpath   = Directory.GetParent(Environment.CurrentDirectory).Parent.FullName;
                string dataespath = fullpath + @"\Files\";
                string imagespath = fullpath + @"\Images\";
                // estructura de exportacion
                string targetpath   = fullpath + @"\Export\E" + expo.Id;
                string xprtbase     = targetpath + @"\XPOmanager";
                string xprtdata     = xprtbase + @"\data";         // aqui va el exposicion.json
                string xprtimagenes = xprtdata + @"\Imagenes";
                string xprtelements = xprtimagenes + @"\Elements"; // aqui van las imagenes que no son preguntas
                string xprtpregunts = xprtimagenes + @"\Elements"; // aqui van las imagenes que son preguntas
                // ----- prepara carpeta export
                if (Directory.Exists(targetpath))
                {
                    System.IO.DirectoryInfo dirinfo;
                    // elimina archivos contenidos para generar nuevos
                    dirinfo = new System.IO.DirectoryInfo(xprtdata);
                    foreach (System.IO.FileInfo file in dirinfo.GetFiles())
                    {
                        file.Delete();
                    }
                    // elimina archivos contenidos para generar nuevos
                    dirinfo = new System.IO.DirectoryInfo(xprtelements);
                    foreach (System.IO.FileInfo file in dirinfo.GetFiles())
                    {
                        file.Delete();
                    }
                    // elimina archivos contenidos para generar nuevos
                    dirinfo = new System.IO.DirectoryInfo(xprtpregunts);
                    foreach (System.IO.FileInfo file in dirinfo.GetFiles())
                    {
                        file.Delete();
                    }
                }
                else
                {
                    // crea directorio
                    Directory.CreateDirectory(targetpath);
                    Directory.CreateDirectory(xprtbase);
                    Directory.CreateDirectory(xprtdata);
                    Directory.CreateDirectory(xprtimagenes);
                    Directory.CreateDirectory(xprtelements);
                    // Directory.CreateDirectory(xprtpregunts);
                }
                // ----- carga literales de app en json de exposicion
                if (expo.ExposicionIdiomas == null)
                {
                    expo.ExposicionIdiomas = new Dictionary <Idioma, ExposicionIdioma>();
                }
                if (File.Exists(dataespath + "literalesE" + expo.Id + ".json"))
                {
                    //fullpath + @"Files\ + "literales" + "E" + nExpoId + ".json"
                    JArray jsonlites = JArray.Parse(File.ReadAllText(dataespath + "literalesE" + expo.Id + ".json"));
                    List <ExposicionIdioma> literales = jsonlites.ToObject <List <ExposicionIdioma> >();

                    Dictionary <Idioma, ExposicionIdioma> exposicionIdiomas = new Dictionary <Idioma, ExposicionIdioma>();

                    foreach (ExposicionIdioma exposicionIdioma in literales)
                    {
                        foreach (Idioma idioma in expo.Idiomas)
                        {
                            if (idioma.Id == exposicionIdioma.LangId)
                            {
                                exposicionIdiomas.Add(idioma, exposicionIdioma);
                            }
                        }
                    }

                    expo.ExposicionIdiomas = exposicionIdiomas;

                    foreach (Idioma lang in expo.Idiomas)
                    {
                        foreach (ExposicionIdioma langlite in literales)
                        {
                            if (lang.Id.Equals(langlite.LangId))
                            {
                                if (expo.ExposicionIdiomas == null)
                                {
                                    expo.ExposicionIdiomas.Add(lang, langlite);
                                }
                            }
                        }
                    }
                }
                // ----- graba json en carpeta de exportacion
                using (StreamWriter fichero = File.CreateText(xprtdata + @"\" + "exposicion.json"))
                {
                    JsonSerializerSettings settings = new JsonSerializerSettings
                    {
                        ContractResolver = new DictionaryAsArrayResolver()
                    };

                    String json = JsonConvert.SerializeObject(expo, settings);

                    fichero.Write(json);
                }
                // ----- graba imagenes
                // appimage
                if (File.Exists(imagespath + "appimage" + expo.Id + ".jpg"))
                {
                    File.Copy(imagespath + "appimage" + expo.Id + ".jpg", xprtelements + @"\" + "appimage" + ".jpg");
                }
                // sumimage
                if (File.Exists(imagespath + "sumimage" + expo.Id + ".jpg"))
                {
                    File.Copy(imagespath + "sumimage" + expo.Id + ".jpg", xprtelements + @"\" + "sumimage" + ".jpg");
                }
                // banderas
                foreach (Idioma lang in expo.Idiomas)
                {
                    if (File.Exists(imagespath + lang.Image))
                    {
                        File.Copy(imagespath + lang.Image, xprtelements + @"\" + lang.Image);
                    }
                }
                // personajes
                foreach (Personaje charac in expo.Personaje)
                {
                    if (File.Exists(imagespath + charac.Image))
                    {
                        File.Copy(imagespath + charac.Image, xprtelements + @"\" + charac.Image);
                    }
                }
                // Preguntas
                foreach (Nivel nivel in expo.Niveles)
                {
                    foreach (Pregunta pregunta in expo.Preguntas[nivel])
                    {
                        if (File.Exists(imagespath + pregunta.ImagenPregunta))
                        {
                            File.Copy(imagespath + pregunta.ImagenPregunta, xprtpregunts + @"\" + pregunta.ImagenPregunta);
                        }
                        if (File.Exists(imagespath + pregunta.ImagenRespuestaCorrecta))
                        {
                            File.Copy(imagespath + pregunta.ImagenRespuestaCorrecta, xprtpregunts + @"\" + pregunta.ImagenRespuestaCorrecta);
                        }
                        if (File.Exists(imagespath + pregunta.ImagenRespuestaIncorrecta1))
                        {
                            File.Copy(imagespath + pregunta.ImagenRespuestaIncorrecta1, xprtpregunts + @"\" + pregunta.ImagenRespuestaIncorrecta1);
                        }
                        if (File.Exists(imagespath + pregunta.ImagenRespuestaIncorrecta2))
                        {
                            File.Copy(imagespath + pregunta.ImagenRespuestaIncorrecta2, xprtpregunts + @"\" + pregunta.ImagenRespuestaIncorrecta2);
                        }
                        if (File.Exists(imagespath + pregunta.ImagenRespuestaIncorrecta3))
                        {
                            File.Copy(imagespath + pregunta.ImagenRespuestaIncorrecta3, xprtpregunts + @"\" + pregunta.ImagenRespuestaIncorrecta3);
                        }
                    }
                }

                // ----- selecciona carpeta de exportacion de archivo zip
                string zipPath = Directory.GetParent(Environment.CurrentDirectory).Parent.FullName + @"\Export";
                using (FolderBrowserDialog folderdiag = new FolderBrowserDialog())
                {
                    if (folderdiag.ShowDialog() == DialogResult.OK)
                    {
                        if (folderdiag.SelectedPath.Length > 0)
                        {
                            zipPath = folderdiag.SelectedPath;
                        }
                    }
                }
                if (File.Exists(zipPath + @"\E" + expo.Id + ".zip"))
                {
                    File.Delete(zipPath + @"\E" + expo.Id + ".zip");
                }
                ZipFile.CreateFromDirectory(targetpath, zipPath + @"\E" + expo.Id + ".zip");
                MessageBox.Show("Se han exportado los datos de la Exposicion \"" + expo.Nombre + "\"", "INFORMACION", MessageBoxButtons.OK, MessageBoxIcon.Information);
                // - - - - - - - - - - - - - - - - - - - - - - - -/MAGOMO
            }
        }
        /// <summary>
        /// Se ejecuta cuando el usuario hace click en el ButtonCrearExposicion
        /// </summary>
        /// <param name="sender">Elemento que envia el evento</param>
        /// <param name="e">Evento llamado</param>
        private void buttonCrearExposicion_Click(object sender, EventArgs e)
        {
            Exposiciones = ControladorPrincipal.Exposiciones;
            Exposicion     exposicion    = GetSelectedExposicion();
            Form_CrearExpo formCrearExpo = null;

            if (exposicion != null)
            {
                formCrearExpo = new Form_CrearExpo(exposicion);
                formCrearExpo.ShowDialog();
            }
            else // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MAGOMO 20191208
            {
                exposicion = new Exposicion();
                if (Exposiciones != null)
                {
                    exposicion.Id = Exposiciones.Count;
                }
                else
                {
                    exposicion.Id = 0;
                }
                formCrearExpo = new Form_CrearExpo(exposicion);
                formCrearExpo.ShowDialog();
                if (exposicion.Nombre != null)
                {
                    exposicion.Preguntas = new Dictionary <Nivel, List <Pregunta> >();
                    if (Exposiciones == null)
                    {
                        Exposiciones = new List <Exposicion>();
                    }
                    Exposiciones.Add(exposicion);
                    ControladorPrincipal.Exposiciones = Exposiciones;
                }
            }
            formCrearExpo.Dispose();
            ActualizarListViewExposiciones();
            int numeroDePreguntasAllenar = exposicion.QuestionsXLvl;

            Console.WriteLine("Numero de preguntas a rellenar: " + numeroDePreguntasAllenar);

            exposicion.Preguntas = ControladorPrincipal.ListPreguntas(exposicion.Niveles, exposicion.Idiomas, exposicion.Preguntas);

            //Comprobar que esten los niveles de Key = list niveles
            Console.WriteLine("Numero de niveles: " + exposicion.Niveles.Count);
            foreach (Nivel nivel in exposicion.Niveles)
            {
                Console.WriteLine("Nivel: " + nivel.Nombre);
                if (!exposicion.Preguntas.ContainsKey(nivel))
                {
                    exposicion.Preguntas.Add(nivel, new List <Pregunta>());
                }
                for (int cnt = exposicion.Preguntas[nivel].Count; cnt < numeroDePreguntasAllenar; cnt++)
                {
                    Console.WriteLine("Numero Preguntas: " + exposicion.Preguntas[nivel].Count);
                    AñadirPregunta(nivel, exposicion);
                }
            }


            //ControladorPrincipal.SeeLevels(GetSelectedExposicion().Niveles, GetSelectedExposicion().Preguntas);
            ActualitzarListPreguntas(GetSelectedNivel());
        }