예제 #1
0
        private bool liberar(Documento objDocumento, Model.ControlDocumentos.Version objVersion)
        {
            Console.WriteLine("Deja empiezo a liberar el documento...");
            System.Threading.Thread.Sleep(3000);
            Console.WriteLine("Que tiempos aquellos cuando tenias que registrar uno por uno las liberaciones!!!");
            System.Threading.Thread.Sleep(5000);
            Console.WriteLine("Como ha cambiado el tiempo verdad?, tan fácil que es ahora.");
            System.Threading.Thread.Sleep(4000);

            //Ejecutamos el método para obtener el id de la versión anterior
            int last_version = DataManagerControlDocumentos.GetID_LastVersion(objDocumento.id_documento, objVersion.id_version);

            //si el documento sólo tiene una versión, se modifica el estatus del documento y la versión, se cambia el estatus a liberado.
            if (last_version == 0)
            {
                //Estatus de documento liberado
                objDocumento.id_estatus = 5;

                //Ejecutamos el método para actualizar el estatus del documento.
                int update_documento = DataManagerControlDocumentos.Update_EstatusDocumento(objDocumento);

                if (update_documento != 0)
                {
                    objVersion.id_estatus_version = 1;

                    //Ejecutamos el método para guardar la versión. El resultado lo guardamos en una variable local.
                    int update_version = DataManagerControlDocumentos.UpdateVersion(objVersion, User, objDocumento.nombre);

                    if (update_version != 0)
                    {
                        string file = SaveFile(objDocumento.id_tipo_documento, objDocumento.nombre, objVersion.no_version, objVersion.id_version);

                        if (file == null)
                        {
                            // Llamamos el método para eliminar los registros de la tabla TR_USUARIO_NOTIFICACION_VERSION por ID_VERSION, una vez que el documento sea liberado
                            DataManagerControlDocumentos.EliminarRegistroVersion(objVersion.id_version);
                        }
                        else
                        {
                            Console.WriteLine("Error al copiar el documento al servidor\nidVersion: " + objVersion.id_version);
                            return(false);
                        }
                    }
                    else
                    {
                        Console.WriteLine("Error al actualizar version\nidVersion : " + objVersion.id_version);
                        objDocumento.id_estatus = 2;
                        update_documento        = DataManagerControlDocumentos.Update_EstatusDocumento(objDocumento);
                        return(false);
                    }
                }
                else
                {
                    Console.WriteLine("Error al actualizar el estátus del documento\nidDocumento : " + objDocumento.id_documento);
                    objDocumento.id_estatus = 2;
                    return(false);
                }
            }
            else
            {
                //si el documento tiene más de un versión, sólo se modifica el estatus de la versión a liberado
                //la versión anterior se modifica el estatus a obsoleto.
                int fecha_actualizacion = DataManagerControlDocumentos.UpdateFecha_actualizacion(objDocumento.id_documento);

                objVersion.id_estatus_version = 1;
                objVersion.no_copias          = 0;


                //Ejecutamos el método para modificar el estatus de la versión. El resultado lo guardamos en una variable local.
                int update_version = DataManagerControlDocumentos.UpdateVersion(objVersion, User, objDocumento.nombre);

                if (update_version != 0)
                {
                    //obetemos el id de la versión anterior
                    int last_id = DataManagerControlDocumentos.GetID_LastVersion(objDocumento.id_documento, objVersion.id_version);

                    //Creamos un objeto para la versión anterior
                    Model.ControlDocumentos.Version lastVersion = new Model.ControlDocumentos.Version();

                    //asigamos el id y el estatus obsoleto
                    lastVersion.id_version         = last_id;
                    lastVersion.id_estatus_version = 2;

                    //Se obtienen el número de versión de la version anterior
                    lastVersion.no_version = DataManagerControlDocumentos.GetNum_Version(last_id);

                    //Ejecutamos el método para actualizar el estatus de la versión(liberamos el documento).
                    int update = DataManagerControlDocumentos.Update_EstatusVersion(lastVersion, User, objDocumento.nombre);

                    //si se actualizó correctamente
                    if (update != 0)
                    {
                        string file = SaveFile(objDocumento.id_tipo_documento, objDocumento.nombre, objVersion.no_version, objVersion.id_version);


                        //Si los registros fueron guardados exitosamente el archivo que queda como obsoleto se pasa a la carpeta de respaldo y se elimina de la base de datos
                        _LiberarEspacioBD(last_id);

                        // Llamamos el método para eliminar los registros de la tabla TR_USUARIO_NOTIFICACION_VERSION por ID_VERSION, una vez que el documento sea liberado
                        DataManagerControlDocumentos.EliminarRegistroVersion(objVersion.id_version);
                    }
                    else
                    {
                        Console.WriteLine("Error al copiar el documento al servidor\nidVersion:" + objVersion.id_version);
                        return(false);
                    }
                }
                else
                {
                    Console.WriteLine("Error al actualizar version\nidVersion : " + objVersion.id_version);
                    return(false);
                }
            }

            Console.WriteLine("Listo, el documento ya esta liberado");
            System.Threading.Thread.Sleep(3000);
            Console.WriteLine("Vamos al último paso");
            System.Threading.Thread.Sleep(3000);
            return(true);
        }