private PersonFact GetOrCreatePersonFact(bool shouldSave, Person person, PrmFactName factName, string strValue = null, int? intValue = null, float? floatValue = null, DateTime? dateValue = null) { var fact = _db.PersonFacts.SingleOrDefault(f => f.PersonId == person.Id && f.FactId == factName.Id && f.StringValue == strValue && f.IntValue == intValue && f.FloatValue == floatValue && f.DateValue == dateValue); if (fact == null) { fact = new PersonFact() { PersonId = person.Id, FactId = factName.Id, FactDate = DateTime.Now, StringValue = strValue, IntValue = intValue, FloatValue = floatValue, DateValue = dateValue }; _db.PersonFacts.Add(fact); } else { fact.FactDate = DateTime.Now; } if (shouldSave) { _db.SaveChanges(); } return fact; }
private void UpdatePersonFacts(Person person, IDictionary<string, FactViewModel> facts) { var names = _repParameterFactNames.FindAll(p => p.Category == ParameterCategory.Person && p.IsFact == true).ToList(); var allFacts = _repPersonFacts.FindAll(p => p.PersonId == person.Id).ToList(); var list = new List<PersonFact>(); foreach (var key in facts.Keys) { var fact = facts[key]; var fn = names.Single(f => string.Compare(f.Name, key, true) == 0); var dbFact = allFacts.Where(p => p.FactId == fn.Id).OrderByDescending(f => f.FactDate).FirstOrDefault(); if (dbFact == null || dbFact.FloatValue != fact.FloatValue || dbFact.IntValue != fact.MiscId || dbFact.StringValue != fact.StringValue || dbFact.DateValue != fact.DateValue) { dbFact = new PersonFact { FactDate = DateTime.Now, FactId = fn.Id, PersonId = person.Id, DateValue = fact.DateValue, FloatValue = fact.FloatValue, IntValue = fact.MiscId, StringValue = fact.StringValue }; list.Add(dbFact); } }; _repPersonFacts.AddRange(list); }
private PersonFact UpdateOrCreatePersonFact(Person person, ParameterName factName, string strValue = null, int? intValue = null, float? floatValue = null, DateTime? dateValue = null) { strValue = NormalizeString(strValue, true); var fact = _db.PersonFacts.FirstOrDefault(f => f.PersonId == person.Id && f.FactId == factName.Id && f.StringValue == strValue && f.IntValue == intValue && f.FloatValue == floatValue && f.DateValue == dateValue); if (fact == null) { fact = new PersonFact() { PersonId = person.Id, FactId = factName.Id, FactDate = DateTime.Now, StringValue = strValue, IntValue = intValue, FloatValue = floatValue, DateValue = dateValue }; _db.PersonFacts.Add(fact); } else { fact.FactDate = DateTime.Now; }; _db.SaveChanges(); return fact; }