/// <summary>
        /// Copia los atributos del objeto
        /// </summary>
        /// <param name="source">Objeto origen</param>
        protected void CopyValues(PreguntaExamenInfo source, Preguntas preguntas)
        {
            if (source == null)
            {
                return;
            }

            Oid = source.Oid;
            _base.Record.OidExamen       = source.OidExamen;
            _base.Record.OidModulo       = source.OidModulo;
            _base.Record.OidTema         = source.OidTema;
            _base.Record.Nivel           = source.Nivel;
            _base.Record.FechaAlta       = source.FechaAlta;
            _base.Record.Texto           = source.Texto;
            _base.Record.Tipo            = source.Tipo;
            _base.Record.Imagen          = source.Imagen;
            _base.Record.ModeloRespuesta = source.ModeloRespuesta;
            _base.Record.Idioma          = source.Idioma;
            _base.Record.Observaciones   = source.Observaciones;
            _base.Record.ImagenGrande    = source.ImagenGrande;
            _base.Record.Orden           = source.Orden;
            _base.Record.OidPregunta     = source.OidPregunta;

            if (_base.Record.Tipo == "Desarrollo") //si la pregunta es de tipo test, las imágenes se cargan en las respuestas
            {
                if (source.Imagen != string.Empty)
                {
                    if (File.Exists(source.ImagenWithPath))
                    {
                        _base.Record.Imagen = Resize(source.ImagenWithPath, source.Imagen);
                    }
                    else
                    {
                        _base.Record.Imagen = string.Empty;
                    }
                }
                else
                {
                    if (preguntas != null)
                    {
                        Pregunta p = preguntas.GetItem(source.OidPregunta);

                        if (p != null && p.Imagen != string.Empty)
                        {
                            if (File.Exists(p.ImagenWithPath))
                            {
                                _base.Record.Imagen = Resize(p.ImagenWithPath, p.Imagen);
                            }
                            else
                            {
                                _base.Record.Imagen = string.Empty;
                            }
                        }
                    }
                }
            }
        }
        public static void CompletaDuplicado(long oid_tema_original, long oid_tema_copia)
        {
            int sesion = nHManager.Instance.OpenSession();

            Tema.DoLOCK(nHManager.Instance.GetSession(sesion));
            string query = INSERT_PREGUNTAS_DUPLICADAS(oid_tema_original, oid_tema_copia);

            nHManager.Instance.SQLNativeExecute(query, nHManager.Instance.GetSession(sesion));

            Tema.DoLOCK(nHManager.Instance.GetSession(sesion));
            query = UPDATE_OBSERVACIONES_DUPLICADAS(oid_tema_original, oid_tema_copia);
            nHManager.Instance.SQLNativeExecute(query, nHManager.Instance.GetSession(sesion));

            CloseSession(sesion);

            Preguntas lista_duplicadas = Preguntas.GetPreguntasDuplicadasTema(oid_tema_copia);
            Preguntas lista_originales = Preguntas.GetPreguntasTema(oid_tema_original, true);

            long serial   = Pregunta.GetNewSerial();
            long serial_r = Respuesta.GetNewSerial(null);

            foreach (Pregunta item in lista_duplicadas)
            {
                Pregunta original = lista_originales.GetItem(item.OidOld);

                item.Serial = serial++;
                item.Codigo = item.Serial.ToString(Resources.Defaults.PREGUNTA_CODE_FORMAT);

                foreach (Respuesta r in original.Respuestas)
                {
                    Respuesta new_r = Respuesta.NewChild(item);
                    new_r        = r.Clone();
                    new_r.Serial = serial_r++;
                    new_r.Codigo = serial_r.ToString(Resources.Defaults.RESPUESTA_CODE_FORMAT);
                    item.Respuestas.Add(new_r);
                }

                if (original.Imagen != string.Empty)
                {
                    string ext = string.Empty;
                    if (!File.Exists(moleQule.Library.Instruction.ModuleController.FOTOS_PREGUNTAS_PATH + original.Imagen))
                    {
                        continue;
                    }

                    Bitmap imagen = new Bitmap(Library.Instruction.ModuleController.FOTOS_PREGUNTAS_PATH + original.Imagen);

                    if (imagen.RawFormat.Guid.Equals(System.Drawing.Imaging.ImageFormat.Jpeg.Guid))
                    {
                        ext = ".jpg";
                    }
                    else
                    {
                        if (imagen.RawFormat.Guid.Equals(System.Drawing.Imaging.ImageFormat.Bmp.Guid))
                        {
                            ext = ".bmp";
                        }
                        else
                        {
                            if (imagen.RawFormat.Guid.Equals(System.Drawing.Imaging.ImageFormat.Png.Guid))
                            {
                                ext = ".png";
                            }
                        }
                    }

                    item.Imagen = item.Oid.ToString("000000") + ext;

                    int maxHeight = imagen.Height > imagen.Width ? imagen.Height : imagen.Width;

                    Images.Save(original.ImagenWithPath, item.ImagenWithPath, maxHeight);

                    imagen.Dispose();
                }
                else
                {
                    item.Imagen = string.Empty;
                }
            }

            lista_duplicadas.Save();
            lista_duplicadas.CloseSession();
        }
        //public System.Byte[] ImagenPregunta { get { return _imagen_pregunta; } }

        /// <summary>
        /// Copia los atributos del objeto
        /// </summary>
        /// <param name="source">Objeto origen</param>
        protected void CopyValues(RespuestaExamenInfo source,
                                  PreguntaExamenInfo pregunta,
                                  Preguntas preguntas,
                                  ExamenInfo examen,
                                  bool imagen)
        {
            if (source == null)
            {
                return;
            }

            Oid = source.Oid;
            _base.Record.OidPregunta = source.OidPregunta;
            _base.Record.Texto       = source.Texto;
            _base.Record.Opcion      = source.Opcion;
            _base.Record.Correcta    = source.Correcta;

            if (pregunta == null)
            {
                return;
            }

            _pregunta      = pregunta.Texto;
            _orden         = pregunta.Orden;
            _imagen        = pregunta.Imagen;
            _imagen_grande = pregunta.ImagenGrande;

            if (imagen)
            {
                if (pregunta.Imagen != string.Empty)
                {
                    if (File.Exists(pregunta.ImagenWithPath))
                    {
                        _imagen = Resize(pregunta.ImagenWithPath, pregunta.Imagen);
                    }
                    else
                    {
                        _imagen = string.Empty;
                    }
                }
                else
                {
                    if (preguntas != null)
                    {
                        Pregunta p = preguntas.GetItem(pregunta.OidPregunta);

                        if (p != null && p.Imagen != string.Empty)
                        {
                            if (File.Exists(p.ImagenWithPath))
                            {
                                _imagen = Resize(p.ImagenWithPath, p.Imagen);
                            }
                            else
                            {
                                _imagen = string.Empty;
                            }
                        }
                    }
                }
            }
        }