📄 document.cs
字号:
/*
* Copyright (c) 2002 FulcrumWeb. All rights reserved.
*/
using System;
using System.Configuration;
using System.Collections;
using System.Data;
using System.Data.OleDb;
using System.IO;
namespace Bip.Components
{
public class FileStorage
{
public static string OriginalDir
{
get { return ConfigurationSettings.AppSettings["OriginalStorageDir"]; }
}
public static string IndexingServiceDir
{
get { return ConfigurationSettings.AppSettings["IndexingServiceStorageDir"]; }
}
}
public class DocumentEnt : BipEntity
{
// Document Attributes
int m_Id = 0;
DateTime m_CreationTime = DateTime.MinValue;
int m_SavedFileTypeId = -1;
string m_SavedStorageFileName = null;
TempFile m_UploadedFile = null;
public DateTime m_DateReceived= DateTime.MinValue,
m_DocumentDate= DateTime.MinValue;
public string
m_IncomingNumber = null,
m_OutgoingNumber = null,
m_Subject,
m_Header,
m_FileName,
m_ArchiveFileNames;
public int
m_FileTypeId,
m_DocTypeId,
m_DocSourceId,
m_DocCategoryId,
m_ParentId,
m_PreviousVersionId,
m_OwnerUserId;
public bool
m_IsPublic = true,
m_IsRead = false,
m_IsFavorite = false;
public IEnumerable m_Groups = null;
public IEnumerable m_RefDocuments = null;
// Document Attribute Accessors
public int Id
{
get{ return m_Id; }
}
protected string StorageFileName
{
get
{
if(m_FileTypeId == m_SavedFileTypeId)
return m_SavedStorageFileName;
DocFileType ftype = new DocFileType(m_FileTypeId);
string fileExt = ftype.FileExtension;
if(fileExt.Length > 0)
fileExt = "." + fileExt;
return m_Id.ToString() + fileExt;
}
}
public DateTime CreationTime
{
get{ return m_CreationTime; }
}
public DateTime DateReceived
{
get{ return m_DateReceived;}
set{ m_DateReceived = value;}
}
public DateTime DocumentDate
{
get{return m_DocumentDate;}
set{m_DocumentDate = value;}
}
public string IncomingNumber
{
get{return m_IncomingNumber;}
set{m_IncomingNumber = value;}
}
public string OutgoingNumber
{
get{ return m_OutgoingNumber;}
set{ m_OutgoingNumber = value;}
}
public string Subject
{
get{ return m_Subject;}
set{ m_Subject = value;}
}
public string Header
{
get{ return m_Header;}
set{ m_Header = value;}
}
public string FileName
{
get{ return m_FileName;}
set{ m_FileName = value;}
}
public string ArchiveFileNames
{
get{ return m_ArchiveFileNames;}
set{ m_ArchiveFileNames = value;}
}
public int FileTypeId
{
get{ return m_FileTypeId;}
}
public int DocTypeId
{
get{ return m_DocTypeId;}
set{ m_DocTypeId = value;}
}
public int DocSourceId
{
get{ return m_DocSourceId;}
set{ m_DocSourceId = value;}
}
public int DocCategoryId
{
get{ return m_DocCategoryId;}
set{ m_DocCategoryId = value;}
}
public int ParentId
{
get{ return m_ParentId;}
set{ m_ParentId = value;}
}
public int PreviousVersionId
{
get{ return m_PreviousVersionId;}
set{ m_PreviousVersionId = value;}
}
public int OwnerUserId
{
get{ return m_OwnerUserId;}
set{ m_OwnerUserId = value;}
}
public bool IsPublic
{
get{ return m_IsPublic;}
set{ m_IsPublic = value;}
}
public bool IsRead
{
get{ return m_IsRead; }
set{ m_IsRead = value;}
}
public bool IsFavorite
{
get{return m_IsFavorite;}
set{m_IsFavorite = value;}
}
public IEnumerable Groups
{
get
{
if(m_Groups == null)
return new ArrayList();
return m_Groups;
}
set{ m_Groups = value;}
}
public IEnumerable RefDocuments
{
get{return m_RefDocuments;}
set{m_RefDocuments = value;}
}
public bool CanEdit
{
get
{
UserIdentity user = UserIdentity.Current;
if(user.UserRole == UserRoles.Administrator ||
user.UserRole == UserRoles.SystemOperator ||
user.UserRole == UserRoles.Operator && user.UserId == this.OwnerUserId)
return true;
return false;
}
}
// -------------------------------------
public DocumentEnt()
{
}
public int DbCreate(out OleDbTransaction trans)
{
Validate();
System.Data.OleDb.OleDbConnection con = Db.Connection;
trans = con.BeginTransaction();
OleDbCommand cmd = con.CreateCommand();
cmd.Transaction = trans;
try
{
CmdParams cp = new CmdParams(cmd);
m_CreationTime = DateTime.Now;
cmd.CommandText = @"
insert into documents
(
CreationTime,
FileType,
[FileName],
DateReceived,
DocumentDate,
IncomingNumber,
OutgoingNumber,
Subject,
Header,
ArchiveFileNames,
DocTypeId,
DocSourceId,
DocCategoryId,
ParentId,
PreviousVersionId,
OwnerUserId,
IsPublic
)values ( " +
cp.Add(m_CreationTime) +
cp.Add(m_FileTypeId) +
cp.Add(m_FileName) +
cp.Add(m_DateReceived) +
cp.Add(m_DocumentDate) +
cp.Add(m_IncomingNumber) +
cp.Add(m_OutgoingNumber) +
cp.Add(m_Subject) +
cp.Add(m_Header) +
cp.Add(m_ArchiveFileNames) +
cp.Add(m_DocTypeId) +
cp.Add(m_DocSourceId) +
cp.Add(m_DocCategoryId) +
cp.Add(m_ParentId) +
cp.Add(m_PreviousVersionId) +
cp.Add(m_OwnerUserId) +
cp.Add(m_IsPublic) + " ) ";
cmd.ExecuteNonQuery();
cmd.CommandText="select @@identity";
Decimal oid = (Decimal) cmd.ExecuteScalar();
m_Id = Convert.ToInt32(oid);
StoreDocRefs(trans, "DocGroups", "GroupId", Groups);
StoreDocRefs(trans, "DocRefRelated", "RelatedDocId", RefDocuments);
cmd.Parameters.Clear();
cmd.CommandText = "update Documents set StorageFileName = '" + StorageFileName + "' where Id = " + m_Id.ToString();
cmd.ExecuteNonQuery();
//trans.Commit();
//.DEV. isRead
}
catch(Exception ex)
{
trans.Rollback();
trans = null;
throw ex;
}
MarkAsRead();
return m_Id;
}
public void DbUpdate()
{
UserIdentity user = UserIdentity.Current;
Validate();
System.Data.OleDb.OleDbConnection con = Db.Connection;
OleDbTransaction trans = con.BeginTransaction();
OleDbCommand cmd = con.CreateCommand();
cmd.Transaction = trans;
try
{
CmdParams cp = new CmdParams(cmd, false);
m_CreationTime = DateTime.Now;
cmd.CommandText = @"
update documents
set FileType = " + cp.Add(m_FileTypeId) +
", [FileName] = " + cp.Add(m_FileName) +
", DateReceived = " + cp.Add(m_DateReceived) +
", DocumentDate = " + cp.Add(m_DocumentDate) +
", IncomingNumber = " +cp.Add(m_IncomingNumber) +
", OutgoingNumber = " +cp.Add(m_OutgoingNumber) +
", Subject = " +cp.Add(m_Subject) +
", Header = " + cp.Add(m_Header) +
", ArchiveFileNames = " + cp.Add(m_ArchiveFileNames) +
", DocTypeId = " + cp.Add(m_DocTypeId) +
", DocSourceId = " + cp.Add(m_DocSourceId) +
", DocCategoryId = " + cp.Add(m_DocCategoryId) +
", ParentId = " + cp.Add(m_ParentId) +
", PreviousVersionId = " + cp.Add(m_PreviousVersionId) +
", IsPublic = " + cp.Add(m_IsPublic) +
", StorageFileName = '" + StorageFileName + "' " +
" where id = " + m_Id.ToString();
cmd.ExecuteNonQuery();
StoreDocRefs(trans, "DocGroups", "GroupId", Groups);
StoreDocRefs(trans, "DocRefRelated", "RelatedDocId", RefDocuments);
cmd.Parameters.Clear();
cmd.CommandText = "delete from UserReadDocs where DocId=" + m_Id.ToString() + " and UserId=" + user.UserId.ToString();
cmd.ExecuteNonQuery();
cmd.CommandText = "delete from UserFavoriteDocs where DocId=" + m_Id.ToString() + " and UserId=" + user.UserId.ToString();
cmd.ExecuteNonQuery();
if(IsRead)
{
cmd.CommandText = "insert into UserReadDocs (DocId, UserId) values (" + m_Id.ToString() + ", " + user.UserId.ToString() + " ) ";
cmd.ExecuteNonQuery();
}
if(IsFavorite)
{
cmd.CommandText = "insert into UserFavoriteDocs (DocId, UserId) values (" + m_Id.ToString() + ", " + user.UserId.ToString() +" ) ";
cmd.ExecuteNonQuery();
}
trans.Commit();
}
catch(Exception ex)
{
trans.Rollback();
throw ex;
}
}
public void DbDelete()
{
if(m_Id < 1)
throw new BipFatalException("Internal Error");
System.Data.OleDb.OleDbConnection con = Db.Connection;
OleDbTransaction trans = con.BeginTransaction();
OleDbCommand cmd = con.CreateCommand();
cmd.Transaction = trans;
try
{
cmd.CommandText = @"delete from DocGroups where DocId = " + m_Id.ToString();
cmd.ExecuteNonQuery();
cmd.CommandText = @"delete from DocRefRelated where DocId = " + m_Id.ToString();
cmd.ExecuteNonQuery();
cmd.CommandText = @"delete from UserFavoriteDocs where DocId = " + m_Id.ToString();
cmd.ExecuteNonQuery();
cmd.CommandText = @"delete from UserReadDocs where DocId = " + m_Id.ToString();
cmd.ExecuteNonQuery();
cmd.CommandText = @"update documents set ParentId = null where ParentId =" + m_Id.ToString();
cmd.ExecuteNonQuery();
cmd.CommandText = @"update documents set PreviousVersionId = null where PreviousVersionId =" + m_Id.ToString();
cmd.ExecuteNonQuery();
cmd.CommandText = @"delete from Documents where Id = " + m_Id.ToString();
cmd.ExecuteNonQuery();
trans.Commit();
}
catch(Exception ex)
{
trans.Rollback();
throw ex;
}
}
public void StoreDocRefs(OleDbTransaction trans, string tableName, string refFieldName, IEnumerable refs)
{
System.Data.OleDb.OleDbConnection con = Db.Connection;
OleDbCommand cmd = con.CreateCommand();
if(trans != null)
cmd.Transaction = trans;
cmd.CommandText = "delete from " + tableName + " where DocId=" + m_Id.ToString();
cmd.ExecuteNonQuery();
if(refs != null)
{
cmd.CommandText = "insert into " + tableName + " (DocId, " + refFieldName + " ) values ( "+ m_Id.ToString() + ", ?)";
foreach(int ref_id in refs)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -