public ActionResult Find(string fromDate, string toDate) { var fdt = fromDate.ToDate(); DateTime tdt = toDate.ToDate() ?? DateTime.Now; string host = CurrentDatabase.Host; var runningtotals = new DuplicatesRun { Started = DateTime.Now, Count = 0, Processed = 0, Found = 0 }; CurrentDatabase.DuplicatesRuns.InsertOnSubmit(runningtotals); CurrentDatabase.SubmitChanges(); HostingEnvironment.QueueBackgroundWorkItem(ct => { var db = CMSDataContext.Create(host); var rt = db.DuplicatesRuns.OrderByDescending(mm => mm.Id).First(); var list = new List <string>(); db.ExecuteCommand("delete duplicate"); var q = from p in db.People where p.CreatedDate > fdt where p.CreatedDate < tdt.AddDays(1) select p.PeopleId; rt.Count = q.Count(); db.SubmitChanges(); foreach (var p in q) { var pids = db.FindPerson4(p); rt.Processed++; db.SubmitChanges(); if (!pids.Any()) { continue; } foreach (var pid in pids) { if (pid.PeopleId != null) { var dupe = pid.PeopleId.Value; var key = $"{Math.Min(p, dupe)},{Math.Max(p, dupe)}"; if (!list.Contains(key)) { db.InsertDuplicate(p, dupe); list.Add(key); } rt.Found = list.Count; } } } rt.Completed = DateTime.Now; db.SubmitChanges(); }); return(Redirect("/Duplicates/Progress")); }
public ActionResult Find(string fromDate, string toDate) { var fdt = fromDate.ToDate(); var tdt = toDate.ToDate(); string host = Util.Host; var runningtotals = new DuplicatesRun { Started = DateTime.Now, Count = 0, Processed = 0, Found = 0 }; DbUtil.Db.DuplicatesRuns.InsertOnSubmit(runningtotals); DbUtil.Db.SubmitChanges(); HostingEnvironment.QueueBackgroundWorkItem(ct => { var db = DbUtil.Create(host); var rt = db.DuplicatesRuns.OrderByDescending(mm => mm.Id).First(); db.ExecuteCommand("delete duplicate"); var q = from p in db.People where p.CreatedDate > fdt where p.CreatedDate < tdt.Value.AddDays(1) select p.PeopleId; rt.Count = q.Count(); db.SubmitChanges(); foreach (var p in q) { var pids = db.FindPerson4(p); rt.Processed++; db.SubmitChanges(); if (!pids.Any()) { continue; } foreach (var pid in pids) { if (pid.PeopleId != null) { db.InsertDuplicate(p, pid.PeopleId.Value); } } rt.Found++; } rt.Completed = DateTime.Now; db.SubmitChanges(); }); return(Redirect("/Duplicates/Progress")); }
public ActionResult Find(string FromDate, string ToDate) { var fdt = FromDate.ToDate(); var tdt = ToDate.ToDate(); string host = Util.Host; var runningtotals = new DuplicatesRun { Started = DateTime.Now, Count = 0, Processed = 0, Found = 0 }; DbUtil.Db.DuplicatesRuns.InsertOnSubmit(runningtotals); DbUtil.Db.SubmitChanges(); Alias.Task.Factory.StartNew(() => { Thread.CurrentThread.Priority = ThreadPriority.Lowest; var Db = new CMSDataContext(Util.GetConnectionString(host)); var rt = Db.DuplicatesRuns.OrderByDescending(mm => mm.Id).First(); Db.ExecuteCommand("delete duplicate"); var q = from p in Db.People where p.CreatedDate > fdt where p.CreatedDate < tdt.Value.AddDays(1) select p.PeopleId; rt.Count = q.Count(); Db.SubmitChanges(); foreach (var p in q) { var pids = Db.FindPerson4(p); rt.Processed++; Db.SubmitChanges(); if (pids.Count() == 0) { continue; } foreach (var pid in pids) { Db.InsertDuplicate(p, pid.PeopleId.Value); } rt.Found++; } rt.Completed = DateTime.Now; Db.SubmitChanges(); }); return(Redirect("/Manage/Duplicates/Progress")); }