Пример #1
0
        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;
        }
Пример #2
0
        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);
        }
Пример #3
0
        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;
        }