Пример #1
0
 public void StartImport(UploadingProgress progress, DocumentType type, string filePath, string userID)
 {
     try
     {
         switch (type)
         {
             case DocumentType.AdministrativePractice:
                 ImportAdministrativePractice(progress, filePath, userID);
                 break;
             case DocumentType.TemporaryResidencePermit:
                 break;
             case DocumentType.Residence:
                 break;
             case DocumentType.Citizenship:
                 ImportСitizenship(progress, filePath, userID);
                 break;
             default:
                 break;
         }
     }
     catch (Exception ex)
     {
         progress.HasErrors = true;
         progress.ExceptionMessage = ex.Message;
         throw;
     }
     finally
     {
         progress.IsCompleted = true;
         progress.EndDate = DateTime.Now;
         _db.SaveChanges();
     }
 }
Пример #2
0
        public async Task<UploadingProgress> CreateProgressAsync(string fileId, string userID)
        {
            var progress = new UploadingProgress()
            {
                StartDate = DateTime.Now,
                UserId = Guid.Parse(userID),
                FileId = Guid.Parse(fileId),
                Percent = 0,
                IsCompleted = false
            };

            _db.UploadProgress.Add(progress);
            await _db.SaveChangesAsync();

            return progress;
        }
Пример #3
0
        public async Task<UploadingProgress> CreateProgressAsync(string fileName, string userID)
        {
            var progress = new UploadingProgress()
            {
                StartDate = DateTime.Now,
                UserId = userID,
                FileName = Path.GetFileNameWithoutExtension(fileName),
                Percent = 0,
                IsCompleted = false
            };

            _db.UploadProgress.Add(progress);
            await _db.SaveChangesAsync();

            return progress;
        }
Пример #4
0
        private void ImportAdministrativePractice(UploadingProgress progress, string filePath, string userid)
        {
            var table = ReadCSVTable(filePath, ';', new string[] { "ФИО", "Дата рождения", "Гражданство", "Категория лица",
                    "Адрес регистрации", "Номер протокола", "Дата составления", "Статья", "Вид правонарушения",
                    "Орган рассмотрения", "Статус дела", "Дата постановления", "Принятое решение", "Тип взыскания",
                    "Сумма(начислено)", "Сумма(оплачено)"});

            DateTime birthday, date1, date2;
            float sum1, sum2;

            var miscnames = _db.MiscNames.ToList();
            var parameterFactNames = _db.PrmFactNames.ToList();

            int i = 0;
            foreach (var row in table)
            {
                if (string.IsNullOrWhiteSpace(row["ФИО"]))
                {
                    continue;
                }

                if (!DateTime.TryParseExact(row["Дата рождения"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out birthday))
                {
                    continue;
                }

                var m1 = GetOrCreateMisc(miscnames.Single(m => m.NameRu == "Гражданство"), row["Гражданство"]);
                var m2 = GetOrCreateMisc(miscnames.Single(m => m.NameRu == "Статья"), row["Статья"]);
                var m3 = GetOrCreateMisc(miscnames.Single(m => m.NameRu == "Вид правонарушения"), row["Вид правонарушения"]);
                var m4 = GetOrCreateMisc(miscnames.Single(m => m.NameRu == "Орган рассмотрения"), row["Орган рассмотрения"]);
                var m5 = GetOrCreateMisc(miscnames.Single(m => m.NameRu == "Статус дела"), row["Статус дела"]);
                var m6 = GetOrCreateMisc(miscnames.Single(m => m.NameRu == "Принятое решение"), row["Принятое решение"]);
                var m7 = GetOrCreateMisc(miscnames.Single(m => m.NameRu == "Тип взыскания"), row["Тип взыскания"]);

                var person = GetOrCreatePerson(row["ФИО"], birthday,
                  row["Категория лица"] == "Физическое" ? PersonCategory.Individual : PersonCategory.Legal,
                  row["Гражданство"] == "Россия" ? PersonType.Host : PersonType.Applicant);

                var document = GetOrCreateDocument(person, DocumentType.AdministrativePractice, NormalizeString(row["Номер протокола"]), userid);

                GetOrCreatePersonFact(false, person,
                    parameterFactNames.Single(f => f.NameRu == "Гражданство"), null, m1.Id);
                GetOrCreatePersonFact(false, person,
                    parameterFactNames.Single(f => f.NameRu == "Адрес"), NormalizeString(row["Адрес регистрации"]));

                GetOrCreateDocumentParameter(false, document, parameterFactNames.Single(d => d.NameRu == "Статья"), null, m2.Id);
                GetOrCreateDocumentParameter(false, document, parameterFactNames.Single(d => d.NameRu == "Вид правонарушения"), null, m3.Id);
                GetOrCreateDocumentParameter(false, document, parameterFactNames.Single(d => d.NameRu == "Орган рассмотрения"), null, m4.Id);
                GetOrCreateDocumentParameter(false, document, parameterFactNames.Single(d => d.NameRu == "Статус дела"), null, m5.Id);
                GetOrCreateDocumentParameter(false, document, parameterFactNames.Single(d => d.NameRu == "Принятое решение"), null, m6.Id);
                GetOrCreateDocumentParameter(false, document, parameterFactNames.Single(d => d.NameRu == "Тип взыскания"), null, m7.Id);

                if (DateTime.TryParseExact(row["Дата составления"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date1))
                {
                    GetOrCreateDocumentParameter(false, document, parameterFactNames.Single(d => d.NameRu == "Дата составления"), null, null, null, date1);
                }

                if (DateTime.TryParseExact(row["Дата постановления"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date2))
                {
                    GetOrCreateDocumentParameter(false, document, parameterFactNames.Single(d => d.NameRu == "Дата постановления"), null, null, null, date2);
                }

                if (float.TryParse(row["Сумма(начислено)"], out sum1))
                {
                    GetOrCreateDocumentParameter(false, document, parameterFactNames.Single(d => d.NameRu == "Сумма(начислено)"), null, null, sum1);
                }

                if (float.TryParse(row["Сумма(оплачено)"], out sum2))
                {
                    GetOrCreateDocumentParameter(false, document, parameterFactNames.Single(d => d.NameRu == "Сумма(оплачено)"), null, null, sum2);
                }

                i++;
                progress.Percent = (float)i / table.Count * 100;
                _db.SaveChanges();
            }



        }
Пример #5
0
        private void ImportСitizenship(UploadingProgress progress, string filePath, string userid)
        {
            var table = ReadCSVTable(filePath, ';', new string[] { "Рег.номер", "Тип дела", "Дата приема", "Основание для приема",
                "ФИО", "Дата рождения", "Гражданство", "Тип документа", "Номер документа",
                "Адрес", "Решение", "Основание решения", "Дата решения", "Номер решения"});

            DateTime birthday, date1, date2;

            var miscnames = _db.MiscNames.ToList();
            var parameterFactNames = _db.PrmFactNames.ToList();

            int i = 0;
            foreach (var row in table)
            {
                if (string.IsNullOrWhiteSpace(row["ФИО"]))
                {
                    continue;
                }

                if (!DateTime.TryParseExact(row["Дата рождения"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out birthday))
                {
                    continue;
                }

                var m1 = GetOrCreateMisc(miscnames.Single(m => m.NameRu == "Тип дела"), row["Тип дела"]);
                var m2 = GetOrCreateMisc(miscnames.Single(m => m.NameRu == "Основание для приема"), row["Основание для приема"]);
                var m3 = GetOrCreateMisc(miscnames.Single(m => m.NameRu == "Гражданство"), row["Гражданство"]);
                var m4 = GetOrCreateMisc(miscnames.Single(m => m.NameRu == "Тип документа"), row["Тип документа"]);
                var m5 = GetOrCreateMisc(miscnames.Single(m => m.NameRu == "Решение"), row["Решение"]);
                var m6 = GetOrCreateMisc(miscnames.Single(m => m.NameRu == "Основание решения"),row["Основание решения"]);

                var person = GetOrCreatePerson(row["ФИО"], birthday, PersonCategory.Individual, PersonType.Applicant);
                var document = GetOrCreateDocument(person, DocumentType.Citizenship, NormalizeString(row["Рег.номер"]), userid);

                GetOrCreatePersonFact(false, person,
                    parameterFactNames.Single(f => f.NameRu == "Гражданство"), null, m3.Id);
                GetOrCreatePersonFact(false, person,
                  parameterFactNames.Single(f => f.NameRu == "Тип документа"), NormalizeString(row["Номер документа"]), m4.Id);
                GetOrCreatePersonFact(false, person,
                    parameterFactNames.Single(f => f.NameRu == "Адрес"), NormalizeString(row["Адрес"]));

                GetOrCreateDocumentParameter(false, document, parameterFactNames.Single(d => d.NameRu == "Тип дела"), null, m1.Id);
                GetOrCreateDocumentParameter(false, document, parameterFactNames.Single(d => d.NameRu == "Основание для приема"), null, m2.Id);
                GetOrCreateDocumentParameter(false, document, parameterFactNames.Single(d => d.NameRu == "Решение"), null, m5.Id);
                GetOrCreateDocumentParameter(false, document, parameterFactNames.Single(d => d.NameRu == "Основание решения"), null, m6.Id);

                if (DateTime.TryParseExact(row["Дата приема"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date1))
                {
                    GetOrCreateDocumentParameter(false, document, parameterFactNames.Single(d => d.NameRu == "Дата приема"), null, null, null, date1);
                }

                if (DateTime.TryParseExact(row["Дата решения"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date2))
                {
                    GetOrCreateDocumentParameter(false, document, parameterFactNames.Single(d => d.NameRu == "Дата решения"), null, null, null, date2);
                }

                i++;
                progress.Percent = (float)i / table.Count * 100;
                _db.SaveChanges();
            }



        }
Пример #6
0
        private void ImportAdministrativePractice(UploadingProgress progress, string filePath, string userid)
        {
            var table = ReadCSVTable(filePath, ';', new string[] { "ФИО", "Дата рождения", "Гражданство", "Категория лица",
                    "Адрес регистрации", "Номер протокола", "Дата составления", "Статья", "Вид правонарушения",
                    "Орган рассмотрения", "Статус дела", "Дата постановления", "Принятое решение", "Тип взыскания",
                    "Сумма(начислено)", "Сумма(оплачено)"});

            var prmNames = _db.ParameterNames.Where(p => p.DocType == DocumentType.AdministrativePractice || p.PersonCategory != null).ToDictionary(k => k.Name, v => v);

            int i = 0;
            progress.TotalRows = table.Count;
            foreach (var row in table.Where(row => !string.IsNullOrWhiteSpace(row["ФИО"]) && !string.IsNullOrWhiteSpace(row["Дата рождения"])))
            {
                DateTime date;
                float sum;

                if (DateTime.TryParseExact(row["Дата рождения"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
                {
                    var m1 = GetOrCreateMisc(prmNames["Гражданство"].MiscParentId, row["Гражданство"]);
                    var m2 = GetOrCreateMisc(prmNames["Статья"].MiscParentId, row["Статья"]);
                    var m3 = GetOrCreateMisc(prmNames["Вид правонарушения"].MiscParentId, row["Вид правонарушения"]);
                    var m4 = GetOrCreateMisc(prmNames["Орган рассмотрения"].MiscParentId, row["Орган рассмотрения"]);
                    var m5 = GetOrCreateMisc(prmNames["Статус дела"].MiscParentId, row["Статус дела"]);
                    var m6 = GetOrCreateMisc(prmNames["Принятое решение"].MiscParentId, row["Принятое решение"]);
                    var m7 = GetOrCreateMisc(prmNames["Тип взыскания"].MiscParentId, row["Тип взыскания"]);

                    var person = GetOrCreatePerson(row["ФИО"], date,
                        row["Категория лица"] == "Физическое" ? PersonCategory.Individual : PersonCategory.Legal,
                        row["Гражданство"] == "Россия" ? PersonType.Host : PersonType.Applicant);

                    var document = UpdateOrCreateDocumentByNumber(person, DocumentType.AdministrativePractice, row["Номер протокола"], userid);

                    UpdateOrCreatePersonFact(person, prmNames["Гражданство"], null, m1.Id);
                    UpdateOrCreatePersonFact(person, prmNames["Адрес"], row["Адрес регистрации"]);

                    UpdateOrCreateDocumentParameter(document, prmNames["Статья"], null, m2.Id);
                    UpdateOrCreateDocumentParameter(document, prmNames["Вид правонарушения"], null, m3.Id);
                    UpdateOrCreateDocumentParameter(document, prmNames["Орган рассмотрения"], null, m4.Id);
                    UpdateOrCreateDocumentParameter(document, prmNames["Статус дела"], null, m5.Id);
                    UpdateOrCreateDocumentParameter(document, prmNames["Принятое решение"], null, m6.Id);
                    UpdateOrCreateDocumentParameter(document, prmNames["Тип взыскания"], null, m7.Id);

                    if (DateTime.TryParseExact(row["Дата составления"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Дата составления"], null, null, null, date);
                    }
                    else
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Дата составления"]);
                    }

                    if (DateTime.TryParseExact(row["Дата постановления"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Дата постановления"], null, null, null, date);
                    }
                    else
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Дата постановления"]);
                    }

                    if (float.TryParse(row["Сумма(начислено)"], out sum))
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Сумма(начислено)"], null, null, sum);
                    }
                    else
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Сумма(начислено)"]);
                    }

                    if (float.TryParse(row["Сумма(оплачено)"], out sum))
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Сумма(оплачено)"], null, null, sum);
                    }
                    else
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Сумма(оплачено)"]);
                    }

                    i++;
                    progress.Percent = (float)i / table.Count * 100;
                    progress.CurrentRow = i;
                    _db.SaveChanges();
                }
            }



        }
Пример #7
0
        private void ImportMigrationRegistration(UploadingProgress progress, string filePath, string userid)
        {
            var table = ReadCSVTable(filePath, ';', new string[] { "номер уведомления", "фио иг рус", "дата рождения", "гражданство",
                "серия", "номер", "дата выдачи", "отметка проставлена", "дата въезда", "дата рег. с", "дата рег. до", "цель въезда", "первично/продлено",
                "КПП въезда", "принимающая сторона", "гражданство прин.стороны", "адрес регистрации иг" });

         
            var prmNames = _db.ParameterNames.Where(p => p.DocType == DocumentType.MigrationRegistration || p.PersonCategory != null).ToDictionary(k => k.Name, v => v);
            var foreignPassportMisc = GetOrCreateMisc(prmNames["Личный документ"].MiscParentId, "Иностранный паспорт");
            var ruCtz = GetOrCreateMisc(prmNames["Гражданство"].MiscParentId, "Россия");


            int i = 0;
            progress.TotalRows = table.Count;
            foreach (var row in table.Where(row => !string.IsNullOrWhiteSpace(row["фио иг рус"]) && !string.IsNullOrWhiteSpace(row["дата рождения"])))
            {
                DateTime date, birthday;
                if (DateTime.TryParseExact(row["дата рождения"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out birthday))
                {
                    var m1 = GetOrCreateMisc(prmNames["Гражданство"].MiscParentId, row["гражданство"]);
                    var m2 = GetOrCreateMisc(prmNames["Отметка проставлена"].MiscParentId, row["отметка проставлена"]);
                    var m3 = GetOrCreateMisc(prmNames["Цель въезда"].MiscParentId, row["цель въезда"]);
                    var m4 = GetOrCreateMisc(prmNames["Первично/Продлено"].MiscParentId, row["первично/продлено"]);
                    var m5 = GetOrCreateMisc(prmNames["КПП въезда"].MiscParentId, row["КПП въезда"]);

                    var applicant = GetOrCreatePerson(row["фио иг рус"], birthday, PersonCategory.Individual, PersonType.Applicant);

                    UpdateOrCreatePersonFact(applicant, prmNames["Гражданство"], null, m1.Id);
                    UpdateOrCreatePersonFact(applicant, prmNames["Личный документ"], string.Concat(row["серия"], row["номер"]), foreignPassportMisc.Id);
                    UpdateOrCreatePersonFact(applicant, prmNames["Адрес"], row["адрес регистрации иг"]);


                    Document document = null;

                    var split = row["принимающая сторона"].Split(',');
                    if (split.Length > 1)
                    {
                        string name = split[0].Trim();
                        var ctz = row["гражданство прин.стороны"];

                        Person host = null;
                        if (ctz == "Организация")
                        {
                            host = GetOrCreatePerson(name, split[1].Replace("инн:", "").Trim(), PersonCategory.Legal, PersonType.Host);
                        }
                        else
                        {
                            DateTime.TryParseExact(split[1].Trim(), "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out birthday);
                            host = GetOrCreatePerson(name, birthday, PersonCategory.Individual, PersonType.Host);
                            if (ctz == "Россия")
                            {
                                UpdateOrCreatePersonFact(host, prmNames["Гражданство"], null, ruCtz.Id);
                            }
                            else if (!string.IsNullOrWhiteSpace(ctz))
                            {
                                var mctz = GetOrCreateMisc(prmNames["Гражданство"].MiscParentId, ctz);
                                UpdateOrCreatePersonFact(host, prmNames["Гражданство"], null, mctz.Id);
                            }
                        }

                        document = UpdateOrCreateDocumentByNumber(applicant, host, DocumentType.MigrationRegistration, row["номер уведомления"], userid);
                    }
                    else
                    {
                        document = UpdateOrCreateDocumentByNumber(applicant, DocumentType.MigrationRegistration, row["номер уведомления"], userid);
                    }



                    UpdateOrCreateDocumentParameter(document, prmNames["Цель въезда"], null, m3.Id);
                    UpdateOrCreateDocumentParameter(document, prmNames["Первично/Продлено"], null, m4.Id);
                    UpdateOrCreateDocumentParameter(document, prmNames["КПП въезда"], null, m5.Id);
                    UpdateOrCreateDocumentParameter(document, prmNames["Отметка проставлена"], null, m2.Id);

                    if (DateTime.TryParseExact(row["дата выдачи"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Дата выдачи"], null, null, null, date);
                    }

                    if (DateTime.TryParseExact(row["дата въезда"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Дата въезда"], null, null, null, date);
                    }

                    if (DateTime.TryParseExact(row["дата рег. с"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Дата регистрации С"], null, null, null, date);
                    }

                    if (DateTime.TryParseExact(row["дата рег. до"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Дата регистрации ДО"], null, null, null, date);
                    }

                    i++;
                    progress.Percent = (float)i / table.Count * 100;
                    progress.CurrentRow = i;
                    _db.SaveChanges();
                }
            }
        }
Пример #8
0
        private void ImportResidencePermit(UploadingProgress progress, string filePath, string userid)
        {
            var table = ReadCSVTable(filePath, ';', new string[] { "Идентификатор дела", "Номер дела", "Тип дела", "ФИО",
                "Дата рождения", "Гражданство", "Серия", "Номер", "Основание дела", "Дата приема заявления", "Дата решения", "Тип решения", "Серия ВНЖ", "Номер ВНЖ",
                "Дата выдачи", "Действителен С", "Действителен ПО", "Дата фактической выдачи", "Адрес" });
            
            var prmNames = _db.ParameterNames.Where(p => p.DocType == DocumentType.Residence || p.PersonCategory != null).ToDictionary(k => k.Name, v => v);
            var foreignPassportMisc = GetOrCreateMisc(prmNames["Личный документ"].MiscParentId, "Иностранный паспорт");

            int i = 0;
            progress.TotalRows = table.Count;
            foreach (var row in table.Where(row => !string.IsNullOrWhiteSpace(row["ФИО"]) && !string.IsNullOrWhiteSpace(row["Дата рождения"])))
            {
                DateTime date, birthday;
                if (DateTime.TryParseExact(row["Дата рождения"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out birthday))
                {

                    var m1 = GetOrCreateMisc(prmNames["Гражданство"].MiscParentId, row["Гражданство"]);
                    var m2 = GetOrCreateMisc(prmNames["Тип дела"].MiscParentId, row["Тип дела"]);
                    var m3 = GetOrCreateMisc(prmNames["Основание дела"].MiscParentId, row["Основание дела"]);
                    var m4 = GetOrCreateMisc(prmNames["Тип решения"].MiscParentId, row["Тип решения"]);
                    var m5 = GetOrCreateMisc(prmNames["Серия ВНЖ"].MiscParentId, row["Серия ВНЖ"]);

                    var person = GetOrCreatePerson(row["ФИО"], birthday, PersonCategory.Individual, PersonType.Applicant);
                    var document = UpdateOrCreateDocumentByNumber(person, DocumentType.Residence, row["Идентификатор дела"], userid);

                    UpdateOrCreatePersonFact(person, prmNames["Личный документ"], string.Concat(row["Серия"], row["Номер"]), foreignPassportMisc.Id);
                    UpdateOrCreatePersonFact(person, prmNames["Гражданство"], null, m1.Id);
                    UpdateOrCreatePersonFact(person, prmNames["Адрес"], row["Адрес"]);

                    UpdateOrCreateDocumentParameter(document, prmNames["Номер дела"], row["Номер дела"]);
                    UpdateOrCreateDocumentParameter(document, prmNames["Тип дела"], null, m2.Id);
                    UpdateOrCreateDocumentParameter(document, prmNames["Основание дела"], null, m3.Id);
                    UpdateOrCreateDocumentParameter(document, prmNames["Тип решения"], null, m4.Id);
                    UpdateOrCreateDocumentParameter(document, prmNames["Серия ВНЖ"], null, m5.Id);
                    UpdateOrCreateDocumentParameter(document, prmNames["Номер ВНЖ"], row["Номер ВНЖ"]);

                    if (DateTime.TryParseExact(row["Дата приема заявления"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Дата приема заявления"], null, null, null, date);
                    }

                    if (DateTime.TryParseExact(row["Дата решения"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Дата решения"], null, null, null, date);
                    }

                    if (DateTime.TryParseExact(row["Дата выдачи"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Дата выдачи"], null, null, null, date);
                    }

                    if (DateTime.TryParseExact(row["Действителен С"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Действителен С"], null, null, null, date);
                    }

                    if (DateTime.TryParseExact(row["Действителен ПО"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Действителен ПО"], null, null, null, date);
                    }

                    if (DateTime.TryParseExact(row["Дата фактической выдачи"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Дата фактической выдачи"], null, null, null, date);
                    }

                    i++;
                    progress.Percent = (float)i / table.Count * 100;
                    progress.CurrentRow = i;
                    _db.SaveChanges();
                }
            }



        }
Пример #9
0
        private void ImportСitizenship(UploadingProgress progress, string filePath, string userid)
        {
            var table = ReadCSVTable(filePath, ';', new string[] { "Рег.номер", "Тип дела", "Дата приема", "Основание для приема",
                "ФИО", "Дата рождения", "Гражданство", "Тип документа", "Номер документа",
                "Адрес", "Решение", "Основание решения", "Дата решения", "Номер решения"});


            var prmNames = _db.ParameterNames.Where(p => p.DocType == DocumentType.Citizenship || p.PersonCategory != null).ToDictionary(k => k.Name, v => v);

            int i = 0;
            progress.TotalRows = table.Count;
            foreach (var row in table.Where(row => !string.IsNullOrWhiteSpace(row["ФИО"]) && !string.IsNullOrWhiteSpace(row["Дата рождения"])))
            {
                DateTime date;
                if (DateTime.TryParseExact(row["Дата рождения"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
                {
                    var m1 = GetOrCreateMisc(prmNames["Тип дела"].MiscParentId, row["Тип дела"]);
                    var m2 = GetOrCreateMisc(prmNames["Основание для приема"].MiscParentId, row["Основание для приема"]);
                    var m3 = GetOrCreateMisc(prmNames["Гражданство"].MiscParentId, row["Гражданство"]);
                    var m4 = GetOrCreateMisc(prmNames["Личный документ"].MiscParentId, row["Тип документа"]);
                    var m5 = GetOrCreateMisc(prmNames["Решение"].MiscParentId, row["Решение"]);
                    var m6 = GetOrCreateMisc(prmNames["Основание решения"].MiscParentId, row["Основание решения"]);

                    var person = GetOrCreatePerson(row["ФИО"], date, PersonCategory.Individual, PersonType.Applicant);
                    var document = UpdateOrCreateDocumentByNumber(person, DocumentType.Citizenship, row["Рег.номер"], userid);

                    UpdateOrCreatePersonFact(person, prmNames["Гражданство"], null, m3.Id);
                    UpdateOrCreatePersonFact(person, prmNames["Личный документ"], row["Номер документа"], m4.Id);
                    UpdateOrCreatePersonFact(person, prmNames["Адрес"], row["Адрес"]);

                    UpdateOrCreateDocumentParameter(document, prmNames["Тип дела"], null, m1.Id);
                    UpdateOrCreateDocumentParameter(document, prmNames["Основание для приема"], null, m2.Id);
                    UpdateOrCreateDocumentParameter(document, prmNames["Решение"], null, m5.Id);
                    UpdateOrCreateDocumentParameter(document, prmNames["Основание решения"], null, m6.Id);
                    UpdateOrCreateDocumentParameter(document, prmNames["Номер решения"], row["Номер решения"], null);

                    if (DateTime.TryParseExact(row["Дата приема"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Дата приема"], null, null, null, date);
                    }

                    if (DateTime.TryParseExact(row["Дата решения"], "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
                    {
                        UpdateOrCreateDocumentParameter(document, prmNames["Дата решения"], null, null, null, date);
                    }

                    i++;
                    progress.Percent = (float)i / table.Count * 100;
                    progress.CurrentRow = i;
                    _db.SaveChanges();
                }
            }



        }