/// <summary> /// Gets the record hash. /// </summary> /// <param name = "person" > The person.</param> /// <returns>System.String.</returns> private static string GetRecordHash(Models.DTO.Person person) { var inputDataToHash = $"{person.FirstName}{person.LastName}{person.BirthDay.GetValueOrDefault()}"; foreach (var document in person.Documents.OrderByDescending(t => t.Number)) { inputDataToHash += $"{document.Series}{document.Number}"; } return(inputDataToHash.EncryptWithSHA1()); }
public void UpdatePerson(Models.DTO.Person person) { using (var context = new PersonContext()) { var personToUpdate = context.MasterLinks.FirstOrDefault( t => t.MasterId == person.MasterLink.MasterId && t.MasterSystemId == person.MasterLink.MasterSystem.Id)?.Person; var recordHash = GetRecordHash(person); if (recordHash == personToUpdate.RecordHash) { return; } personToUpdate.BirthDay = person.BirthDay; personToUpdate.CategoryId = person.Category.Id; personToUpdate.FirstName = person.FirstName; personToUpdate.LastName = person.LastName; personToUpdate.Patronymic = person.Patronymic; personToUpdate.GenderId = person.Gender.Id; personToUpdate.TypeId = person.Type.Id; personToUpdate.RecordHash = recordHash; foreach (var document in person.Documents) { var documentToUpdate = context.Documents.FirstOrDefault( t => t.Person.Id == personToUpdate.Id && t.TypeId == document.Type.Id); if (documentToUpdate != null) { UpdateDocument(documentToUpdate, document); } else { AddDocument(context, personToUpdate, document); } } context.SaveChanges(); } }
/// <summary> /// Creates the person. /// </summary> /// <param name = "person" > The person.</param> public void CreatePerson(Models.DTO.Person person) { using (var context = new PersonContext()) { var newPerson = new Models.Database.Person { FirstName = person.FirstName, LastName = person.LastName, Patronymic = person.Patronymic, BirthDay = person.BirthDay, GenderId = person.Gender.Id, CategoryId = person.Category.Id, TypeId = person.Type.Id, RecordHash = GetRecordHash(person), MasterLinks = new List <Models.Database.MasterLink>(), Documents = new List <Models.Database.Document>() }; newPerson.MasterLinks.Add(new Models.Database.MasterLink { MasterId = person.MasterLink.MasterId, MasterSystemId = person.MasterLink.MasterSystem.Id }); foreach (var document in person.Documents) { var newDocument = new Models.Database.Document { Number = document.Number, TypeId = document.Type.Id, IssueDate = document.IssueDate, Issuer = document.Issuer, Series = document.Series }; newPerson.Documents.Add(newDocument); } context.Persons.Add(newPerson); context.SaveChanges(); } }