예제 #1
0
        /// <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());
        }
예제 #2
0
        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();
            }
        }
예제 #3
0
        /// <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();
            }
        }