public void LogObjectCreated() { Guid memberId; DateTime checkpoint; checkpoint = GetCheckpoint(); using (var db = new KcsarContext(this.databaseLocation)) { Member m = new Member { FirstName = "NewUser" }; db.Members.Add(m); db.SaveChanges(); memberId = m.Id; } using (var db = new KcsarContext(this.databaseLocation)) { var member = db.Members.Single(f => f.Id == memberId); var logs = db.GetLog(checkpoint); Assert.AreEqual(1, logs.Length, "log entries"); Assert.AreEqual(member.GetReportHtml(), logs[0].Comment, "log msg: " + logs[0].Comment); Assert.AreEqual("Added", logs[0].Action, "action: " + logs[0].Action); } }
public void LogObjectDeleted() { Guid memberId; string reportHtml; using (var db = new KcsarContext(this.databaseLocation)) { Member m = new Member { FirstName = "RemoveMe" }; db.Members.Add(m); db.SaveChanges(); memberId = m.Id; reportHtml = m.GetReportHtml(); } DateTime checkpoint = GetCheckpoint(); using (var db = new KcsarContext(this.databaseLocation)) { Member m = db.Members.Single(f => f.Id == memberId); db.Members.Remove(m); db.SaveChanges(); var log = db.GetLog(checkpoint); Assert.AreEqual(1, log.Length, "log entries"); Assert.AreEqual("Deleted", log[0].Action, "action: " + log[0].Action); Assert.AreEqual(reportHtml, log[0].Comment, "log msg: " + log[0].Comment); } }
public void LogPropertyChanged() { Guid memberId; using (var db = new KcsarContext(this.databaseLocation)) { Member m = new Member { FirstName = "Log property", Gender = Gender.Female, BirthDate = new DateTime(2000, 12, 19) }; db.Members.Add(m); db.SaveChanges(); memberId = m.Id; } DateTime checkpoint = GetCheckpoint(); using (var db = new KcsarContext(this.databaseLocation)) { Member m = db.Members.Single(f => f.Id == memberId); m.FirstName = "Fixed"; m.BirthDate = new DateTime(1990, 3, 5); m.Gender = Gender.Male; db.SaveChanges(); var log = db.GetLog(checkpoint); Assert.AreEqual(1, log.Length, "log entries"); Console.WriteLine(log[0].Comment); Assert.IsTrue(log[0].Comment.Contains("FirstName: Log property => Fixed"), "log msg: " + log[0].Comment); Assert.IsTrue(log[0].Comment.Contains("Gender: Female => Male"), "log msg gender: " + log[0].Comment); Assert.IsTrue(log[0].Comment.Contains("BirthDate: 12/19/2000 => 3/5/1990"), "log msg date: " + log[0].Comment); Assert.AreEqual("Modified", log[0].Action, "action: " + log[0].Action); } }
static void Main(string[] args) { using (var db = new KcsarContext()) { DateTime cutoff = DateTime.Today.AddYears(1); var course = db.TrainingCourses.Single(f => f.DisplayName == "HAM License"); var hams = db.PersonContact.Where(f => f.Type == "hamcall") .Where(f => !f.Person.ComputedAwards.Any(g => g.Expiry > cutoff && g.Course.Id == course.Id)) .Select(f => new { Member = f.Person, Call = f.Value }) .OrderBy(f => f.Member.LastName).ThenBy(f => f.Member.FirstName).ToArray(); foreach (var ham in hams) { Console.WriteLine(ham.Call); var lic = GetLicense(ham.Call); if (lic == null) { Console.WriteLine("!! No license found"); continue; } if (lic.Name.StartsWith(ham.Member.ReverseName, StringComparison.OrdinalIgnoreCase)) { // probably a match Console.WriteLine("Grant HAM to {0}, effective {1:yyyy-MM-dd}, expires {2:yyyy-MM-dd}", ham.Member.FullName, lic.Issued, lic.Expires); TrainingAward ta = new TrainingAward { Completed = lic.Issued, Course = course, Expiry = lic.Expires, Member = ham.Member, metadata = "Via FCC: " + lic.Url, LastChanged = DateTime.Now, ChangedBy = "HamFromFCC" }; db.TrainingAward.Add(ta); db.SaveChanges(); db.RecalculateTrainingAwards(ham.Member.Id); db.SaveChanges(); } else { Console.WriteLine("Can't match names: {0} :: {1}", lic.Name, ham.Member.ReverseName); } } } }
public void LogPrincipalChanged() { Member first; Member second; PersonAddress address; using (var db = new KcsarContext(this.databaseLocation)) { first = new Member { FirstName = "First" }; db.Members.Add(first); second = new Member { FirstName = "Second" }; db.Members.Add(second); address = new PersonAddress { Person = first, Street = "123", City = "Any", State = "WA", Zip = "98765" }; first.Addresses.Add(address); db.SaveChanges(); } var checkpoint = GetCheckpoint(); using (var db = new KcsarContext(this.databaseLocation)) { address = db.Members.Where(f => f.Id == first.Id).SelectMany(f => f.Addresses).Single(); address.Person = db.Members.Single(f => f.Id == second.Id); db.SaveChanges(); } using (var db = new KcsarContext(this.databaseLocation)) { var logs = db.GetLog(checkpoint); Assert.AreEqual(1, logs.Length, "log count"); Assert.AreEqual(string.Format("{0}<br/>{1} => {2}", address, first, second), logs[0].Comment); Assert.AreEqual("Modified", logs[0].Action); } }
static void Main(string[] args) { DateTime startTime = DateTime.Now; Dictionary <Guid, string> memberIds = null; using (var context = new KcsarContext()) { memberIds = context.Members.OrderBy(f => f.LastName).ThenBy(f => f.FirstName).ToDictionary(f => f.Id, f => f.LastName + ", " + f.FirstName); } foreach (var pair in memberIds) { using (var ctx = new KcsarContext()) { Console.WriteLine(pair.Value); ctx.RecalculateTrainingAwards(pair.Key, DateTime.Now); ctx.SaveChanges(); } } Console.WriteLine("Execution time: {0}", (DateTime.Now - startTime)); }