diff --git a/Controllers/APIController.cs b/Controllers/APIController.cs index bfef206..c0a2480 100644 --- a/Controllers/APIController.cs +++ b/Controllers/APIController.cs @@ -113,13 +113,13 @@ namespace CarCareTracker.Controllers return Json(response); } var vehicleRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicleId); - var result = vehicleRecords.Select(x => new ServiceRecordExportModel { Date = x.Date.ToShortDateString(), Description = x.Description, Cost = x.Cost.ToString(), Notes = x.Notes, Odometer = x.Mileage.ToString() }); + var result = vehicleRecords.Select(x => new GenericRecordExportModel { Date = x.Date.ToShortDateString(), Description = x.Description, Cost = x.Cost.ToString(), Notes = x.Notes, Odometer = x.Mileage.ToString(), ExtraFields = x.ExtraFields }); return Json(result); } [TypeFilter(typeof(CollaboratorFilter))] [HttpPost] [Route("/api/vehicle/servicerecords/add")] - public IActionResult AddServiceRecord(int vehicleId, ServiceRecordExportModel input) + public IActionResult AddServiceRecord(int vehicleId, GenericRecordExportModel input) { var response = new OperationResponse(); if (vehicleId == default) @@ -148,7 +148,8 @@ namespace CarCareTracker.Controllers Mileage = int.Parse(input.Odometer), Description = input.Description, Notes = string.IsNullOrWhiteSpace(input.Notes) ? "" : input.Notes, - Cost = decimal.Parse(input.Cost) + Cost = decimal.Parse(input.Cost), + ExtraFields = input.ExtraFields }; _serviceRecordDataAccess.SaveServiceRecordToVehicle(serviceRecord); if (_config.GetUserConfig(User).EnableAutoOdometerInsert) @@ -189,13 +190,13 @@ namespace CarCareTracker.Controllers return Json(response); } var vehicleRecords = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicleId); - var result = vehicleRecords.Select(x => new ServiceRecordExportModel { Date = x.Date.ToShortDateString(), Description = x.Description, Cost = x.Cost.ToString(), Notes = x.Notes, Odometer = x.Mileage.ToString() }); + var result = vehicleRecords.Select(x => new GenericRecordExportModel { Date = x.Date.ToShortDateString(), Description = x.Description, Cost = x.Cost.ToString(), Notes = x.Notes, Odometer = x.Mileage.ToString(), ExtraFields = x.ExtraFields }); return Json(result); } [TypeFilter(typeof(CollaboratorFilter))] [HttpPost] [Route("/api/vehicle/repairrecords/add")] - public IActionResult AddRepairRecord(int vehicleId, ServiceRecordExportModel input) + public IActionResult AddRepairRecord(int vehicleId, GenericRecordExportModel input) { var response = new OperationResponse(); if (vehicleId == default) @@ -224,7 +225,8 @@ namespace CarCareTracker.Controllers Mileage = int.Parse(input.Odometer), Description = input.Description, Notes = string.IsNullOrWhiteSpace(input.Notes) ? "" : input.Notes, - Cost = decimal.Parse(input.Cost) + Cost = decimal.Parse(input.Cost), + ExtraFields = input.ExtraFields }; _collisionRecordDataAccess.SaveCollisionRecordToVehicle(repairRecord); if (_config.GetUserConfig(User).EnableAutoOdometerInsert) @@ -265,13 +267,13 @@ namespace CarCareTracker.Controllers return Json(response); } var vehicleRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicleId); - var result = vehicleRecords.Select(x => new ServiceRecordExportModel { Date = x.Date.ToShortDateString(), Description = x.Description, Cost = x.Cost.ToString(), Notes = x.Notes, Odometer = x.Mileage.ToString() }); + var result = vehicleRecords.Select(x => new GenericRecordExportModel { Date = x.Date.ToShortDateString(), Description = x.Description, Cost = x.Cost.ToString(), Notes = x.Notes, Odometer = x.Mileage.ToString(), ExtraFields = x.ExtraFields }); return Json(result); } [TypeFilter(typeof(CollaboratorFilter))] [HttpPost] [Route("/api/vehicle/upgraderecords/add")] - public IActionResult AddUpgradeRecord(int vehicleId, ServiceRecordExportModel input) + public IActionResult AddUpgradeRecord(int vehicleId, GenericRecordExportModel input) { var response = new OperationResponse(); if (vehicleId == default) @@ -300,7 +302,8 @@ namespace CarCareTracker.Controllers Mileage = int.Parse(input.Odometer), Description = input.Description, Notes = string.IsNullOrWhiteSpace(input.Notes) ? "" : input.Notes, - Cost = decimal.Parse(input.Cost) + Cost = decimal.Parse(input.Cost), + ExtraFields = input.ExtraFields }; _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(upgradeRecord); if (_config.GetUserConfig(User).EnableAutoOdometerInsert) @@ -340,7 +343,7 @@ namespace CarCareTracker.Controllers Response.StatusCode = 400; return Json(response); } - var result = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId); + var result = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId).Select(x => new TaxRecordExportModel { Date = x.Date.ToShortDateString(), Description = x.Description, Cost = x.Cost.ToString(), Notes = x.Notes, ExtraFields = x.ExtraFields }); return Json(result); } [TypeFilter(typeof(CollaboratorFilter))] @@ -373,7 +376,8 @@ namespace CarCareTracker.Controllers Date = DateTime.Parse(input.Date), Description = input.Description, Notes = string.IsNullOrWhiteSpace(input.Notes) ? "" : input.Notes, - Cost = decimal.Parse(input.Cost) + Cost = decimal.Parse(input.Cost), + ExtraFields = input.ExtraFields }; _taxRecordDataAccess.SaveTaxRecordToVehicle(taxRecord); StaticHelper.NotifyAsync(_config.GetWebHookUrl(), vehicleId, User.Identity.Name, $"Added Tax Record via API - Description: {taxRecord.Description}"); @@ -424,7 +428,7 @@ namespace CarCareTracker.Controllers { vehicleRecords = _odometerLogic.AutoConvertOdometerRecord(vehicleRecords); } - var result = vehicleRecords.Select(x => new OdometerRecordExportModel { Date = x.Date.ToShortDateString(), InitialOdometer = x.InitialMileage.ToString(), Odometer = x.Mileage.ToString(), Notes = x.Notes }); + var result = vehicleRecords.Select(x => new OdometerRecordExportModel { Date = x.Date.ToShortDateString(), InitialOdometer = x.InitialMileage.ToString(), Odometer = x.Mileage.ToString(), Notes = x.Notes, ExtraFields = x.ExtraFields }); return Json(result); } [TypeFilter(typeof(CollaboratorFilter))] @@ -456,7 +460,8 @@ namespace CarCareTracker.Controllers Date = DateTime.Parse(input.Date), Notes = string.IsNullOrWhiteSpace(input.Notes) ? "" : input.Notes, InitialMileage = (string.IsNullOrWhiteSpace(input.InitialOdometer) || int.Parse(input.InitialOdometer) == default) ? _odometerLogic.GetLastOdometerRecordMileage(vehicleId, new List()) : int.Parse(input.InitialOdometer), - Mileage = int.Parse(input.Odometer) + Mileage = int.Parse(input.Odometer), + ExtraFields = input.ExtraFields }; _odometerRecordDataAccess.SaveOdometerRecordToVehicle(odometerRecord); StaticHelper.NotifyAsync(_config.GetWebHookUrl(), vehicleId, User.Identity.Name, $"Added Odometer Record via API - Mileage: {odometerRecord.Mileage.ToString()}"); @@ -494,7 +499,8 @@ namespace CarCareTracker.Controllers FuelEconomy = x.MilesPerGallon.ToString(), IsFillToFull = x.IsFillToFull.ToString(), MissedFuelUp = x.MissedFuelUp.ToString(), - Notes = x.Notes + Notes = x.Notes, + ExtraFields = x.ExtraFields }); return Json(result); } @@ -535,7 +541,8 @@ namespace CarCareTracker.Controllers IsFillToFull = bool.Parse(input.IsFillToFull), MissedFuelUp = bool.Parse(input.MissedFuelUp), Notes = string.IsNullOrWhiteSpace(input.Notes) ? "" : input.Notes, - Cost = decimal.Parse(input.Cost) + Cost = decimal.Parse(input.Cost), + ExtraFields = input.ExtraFields }; _gasRecordDataAccess.SaveGasRecordToVehicle(gasRecord); if (_config.GetUserConfig(User).EnableAutoOdometerInsert) diff --git a/Controllers/VehicleController.cs b/Controllers/VehicleController.cs index 4826abe..a9473ad 100644 --- a/Controllers/VehicleController.cs +++ b/Controllers/VehicleController.cs @@ -300,7 +300,7 @@ namespace CarCareTracker.Controllers var vehicleRecords = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId); if (vehicleRecords.Any()) { - var exportData = vehicleRecords.Select(x => new OdometerRecordCsvExportModel { + var exportData = vehicleRecords.Select(x => new OdometerRecordExportModel { Date = x.Date.ToShortDateString(), Notes = x.Notes, InitialOdometer = x.InitialMileage.ToString(), @@ -323,7 +323,7 @@ namespace CarCareTracker.Controllers var vehicleRecords = _supplyRecordDataAccess.GetSupplyRecordsByVehicleId(vehicleId); if (vehicleRecords.Any()) { - var exportData = vehicleRecords.Select(x => new SupplyRecordCsvExportModel + var exportData = vehicleRecords.Select(x => new SupplyRecordExportModel { Date = x.Date.ToShortDateString(), Description = x.Description, @@ -350,7 +350,7 @@ namespace CarCareTracker.Controllers var vehicleRecords = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId); if (vehicleRecords.Any()) { - var exportData = vehicleRecords.Select(x => new TaxRecordCsvExportModel { + var exportData = vehicleRecords.Select(x => new TaxRecordExportModel { Date = x.Date.ToShortDateString(), Description = x.Description, Cost = x.Cost.ToString("C"), @@ -373,7 +373,7 @@ namespace CarCareTracker.Controllers var vehicleRecords = _planRecordDataAccess.GetPlanRecordsByVehicleId(vehicleId); if (vehicleRecords.Any()) { - var exportData = vehicleRecords.Select(x => new PlanRecordCsvExportModel + var exportData = vehicleRecords.Select(x => new PlanRecordExportModel { DateCreated = x.DateCreated.ToString("G"), DateModified = x.DateModified.ToString("G"), @@ -401,7 +401,7 @@ namespace CarCareTracker.Controllers bool useMPG = _config.GetUserConfig(User).UseMPG; bool useUKMPG = _config.GetUserConfig(User).UseUKMPG; var convertedRecords = _gasHelper.GetGasRecordViewModels(vehicleRecords, useMPG, useUKMPG); - var exportData = convertedRecords.Select(x => new GasRecordCsvExportModel + var exportData = convertedRecords.Select(x => new GasRecordExportModel { Date = x.Date.ToString(), Cost = x.Cost.ToString(), diff --git a/Helper/StaticHelper.cs b/Helper/StaticHelper.cs index 0961a80..171de6b 100644 --- a/Helper/StaticHelper.cs +++ b/Helper/StaticHelper.cs @@ -320,21 +320,21 @@ namespace CarCareTracker.Helper _csv.NextRecord(); } } - public static void WriteOdometerRecordExportModel(CsvWriter _csv, IEnumerable genericRecords) + public static void WriteOdometerRecordExportModel(CsvWriter _csv, IEnumerable genericRecords) { var extraHeaders = genericRecords.SelectMany(x => x.ExtraFields).Select(y => y.Name).OrderBy(x => x).Distinct(); //write headers - _csv.WriteField(nameof(OdometerRecordCsvExportModel.Date)); - _csv.WriteField(nameof(OdometerRecordCsvExportModel.InitialOdometer)); - _csv.WriteField(nameof(OdometerRecordCsvExportModel.Odometer)); - _csv.WriteField(nameof(OdometerRecordCsvExportModel.Notes)); - _csv.WriteField(nameof(OdometerRecordCsvExportModel.Tags)); + _csv.WriteField(nameof(OdometerRecordExportModel.Date)); + _csv.WriteField(nameof(OdometerRecordExportModel.InitialOdometer)); + _csv.WriteField(nameof(OdometerRecordExportModel.Odometer)); + _csv.WriteField(nameof(OdometerRecordExportModel.Notes)); + _csv.WriteField(nameof(OdometerRecordExportModel.Tags)); foreach (string extraHeader in extraHeaders) { _csv.WriteField($"extrafield_{extraHeader}"); } _csv.NextRecord(); - foreach (OdometerRecordCsvExportModel genericRecord in genericRecords) + foreach (OdometerRecordExportModel genericRecord in genericRecords) { _csv.WriteField(genericRecord.Date); _csv.WriteField(genericRecord.InitialOdometer); @@ -349,21 +349,21 @@ namespace CarCareTracker.Helper _csv.NextRecord(); } } - public static void WriteTaxRecordExportModel(CsvWriter _csv, IEnumerable genericRecords) + public static void WriteTaxRecordExportModel(CsvWriter _csv, IEnumerable genericRecords) { var extraHeaders = genericRecords.SelectMany(x => x.ExtraFields).Select(y => y.Name).OrderBy(x => x).Distinct(); //write headers - _csv.WriteField(nameof(TaxRecordCsvExportModel.Date)); - _csv.WriteField(nameof(TaxRecordCsvExportModel.Description)); - _csv.WriteField(nameof(TaxRecordCsvExportModel.Cost)); - _csv.WriteField(nameof(TaxRecordCsvExportModel.Notes)); - _csv.WriteField(nameof(TaxRecordCsvExportModel.Tags)); + _csv.WriteField(nameof(TaxRecordExportModel.Date)); + _csv.WriteField(nameof(TaxRecordExportModel.Description)); + _csv.WriteField(nameof(TaxRecordExportModel.Cost)); + _csv.WriteField(nameof(TaxRecordExportModel.Notes)); + _csv.WriteField(nameof(TaxRecordExportModel.Tags)); foreach (string extraHeader in extraHeaders) { _csv.WriteField($"extrafield_{extraHeader}"); } _csv.NextRecord(); - foreach (TaxRecordCsvExportModel genericRecord in genericRecords) + foreach (TaxRecordExportModel genericRecord in genericRecords) { _csv.WriteField(genericRecord.Date); _csv.WriteField(genericRecord.Description); @@ -378,24 +378,24 @@ namespace CarCareTracker.Helper _csv.NextRecord(); } } - public static void WriteSupplyRecordExportModel(CsvWriter _csv, IEnumerable genericRecords) + public static void WriteSupplyRecordExportModel(CsvWriter _csv, IEnumerable genericRecords) { var extraHeaders = genericRecords.SelectMany(x => x.ExtraFields).Select(y => y.Name).OrderBy(x => x).Distinct(); //write headers - _csv.WriteField(nameof(SupplyRecordCsvExportModel.Date)); - _csv.WriteField(nameof(SupplyRecordCsvExportModel.PartNumber)); - _csv.WriteField(nameof(SupplyRecordCsvExportModel.PartSupplier)); - _csv.WriteField(nameof(SupplyRecordCsvExportModel.PartQuantity)); - _csv.WriteField(nameof(SupplyRecordCsvExportModel.Description)); - _csv.WriteField(nameof(SupplyRecordCsvExportModel.Notes)); - _csv.WriteField(nameof(SupplyRecordCsvExportModel.Cost)); - _csv.WriteField(nameof(SupplyRecordCsvExportModel.Tags)); + _csv.WriteField(nameof(SupplyRecordExportModel.Date)); + _csv.WriteField(nameof(SupplyRecordExportModel.PartNumber)); + _csv.WriteField(nameof(SupplyRecordExportModel.PartSupplier)); + _csv.WriteField(nameof(SupplyRecordExportModel.PartQuantity)); + _csv.WriteField(nameof(SupplyRecordExportModel.Description)); + _csv.WriteField(nameof(SupplyRecordExportModel.Notes)); + _csv.WriteField(nameof(SupplyRecordExportModel.Cost)); + _csv.WriteField(nameof(SupplyRecordExportModel.Tags)); foreach (string extraHeader in extraHeaders) { _csv.WriteField($"extrafield_{extraHeader}"); } _csv.NextRecord(); - foreach (SupplyRecordCsvExportModel genericRecord in genericRecords) + foreach (SupplyRecordExportModel genericRecord in genericRecords) { _csv.WriteField(genericRecord.Date); _csv.WriteField(genericRecord.PartNumber); @@ -413,24 +413,24 @@ namespace CarCareTracker.Helper _csv.NextRecord(); } } - public static void WritePlanRecordExportModel(CsvWriter _csv, IEnumerable genericRecords) + public static void WritePlanRecordExportModel(CsvWriter _csv, IEnumerable genericRecords) { var extraHeaders = genericRecords.SelectMany(x => x.ExtraFields).Select(y => y.Name).OrderBy(x => x).Distinct(); //write headers - _csv.WriteField(nameof(PlanRecordCsvExportModel.DateCreated)); - _csv.WriteField(nameof(PlanRecordCsvExportModel.DateModified)); - _csv.WriteField(nameof(PlanRecordCsvExportModel.Description)); - _csv.WriteField(nameof(PlanRecordCsvExportModel.Notes)); - _csv.WriteField(nameof(PlanRecordCsvExportModel.Type)); - _csv.WriteField(nameof(PlanRecordCsvExportModel.Priority)); - _csv.WriteField(nameof(PlanRecordCsvExportModel.Progress)); - _csv.WriteField(nameof(PlanRecordCsvExportModel.Cost)); + _csv.WriteField(nameof(PlanRecordExportModel.DateCreated)); + _csv.WriteField(nameof(PlanRecordExportModel.DateModified)); + _csv.WriteField(nameof(PlanRecordExportModel.Description)); + _csv.WriteField(nameof(PlanRecordExportModel.Notes)); + _csv.WriteField(nameof(PlanRecordExportModel.Type)); + _csv.WriteField(nameof(PlanRecordExportModel.Priority)); + _csv.WriteField(nameof(PlanRecordExportModel.Progress)); + _csv.WriteField(nameof(PlanRecordExportModel.Cost)); foreach (string extraHeader in extraHeaders) { _csv.WriteField($"extrafield_{extraHeader}"); } _csv.NextRecord(); - foreach (PlanRecordCsvExportModel genericRecord in genericRecords) + foreach (PlanRecordExportModel genericRecord in genericRecords) { _csv.WriteField(genericRecord.DateCreated); _csv.WriteField(genericRecord.DateModified); @@ -448,25 +448,25 @@ namespace CarCareTracker.Helper _csv.NextRecord(); } } - public static void WriteGasRecordExportModel(CsvWriter _csv, IEnumerable genericRecords) + public static void WriteGasRecordExportModel(CsvWriter _csv, IEnumerable genericRecords) { var extraHeaders = genericRecords.SelectMany(x => x.ExtraFields).Select(y => y.Name).OrderBy(x => x).Distinct(); //write headers - _csv.WriteField(nameof(GasRecordCsvExportModel.Date)); - _csv.WriteField(nameof(GasRecordCsvExportModel.Odometer)); - _csv.WriteField(nameof(GasRecordCsvExportModel.FuelConsumed)); - _csv.WriteField(nameof(GasRecordCsvExportModel.Cost)); - _csv.WriteField(nameof(GasRecordCsvExportModel.FuelEconomy)); - _csv.WriteField(nameof(GasRecordCsvExportModel.IsFillToFull)); - _csv.WriteField(nameof(GasRecordCsvExportModel.MissedFuelUp)); - _csv.WriteField(nameof(GasRecordCsvExportModel.Notes)); - _csv.WriteField(nameof(GasRecordCsvExportModel.Tags)); + _csv.WriteField(nameof(GasRecordExportModel.Date)); + _csv.WriteField(nameof(GasRecordExportModel.Odometer)); + _csv.WriteField(nameof(GasRecordExportModel.FuelConsumed)); + _csv.WriteField(nameof(GasRecordExportModel.Cost)); + _csv.WriteField(nameof(GasRecordExportModel.FuelEconomy)); + _csv.WriteField(nameof(GasRecordExportModel.IsFillToFull)); + _csv.WriteField(nameof(GasRecordExportModel.MissedFuelUp)); + _csv.WriteField(nameof(GasRecordExportModel.Notes)); + _csv.WriteField(nameof(GasRecordExportModel.Tags)); foreach (string extraHeader in extraHeaders) { _csv.WriteField($"extrafield_{extraHeader}"); } _csv.NextRecord(); - foreach (GasRecordCsvExportModel genericRecord in genericRecords) + foreach (GasRecordExportModel genericRecord in genericRecords) { _csv.WriteField(genericRecord.Date); _csv.WriteField(genericRecord.Odometer); diff --git a/Models/Shared/ImportModel.cs b/Models/Shared/ImportModel.cs index 9a4eded..4124713 100644 --- a/Models/Shared/ImportModel.cs +++ b/Models/Shared/ImportModel.cs @@ -38,12 +38,9 @@ public string Cost { get; set; } public string Notes { get; set; } public string Tags { get; set; } - } - public class SupplyRecordCsvExportModel: SupplyRecordExportModel - { public List ExtraFields { get; set; } } - public class ServiceRecordExportModel + public class GenericRecordExportModel { public string Date { get; set; } public string Odometer { get; set; } @@ -51,9 +48,6 @@ public string Notes { get; set; } public string Cost { get; set; } public string Tags { get; set; } - } - public class GenericRecordExportModel: ServiceRecordExportModel - { public List ExtraFields { get; set; } } public class OdometerRecordExportModel @@ -63,9 +57,6 @@ public string Odometer { get; set; } public string Notes { get; set; } public string Tags { get; set; } - } - public class OdometerRecordCsvExportModel: OdometerRecordExportModel - { public List ExtraFields { get; set; } } public class TaxRecordExportModel @@ -75,9 +66,6 @@ public string Notes { get; set; } public string Cost { get; set; } public string Tags { get; set; } - } - public class TaxRecordCsvExportModel: TaxRecordExportModel - { public List ExtraFields { get; set; } } public class GasRecordExportModel @@ -91,9 +79,6 @@ public string MissedFuelUp { get; set; } public string Notes { get; set; } public string Tags { get; set; } - } - public class GasRecordCsvExportModel: GasRecordExportModel - { public List ExtraFields { get; set; } } public class ReminderExportModel @@ -115,9 +100,6 @@ public string Priority { get; set; } public string Progress { get; set; } public string Cost { get; set; } - } - public class PlanRecordCsvExportModel: PlanRecordExportModel - { public List ExtraFields { get; set; } } }