protected UserFolderTreeItem ToUserFolderTreeItem(object[] r) { var folder = new UserFolderTreeItem { FolderId = Convert.ToUInt32(r[0]), ParentId = Convert.ToUInt32(r[1]), Level = Convert.ToUInt32(r[2]) }; return(folder); }
public int Save(UserFolderTreeItem item) { var query = new SqlInsert(UserFolderTreeTable.TABLE_NAME, true) .InColumnValue(UserFolderTreeTable.Columns.FolderId, item.FolderId) .InColumnValue(UserFolderTreeTable.Columns.ParentId, item.ParentId) .InColumnValue(UserFolderTreeTable.Columns.Level, item.Level); var result = Db.ExecuteNonQuery(query); return(result); }
public MailUserFolderData Create(string name, uint parentId = 0) { if (string.IsNullOrEmpty(name)) { throw new EmptyFolderException(@"Name is empty"); } var utsNow = DateTime.UtcNow; var newUserFolder = new UserFolder { Id = 0, ParentId = parentId, Name = name, User = User, Tenant = Tenant, TimeModified = utsNow }; using (var daoFactory = new DaoFactory()) { var userFolderDao = daoFactory.CreateUserFolderDao(Tenant, User); var userFolderTreeDao = daoFactory.CreateUserFolderTreeDao(Tenant, User); if (parentId > 0) { var parentUserFolder = userFolderDao.Get(parentId); if (parentUserFolder == null) { throw new ArgumentException(@"Parent folder not found", "parentId"); } } if (IsFolderNameAlreadyExists(userFolderDao, newUserFolder)) { throw new AlreadyExistsFolderException( string.Format("Folder with name \"{0}\" already exists", newUserFolder.Name)); } using (var tx = daoFactory.DbManager.BeginTransaction(IsolationLevel.ReadUncommitted)) { newUserFolder.Id = userFolderDao.Save(newUserFolder); if (newUserFolder.Id <= 0) { throw new Exception("Save user folder failed"); } var userFolderTreeItem = new UserFolderTreeItem { FolderId = newUserFolder.Id, ParentId = newUserFolder.Id, Level = 0 }; //itself link userFolderTreeDao.Save(userFolderTreeItem); //full path to root userFolderTreeDao.InsertFullPathToRoot(newUserFolder.Id, newUserFolder.ParentId); tx.Commit(); } userFolderDao.RecalculateFoldersCount(newUserFolder.Id); } return(ToMailUserFolderData(newUserFolder)); }