diff --git a/Controllers/VehicleController.cs b/Controllers/VehicleController.cs index 8ceddee..3ee0326 100644 --- a/Controllers/VehicleController.cs +++ b/Controllers/VehicleController.cs @@ -143,7 +143,8 @@ namespace CarCareTracker.Controllers } return Json($"/{fileNameToExport}"); } - } else if (mode == ImportMode.RepairRecord) + } + else if (mode == ImportMode.RepairRecord) { var fileNameToExport = $"temp/{Guid.NewGuid()}.csv"; var fullExportFilePath = _fileHelper.GetFullFilePath(fileNameToExport, false); @@ -160,7 +161,8 @@ namespace CarCareTracker.Controllers } return Json($"/{fileNameToExport}"); } - } else if (mode == ImportMode.UpgradeRecord) + } + else if (mode == ImportMode.UpgradeRecord) { var fileNameToExport = $"temp/{Guid.NewGuid()}.csv"; var fullExportFilePath = _fileHelper.GetFullFilePath(fileNameToExport, false); @@ -178,6 +180,42 @@ namespace CarCareTracker.Controllers return Json($"/{fileNameToExport}"); } } + else if (mode == ImportMode.TaxRecord) { + var fileNameToExport = $"temp/{Guid.NewGuid()}.csv"; + var fullExportFilePath = _fileHelper.GetFullFilePath(fileNameToExport, false); + var vehicleRecords = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId); + if (vehicleRecords.Any()) + { + var exportData = vehicleRecords.Select(x => new TaxRecordExportModel { Date = x.Date.ToShortDateString(), Description = x.Description, Cost = x.Cost.ToString("C"), Notes = x.Notes }); + using (var writer = new StreamWriter(fullExportFilePath)) + { + using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) + { + csv.WriteRecords(exportData); + } + } + return Json($"/{fileNameToExport}"); + } + } + else if (mode == ImportMode.GasRecord) + { + var fileNameToExport = $"temp/{Guid.NewGuid()}.csv"; + var fullExportFilePath = _fileHelper.GetFullFilePath(fileNameToExport, false); + var vehicleRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicleId); + bool useMPG = bool.Parse(_config[nameof(UserConfig.UseMPG)]); + bool useUKMPG = bool.Parse(_config[nameof(UserConfig.UseUKMPG)]); + vehicleRecords = vehicleRecords.OrderBy(x => x.Date).ThenBy(x => x.Mileage).ToList(); + var convertedRecords = _gasHelper.GetGasRecordViewModels(vehicleRecords, useMPG, useUKMPG); + var exportData = convertedRecords.Select(x => new GasRecordExportModel { Date = x.Date.ToString(), Cost = x.Cost.ToString(), FuelConsumed = x.Gallons.ToString(), FuelEconomy = x.MilesPerGallon.ToString(), Odometer = x.Mileage.ToString() }); + using (var writer = new StreamWriter(fullExportFilePath)) + { + using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) + { + csv.WriteRecords(exportData); + } + } + return Json($"/{fileNameToExport}"); + } return Json(false); } [HttpPost] diff --git a/Models/ImportModel.cs b/Models/ImportModel.cs index b59cd28..2055d3b 100644 --- a/Models/ImportModel.cs +++ b/Models/ImportModel.cs @@ -23,6 +23,14 @@ public string Notes { get; set; } public string Cost { get; set; } } + public class TaxRecordExportModel + { + public string Date { get; set; } + public string Odometer { get; set; } + public string Description { get; set; } + public string Notes { get; set; } + public string Cost { get; set; } + } public class GasRecordExportModel { public string Date { get; set; } diff --git a/Views/Vehicle/_Gas.cshtml b/Views/Vehicle/_Gas.cshtml index 368bb42..823631c 100644 --- a/Views/Vehicle/_Gas.cshtml +++ b/Views/Vehicle/_Gas.cshtml @@ -52,6 +52,7 @@
} else { diff --git a/Views/Vehicle/_TaxRecords.cshtml b/Views/Vehicle/_TaxRecords.cshtml index 5c795b1..35b1021 100644 --- a/Views/Vehicle/_TaxRecords.cshtml +++ b/Views/Vehicle/_TaxRecords.cshtml @@ -19,7 +19,8 @@ Toggle Dropdown }