init commit - rudimentary parsing format for me bank statements
This commit is contained in:
commit
8e78069fca
5 changed files with 91 additions and 0 deletions
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
.idea/
|
||||
bin/
|
||||
obj/
|
||||
test.csv
|
6
Bank.cs
Normal file
6
Bank.cs
Normal file
|
@ -0,0 +1,6 @@
|
|||
namespace BunyMuny {
|
||||
public enum Bank {
|
||||
ME,
|
||||
NAB
|
||||
}
|
||||
}
|
55
Program.cs
Normal file
55
Program.cs
Normal file
|
@ -0,0 +1,55 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using CsvHelper;
|
||||
using BunyMuny;
|
||||
|
||||
namespace BunyMuny {
|
||||
class Program {
|
||||
static int Main(string[] args) {
|
||||
Bank bank = Bank.ME;
|
||||
var statements = new List<Statement>();
|
||||
|
||||
using (var sr = new StreamReader("/mnt/code/cs/bunymuny/test.csv")) {
|
||||
using (var csv = new CsvReader(sr, CultureInfo.InvariantCulture)) {
|
||||
csv.Read();
|
||||
csv.ReadHeader();
|
||||
// get the first line of the CSV file (the header) as a string
|
||||
string header = csv.Parser.Context.RawRecord;
|
||||
if (header == null) {
|
||||
Console.WriteLine("File is empty 0uo");
|
||||
return 1;
|
||||
}
|
||||
else if (header == "Date,Description,Debits and credits,Balance") {
|
||||
bank = Bank.ME;
|
||||
}
|
||||
else if (header == "Whatever NAB uses I guess") {
|
||||
bank = Bank.NAB;
|
||||
}
|
||||
|
||||
while (csv.Read()) {
|
||||
switch (bank) {
|
||||
case Bank.ME:
|
||||
double value = double.Parse(csv.GetField("Debits and credits").TrimStart().Replace("$", ""));
|
||||
statements.Add(new Statement() {
|
||||
Date = DateTime.ParseExact(csv.GetField("Date"), "dd/MM/yyyy", CultureInfo.InvariantCulture),
|
||||
Description = csv.GetField("Description"),
|
||||
Category = "Unknown",
|
||||
Value = value
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var statement in statements) {
|
||||
Console.WriteLine(statement);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
14
Statement.cs
Normal file
14
Statement.cs
Normal file
|
@ -0,0 +1,14 @@
|
|||
using System;
|
||||
|
||||
namespace BunyMuny {
|
||||
public class Statement {
|
||||
public DateTime Date;
|
||||
public string Description;
|
||||
public double Value;
|
||||
public string Category;
|
||||
|
||||
public override string ToString() {
|
||||
return $"${Math.Abs(Value)} {(Value < 0 ? "to" : "from")} {Description} on {Date.ToString("MMM d yyyy")}";
|
||||
}
|
||||
}
|
||||
}
|
12
bunymuny.csproj
Normal file
12
bunymuny.csproj
Normal file
|
@ -0,0 +1,12 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CsvHelper" Version="15.0.6" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
Loading…
Reference in a new issue