public AccountStatementImport SaveWithTran(AccountStatementImport accountStatementImport) { //if (accountStatementImport.Id == 0) //{ //Enregistrement var asi = _accountStatementImportRepository.CreateWithTran(accountStatementImport); accountStatementImport = _accountStatementImportRepository.GetById(asi.Id); //Enregistrement du fichier //chemin d'enregistrement //string dir = _parameterService.GetImportFileDir(accountStatementImport.User.Id); //if (String.IsNullOrEmpty(dir)) //{ // throw new Exception($"Veuillez configurer un dossier de sauvegarde des relevés dans Rérérentiel/utilisateur avant de poursuivre."); //} //dir = dir + accountStatementImport.BankAgency.BankSubFamily.LabelShort + "\\"; //accountStatementImport.File.DiscardBufferedData(); //accountStatementImport.File.BaseStream.Seek(0, SeekOrigin.Begin); //using (var writer = new StreamWriter(dir + accountStatementImport.FileImport, append: false, encoding: Encoding.GetEncoding(1252))) //{ // writer.Write(accountStatementImport.File.ReadToEnd()); //} _accountStatementImportRepository.CreateWithTran(accountStatementImport); //} //else // _accountStatementImportRepository.Update(accountStatementImport); return(accountStatementImport); }
public async Task <IActionResult> UploadFile(int idUser, AsiForUploadDto asifuDto) { var user = await _userService.GetByIdAsync(idUser); if (user == null) { return(BadRequest("Could not find user")); } var file = asifuDto.File; AsifGroupByAccounts asifGroupByAccounts = new AsifGroupByAccounts(); if (file.Length > 0) { try { StreamReader csvreader = new StreamReader(file.OpenReadStream(), Encoding.GetEncoding(1252)); AccountStatementImport accountStatementImport = _accountStatementImportService.ImportFile(csvreader, user); asifGroupByAccounts = _accountStatementImportFileService.GetListDto(accountStatementImport.Id); } catch (Exception e) { ModelState.AddModelError("Erreur lors du chargement de fichier", e.Message.ToString()); return(BadRequest(ModelState)); } } return(Ok(asifGroupByAccounts)); }
private AccountStatementImport Create(BankAgency bankAgency, StreamReader reader, User user) { //Bank bank = _bankService.GetById((int)enumBankFamily); AccountStatementImport accountStatementImport = new AccountStatementImport { IdBankAgency = bankAgency.Id, FileImport = String.Format("{0}_{1}.csv", DateTime.Now.ToString("yyyyMMdd"), bankAgency.BankSubFamily.LabelShort), DateImport = DateTime.Now, File = reader, IdUser = user.Id, User = user }; return(accountStatementImport); }
public abstract List <AccountStatementImportFile> ImportFile(StreamReader reader, AccountStatementImport accountStatementImport, User user);
public override List <AccountStatementImportFile> ImportFile(StreamReader reader, AccountStatementImport accountStatementImport, User user) { reader.DiscardBufferedData(); reader.BaseStream.Seek(0, SeekOrigin.Begin); List <AccountStatementImportFile> accountStatementImportFiles = new List <AccountStatementImportFile>(); int currentLineNumber = 0; while (!reader.EndOfStream) { var line = reader.ReadLine(); var values = line.Split(';'); AccountStatementImportFile asif = _asifService.InitForImport(user.IdUserGroup); asif.Id = currentLineNumber; asif.IdImport = accountStatementImport.Id; asif.DateImport = DateTime.Now; asif.Reference = null; asif.LabelOperation = values[2].ToString(); asif.LabelOperationWork = _asifService.GetOperationLabelWork(asif.LabelOperation); //asif.LabelOperationWork = asif.LabelOperationWork.ToString().Replace(" ", ""); if (values[3].ToString() != string.Empty) { asif.AmountOperation = -double.Parse(values[3].Replace(",", ".").ToString(), CultureInfo.InvariantCulture); asif.IdMovement = (int)EnumMovement.Debit; } else if (values[4].ToString() != string.Empty) { asif.AmountOperation = double.Parse(values[4].Replace(",", ".").ToString(), CultureInfo.InvariantCulture); asif.IdMovement = (int)EnumMovement.Credit; } asif.DateIntegration = Convert.ToDateTime(values[1].ToString()); asif.Account = _referentialService.AccountService.GetByNumber(values[0].ToString()); asif.IdAccount = asif.Account.Id; OperationMethod operationMethod = _referentialService.OperationMethodService.GetOperationMethodByFileLabel(asif.LabelOperationWork, EnumBankFamily.CreditAgricole); asif.IdOperationMethod = operationMethod.Id; //Date Operation switch (asif.IdOperationMethod) { case (int)EnumOperationMethod.PaiementCarte: asif.DateOperation = GetDateOperationByFileLabel(asif.LabelOperationWork, asif.DateIntegration.Value, EnumOperationMethod.PaiementCarte); break; case (int)EnumOperationMethod.RetraitCarte: asif.DateOperation = GetDateOperationByFileLabel(asif.LabelOperationWork, asif.DateIntegration.Value, EnumOperationMethod.RetraitCarte); break; } //Determination de operationDetail (operation+addresse) à partir des keywords OperationDetail operationDetail = _asifService.GetOperationDetail(user.Id, asif); if (operationDetail != null) { asif.IdOperation = operationDetail.Operation.Id; asif.IdOperationType = operationDetail.Operation.IdOperationType; asif.IdOperationTypeFamily = operationDetail.Operation.OperationType.IdOperationTypeFamily; asif.IdOperationDetail = operationDetail.Id; asif.OperationLabelTemp = operationDetail.Operation.Label; asif.OperationKeywordTemp = operationDetail.KeywordOperation; asif.PlaceLabelTemp = operationDetail.KeywordPlace; asif.PlaceKeywordTemp = operationDetail.KeywordPlace; } else { //Determination de operationDetail (operation+addresse) à partir du label brut OperationType operationType = _referentialService.OperationTypeService.GetUnknown(user.IdUserGroup); asif.IdOperationType = operationType.Id; asif.IdOperationTypeFamily = operationType.IdOperationTypeFamily; //rechercher les labels et keyword sur libellé brut OperationInformation operationInformation = GetOperationInformationByParsingLabel(user.Id, asif.LabelOperation, asif.LabelOperationWork, operationMethod); if (operationInformation != null) { //asif.IdOperation = operationInformation.IdOperation; asif.OperationLabelTemp = operationInformation.OperationLabel; asif.OperationKeywordTemp = operationInformation.OperationKeyword; asif.PlaceKeywordTemp = operationInformation.PlaceKeyword; asif.PlaceLabelTemp = operationInformation.PlaceLabel; } } accountStatementImportFiles.Add(asif); } return(accountStatementImportFiles); }