public void SetShare(FileShareRecord r) { using (var securityDao = TryGetSecurityDao()) { securityDao.SetShare(r); } }
public void SetShare(FileShareRecord r) { using (var DbManager = GetDbManager()) { if (r.Share == FileShare.None) { using (var tx = DbManager.BeginTransaction()) { var files = new List <object>(); if (r.EntryType == FileEntryType.Folder) { var folders = DbManager.ExecuteList(new SqlQuery("files_folder_tree").Select("folder_id").Where("parent_id", r.EntryId)) .ConvertAll(o => (int)o[0]); files.AddRange(DbManager.ExecuteList(Query("files_file").Select("id").Where(Exp.In("folder_id", folders))). ConvertAll(o => o[0])); var d1 = new SqlDelete("files_security") .Where("tenant_id", r.Tenant) .Where(Exp.In("entry_id", folders)) .Where("entry_type", (int)FileEntryType.Folder) .Where("subject", r.Subject.ToString()); DbManager.ExecuteNonQuery(d1); } else { files.Add(r.EntryId); } if (0 < files.Count) { var d2 = new SqlDelete("files_security") .Where("tenant_id", r.Tenant) .Where(Exp.In("entry_id", files)) .Where("entry_type", (int)FileEntryType.File) .Where("subject", r.Subject.ToString()); DbManager.ExecuteNonQuery(d2); } tx.Commit(); } } else { var i = new SqlInsert("files_security", true) .InColumnValue("tenant_id", r.Tenant) .InColumnValue("entry_id", r.EntryId) .InColumnValue("entry_type", (int)r.EntryType) .InColumnValue("subject", r.Subject.ToString()) .InColumnValue("owner", r.Owner.ToString()) .InColumnValue("security", (int)r.Share) .InColumnValue("timestamp", DateTime.UtcNow); DbManager.ExecuteNonQuery(i); } } }
private FileShareRecord ToFileShareRecord(object[] r) { var result = new FileShareRecord { Tenant = Convert.ToInt32(r[0]), EntryId = MappingID(r[1]), EntryType = (FileEntryType)Convert.ToInt32(r[2]), Subject = new Guid((string)r[3]), Owner = new Guid((string)r[4]), Share = (FileShare)Convert.ToInt32(r[5]), Level = 6 < r.Length ? Convert.ToInt32(r[6]) : 0, }; return(result); }
public void SetShare(FileShareRecord r) { using (var db = GetDb()) using (var tx = db.BeginTransaction()) { if (r.Share == FileShare.None) { if (r.EntryType == FileEntryType.Folder) { var entryIDs = db.ExecuteList(Query("files_thirdparty_id_mapping") .Select("hash_id") .Where(Exp.Like("id", r.EntryId.ToString(), SqlLike.StartWith))) .ConvertAll(x => x[0]); db.ExecuteNonQuery(Delete("files_security") .Where(Exp.In("entry_id", entryIDs) & Exp.Eq("subject", r.Subject.ToString()))); } else { var d2 = Delete("files_security") .Where(Exp.Eq("entry_id", MappingID(r.EntryId, true))) .Where("entry_type", (int)FileEntryType.File) .Where("subject", r.Subject.ToString()); db.ExecuteNonQuery(d2); } } else { var i = new SqlInsert("files_security", true) .InColumnValue("tenant_id", r.Tenant) .InColumnValue("entry_id", MappingID(r.EntryId, true)) .InColumnValue("entry_type", (int)r.EntryType) .InColumnValue("subject", r.Subject.ToString()) .InColumnValue("owner", r.Owner.ToString()) .InColumnValue("security", (int)r.Share) .InColumnValue("timestamp", DateTime.UtcNow); db.ExecuteNonQuery(i); } tx.Commit(); } }
private FileShareRecord ToFileShareRecord(object[] r) { var result = new FileShareRecord { Tenant = Convert.ToInt32(r[0]), EntryId = r[1], EntryType = (FileEntryType)Convert.ToInt32(r[2]), Subject = new Guid((string)r[3]), Owner = new Guid((string)r[4]), Share = (FileShare)Convert.ToInt32(r[5]), Level = 6 < r.Length ? Convert.ToInt32(r[6]) : 0, }; int pureID; if (int.TryParse(r[1].ToString(), out pureID)) { result.EntryId = pureID; } return(result); }
public void SetShare(FileShareRecord r) { }
public void SetShare(FileShareRecord r) { if (r.Share == FileShare.None) { var entryId = (MappingID(r.EntryId) ?? "").ToString(); if (string.IsNullOrEmpty(entryId)) { return; } using (var tx = dbManager.BeginTransaction()) { var files = new List <string>(); if (r.EntryType == FileEntryType.Folder) { var folders = new List <string>(); int intEntryId; if (int.TryParse(entryId, out intEntryId)) { var foldersInt = dbManager.ExecuteList(new SqlQuery("files_folder_tree").Select("folder_id").Where("parent_id", entryId)) .ConvertAll(o => o[0]); folders.AddRange(foldersInt.Select(folderInt => folderInt.ToString())); files.AddRange(dbManager.ExecuteList(Query("files_file").Select("id").Where(Exp.In("folder_id", foldersInt))). ConvertAll(o => o[0].ToString())); } else { folders.Add(entryId); } var d1 = new SqlDelete("files_security") .Where("tenant_id", r.Tenant) .Where(Exp.In("entry_id", folders)) .Where("entry_type", (int)FileEntryType.Folder) .Where("subject", r.Subject.ToString()); dbManager.ExecuteNonQuery(d1); } else { files.Add(entryId); } if (0 < files.Count) { var d2 = new SqlDelete("files_security") .Where("tenant_id", r.Tenant) .Where(Exp.In("entry_id", files)) .Where("entry_type", (int)FileEntryType.File) .Where("subject", r.Subject.ToString()); dbManager.ExecuteNonQuery(d2); } tx.Commit(); } } else { var i = new SqlInsert("files_security", true) .InColumnValue("tenant_id", r.Tenant) .InColumnValue("entry_id", MappingID(r.EntryId, true).ToString()) .InColumnValue("entry_type", (int)r.EntryType) .InColumnValue("subject", r.Subject.ToString()) .InColumnValue("owner", r.Owner.ToString()) .InColumnValue("security", (int)r.Share) .InColumnValue("timestamp", DateTime.UtcNow); dbManager.ExecuteNonQuery(i); } }
public void SetShare(FileShareRecord r) { if (r.Share == FileShare.None) { var entryId = (MappingID(r.EntryId) ?? "").ToString(); if (string.IsNullOrEmpty(entryId)) { return; } using (var tx = FilesDbContext.Database.BeginTransaction()) { var files = new List <string>(); if (r.EntryType == FileEntryType.Folder) { var folders = new List <string>(); if (int.TryParse(entryId, out var intEntryId)) { var foldersInt = FilesDbContext.Tree .Where(r => r.ParentId.ToString() == entryId) .Select(r => r.FolderId) .ToList(); folders.AddRange(foldersInt.Select(folderInt => folderInt.ToString())); files.AddRange(Query(FilesDbContext.Files).Where(r => foldersInt.Any(a => a == r.FolderId)).Select(r => r.Id.ToString())); } else { folders.Add(entryId); } var toDelete = FilesDbContext.Security .Where(a => a.TenantId == r.Tenant) .Where(a => folders.Any(b => b == a.EntryId)) .Where(a => a.EntryType == FileEntryType.Folder) .Where(a => a.Subject == r.Subject); FilesDbContext.Security.RemoveRange(toDelete); FilesDbContext.SaveChanges(); } else { files.Add(entryId); } if (0 < files.Count) { var toDelete = FilesDbContext.Security .Where(a => a.TenantId == r.Tenant) .Where(a => files.Any(b => b == a.EntryId)) .Where(a => a.EntryType == FileEntryType.File) .Where(a => a.Subject == r.Subject); FilesDbContext.Security.RemoveRange(toDelete); FilesDbContext.SaveChanges(); } tx.Commit(); } } else { var toInsert = new DbFilesSecurity { TenantId = r.Tenant, EntryId = MappingID(r.EntryId, true).ToString(), EntryType = r.EntryType, Subject = r.Subject, Owner = r.Owner, Security = r.Share, TimeStamp = DateTime.UtcNow }; FilesDbContext.AddOrUpdate(r => r.Security, toInsert); FilesDbContext.SaveChanges(); } }
public void SetShare(FileShareRecord r) { var selector = GetSelector(r.EntryId); selector.GetSecurityDao(r.EntryId).SetShare(r); }
public void SetShare(FileShareRecord r) { SecurityDao.SetShare(r); }
public void SetShare(FileShareRecord r) { TryGetSecurityDao().SetShare(r); }