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; }
/// <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 })) }); }
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; } }
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; }
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()); }
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))); }
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())); }
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()); }
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; * }*/ }
/// <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) }); }
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; } } }
DalFolder IRepository <DalFolder> .Create(DalFolder entity) => Create(entity.ToOrmFolder()).ToDalFolder();
public void Move(DalFolder movingFolder, DalFolder toFolder) { throw new NotImplementedException(); }