ATMLManagerLibrary.managers.DocumentManager.SaveDocument C# (CSharp) Method

SaveDocument() public static method

public static SaveDocument ( Document doc ) : void
doc Document
return void
        public static void SaveDocument( Document doc )
        {
            bool hasLocalTransaction = false;
            //------------------------------------------------------------//
            //--- Only save to the database if the content is not null ---//
            //------------------------------------------------------------//
            BASEBean.eDataState stateId;
            if (doc.DocumentContent != null)
            {
                if (String.IsNullOrEmpty( doc.uuid ))
                    doc.uuid = Guid.NewGuid().ToString();

                //-------------------------------------------------//
                //--- We will save to the database at this time ---//
                //-------------------------------------------------//
                DocumentDAO documentDAO = DataManager.getDocumentDAO();
                try
                {
                    if (!documentDAO.IsInTransaction)
                    {
                        documentDAO.StartTransaction();
                        hasLocalTransaction = true;
                    }
                    var document = new dbDocument();
                    bool hasDocumentByUuid = documentDAO.hasDocument( doc.uuid );
                    bool hasDocumentByName = documentDAO.hasDocument( doc.name, (int) doc.DocumentType );
                    if (hasDocumentByName != hasDocumentByUuid)
                    {
                        string msg =
                            "There is an inconsistancy with the document uuid and the internal uuid for the device, please correct.";
                        MessageBox.Show( msg, @"E R R O R" );
                        throw new Exception( msg );
                    }

                    if (hasDocumentByUuid)
                    {
                        document = documentDAO.openDatabaseDocument( doc.uuid );
                        stateId = document.DataState = ( doc.DataState == BASEBean.eDataState.DS_DELETE
                                                             ? BASEBean.eDataState.DS_DELETE
                                                             : BASEBean.eDataState.DS_EDIT );
                        document.dateUpdated = DateTime.UtcNow;
                    }
                    else
                    {
                        stateId = document.DataState = BASEBean.eDataState.DS_ADD;
                        document.dateAdded = DateTime.UtcNow;
                    }

                    int assetsDeleted = 0;
                    if (stateId == BASEBean.eDataState.DS_DELETE)
                    {
                        if (documentDAO.HasAssets( doc.uuid ))
                        {
                            assetsDeleted = documentDAO.DeleteAssets( doc.uuid );
                        }
                    }
                    document.UUID = Guid.Parse( doc.uuid );
                    document.documentDescription = doc.Description;
                    document.documentTypeId = (int) doc.DocumentType;
                    document.documentContent = doc.DocumentContent;
                    document.documentName = doc.name;
                    document.documentSize = doc.DocumentContent.Length;
                    document.contentType = doc.ContentType;
                    document.crc = doc.Crc32;
                    document.save();
                    if (hasLocalTransaction )
                        documentDAO.CommitTransaction();
                    LogManager.Trace( "Document {0} has been {1}",
                                      document.documentName,
                                      stateId == BASEBean.eDataState.DS_ADD
                                          ? "Added"
                                          : stateId == BASEBean.eDataState.DS_DELETE
                                                ? "Deleted"
                                                : "Saved" );
                    if (assetsDeleted > 0)
                        LogManager.Trace( "Deleted {0} associated assets.", assetsDeleted );

                    if (document.DataState == BASEBean.eDataState.DS_ADD)
                        document.DataState = BASEBean.eDataState.DS_EDIT;
                }
                catch (Exception e)
                {
                    if (hasLocalTransaction)
                    {
                        documentDAO.RollbackTransaction();
                        LogManager.Error(e);
                    }
                    else
                    {
                        throw;
                    }
                }
            }
        }

Same methods

DocumentManager::SaveDocument ( DocumentReference docRef ) : void