-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
116 lines (97 loc) · 4.95 KB
/
Program.cs
File metadata and controls
116 lines (97 loc) · 4.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
using InterestCalculator.Services;
namespace InterestCalculator;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("╔══════════════════════════════════════════════════════════════╗");
Console.WriteLine("║ Interest Calculator - Borrowing Analysis ║");
Console.WriteLine("╚══════════════════════════════════════════════════════════════╝");
Console.WriteLine();
// Determine file paths
var basePath = AppDomain.CurrentDomain.BaseDirectory;
var borrowingsFile = Path.Combine(basePath, "borrowing.csv");
var parametersFile = Path.Combine(basePath, "parameters.csv");
var outputDirectory = Path.Combine(basePath, "output");
// Allow command line overrides
if (args.Length >= 1)
borrowingsFile = args[0];
if (args.Length >= 2)
parametersFile = args[1];
if (args.Length >= 3)
outputDirectory = args[2];
Console.WriteLine($"Borrowings file: {borrowingsFile}");
Console.WriteLine($"Parameters file: {parametersFile}");
Console.WriteLine($"Output directory: {outputDirectory}");
Console.WriteLine();
// Validate input files exist
if (!File.Exists(borrowingsFile))
{
Console.WriteLine($"Error: Borrowings file not found: {borrowingsFile}");
Console.WriteLine();
Console.WriteLine("Please create a borrowing.csv file with the following format:");
Console.WriteLine("amount,start_date,end_date,interest_rate,commission");
Console.WriteLine("10000.00,2024-01-01,2024-12-31,0.05,0.01");
Environment.Exit(1);
}
if (!File.Exists(parametersFile))
{
Console.WriteLine($"Error: Parameters file not found: {parametersFile}");
Console.WriteLine();
Console.WriteLine("Please create a parameters.csv file with the following format:");
Console.WriteLine("interest_rate,commission,start_date,end_date");
Console.WriteLine("0.05,0.01,2024-01-01,2024-06-30");
Environment.Exit(1);
}
// Initialize services
var csvReader = new CsvReaderService();
var calculator = new InterestCalculatorService();
var reportGenerator = new MarkdownGeneratorService();
try
{
// Read input files
Console.WriteLine("Reading borrowing data...");
var borrowings = csvReader.ReadBorrowings(borrowingsFile);
Console.WriteLine($" Found {borrowings.Count} borrowing(s)");
Console.WriteLine("Reading parameters data...");
var parameters = csvReader.ReadParameters(parametersFile);
Console.WriteLine($" Found {parameters.Count} parameter period(s)");
Console.WriteLine();
if (borrowings.Count == 0)
{
Console.WriteLine("No borrowings to process. Exiting.");
Environment.Exit(0);
}
// Process each borrowing
Console.WriteLine("Processing borrowings...");
Console.WriteLine(new string('─', 60));
for (int i = 0; i < borrowings.Count; i++)
{
var borrowing = borrowings[i];
var borrowingNumber = i + 1;
Console.WriteLine($"\nBorrowing {borrowingNumber}:");
Console.WriteLine($" Amount: {borrowing.Amount:N2}");
Console.WriteLine($" Period: {borrowing.StartDate:yyyy-MM-dd} to {borrowing.EndDate:yyyy-MM-dd}");
// Calculate
var calculation = calculator.Calculate(borrowing, parameters, borrowingNumber);
Console.WriteLine($" Periods: {calculation.Periods.Count}");
Console.WriteLine($" Total Interest: {calculation.TotalInterest:N2}");
Console.WriteLine($" Total Commission: {calculation.TotalCommission:N2}");
Console.WriteLine($" Total Cost: {calculation.TotalCost:N2}");
Console.WriteLine($" Final Amount: {calculation.FinalAmount:N2}");
// Generate report
var reportPath = reportGenerator.SaveReport(calculation, outputDirectory);
Console.WriteLine($" Report saved: {reportPath}");
}
Console.WriteLine();
Console.WriteLine(new string('─', 60));
Console.WriteLine($"✓ Successfully processed {borrowings.Count} borrowing(s)");
Console.WriteLine($"✓ Reports saved to: {outputDirectory}");
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
Environment.Exit(1);
}
}
}