예제 #1
0
파일: CSVImport.cs 프로젝트: szwork2013/fms
        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);
        }
예제 #2
0
파일: CSVImport.cs 프로젝트: szwork2013/fms
        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();
            }
        }
예제 #3
0
파일: CSVImport.cs 프로젝트: szwork2013/fms
        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();
            }
        }
예제 #4
0
파일: CSVImport.cs 프로젝트: szwork2013/fms
        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();
            }
        }