Minor improvements and quality refactoring

This commit is contained in:
Mguy13 2023-01-04 19:47:37 +01:00
parent 9e2565d110
commit 4d6f9092eb
7 changed files with 16 additions and 11 deletions

4
.vscode/launch.json vendored
View file

@ -1,6 +1,8 @@
{
"version": "0.2.0",
"configurations": [
{
// Use IntelliSense to find out which attributes exist for C# debugging
@ -12,7 +14,7 @@
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/bin/Debug/net7.0/DemoApplication.dll",
"args": [],
"args": ["-f", "assets/input1.json", "-f", "assets/input2.json", "out.csv"],
"cwd": "${workspaceFolder}",
// For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
"console": "internalConsole",

View file

@ -1,6 +1,6 @@
{
"OrderId": 1,
"Description": " Order 123",
"Description": "Order 123",
"customer ID": 123,
"products": [{
"ProductId": "PID1",

View file

@ -1,6 +1,6 @@
{
"OrderId": 3,
"Description": " Order 11234",
"Description": "Order 11234",
"customer ID": 1134,
"products": [{
"ProductId": "PID3",

View file

@ -10,7 +10,7 @@ public sealed class OrderModel {
public OrderModel(OrderDto orderDTO) {
OrderId = orderDTO.OrderId;
OrderDescription = orderDTO.Description;
OrderDescription = orderDTO.Description.Trim();
CustomerId = orderDTO.CustomerId;
TotalPrice = orderDTO.Products.Select(product => product.Price).Sum();
}

View file

@ -8,6 +8,7 @@ class CsvFileWriter
public CsvFileWriter(FileInfo fileInfo) {
textWriter = new StreamWriter(fileInfo.FullName);
csvWriter = new CsvWriter(textWriter, CultureInfo.InvariantCulture);
}
@ -17,6 +18,7 @@ class CsvFileWriter
csvWriter.WriteField(orderModel.CustomerId);
csvWriter.WriteField(orderModel.TotalPrice);
csvWriter.Flush();
csvWriter.NextRecord();
}
}

View file

@ -30,14 +30,15 @@ namespace Configuration
var outputFileName = new FileInfo(args.Last());
// Remove last file-name arg, to get a more consistent array
args = args.SkipLast(1).ToArray();
var strippedArgs = args.SkipLast(1).ToArray();
string[] givenFlags = args.Where((value, index) => index % 2 == 0).ToArray();
string[] givenFilePaths = args.Where((value, index) => index % 2 != 0).ToArray();
string[] givenFlags = strippedArgs.Where((value, index) => index % 2 == 0).ToArray();
string[] givenFilePaths = strippedArgs.Where((value, index) => index % 2 != 0).ToArray();
try
{
// Assert only a single 'd' was passed
if ( givenFlags.Length == 1 && givenFlags[0].Equals("-d") ) {
string[] filesInDirectory = Directory.GetFiles(givenFilePaths[0]);
return new DemoApplicationConfiguration {
@ -45,6 +46,7 @@ namespace Configuration
JsonFilesInfo = filesInDirectory.Select(name => new FileInfo(name)).ToArray(),
};
}
// Assert only '-f' were passed
else if (givenFlags.All((string flag) => flag.Equals("-f"))) {
return new DemoApplicationConfiguration {
OutputFile = outputFileName,
@ -52,12 +54,11 @@ namespace Configuration
};
}
else {
throw new DemoApplicationConfigurationException("Must have either 1 flag that is '-d', of all flags must be '-f");
throw new DemoApplicationConfigurationException("Must have either 1 flag that is '-d', or all flags must be '-f");
}
}
catch (System.Exception e)
} catch (Exception)
{
Console.WriteLine("Something else went wrong");
Console.WriteLine("Something went wrong");
throw;
}
}