internal async Task <ValidatedAccountingImport> ProcessManualAccountingImport(List <AccountingCsvLine> csvAccountingData, bool IsMTMSelected, string company) { ValidatedAccountingImport validatedAccountingImport = new ValidatedAccountingImport(); List <AccountingDocumentImport> accountingRecordList = new List <AccountingDocumentImport>(); IEnumerable <NominalAccount> nominalAccount = (await _masterDataService.GetNominalAccountsAsync(company)).ToList(); List <AccountingCsvLine> goodDataList = new List <AccountingCsvLine>(); IEnumerable <Counterparty> counterParty = (await _masterDataService.GetCounterpartiesAsync(company)).ToList(); IEnumerable <AccountLineTypes> accountLineTypes = (await _masterDataService.GetAllAsync()).ToList(); IEnumerable <CostType> costType = (await _masterDataService.GetCostTypesAsync(company)).ToList(); IEnumerable <Department> departmentId = (await _masterDataService.GetDepartmentsAsync(company)).ToList(); IEnumerable <Commodity> commodity = (await _masterDataService.GetCommoditiesAsync(company)).ToList(); string[] chartercompany = new string[1]; chartercompany[0] = company; IEnumerable <CharterManager> charterManager = (await _masterDataService.GetCharterManagersAsync(chartercompany)).ToList(); IEnumerable <Currency> settlementCurrencyList = (await _masterDataService.GetCurrenciesAsync()).ToList(); IEnumerable <Province> provinces = (await _masterDataService.GetProvincesAsync()).ToList(); EntitySearchRequest request = new EntitySearchRequest { Clauses = null, Limit = 214748647, Offset = 0, SortColumns = null }; var searchResultTransactionDocumentEntries = await _accountingDocumentQueries.SearchTransactionDocumentEntriesAsync(company, request); IEnumerable <TransactionDocumentSearch> searchResultTransactionDocument; searchResultTransactionDocument = _mapper.Map <IEnumerable <TransactionDocumentSearch> >(searchResultTransactionDocumentEntries); IEnumerable <SectionSearchResult> searchResultSectionId = await _accountingDocumentQueries.SearchSectionsAsync(company, request); IEnumerable <FxDealSearchResult> searchResultFxDeal = await _accountingDocumentQueries.SearchFxDealsAsync(company, request); var validatedAccounting = ValidateData(IsMTMSelected, csvAccountingData, nominalAccount, counterParty, accountLineTypes, costType, departmentId, charterManager, commodity, settlementCurrencyList, searchResultTransactionDocument, provinces, searchResultSectionId, searchResultFxDeal); foreach (var data in validatedAccounting.GoodData.LineNumber.ToList()) { var accontingValueListImport = csvAccountingData.Where(x => x.LineNumber == data).FirstOrDefault(); if (accontingValueListImport != null) { goodDataList.Add(accontingValueListImport); } } validatedAccountingImport.GoodDataList = goodDataList; validatedAccountingImport.GoodData = validatedAccounting.GoodData; validatedAccountingImport.BlockerData = validatedAccounting.BlockerData; return(validatedAccountingImport); }
private static ValidatedAccountingImport ValidateData( bool isMTMSelected, List <AccountingCsvLine> csvLines, IEnumerable <NominalAccount> nominalAccount, IEnumerable <Counterparty> counterParty, IEnumerable <AccountLineTypes> accountLineType, IEnumerable <CostType> costType, IEnumerable <Department> departmentId, IEnumerable <CharterManager> charterManagers, IEnumerable <Commodity> commodity, IEnumerable <Currency> settlementCurrencyList, IEnumerable <TransactionDocumentSearch> searchResultTransactionDocument, IEnumerable <Province> provinces, IEnumerable <SectionSearchResult> searchResultSectionId, IEnumerable <FxDealSearchResult> searchResultFxDeal ) { ValidatedAccountingImport validatedAccountingImport = new ValidatedAccountingImport { GoodData = new AccountingImportReportData { ErrorCode = "Good data", ErrorMessage = "Following Accounting Line are Ready for Import", LineNumber = new List <int>() }, BlockerData = new List <AccountingImportReportData>(), }; List <AccountingValidationError> validationErrors = new List <AccountingValidationError>(); foreach (var csvLine in csvLines) { bool isValidLine = ValidateNominalAccount(validationErrors, csvLine, nominalAccount, counterParty, accountLineType, costType, isMTMSelected) && ValidateClientAccountId(validationErrors, csvLine, counterParty) && ValidateAssociatedAccountId(validationErrors, csvLine, counterParty) && ValidateCostAccount(validationErrors, csvLine, costType) && ValidateAccountLineTypeId(validationErrors, csvLine, isMTMSelected, accountLineType) && ValidateDepartmentId(validationErrors, csvLine, departmentId) && ValidateCommodityAccount(validationErrors, csvLine, commodity) && ValidateCharterManager(validationErrors, csvLine, charterManagers) && ValidateSettlementCurrencyList(validationErrors, csvLine, settlementCurrencyList) && ValidateTransactionDocument(validationErrors, csvLine, searchResultTransactionDocument) && Validateprovinces(validationErrors, csvLine, provinces) && ValidateSectionId(validationErrors, csvLine, searchResultSectionId) && ValidateFxDeal(validationErrors, csvLine, searchResultFxDeal); if (isValidLine) { validatedAccountingImport.GoodData.LineNumber.Add(csvLine.LineNumber); } } foreach (var group in validationErrors.GroupBy(v => v.ErrorCode).ToList()) { var accountingImportReportData = new AccountingImportReportData { ErrorCode = group.Key, ErrorMessage = _errorMessages[group.Key], LineNumber = group.Select(item => item.AccountingCheckCsvLine.LineNumber).ToList() }; validatedAccountingImport.BlockerData.Add(accountingImportReportData); } return(validatedAccountingImport); }