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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 4
0
 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);
        }