Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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));
        }