Exemplo n.º 1
0
        public void InsertFiles(DalFolder fldr, params DalFile[] fls)
        {
            if (ReferenceEquals(fldr, null))
            {
                var error = new ArgumentNullException(nameof(fldr), "folder can't be null");
                logger.Error(error, error.Message);
                throw error;
            }

            if (fls.Length == 0)
            {
                var error = new ArgumentOutOfRangeException(nameof(fls), "invalid files count");
                logger.Error(error, error.Message);
                throw error;
            }

            var enumerable = fls.Select(item => item.ToOrmFile());
            var folder     = fldr.ToOrmFolder();

            var files = enumerable as Files[] ?? enumerable.ToArray();

            foreach (Files file in files)
            {
                folder.Files.Add(file);

                file.folderId = folder.id;
                file.Folder   = folder;

                context.Entry(file).State = EntityState.Modified;
            }

            folder.dateTime = files[files.Length - 1].dateTime;

            context.Entry(folder).State = EntityState.Modified;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Convert Dal Folder entity to Orm entity
        /// </summary>
        /// <param name="folder">dal entity</param>
        /// <returns>orm entity</returns>
        public static Folders ToOrmFolder(this DalFolder folder)
        {
            if (ReferenceEquals(folder, null))
            {
                return(null);
            }

            return(new Folders
            {
                id = folder.ID,
                leftKey = folder.LeftKey,
                rightKey = folder.RightKey,
                level = folder.Level,
                dateTime = folder.DateTime,
                name = folder.Title,
                ownerId = folder.OwnerID,
                User = new Users {
                    id = folder.OwnerID
                },
                Files = new HashSet <Files>(folder.Files.Select(item => item.ToOrmFile())),
                UsersShared = new HashSet <Users>(folder.SharedToUsers.Select(item => new Users {
                    id = item
                }))
            });
        }
Exemplo n.º 3
0
        public void RemoveAccessToFolder(DalFolder fldr, params DalUser[] usrs)
        {
            if (ReferenceEquals(fldr, null))
            {
                var error = new ArgumentNullException(nameof(fldr), "folder can't be null");
                logger.Error(error, error.Message);
                throw error;
            }

            if (usrs.Length == 0)
            {
                var error = new ArgumentOutOfRangeException(nameof(usrs), "invalid usrs count");
                logger.Error(error, error.Message);
                throw error;
            }

            var folder = context.Set <Folders>().Find(fldr.ID);

            foreach (Users usr in usrs.Select(item => item.ToOrmUser()))
            {
                var user = context.Set <Users>().Find(usr.id);

                user.FoldersShared.Remove(folder);

                context.Entry(user).State = EntityState.Modified;
            }
        }
Exemplo n.º 4
0
        public void Update(DalFolder entity)
        {
            if (ReferenceEquals(entity, null))
            {
                var error = new ArgumentNullException(nameof(entity), "parametr can't be null");
                logger.Error(error, error.Message);
                throw error;
            }

            var e = entity.ToOrmFolder();

            if (e.ownerId.Equals(0))
            {
                var error = new ArgumentException("incorrect Folder object");
                logger.Error(error, error.Message);
                throw error;
            }

            var folder = context.Set <Folders>().Find(e.id);

            folder.User     = e.User;
            folder.ownerId  = e.ownerId;
            folder.dateTime = e.dateTime;
            folder.leftKey  = e.leftKey;
            folder.rightKey = e.rightKey;
            folder.level    = e.level;
            folder.name     = e.name;

            folder.Files       = e.Files;
            folder.UsersShared = e.UsersShared;

            context.Entry(folder).State = EntityState.Modified;
        }
Exemplo n.º 5
0
        public DalFolder Add(DalFolder prnt, string newFolderName)
        {
            if (ReferenceEquals(prnt, null))
            {
                var error = new ArgumentNullException(nameof(prnt), "folder can't be null");
                logger.Error(error, error.Message);
                throw error;
            }

            if (string.IsNullOrEmpty(newFolderName))
            {
                var error = new ArgumentNullException(nameof(newFolderName), "new folder name can't be null or empty");
                logger.Error(error, error.Message);
                throw error;
            }

            var parent = prnt.ToOrmFolder();

            int leftKey  = parent.rightKey;
            int rightKey = parent.rightKey + 1;

            foreach (Folders item in context.Set <Folders>().Where(a => (a.leftKey > parent.rightKey) &&
                                                                   (a.ownerId == parent.ownerId)))
            {
                item.leftKey  = item.leftKey + 2;
                item.rightKey = item.rightKey + 2;

                context.Entry(item).State = EntityState.Modified;
            }

            foreach (Folders item in context.Set <Folders>().Where(a => (a.rightKey >= parent.rightKey) &&
                                                                   (a.leftKey < parent.rightKey) &&
                                                                   (a.ownerId == parent.ownerId)))
            {
                item.rightKey = item.rightKey + 2;

                context.Entry(item).State = EntityState.Modified;
            }

            var folder = new Folders
            {
                ownerId     = parent.ownerId,
                name        = newFolderName,
                dateTime    = DateTime.Now,
                level       = parent.level + 1,
                leftKey     = leftKey,
                rightKey    = rightKey,
                Files       = new HashSet <Files>(),
                User        = null,
                UsersShared = new HashSet <Users>()
            };

            Create(folder);

            return(folder.ToDalFolder());
        }
Exemplo n.º 6
0
        public IEnumerable <DalFolder> GetNeighboringNodes(DalFolder fldr)
        {
            if (ReferenceEquals(fldr, null))
            {
                var error = new ArgumentNullException(nameof(fldr), "folder can't be null");
                logger.Error(error, error.Message);
                throw error;
            }

            return(GetNextLevelChildNodes(GetPreviousLevelParentNode(fldr)));
        }
Exemplo n.º 7
0
        public IEnumerable <DalFolder> GetChildNodes(DalFolder fldr)
        {
            if (ReferenceEquals(fldr, null))
            {
                var error = new ArgumentNullException(nameof(fldr), "folder can't be null");
                logger.Error(error, error.Message);
                throw error;
            }

            var folder = fldr.ToOrmFolder();

            return(context.Set <Folders>().Where(a => (a.leftKey >= folder.leftKey) &&
                                                 (a.rightKey <= folder.rightKey) &&
                                                 (a.ownerId == folder.ownerId)).AsEnumerable().Select(item => item.ToDalFolder()));
        }
Exemplo n.º 8
0
        public DalFolder GetPreviousLevelParentNode(DalFolder fldr)
        {
            if (ReferenceEquals(fldr, null))
            {
                var error = new ArgumentNullException(nameof(fldr), "folder can't be null");
                logger.Error(error, error.Message);
                throw error;
            }

            var folder = fldr.ToOrmFolder();

            return(context.Set <Folders>().FirstOrDefault(a => (a.leftKey <= folder.leftKey) &&
                                                          (a.rightKey >= folder.rightKey) &&
                                                          (a.level == folder.level - 1) &&
                                                          (a.ownerId == folder.ownerId)).ToDalFolder());
        }
Exemplo n.º 9
0
        public void Delete(DalFolder entity)
        {
            if (ReferenceEquals(entity, null))
            {
                var error = new ArgumentNullException(nameof(entity), "parametr can't be null");
                logger.Error(error, error.Message);
                throw error;
            }

            var e = entity.ToOrmFolder();

            var possibleFolder = context.Set <Folders>().Single(folder => folder.id == e.id);

            if (ReferenceEquals(possibleFolder, null))
            {
                throw new ArgumentNullException(nameof(possibleFolder), "didn't find equally Folder In database");
            }

            long id = GetParentsNodes(possibleFolder).First().id;

            context.Set <Folders>().RemoveRange(context.Set <Folders>().Where(a => (a.leftKey >= possibleFolder.leftKey) &&
                                                                              (a.rightKey <= possibleFolder.rightKey) &&
                                                                              (a.ownerId == possibleFolder.ownerId)).AsEnumerable());

            int range = possibleFolder.rightKey - possibleFolder.leftKey + 1;

            foreach (Folders item in context.Set <Folders>().Where(a => (a.rightKey > possibleFolder.rightKey) &&
                                                                   (a.ownerId == possibleFolder.ownerId)))
            {
                if (item.leftKey > possibleFolder.leftKey)
                {
                    item.leftKey = item.leftKey - range;
                }

                item.rightKey = item.rightKey - range;

                context.Entry(item).State = EntityState.Modified;
            }

            /*foreach (Folders item in context.Set<Folders>().Where(a => a.ownerId == possibleFolder.ownerId))
             * {
             *  item.id = id;
             *  id++;
             *
             *  context.Entry(item).State = EntityState.Modified;
             * }*/
        }
Exemplo n.º 10
0
        /// <summary>
        /// Convert Dal Folder entity to Bll entity
        /// </summary>
        /// <param name="folder">dal entity</param>
        /// <returns>bll entity</returns>
        public static DtoFolder ToDtoFolder(this DalFolder folder)
        {
            if (ReferenceEquals(folder, null))
            {
                return(null);
            }

            return(new DtoFolder
            {
                ID = folder.ID,
                LeftKey = folder.LeftKey,
                RightKey = folder.RightKey,
                Level = folder.Level,
                DateTime = folder.DateTime,
                Title = folder.Title,
                OwnerID = folder.OwnerID,
                Files = new HashSet <DtoFile>(folder.Files.Select(item => item.ToDtoFile())),
                SharedToUsers = new HashSet <long>(folder.SharedToUsers)
            });
        }
Exemplo n.º 11
0
        public void ShareFolderTo(DalFolder fldr, params DalUser[] usrs)
        {
            if (ReferenceEquals(fldr, null))
            {
                var error = new ArgumentNullException(nameof(fldr), "folder can't be null");
                logger.Error(error, error.Message);
                throw error;
            }

            if (usrs.Length == 0)
            {
                var error = new ArgumentOutOfRangeException(nameof(usrs), "invalid usrs count");
                logger.Error(error, error.Message);
                throw error;
            }

            var folder = context.Set <Folders>().Find(fldr.ID);

            foreach (Users usr in usrs.Select(item => item.ToOrmUser()))
            {
                if (!usr.FoldersShared.Contains(folder, new FolderEqualityComparer()) || !usr.FoldersShared.Where(fld =>
                                                                                                                  GetChildNodes(fld.ToDalFolder()).Select(item => item.ToOrmFolder())
                                                                                                                  .Contains(folder, new FolderEqualityComparer()))
                    .Any())
                {
                    var user = context.Set <Users>().Find(usr.id);

                    foreach (var fld in GetChildNodes(fldr).Select(item => item.ToOrmFolder()).Intersect(usr.FoldersShared, new FolderEqualityComparer()))
                    {
                        user.FoldersShared.Remove(context.Set <Folders>().Find(fld.id));
                    }

                    user.FoldersShared.Add(folder);

                    context.Entry(user).State = EntityState.Modified;
                }
            }
        }
Exemplo n.º 12
0
 DalFolder IRepository <DalFolder> .Create(DalFolder entity)
 => Create(entity.ToOrmFolder()).ToDalFolder();
Exemplo n.º 13
0
 public void Move(DalFolder movingFolder, DalFolder toFolder)
 {
     throw new NotImplementedException();
 }