Пример #1
0
        public ActionResult Import(string destinationAccountId, string filename, string unclassifiedAccountId, Dictionary<string, ImportRowOptions> importRowMapping)
        {
            filename = filename.Replace("@", "/");

            string name = Path.GetFileName(filename);

            var directoryName = Path.GetDirectoryName(filename);
            if ( string.IsNullOrEmpty(directoryName) )
            {
                _directoryExplorer.NavigateToRoot();
            }
            else
            {
                string directory = directoryName.Replace('\\', '/');

                if ( !_directoryExplorer.NavigateTo(directory) )
                    return new HttpNotFoundResult("A directory named " + directory + " could not be found");
            }

            using ( var transaction = new TransactionScope() )
            {
                var import = new Import(_importDetector);
                import.Open(_directoryExplorer.GetFilename(name));

                var source = _transactionImportContext.General[destinationAccountId];
                var unclassifiedAccount = (unclassifiedAccountId == null)
                                          	? null
                                          	: _transactionImportContext.General[unclassifiedAccountId];

                var transactionImport = _transactionImportContext.CreateImport(source, unclassifiedDestination: unclassifiedAccount);
                var transactions = transactionImport.Process(import, importRowMapping).ToList();
                _transactionImportContext.Repository.Save(transactionImport.Result, transactions);

                transaction.Complete();

                return PartialView(transactions);
            }
        }
Пример #2
0
        public ActionResult Preview(string filename)
        {
            var actualFilename = filename.Replace("@", "/");

            string name = Path.GetFileName(actualFilename);

            var directoryName = Path.GetDirectoryName(actualFilename);
            if (string.IsNullOrEmpty(directoryName))
            {
                _directoryExplorer.NavigateToRoot();
            }
            else
            {
                string directory = directoryName.Replace('\\', '/');

                if ( !_directoryExplorer.NavigateTo(directory) )
                    return new HttpNotFoundResult("A directory named " + directory + " could not be found");
            }

            var import = new Import(_importDetector);
            var importDetected = import.Open(_directoryExplorer.GetFilename(name));
            if (!importDetected)
            {
                return View("CouldNotDetectFileType");
            }

            var model = new ImportPreview
            {
                FileName = filename,
                Accounts = _transactionImportContext.General.OrderBy(x => x.Type).ThenBy(x => x.Name),
                Import = import,
                AccountIdentifiers = _transactionImportContext.Patterns
            };

            return View(model);
        }
Пример #3
0
        public void CanNotImportBadFile()
        {
            var wp = new WestpacCsvImportDetector();
            var asb = new AsbOrbitFastTrackCsvImportDetector();
            var wpVisa = new WestpacVisaCsvImportDetector();
            var asbVisa = new AsbVisaCsvImportDetector();

            var importDetector = new ImportDetector(new IImportDetector[] { wp, asb, wpVisa, asbVisa });
            var import = new Import(importDetector);
            Assert.That(import.Open("bad.txt", Stream.Null), Is.False);
        }
Пример #4
0
        public void CanImportArbitrary()
        {
            var wp = new WestpacCsvImportDetector();
            var asb = new AsbOrbitFastTrackCsvImportDetector();
            var wpVisa = new WestpacVisaCsvImportDetector();
            var asbVisa = new AsbVisaCsvImportDetector();

            var importDetector = new ImportDetector(new IImportDetector[] { wp, asb, wpVisa, asbVisa});
            var import = new Import(importDetector);

            Assert.That(import.Open(_wpFilename), Is.True);
            Assert.That(import.ImportType, Is.EqualTo(wp.Name));
            Assert.That(import.GetPropertyNames(), Is.EqualTo(wp.GetPropertyNames()));

            var data = import.GetData().ToArray();
            Assert.That(data, Is.Not.Empty);
            Assert.That(data.Last().Id, Is.EqualTo("A00_0000_0000000_000-12Aug12/18"));

            import = new Import(importDetector);
            Assert.That(import.Open(_asbFilename), Is.True);
            Assert.That(import.ImportType, Is.EqualTo(asb.Name));
            Assert.That(import.GetPropertyNames(), Is.EqualTo(asb.GetPropertyNames()));
            data = import.GetData().ToArray();
            Assert.That(data, Is.Not.Empty);
            Assert.That(data.Last().Id, Is.EqualTo("asb/2012082501"));

            import = new Import(importDetector);
            Assert.That(import.Open(_asbVisaFilename), Is.True);
            Assert.That(import.ImportType, Is.EqualTo(asbVisa.Name));
            Assert.That(import.GetPropertyNames(), Is.EqualTo(asbVisa.GetPropertyNames()));
            data = import.GetData().ToArray();
            Assert.That(data, Is.Not.Empty);
            Assert.That(data.Last().Id, Is.EqualTo("visa/2012101505"));

            import = new Import(importDetector);
            Assert.That(import.Open(_wpVisaFilename), Is.True);
            Assert.That(import.ImportType, Is.EqualTo(wpVisa.Name));
            Assert.That(import.GetPropertyNames(), Is.EqualTo(wpVisa.GetPropertyNames()));
            data = import.GetData().ToArray();
            Assert.That(data, Is.Not.Empty);
            Assert.That(data.Last().Id, Is.EqualTo("AXXXX_XXXX_XXXX_9623-01Apr12/64"));
        }