Exemplo n.º 1
0
        /// <summary>読み込み・検証・一時データ登録処理</summary>
        /// <param name="source"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public async Task <ImportDataResult> ReadAsync(TransactionImportSource source, CancellationToken token = default(CancellationToken))
        {
            var encoding = Encoding.GetEncoding(source.EncodingCodePage);
            var csv      = encoding.GetString(source.Data);

            var companyTask = companyProcessor.GetAsync(new CompanySearch {
                Id = source.CompanyId,
            }, token);
            var appConTask = applicationControlProcessor.GetAsync(source.CompanyId, token);

            await Task.WhenAll(companyTask, appConTask);

            var company            = companyTask.Result.First();
            var applicationControl = appConTask.Result;

            var importer = new BillingImporterBase(applicationControl)
            {
                CompanyId         = source.CompanyId,
                CompanyCode       = company.Code,
                LoginUserId       = source.LoginUserId,
                ImporterSettingId = source.ImporterSettingId,
                FilePath          = csv,
                CsvParser         = new CsvParser {
                    Encoding      = encoding,
                    StreamCreator = new PlainTextMemoryStreamCreator(),
                },
                GetImporterSettingAsync       = settingId => GetImporterSettingAsync(settingId, token),
                GetImporterSettingDetailAsync = settingId => GetImporterSettingDetailsAsync(settingId, token),
                GetCurrencyAsync = companyId => GetCurrenciesAsync(companyId, token),
                GetJuridicalParsonalitiesAsync = companyId => GetJuridicalParsonalitiesAsync(companyId, token),
                GetGeneralSettingValueAsync    = (companyId, code) => GetGeneralSettingValueAsync(companyId, code, token),
                GetTaxClassAsync = () => GetTaxClassesAsync(token),
                GetBillingDivisionContractByCustomerIdsAsync = ids => GetBillingDivisionsByCustomerIdsAsync(ids, token),
                GetHolidayCalendarsAsync           = companyId => GetHolidayCalendarsAsync(companyId, token),
                LoadColumnNameSettingsInnerAsync   = tableName => GetColumnNamesAsync(source.CompanyId, tableName, token),
                BillingImportDuplicationCheckAsync = (companyId, items, details) => GetDuplicationRows(companyId, items, details, token),
                GetCustomerByCodesAsync            = (companyId, codes) => GetCustomersAsync(companyId, codes, token),
                GetDepartmentByCodesAsync          = (companyId, codes) => GetDepartmntsAdync(companyId, codes, token),
                GetAccountTitleByCodesAsync        = (companyId, codes) => GetAccountTitlesAsync(companyId, codes, token),
                GetStaffByCodesAsync       = (companyId, codes) => GetStaffsAsync(companyId, codes, token),
                GetCategoriesByCodesAsync  = (companyId, categoryType, codes) => GetCategoriesAsync(companyId, categoryType, codes, token),
                GetIsEnableToEditNoteAsync = companyId => GetIsEnableToEditNoteAsync(companyId, token),

                Serialize           = item => serializer.PackSingleObject(item),
                SaveImportDataAsync = data => importDataProcessor.SaveAsync(data, token),
            };
            var readResult = await importer.ReadCsvAsync();

            return(new ImportDataResult {
                ImportData = importer.ImportData,
                ReadCount = importer.ReadCount,
                ValidCount = importer.ValidCount,
                InvalidCount = importer.InvalidCount,
                NewCustomerCreationCount = importer.NewCustomerCreationCount,
                Logs = importer.GetValidationLogs(),
            });
        }
Exemplo n.º 2
0
        /// <summary>インポート処理 データ登録</summary>
        /// <param name="source"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public async Task <ImportDataResult> ImportAsync(TransactionImportSource source, CancellationToken token = default(CancellationToken))
        {
            var companyTask = companyProcessor.GetAsync(new CompanySearch {
                Id = source.CompanyId,
            }, token);
            var appConTask = applicationControlProcessor.GetAsync(source.CompanyId, token);

            await Task.WhenAll(companyTask, appConTask);

            var company            = companyTask.Result.First();
            var applicationControl = appConTask.Result;

            var importDataId = source.ImportDataId ?? 0;

            var importer = new BillingImporterBase(applicationControl)
            {
                CompanyId           = source.CompanyId,
                CompanyCode         = company.Code,
                LoginUserId         = source.LoginUserId,
                ImporterSettingId   = source.ImporterSettingId,
                Deserialize         = bytes => serializer.UnpackSingleObject(bytes),
                LoadImportDataAsync = () => importDataProcessor.GetAsync(importDataId, objectType: 0, token: token),
                ImportInnerAsync    = (companyId, loginUserId, settingId, items) => billingImporterProcessor.ImportAsync(new BillingImportItems {
                    CompanyId         = companyId,
                    LoginUserId       = loginUserId,
                    ImporterSettingId = settingId,
                    Items             = items,
                }, token),
            };

            var result = await importer.ImportAsync();

            return(new ImportDataResult {
                SaveCount = importer.SaveCount,
                SaveAmount = importer.SaveAmount,
            });
        }