public void Update() { bool modelsAdded = false; lock (HttpContext.Current.Application) { if (true) { // hack RunCmd("up svn") > 1 && (ConfigurationManager.AppSettings["BlockSvn"] == null) DirectoryInfo root = new DirectoryInfo(repoPath); foreach (DirectoryInfo usdir in root.GetDirectories().Where(x => x.Name != ".svn")) { User u = Global.Db.Users.SingleOrDefault(x => x.Login == usdir.Name); if (u != null) { List<string> currentModels = new List<string>(); foreach (DirectoryInfo modeldir in usdir.GetDirectories().Where(x => x.Name != ".svn")) { currentModels.Add(modeldir.Name); Model m = u.Models.SingleOrDefault(x => x.Name == modeldir.Name); if (m != null) { DateTime lastWrite = modeldir.LastWriteTimeUtc; foreach (DateTime tim in modeldir.GetFiles().Select(x => x.LastWriteTimeUtc)) if (tim > lastWrite) lastWrite = tim; if (Math.Abs(lastWrite.Subtract(m.Modified).TotalMinutes) > 3 || m.IsDeleted) { Global.AddEvent(EventType.ModelUpdated, null, null, m.ModelID, null, u.UserID); m.Modified = lastWrite; m.IsDeleted = false; m.UpdateIcon(); UpdateEvents(m.ModelID); Global.Db.SubmitChanges(); } } else { m = new Model {AuthorUserID = u.UserID, Name = modeldir.Name, Modified = modeldir.LastWriteTimeUtc}; modelsAdded = true; Global.Db.Models.InsertOnSubmit(m); Global.Db.SubmitChanges(); Global.AddEvent(EventType.ModelAdded, null, null, m.ModelID, null, u.UserID); Global.Db.SubmitChanges(); m.UpdateIcon(); UpdateEvents(m.ModelID); Global.Db.SubmitChanges(); } } foreach (Model m in u.Models.Where(x => !x.IsDeleted && !currentModels.Contains(x.Name))) { m.IsDeleted = true; Global.AddEvent(EventType.ModelDeleted, null, null, m.ModelID, null, u.UserID); } Global.Db.SubmitChanges(); } } } if (modelsAdded) new ForumController().MakeModelPosts(); } }
public void Update() { bool modelsAdded = false; lock (HttpContext.Current.Application) { if (true) { // hack RunCmd("up svn") > 1 && (ConfigurationManager.AppSettings["BlockSvn"] == null) DirectoryInfo root = new DirectoryInfo(repoPath); foreach (DirectoryInfo usdir in root.GetDirectories().Where(x => x.Name != ".svn")) { User u = Global.Db.Users.SingleOrDefault(x => x.Login == usdir.Name); if (u != null) { List <string> currentModels = new List <string>(); foreach (DirectoryInfo modeldir in usdir.GetDirectories().Where(x => x.Name != ".svn")) { currentModels.Add(modeldir.Name); Model m = u.Models.SingleOrDefault(x => x.Name == modeldir.Name); if (m != null) { DateTime lastWrite = modeldir.LastWriteTimeUtc; foreach (DateTime tim in modeldir.GetFiles().Select(x => x.LastWriteTimeUtc)) { if (tim > lastWrite) { lastWrite = tim; } } if (Math.Abs(lastWrite.Subtract(m.Modified).TotalMinutes) > 3 || m.IsDeleted) { Global.AddEvent(EventType.ModelUpdated, null, null, m.ModelID, null, u.UserID); m.Modified = lastWrite; m.IsDeleted = false; m.UpdateIcon(); UpdateEvents(m.ModelID); Global.Db.SubmitChanges(); } } else { m = new Model { AuthorUserID = u.UserID, Name = modeldir.Name, Modified = modeldir.LastWriteTimeUtc }; modelsAdded = true; Global.Db.Models.InsertOnSubmit(m); Global.Db.SubmitChanges(); Global.AddEvent(EventType.ModelAdded, null, null, m.ModelID, null, u.UserID); Global.Db.SubmitChanges(); m.UpdateIcon(); UpdateEvents(m.ModelID); Global.Db.SubmitChanges(); } } foreach (Model m in u.Models.Where(x => !x.IsDeleted && !currentModels.Contains(x.Name))) { m.IsDeleted = true; Global.AddEvent(EventType.ModelDeleted, null, null, m.ModelID, null, u.UserID); } Global.Db.SubmitChanges(); } } } if (modelsAdded) { new ForumController().MakeModelPosts(); } } }