From 3d43cddd1fd4ebabeeb732b2263b06d428ef19ed Mon Sep 17 00:00:00 2001 From: Eric Gullickson <16152721+ericgullickson@users.noreply.github.com> Date: Mon, 4 Aug 2025 21:15:34 -0500 Subject: [PATCH] Data model work --- Controllers/APIController.cs | 213 +------------- Controllers/MigrationController.cs | 36 --- Controllers/Vehicle/ImportController.cs | 53 +--- Controllers/Vehicle/PlanController.cs | 16 -- Controllers/Vehicle/RepairController.cs | 131 --------- Controllers/Vehicle/ReportController.cs | 58 +--- Controllers/VehicleController.cs | 133 --------- Enum/ImportMode.cs | 1 - .../Litedb/CollisionRecordDataAccess.cs | 54 ---- .../Postgres/CollisionRecordDataAccess.cs | 161 ----------- .../Interfaces/ICollisionRecordDataAccess.cs | 13 - Helper/ReportHelper.cs | 26 -- Helper/StaticHelper.cs | 18 -- Logic/VehicleLogic.cs | 34 +-- Models/API/VehicleInfo.cs | 2 - Models/Collision/CollisionRecord.cs | 6 - Models/Collision/CollisionRecordInput.cs | 35 --- Models/Report/CostMakeUpForVehicle.cs | 1 - Models/Report/CostTableForVehicle.cs | 9 +- Models/Shared/VehicleRecords.cs | 1 - Models/UserConfig.cs | 4 +- Program.cs | 2 - Views/API/Index.cshtml | 12 - Views/Home/_ExtraFields.cshtml | 1 - Views/Home/_Kiosk.cshtml | 2 - Views/Home/_KioskPlan.cshtml | 1 - Views/Home/_Settings.cshtml | 5 - .../Collision/_CollisionRecordModal.cshtml | 116 -------- .../Collision/_CollisionRecords.cshtml | 207 -------------- Views/Vehicle/Index.cshtml | 8 - Views/Vehicle/Plan/_PlanRecordItem.cshtml | 1 - Views/Vehicle/Plan/_PlanRecordModal.cshtml | 1 - .../Plan/_PlanRecordTemplateEditModal.cshtml | 1 - .../Plan/_PlanRecordTemplateModal.cshtml | 1 - .../Service/_ServiceRecordModal.cshtml | 1 - Views/Vehicle/Service/_ServiceRecords.cshtml | 1 - Views/Vehicle/Supply/_SupplyStore.cshtml | 6 - .../Upgrade/_UpgradeRecordModal.cshtml | 1 - Views/Vehicle/Upgrade/_UpgradeRecords.cshtml | 1 - Views/Vehicle/_BulkDataImporter.cshtml | 2 - Views/Vehicle/_CostMakeUpReport.cshtml | 3 - Views/Vehicle/_CostTableReport.cshtml | 4 - Views/Vehicle/_Report.cshtml | 1 - Views/Vehicle/_Stickers.cshtml | 1 - Views/Vehicle/_VehicleHistory.cshtml | 2 - docs/data-model-prompt.md | 1 + docs/generic-record.md | 122 ++++++++ docs/maintenance-records.md | 75 ----- docs/record-architecture.md | 268 ++++++++++++++++++ wwwroot/defaults/en_US.json | 2 +- wwwroot/js/collisionrecord.js | 171 ----------- wwwroot/js/shared.js | 23 -- wwwroot/js/vehicle.js | 15 - 53 files changed, 408 insertions(+), 1655 deletions(-) delete mode 100644 Controllers/Vehicle/RepairController.cs delete mode 100644 External/Implementations/Litedb/CollisionRecordDataAccess.cs delete mode 100644 External/Implementations/Postgres/CollisionRecordDataAccess.cs delete mode 100644 External/Interfaces/ICollisionRecordDataAccess.cs delete mode 100644 Models/Collision/CollisionRecord.cs delete mode 100644 Models/Collision/CollisionRecordInput.cs delete mode 100644 Views/Vehicle/Collision/_CollisionRecordModal.cshtml delete mode 100644 Views/Vehicle/Collision/_CollisionRecords.cshtml create mode 100644 docs/data-model-prompt.md create mode 100644 docs/generic-record.md delete mode 100644 docs/maintenance-records.md create mode 100644 docs/record-architecture.md delete mode 100644 wwwroot/js/collisionrecord.js diff --git a/Controllers/APIController.cs b/Controllers/APIController.cs index c6209e4..c2963c4 100644 --- a/Controllers/APIController.cs +++ b/Controllers/APIController.cs @@ -16,7 +16,6 @@ namespace MotoVaultPro.Controllers private readonly INoteDataAccess _noteDataAccess; private readonly IServiceRecordDataAccess _serviceRecordDataAccess; private readonly IGasRecordDataAccess _gasRecordDataAccess; - private readonly ICollisionRecordDataAccess _collisionRecordDataAccess; private readonly ITaxRecordDataAccess _taxRecordDataAccess; private readonly IReminderRecordDataAccess _reminderRecordDataAccess; private readonly IUpgradeRecordDataAccess _upgradeRecordDataAccess; @@ -41,7 +40,6 @@ namespace MotoVaultPro.Controllers INoteDataAccess noteDataAccess, IServiceRecordDataAccess serviceRecordDataAccess, IGasRecordDataAccess gasRecordDataAccess, - ICollisionRecordDataAccess collisionRecordDataAccess, ITaxRecordDataAccess taxRecordDataAccess, IReminderRecordDataAccess reminderRecordDataAccess, IUpgradeRecordDataAccess upgradeRecordDataAccess, @@ -63,7 +61,6 @@ namespace MotoVaultPro.Controllers _noteDataAccess = noteDataAccess; _serviceRecordDataAccess = serviceRecordDataAccess; _gasRecordDataAccess = gasRecordDataAccess; - _collisionRecordDataAccess = collisionRecordDataAccess; _taxRecordDataAccess = taxRecordDataAccess; _reminderRecordDataAccess = reminderRecordDataAccess; _upgradeRecordDataAccess = upgradeRecordDataAccess; @@ -284,12 +281,12 @@ namespace MotoVaultPro.Controllers if (!validType || !validPriority || !validProgress) { Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, values for Type(ServiceRecord, RepairRecord, UpgradeRecord), Priority(Critical, Normal, Low), or Progress(Backlog, InProgress, Testing) is invalid.")); + return Json(OperationResponse.Failed("Input object invalid, values for Type(ServiceRecord, UpgradeRecord), Priority(Critical, Normal, Low), or Progress(Backlog, InProgress, Testing) is invalid.")); } - if (parsedType != ImportMode.ServiceRecord && parsedType != ImportMode.RepairRecord && parsedType != ImportMode.UpgradeRecord) + if (parsedType != ImportMode.ServiceRecord && parsedType != ImportMode.UpgradeRecord) { Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, Type can only ServiceRecord, RepairRecord, or UpgradeRecord")); + return Json(OperationResponse.Failed("Input object invalid, Type can only ServiceRecord or UpgradeRecord")); } if (parsedProgress == PlanProgress.Done) { @@ -383,12 +380,12 @@ namespace MotoVaultPro.Controllers if (!validType || !validPriority || !validProgress) { Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, values for Type(ServiceRecord, RepairRecord, UpgradeRecord), Priority(Critical, Normal, Low), or Progress(Backlog, InProgress, Testing) is invalid.")); + return Json(OperationResponse.Failed("Input object invalid, values for Type(ServiceRecord, UpgradeRecord), Priority(Critical, Normal, Low), or Progress(Backlog, InProgress, Testing) is invalid.")); } - if (parsedType != ImportMode.ServiceRecord && parsedType != ImportMode.RepairRecord && parsedType != ImportMode.UpgradeRecord) + if (parsedType != ImportMode.ServiceRecord && parsedType != ImportMode.UpgradeRecord) { Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, Type can only ServiceRecord, RepairRecord, or UpgradeRecord")); + return Json(OperationResponse.Failed("Input object invalid, Type can only ServiceRecord or UpgradeRecord")); } if (parsedProgress == PlanProgress.Done) { @@ -635,203 +632,6 @@ namespace MotoVaultPro.Controllers } } #endregion - #region RepairRecord - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - [Route("/api/vehicle/repairrecords")] - public IActionResult RepairRecords(int vehicleId, MethodParameter parameters) - { - if (vehicleId == default) - { - var response = OperationResponse.Failed("Must provide a valid vehicle id"); - Response.StatusCode = 400; - return Json(response); - } - var vehicleRecords = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicleId); - if (parameters.Id != default) - { - vehicleRecords.RemoveAll(x => x.Id != parameters.Id); - } - if (!string.IsNullOrWhiteSpace(parameters.StartDate) && DateTime.TryParse(parameters.StartDate, out DateTime startDate)) - { - vehicleRecords.RemoveAll(x => x.Date < startDate); - } - if (!string.IsNullOrWhiteSpace(parameters.EndDate) && DateTime.TryParse(parameters.EndDate, out DateTime endDate)) - { - vehicleRecords.RemoveAll(x => x.Date > endDate); - } - if (!string.IsNullOrWhiteSpace(parameters.Tags)) - { - var tagsFilter = parameters.Tags.Split(' ').Distinct(); - vehicleRecords.RemoveAll(x => !x.Tags.Any(y => tagsFilter.Contains(y))); - } - var result = vehicleRecords.Select(x => new GenericRecordExportModel { Id = x.Id.ToString(), Date = x.Date.ToShortDateString(), Description = x.Description, Cost = x.Cost.ToString(), Notes = x.Notes, Odometer = x.Mileage.ToString(), ExtraFields = x.ExtraFields, Files = x.Files, Tags = string.Join(' ', x.Tags) }); - if (_config.GetInvariantApi() || Request.Headers.ContainsKey("culture-invariant")) - { - return Json(result, StaticHelper.GetInvariantOption()); - } - else - { - return Json(result); - } - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - [Route("/api/vehicle/repairrecords/add")] - [Consumes("application/json")] - public IActionResult AddRepairRecordJson(int vehicleId, [FromBody] GenericRecordExportModel input) => AddRepairRecord(vehicleId, input); - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - [Route("/api/vehicle/repairrecords/add")] - public IActionResult AddRepairRecord(int vehicleId, GenericRecordExportModel input) - { - if (vehicleId == default) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Must provide a valid vehicle id")); - } - if (string.IsNullOrWhiteSpace(input.Date) || - string.IsNullOrWhiteSpace(input.Description) || - string.IsNullOrWhiteSpace(input.Odometer) || - string.IsNullOrWhiteSpace(input.Cost)) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, Date, Description, Odometer, and Cost cannot be empty.")); - } - if (input.Files == null) - { - input.Files = new List(); - } - if (input.ExtraFields == null) - { - input.ExtraFields = new List(); - } - try - { - var repairRecord = new CollisionRecord() - { - VehicleId = vehicleId, - Date = DateTime.Parse(input.Date), - Mileage = int.Parse(input.Odometer), - Description = input.Description, - Notes = string.IsNullOrWhiteSpace(input.Notes) ? "" : input.Notes, - Cost = decimal.Parse(input.Cost), - ExtraFields = input.ExtraFields, - Files = input.Files, - Tags = string.IsNullOrWhiteSpace(input.Tags) ? new List() : input.Tags.Split(' ').Distinct().ToList() - }; - _collisionRecordDataAccess.SaveCollisionRecordToVehicle(repairRecord); - if (_config.GetUserConfig(User).EnableAutoOdometerInsert) - { - var odometerRecord = new OdometerRecord() - { - VehicleId = vehicleId, - Date = DateTime.Parse(input.Date), - Notes = string.IsNullOrWhiteSpace(input.Notes) ? "" : input.Notes, - Mileage = int.Parse(input.Odometer) - }; - _odometerLogic.AutoInsertOdometerRecord(odometerRecord); - } - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGenericRecord(repairRecord, "repairrecord.add.api", User.Identity.Name)); - - return Json(OperationResponse.Succeed("Repair Record Added")); - } - catch (Exception ex) - { - Response.StatusCode = 500; - return Json(OperationResponse.Failed(ex.Message)); - } - } - [HttpDelete] - [Route("/api/vehicle/repairrecords/delete")] - public IActionResult DeleteRepairRecord(int id) - { - var existingRecord = _collisionRecordDataAccess.GetCollisionRecordById(id); - if (existingRecord == null || existingRecord.Id == default) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Invalid Record Id")); - } - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId)) - { - Response.StatusCode = 401; - return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle.")); - } - //restore any requisitioned supplies. - if (existingRecord.RequisitionHistory.Any()) - { - _vehicleLogic.RestoreSupplyRecordsByUsage(existingRecord.RequisitionHistory, existingRecord.Description); - } - var result = _collisionRecordDataAccess.DeleteCollisionRecordById(existingRecord.Id); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGenericRecord(existingRecord, "repairrecord.delete.api", User.Identity.Name)); - } - return Json(OperationResponse.Conditional(result, "Repair Record Deleted")); - } - [HttpPut] - [Route("/api/vehicle/repairrecords/update")] - [Consumes("application/json")] - public IActionResult UpdateRepairRecordJson([FromBody] GenericRecordExportModel input) => UpdateRepairRecord(input); - [HttpPut] - [Route("/api/vehicle/repairrecords/update")] - public IActionResult UpdateRepairRecord(GenericRecordExportModel input) - { - if (string.IsNullOrWhiteSpace(input.Id) || - string.IsNullOrWhiteSpace(input.Date) || - string.IsNullOrWhiteSpace(input.Description) || - string.IsNullOrWhiteSpace(input.Odometer) || - string.IsNullOrWhiteSpace(input.Cost)) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, Id, Date, Description, Odometer, and Cost cannot be empty.")); - } - if (input.Files == null) - { - input.Files = new List(); - } - if (input.ExtraFields == null) - { - input.ExtraFields = new List(); - } - try - { - //retrieve existing record - var existingRecord = _collisionRecordDataAccess.GetCollisionRecordById(int.Parse(input.Id)); - if (existingRecord != null && existingRecord.Id == int.Parse(input.Id)) - { - //check if user has access to the vehicleId - if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId)) - { - Response.StatusCode = 401; - return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle.")); - } - existingRecord.Date = DateTime.Parse(input.Date); - existingRecord.Mileage = int.Parse(input.Odometer); - existingRecord.Description = input.Description; - existingRecord.Notes = string.IsNullOrWhiteSpace(input.Notes) ? "" : input.Notes; - existingRecord.Cost = decimal.Parse(input.Cost); - existingRecord.ExtraFields = input.ExtraFields; - existingRecord.Files = input.Files; - existingRecord.Tags = string.IsNullOrWhiteSpace(input.Tags) ? new List() : input.Tags.Split(' ').Distinct().ToList(); - _collisionRecordDataAccess.SaveCollisionRecordToVehicle(existingRecord); - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGenericRecord(existingRecord, "repairrecord.update.api", User.Identity.Name)); - } - else - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Invalid Record Id")); - } - return Json(OperationResponse.Succeed("Repair Record Updated")); - } - catch (Exception ex) - { - Response.StatusCode = 500; - return Json(OperationResponse.Failed(ex.Message)); - } - } - #endregion #region UpgradeRecord [TypeFilter(typeof(CollaboratorFilter))] [HttpGet] @@ -1984,7 +1784,6 @@ namespace MotoVaultPro.Controllers foreach(Vehicle vehicle in vehicles) { vehicleDocuments.AddRange(_serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicle.Id).SelectMany(x => x.Files).Select(y=>Path.GetFileName(y.Location))); - vehicleDocuments.AddRange(_collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicle.Id).SelectMany(x => x.Files).Select(y => Path.GetFileName(y.Location))); vehicleDocuments.AddRange(_upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicle.Id).SelectMany(x => x.Files).Select(y => Path.GetFileName(y.Location))); vehicleDocuments.AddRange(_taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicle.Id).SelectMany(x => x.Files).Select(y => Path.GetFileName(y.Location))); vehicleDocuments.AddRange(_gasRecordDataAccess.GetGasRecordsByVehicleId(vehicle.Id).SelectMany(x => x.Files).Select(y => Path.GetFileName(y.Location))); diff --git a/Controllers/MigrationController.cs b/Controllers/MigrationController.cs index 3cc107c..5a88d86 100644 --- a/Controllers/MigrationController.cs +++ b/Controllers/MigrationController.cs @@ -37,7 +37,6 @@ namespace MotoVaultPro.Controllers { "CREATE SCHEMA IF NOT EXISTS app", "CREATE TABLE IF NOT EXISTS app.vehicles (id INT GENERATED BY DEFAULT AS IDENTITY primary key, data jsonb not null)", - "CREATE TABLE IF NOT EXISTS app.collisionrecords (id INT GENERATED BY DEFAULT AS IDENTITY primary key, vehicleId INT not null, data jsonb not null)", "CREATE TABLE IF NOT EXISTS app.upgraderecords (id INT GENERATED BY DEFAULT AS IDENTITY primary key, vehicleId INT not null, data jsonb not null)", "CREATE TABLE IF NOT EXISTS app.servicerecords (id INT GENERATED BY DEFAULT AS IDENTITY primary key, vehicleId INT not null, data jsonb not null)", "CREATE TABLE IF NOT EXISTS app.gasrecords (id INT GENERATED BY DEFAULT AS IDENTITY primary key, vehicleId INT not null, data jsonb not null)", @@ -79,7 +78,6 @@ namespace MotoVaultPro.Controllers InitializeTables(pgDataSource); //pull records var vehicles = new List(); - var repairrecords = new List(); var upgraderecords = new List(); var servicerecords = new List(); @@ -118,23 +116,6 @@ namespace MotoVaultPro.Controllers table.Upsert(vehicle); }; } - cmd = $"SELECT data FROM app.collisionrecords"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - repairrecords.Add(JsonSerializer.Deserialize(reader["data"] as string)); - } - } - foreach (var record in repairrecords) - { - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("collisionrecords"); - table.Upsert(record); - }; - } cmd = $"SELECT data FROM app.upgraderecords"; using (var ctext = pgDataSource.CreateCommand(cmd)) { @@ -444,7 +425,6 @@ namespace MotoVaultPro.Controllers InitializeTables(pgDataSource); //pull records var vehicles = new List(); - var repairrecords = new List(); var upgraderecords = new List(); var servicerecords = new List(); @@ -481,22 +461,6 @@ namespace MotoVaultPro.Controllers } } using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("collisionrecords"); - repairrecords = table.FindAll().ToList(); - }; - foreach (var record in repairrecords) - { - string cmd = $"INSERT INTO app.collisionrecords (id, vehicleId, data) VALUES(@id, @vehicleId, CAST(@data AS jsonb)); SELECT setval('app.collisionrecords_id_seq', (SELECT MAX(id) from app.collisionrecords));"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", record.Id); - ctext.Parameters.AddWithValue("vehicleId", record.VehicleId); - ctext.Parameters.AddWithValue("data", JsonSerializer.Serialize(record)); - ctext.ExecuteNonQuery(); - } - } - using (var db = new LiteDatabase(fullFileName)) { var table = db.GetCollection("servicerecords"); servicerecords = table.FindAll().ToList(); diff --git a/Controllers/Vehicle/ImportController.cs b/Controllers/Vehicle/ImportController.cs index b454a59..d03ca13 100644 --- a/Controllers/Vehicle/ImportController.cs +++ b/Controllers/Vehicle/ImportController.cs @@ -28,7 +28,6 @@ namespace MotoVaultPro.Controllers switch (mode) { case ImportMode.ServiceRecord: - case ImportMode.RepairRecord: case ImportMode.UpgradeRecord: { var exportData = new List { new GenericRecordExportModel @@ -148,7 +147,7 @@ namespace MotoVaultPro.Controllers DateCreated = DateTime.Now.ToString(), DateModified = DateTime.Now.ToString(), Description = "Test", - Type = ImportMode.RepairRecord.ToString(), + Type = ImportMode.ServiceRecord.ToString(), Priority = PlanPriority.Normal.ToString(), Progress = PlanProgress.Testing.ToString(), Cost = 123.45M.ToString("C"), @@ -227,31 +226,6 @@ namespace MotoVaultPro.Controllers return Json($"/{fileNameToExport}"); } } - else if (mode == ImportMode.RepairRecord) - { - var vehicleRecords = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicleId); - if (vehicleRecords.Any()) - { - var exportData = vehicleRecords.Select(x => new GenericRecordExportModel - { - Date = x.Date.ToShortDateString(), - Description = x.Description, - Cost = x.Cost.ToString("C"), - Notes = x.Notes, - Odometer = x.Mileage.ToString(), - Tags = string.Join(" ", x.Tags), - ExtraFields = x.ExtraFields - }); - using (var writer = new StreamWriter(fullExportFilePath)) - { - using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) - { - StaticHelper.WriteGenericRecordExportModel(csv, exportData); - } - } - return Json($"/{fileNameToExport}"); - } - } else if (mode == ImportMode.UpgradeRecord) { var vehicleRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicleId); @@ -568,31 +542,6 @@ namespace MotoVaultPro.Controllers }; _planRecordDataAccess.SavePlanRecordToVehicle(convertedRecord); } - else if (mode == ImportMode.RepairRecord) - { - var convertedRecord = new CollisionRecord() - { - VehicleId = vehicleId, - Date = parsedDate, - Mileage = decimal.ToInt32(decimal.Parse(importModel.Odometer, NumberStyles.Any)), - Description = string.IsNullOrWhiteSpace(importModel.Description) ? $"Repair Record on {parsedDate.ToShortDateString()}" : importModel.Description, - Notes = string.IsNullOrWhiteSpace(importModel.Notes) ? "" : importModel.Notes, - Cost = decimal.Parse(importModel.Cost, NumberStyles.Any), - Tags = string.IsNullOrWhiteSpace(importModel.Tags) ? [] : importModel.Tags.Split(" ").ToList(), - ExtraFields = importModel.ExtraFields.Any() ? importModel.ExtraFields.Select(x => new ExtraField { Name = x.Key, Value = x.Value, IsRequired = requiredExtraFields.Contains(x.Key) }).ToList() : new List() - }; - _collisionRecordDataAccess.SaveCollisionRecordToVehicle(convertedRecord); - if (_config.GetUserConfig(User).EnableAutoOdometerInsert) - { - _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord - { - Date = convertedRecord.Date, - VehicleId = convertedRecord.VehicleId, - Mileage = convertedRecord.Mileage, - Notes = $"Auto Insert From Repair Record via CSV Import. {convertedRecord.Notes}" - }); - } - } else if (mode == ImportMode.UpgradeRecord) { var convertedRecord = new UpgradeRecord() diff --git a/Controllers/Vehicle/PlanController.cs b/Controllers/Vehicle/PlanController.cs index 3e44733..ed5395c 100644 --- a/Controllers/Vehicle/PlanController.cs +++ b/Controllers/Vehicle/PlanController.cs @@ -224,22 +224,6 @@ namespace MotoVaultPro.Controllers }; _serviceRecordDataAccess.SaveServiceRecordToVehicle(newRecord); } - else if (existingRecord.ImportMode == ImportMode.RepairRecord) - { - var newRecord = new CollisionRecord() - { - VehicleId = existingRecord.VehicleId, - Date = DateTime.Now.Date, - Mileage = odometer, - Description = existingRecord.Description, - Cost = existingRecord.Cost, - Notes = existingRecord.Notes, - Files = existingRecord.Files, - RequisitionHistory = existingRecord.RequisitionHistory, - ExtraFields = existingRecord.ExtraFields - }; - _collisionRecordDataAccess.SaveCollisionRecordToVehicle(newRecord); - } else if (existingRecord.ImportMode == ImportMode.UpgradeRecord) { var newRecord = new UpgradeRecord() diff --git a/Controllers/Vehicle/RepairController.cs b/Controllers/Vehicle/RepairController.cs deleted file mode 100644 index 463b547..0000000 --- a/Controllers/Vehicle/RepairController.cs +++ /dev/null @@ -1,131 +0,0 @@ -using MotoVaultPro.Filter; -using MotoVaultPro.Helper; -using MotoVaultPro.Models; -using Microsoft.AspNetCore.Mvc; - -namespace MotoVaultPro.Controllers -{ - public partial class VehicleController - { - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - public IActionResult GetCollisionRecordsByVehicleId(int vehicleId) - { - var result = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicleId); - bool _useDescending = _config.GetUserConfig(User).UseDescending; - if (_useDescending) - { - result = result.OrderByDescending(x => x.Date).ThenByDescending(x => x.Mileage).ToList(); - } - else - { - result = result.OrderBy(x => x.Date).ThenBy(x => x.Mileage).ToList(); - } - return PartialView("Collision/_CollisionRecords", result); - } - [HttpPost] - public IActionResult SaveCollisionRecordToVehicleId(CollisionRecordInput collisionRecord) - { - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), collisionRecord.VehicleId)) - { - return Json(false); - } - if (collisionRecord.Id == default && _config.GetUserConfig(User).EnableAutoOdometerInsert) - { - _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord - { - Date = DateTime.Parse(collisionRecord.Date), - VehicleId = collisionRecord.VehicleId, - Mileage = collisionRecord.Mileage, - Notes = $"Auto Insert From Repair Record: {collisionRecord.Description}" - }); - } - //move files from temp. - collisionRecord.Files = collisionRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList(); - if (collisionRecord.Supplies.Any()) - { - collisionRecord.RequisitionHistory.AddRange(RequisitionSupplyRecordsByUsage(collisionRecord.Supplies, DateTime.Parse(collisionRecord.Date), collisionRecord.Description)); - if (collisionRecord.CopySuppliesAttachment) - { - collisionRecord.Files.AddRange(GetSuppliesAttachments(collisionRecord.Supplies)); - } - } - if (collisionRecord.DeletedRequisitionHistory.Any()) - { - _vehicleLogic.RestoreSupplyRecordsByUsage(collisionRecord.DeletedRequisitionHistory, collisionRecord.Description); - } - //push back any reminders - if (collisionRecord.ReminderRecordId.Any()) - { - foreach (int reminderRecordId in collisionRecord.ReminderRecordId) - { - PushbackRecurringReminderRecordWithChecks(reminderRecordId, DateTime.Parse(collisionRecord.Date), collisionRecord.Mileage); - } - } - var result = _collisionRecordDataAccess.SaveCollisionRecordToVehicle(collisionRecord.ToCollisionRecord()); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGenericRecord(collisionRecord.ToCollisionRecord(), collisionRecord.Id == default ? "repairrecord.add" : "repairrecord.update", User.Identity.Name)); - } - return Json(result); - } - [HttpGet] - public IActionResult GetAddCollisionRecordPartialView() - { - return PartialView("Collision/_CollisionRecordModal", new CollisionRecordInput() { ExtraFields = _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.RepairRecord).ExtraFields }); - } - [HttpGet] - public IActionResult GetCollisionRecordForEditById(int collisionRecordId) - { - var result = _collisionRecordDataAccess.GetCollisionRecordById(collisionRecordId); - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId)) - { - return Redirect("/Error/Unauthorized"); - } - //convert to Input object. - var convertedResult = new CollisionRecordInput - { - Id = result.Id, - Cost = result.Cost, - Date = result.Date.ToShortDateString(), - Description = result.Description, - Mileage = result.Mileage, - Notes = result.Notes, - VehicleId = result.VehicleId, - Files = result.Files, - Tags = result.Tags, - RequisitionHistory = result.RequisitionHistory, - ExtraFields = StaticHelper.AddExtraFields(result.ExtraFields, _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.RepairRecord).ExtraFields) - }; - return PartialView("Collision/_CollisionRecordModal", convertedResult); - } - private bool DeleteCollisionRecordWithChecks(int collisionRecordId) - { - var existingRecord = _collisionRecordDataAccess.GetCollisionRecordById(collisionRecordId); - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId)) - { - return false; - } - //restore any requisitioned supplies. - if (existingRecord.RequisitionHistory.Any()) - { - _vehicleLogic.RestoreSupplyRecordsByUsage(existingRecord.RequisitionHistory, existingRecord.Description); - } - var result = _collisionRecordDataAccess.DeleteCollisionRecordById(existingRecord.Id); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGenericRecord(existingRecord, "repairrecord.delete", User.Identity.Name)); - } - return result; - } - [HttpPost] - public IActionResult DeleteCollisionRecordById(int collisionRecordId) - { - var result = DeleteCollisionRecordWithChecks(collisionRecordId); - return Json(result); - } - } -} diff --git a/Controllers/Vehicle/ReportController.cs b/Controllers/Vehicle/ReportController.cs index 697bf10..a70e321 100644 --- a/Controllers/Vehicle/ReportController.cs +++ b/Controllers/Vehicle/ReportController.cs @@ -17,7 +17,6 @@ namespace MotoVaultPro.Controllers var vehicleRecords = _vehicleLogic.GetVehicleRecords(vehicleId); var serviceRecords = vehicleRecords.ServiceRecords; var gasRecords = vehicleRecords.GasRecords; - var collisionRecords = vehicleRecords.CollisionRecords; var taxRecords = vehicleRecords.TaxRecords; var upgradeRecords = vehicleRecords.UpgradeRecords; var odometerRecords = vehicleRecords.OdometerRecords; @@ -30,14 +29,12 @@ namespace MotoVaultPro.Controllers { ServiceRecordSum = serviceRecords.Sum(x => x.Cost), GasRecordSum = gasRecords.Sum(x => x.Cost), - CollisionRecordSum = collisionRecords.Sum(x => x.Cost), TaxRecordSum = taxRecords.Sum(x => x.Cost), UpgradeRecordSum = upgradeRecords.Sum(x => x.Cost) }; //get costbymonth List allCosts = StaticHelper.GetBaseLineCosts(); allCosts.AddRange(_reportHelper.GetServiceRecordSum(serviceRecords, 0)); - allCosts.AddRange(_reportHelper.GetRepairRecordSum(collisionRecords, 0)); allCosts.AddRange(_reportHelper.GetUpgradeRecordSum(upgradeRecords, 0)); allCosts.AddRange(_reportHelper.GetGasRecordSum(gasRecords, 0)); allCosts.AddRange(_reportHelper.GetTaxRecordSum(taxRecords, 0)); @@ -59,10 +56,6 @@ namespace MotoVaultPro.Controllers { viewModel.AvailableMetrics.Add(ImportMode.ServiceRecord); } - if (visibleTabs.Contains(ImportMode.RepairRecord) || collisionRecords.Any()) - { - viewModel.AvailableMetrics.Add(ImportMode.RepairRecord); - } if (visibleTabs.Contains(ImportMode.UpgradeRecord) || upgradeRecords.Any()) { viewModel.AvailableMetrics.Add(ImportMode.UpgradeRecord); @@ -91,10 +84,6 @@ namespace MotoVaultPro.Controllers { numbersArray.Add(serviceRecords.Min(x => x.Date.Year)); } - if (collisionRecords.Any()) - { - numbersArray.Add(collisionRecords.Min(x => x.Date.Year)); - } if (gasRecords.Any()) { numbersArray.Add(gasRecords.Min(x => x.Date.Year)); @@ -198,7 +187,6 @@ namespace MotoVaultPro.Controllers var serviceRecords = vehicleRecords.ServiceRecords; var gasRecords = vehicleRecords.GasRecords; - var collisionRecords = vehicleRecords.CollisionRecords; var taxRecords = vehicleRecords.TaxRecords; var upgradeRecords = vehicleRecords.UpgradeRecords; var odometerRecords = vehicleRecords.OdometerRecords; @@ -207,7 +195,6 @@ namespace MotoVaultPro.Controllers { serviceRecords.RemoveAll(x => x.Date.Year != year); gasRecords.RemoveAll(x => x.Date.Year != year); - collisionRecords.RemoveAll(x => x.Date.Year != year); taxRecords.RemoveAll(x => x.Date.Year != year); upgradeRecords.RemoveAll(x => x.Date.Year != year); odometerRecords.RemoveAll(x => x.Date.Year != year); @@ -252,14 +239,12 @@ namespace MotoVaultPro.Controllers { var serviceRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicleId); var gasRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicleId); - var collisionRecords = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicleId); var taxRecords = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId); var upgradeRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicleId); if (year != default) { serviceRecords.RemoveAll(x => x.Date.Year != year); gasRecords.RemoveAll(x => x.Date.Year != year); - collisionRecords.RemoveAll(x => x.Date.Year != year); taxRecords.RemoveAll(x => x.Date.Year != year); upgradeRecords.RemoveAll(x => x.Date.Year != year); } @@ -267,7 +252,6 @@ namespace MotoVaultPro.Controllers { ServiceRecordSum = serviceRecords.Sum(x => x.Cost), GasRecordSum = gasRecords.Sum(x => x.Cost), - CollisionRecordSum = collisionRecords.Sum(x => x.Cost), TaxRecordSum = taxRecords.Sum(x => x.Cost), UpgradeRecordSum = upgradeRecords.Sum(x => x.Cost) }; @@ -280,7 +264,6 @@ namespace MotoVaultPro.Controllers var vehicleRecords = _vehicleLogic.GetVehicleRecords(vehicleId); var serviceRecords = vehicleRecords.ServiceRecords; var gasRecords = vehicleRecords.GasRecords; - var collisionRecords = vehicleRecords.CollisionRecords; var taxRecords = vehicleRecords.TaxRecords; var upgradeRecords = vehicleRecords.UpgradeRecords; var odometerRecords = vehicleRecords.OdometerRecords; @@ -288,7 +271,6 @@ namespace MotoVaultPro.Controllers { serviceRecords.RemoveAll(x => x.Date.Year != year); gasRecords.RemoveAll(x => x.Date.Year != year); - collisionRecords.RemoveAll(x => x.Date.Year != year); taxRecords.RemoveAll(x => x.Date.Year != year); upgradeRecords.RemoveAll(x => x.Date.Year != year); odometerRecords.RemoveAll(x => x.Date.Year != year); @@ -298,12 +280,11 @@ namespace MotoVaultPro.Controllers var vehicleData = _dataAccess.GetVehicleById(vehicleId); var userConfig = _config.GetUserConfig(User); var totalDistanceTraveled = maxMileage - minMileage; - var totalDays = _vehicleLogic.GetOwnershipDays(vehicleData.PurchaseDate, vehicleData.SoldDate, year, serviceRecords, collisionRecords, gasRecords, upgradeRecords, odometerRecords, taxRecords); + var totalDays = _vehicleLogic.GetOwnershipDays(vehicleData.PurchaseDate, vehicleData.SoldDate, year, serviceRecords, gasRecords, upgradeRecords, odometerRecords, taxRecords); var viewModel = new CostTableForVehicle { ServiceRecordSum = serviceRecords.Sum(x => x.Cost), GasRecordSum = gasRecords.Sum(x => x.Cost), - CollisionRecordSum = collisionRecords.Sum(x => x.Cost), TaxRecordSum = taxRecords.Sum(x => x.Cost), UpgradeRecordSum = upgradeRecords.Sum(x => x.Cost), TotalDistance = totalDistanceTraveled, @@ -341,17 +322,6 @@ namespace MotoVaultPro.Controllers Files = x.Files })); } - if (exportTabs.Contains(ImportMode.RepairRecord)) - { - var records = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicleId).Where(x => x.Files.Any()); - attachmentData.AddRange(records.Select(x => new GenericReportModel - { - DataType = ImportMode.RepairRecord, - Date = x.Date, - Odometer = x.Mileage, - Files = x.Files - })); - } if (exportTabs.Contains(ImportMode.UpgradeRecord)) { var records = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicleId).Where(x => x.Files.Any()); @@ -462,7 +432,6 @@ namespace MotoVaultPro.Controllers { vehicleRecords.OdometerRecords.RemoveAll(x => x.Tags.Any(y => reportParameter.Tags.Contains(y))); vehicleRecords.ServiceRecords.RemoveAll(x => x.Tags.Any(y => reportParameter.Tags.Contains(y))); - vehicleRecords.CollisionRecords.RemoveAll(x => x.Tags.Any(y => reportParameter.Tags.Contains(y))); vehicleRecords.UpgradeRecords.RemoveAll(x => x.Tags.Any(y => reportParameter.Tags.Contains(y))); vehicleRecords.TaxRecords.RemoveAll(x => x.Tags.Any(y => reportParameter.Tags.Contains(y))); gasViewModels.RemoveAll(x => x.Tags.Any(y => reportParameter.Tags.Contains(y))); @@ -472,7 +441,6 @@ namespace MotoVaultPro.Controllers { vehicleRecords.OdometerRecords.RemoveAll(x => !x.Tags.Any(y => reportParameter.Tags.Contains(y))); vehicleRecords.ServiceRecords.RemoveAll(x => !x.Tags.Any(y => reportParameter.Tags.Contains(y))); - vehicleRecords.CollisionRecords.RemoveAll(x => !x.Tags.Any(y => reportParameter.Tags.Contains(y))); vehicleRecords.UpgradeRecords.RemoveAll(x => !x.Tags.Any(y => reportParameter.Tags.Contains(y))); vehicleRecords.TaxRecords.RemoveAll(x => !x.Tags.Any(y => reportParameter.Tags.Contains(y))); gasViewModels.RemoveAll(x => !x.Tags.Any(y => reportParameter.Tags.Contains(y))); @@ -492,7 +460,6 @@ namespace MotoVaultPro.Controllers //remove all records with dates after the end date and dates before the start date. vehicleRecords.OdometerRecords.RemoveAll(x => x.Date.Date > endDate || x.Date.Date < startDate); vehicleRecords.ServiceRecords.RemoveAll(x => x.Date.Date > endDate || x.Date.Date < startDate); - vehicleRecords.CollisionRecords.RemoveAll(x => x.Date.Date > endDate || x.Date.Date < startDate); vehicleRecords.UpgradeRecords.RemoveAll(x => x.Date.Date > endDate || x.Date.Date < startDate); vehicleRecords.TaxRecords.RemoveAll(x => x.Date.Date > endDate || x.Date.Date < startDate); gasViewModels.RemoveAll(x => DateTime.Parse(x.Date).Date > endDate || DateTime.Parse(x.Date).Date < startDate); @@ -541,7 +508,7 @@ namespace MotoVaultPro.Controllers string preferredFuelMileageUnit = _config.GetUserConfig(User).PreferredGasMileageUnit; vehicleHistory.DistanceUnit = vehicleHistory.VehicleData.UseHours ? "h" : useMPG ? "mi." : "km"; vehicleHistory.TotalGasCost = gasViewModels.Sum(x => x.Cost); - vehicleHistory.TotalCost = vehicleRecords.ServiceRecords.Sum(x => x.Cost) + vehicleRecords.CollisionRecords.Sum(x => x.Cost) + vehicleRecords.UpgradeRecords.Sum(x => x.Cost) + vehicleRecords.TaxRecords.Sum(x => x.Cost); + vehicleHistory.TotalCost = vehicleRecords.ServiceRecords.Sum(x => x.Cost) + vehicleRecords.UpgradeRecords.Sum(x => x.Cost) + vehicleRecords.TaxRecords.Sum(x => x.Cost); if (distanceTraveled != default) { vehicleHistory.DistanceTraveled = distanceTraveled.ToString("N0"); @@ -579,17 +546,6 @@ namespace MotoVaultPro.Controllers RequisitionHistory = x.RequisitionHistory })); //repair records - reportData.AddRange(vehicleRecords.CollisionRecords.Select(x => new GenericReportModel - { - Date = x.Date, - Odometer = x.Mileage, - Description = x.Description, - Notes = x.Notes, - Cost = x.Cost, - DataType = ImportMode.RepairRecord, - ExtraFields = x.ExtraFields, - RequisitionHistory = x.RequisitionHistory - })); reportData.AddRange(vehicleRecords.UpgradeRecords.Select(x => new GenericReportModel { Date = x.Date, @@ -670,11 +626,6 @@ namespace MotoVaultPro.Controllers var serviceRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicleId); allCosts.AddRange(_reportHelper.GetServiceRecordSum(serviceRecords, year)); } - if (selectedMetrics.Contains(ImportMode.RepairRecord)) - { - var repairRecords = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicleId); - allCosts.AddRange(_reportHelper.GetRepairRecordSum(repairRecords, year)); - } if (selectedMetrics.Contains(ImportMode.UpgradeRecord)) { var upgradeRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicleId); @@ -713,11 +664,6 @@ namespace MotoVaultPro.Controllers var serviceRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicleId); allCosts.AddRange(_reportHelper.GetServiceRecordSum(serviceRecords, year, true)); } - if (selectedMetrics.Contains(ImportMode.RepairRecord)) - { - var repairRecords = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicleId); - allCosts.AddRange(_reportHelper.GetRepairRecordSum(repairRecords, year, true)); - } if (selectedMetrics.Contains(ImportMode.UpgradeRecord)) { var upgradeRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicleId); diff --git a/Controllers/VehicleController.cs b/Controllers/VehicleController.cs index 353fb01..9321b43 100644 --- a/Controllers/VehicleController.cs +++ b/Controllers/VehicleController.cs @@ -19,7 +19,6 @@ namespace MotoVaultPro.Controllers private readonly INoteDataAccess _noteDataAccess; private readonly IServiceRecordDataAccess _serviceRecordDataAccess; private readonly IGasRecordDataAccess _gasRecordDataAccess; - private readonly ICollisionRecordDataAccess _collisionRecordDataAccess; private readonly ITaxRecordDataAccess _taxRecordDataAccess; private readonly IReminderRecordDataAccess _reminderRecordDataAccess; private readonly IUpgradeRecordDataAccess _upgradeRecordDataAccess; @@ -47,7 +46,6 @@ namespace MotoVaultPro.Controllers INoteDataAccess noteDataAccess, IServiceRecordDataAccess serviceRecordDataAccess, IGasRecordDataAccess gasRecordDataAccess, - ICollisionRecordDataAccess collisionRecordDataAccess, ITaxRecordDataAccess taxRecordDataAccess, IReminderRecordDataAccess reminderRecordDataAccess, IUpgradeRecordDataAccess upgradeRecordDataAccess, @@ -71,7 +69,6 @@ namespace MotoVaultPro.Controllers _reportHelper = reportHelper; _serviceRecordDataAccess = serviceRecordDataAccess; _gasRecordDataAccess = gasRecordDataAccess; - _collisionRecordDataAccess = collisionRecordDataAccess; _taxRecordDataAccess = taxRecordDataAccess; _reminderRecordDataAccess = reminderRecordDataAccess; _upgradeRecordDataAccess = upgradeRecordDataAccess; @@ -151,7 +148,6 @@ namespace MotoVaultPro.Controllers //Delete all service records, gas records, notes, etc. var result = _gasRecordDataAccess.DeleteAllGasRecordsByVehicleId(vehicleId) && _serviceRecordDataAccess.DeleteAllServiceRecordsByVehicleId(vehicleId) && - _collisionRecordDataAccess.DeleteAllCollisionRecordsByVehicleId(vehicleId) && _taxRecordDataAccess.DeleteAllTaxRecordsByVehicleId(vehicleId) && _noteDataAccess.DeleteAllNotesByVehicleId(vehicleId) && _reminderRecordDataAccess.DeleteAllReminderRecordsByVehicleId(vehicleId) && @@ -237,19 +233,6 @@ namespace MotoVaultPro.Controllers } } break; - case ImportMode.RepairRecord: - { - var results = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicleId); - if (caseSensitive) - { - searchResults.AddRange(results.Where(x => JsonSerializer.Serialize(x).Contains(searchQuery)).Select(x => new SearchResult { Id = x.Id, RecordType = ImportMode.RepairRecord, Description = $"{x.Date.ToShortDateString()} - {x.Description}" })); - } - else - { - searchResults.AddRange(results.Where(x => JsonSerializer.Serialize(x).ToLower().Contains(searchQuery)).Select(x => new SearchResult { Id = x.Id, RecordType = ImportMode.RepairRecord, Description = $"{x.Date.ToShortDateString()} - {x.Description}" })); - } - } - break; case ImportMode.UpgradeRecord: { var results = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicleId); @@ -374,9 +357,6 @@ namespace MotoVaultPro.Controllers case ImportMode.ServiceRecord: genericRecord = _serviceRecordDataAccess.GetServiceRecordById(recordId); break; - case ImportMode.RepairRecord: - genericRecord = _collisionRecordDataAccess.GetCollisionRecordById(recordId); - break; case ImportMode.UpgradeRecord: genericRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId); break; @@ -387,9 +367,6 @@ namespace MotoVaultPro.Controllers case ImportMode.ServiceRecord: result = _serviceRecordDataAccess.SaveServiceRecordToVehicle(StaticHelper.GenericToServiceRecord(genericRecord)); break; - case ImportMode.RepairRecord: - result = _collisionRecordDataAccess.SaveCollisionRecordToVehicle(StaticHelper.GenericToRepairRecord(genericRecord)); - break; case ImportMode.UpgradeRecord: result = _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(StaticHelper.GenericToUpgradeRecord(genericRecord)); break; @@ -402,9 +379,6 @@ namespace MotoVaultPro.Controllers case ImportMode.ServiceRecord: _serviceRecordDataAccess.DeleteServiceRecordById(recordId); break; - case ImportMode.RepairRecord: - _collisionRecordDataAccess.DeleteCollisionRecordById(recordId); - break; case ImportMode.UpgradeRecord: _upgradeRecordDataAccess.DeleteUpgradeRecordById(recordId); break; @@ -424,9 +398,6 @@ namespace MotoVaultPro.Controllers case ImportMode.ServiceRecord: genericRecord = _serviceRecordDataAccess.GetServiceRecordById(recordId); break; - case ImportMode.RepairRecord: - genericRecord = _collisionRecordDataAccess.GetCollisionRecordById(recordId); - break; case ImportMode.UpgradeRecord: genericRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId); break; @@ -437,9 +408,6 @@ namespace MotoVaultPro.Controllers case ImportMode.ServiceRecord: result = _serviceRecordDataAccess.SaveServiceRecordToVehicle(StaticHelper.GenericToServiceRecord(genericRecord)); break; - case ImportMode.RepairRecord: - result = _collisionRecordDataAccess.SaveCollisionRecordToVehicle(StaticHelper.GenericToRepairRecord(genericRecord)); - break; case ImportMode.UpgradeRecord: result = _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(StaticHelper.GenericToUpgradeRecord(genericRecord)); break; @@ -452,9 +420,6 @@ namespace MotoVaultPro.Controllers case ImportMode.ServiceRecord: _serviceRecordDataAccess.DeleteServiceRecordById(recordId); break; - case ImportMode.RepairRecord: - _collisionRecordDataAccess.DeleteCollisionRecordById(recordId); - break; case ImportMode.UpgradeRecord: _upgradeRecordDataAccess.DeleteUpgradeRecordById(recordId); break; @@ -477,9 +442,6 @@ namespace MotoVaultPro.Controllers case ImportMode.ServiceRecord: result = DeleteServiceRecordWithChecks(recordId); break; - case ImportMode.RepairRecord: - result = DeleteCollisionRecordWithChecks(recordId); - break; case ImportMode.UpgradeRecord: result = DeleteUpgradeRecordWithChecks(recordId); break; @@ -528,14 +490,6 @@ namespace MotoVaultPro.Controllers result = _serviceRecordDataAccess.SaveServiceRecordToVehicle(existingRecord); } break; - case ImportMode.RepairRecord: - { - var existingRecord = _collisionRecordDataAccess.GetCollisionRecordById(recordId); - existingRecord.Mileage += int.Parse(vehicleData.OdometerDifference); - existingRecord.Mileage = decimal.ToInt32(existingRecord.Mileage * decimal.Parse(vehicleData.OdometerMultiplier, NumberStyles.Any)); - result = _collisionRecordDataAccess.SaveCollisionRecordToVehicle(existingRecord); - } - break; case ImportMode.UpgradeRecord: { var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId); @@ -584,14 +538,6 @@ namespace MotoVaultPro.Controllers result = _serviceRecordDataAccess.SaveServiceRecordToVehicle(existingRecord); } break; - case ImportMode.RepairRecord: - { - var existingRecord = _collisionRecordDataAccess.GetCollisionRecordById(recordId); - existingRecord.Id = default; - existingRecord.RequisitionHistory = new List(); - result = _collisionRecordDataAccess.SaveCollisionRecordToVehicle(existingRecord); - } - break; case ImportMode.UpgradeRecord: { var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId); @@ -684,18 +630,6 @@ namespace MotoVaultPro.Controllers } } break; - case ImportMode.RepairRecord: - { - var existingRecord = _collisionRecordDataAccess.GetCollisionRecordById(recordId); - existingRecord.Id = default; - existingRecord.RequisitionHistory = new List(); - foreach (int vehicleId in vehicleIds) - { - existingRecord.VehicleId = vehicleId; - result = _collisionRecordDataAccess.SaveCollisionRecordToVehicle(existingRecord); - } - } - break; case ImportMode.UpgradeRecord: { var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId); @@ -815,18 +749,6 @@ namespace MotoVaultPro.Controllers }); } break; - case ImportMode.RepairRecord: - { - var existingRecord = _collisionRecordDataAccess.GetCollisionRecordById(recordId); - result = _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord - { - Date = existingRecord.Date, - VehicleId = existingRecord.VehicleId, - Mileage = existingRecord.Mileage, - Notes = $"Auto Insert From Repair Record: {existingRecord.Description}" - }); - } - break; case ImportMode.UpgradeRecord: { var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId); @@ -935,52 +857,6 @@ namespace MotoVaultPro.Controllers result = _serviceRecordDataAccess.SaveServiceRecordToVehicle(existingRecord); } break; - case ImportMode.RepairRecord: - { - var existingRecord = _collisionRecordDataAccess.GetCollisionRecordById(recordId); - if (dateIsEdited) - { - existingRecord.Date = genericRecordEditModel.EditRecord.Date; - } - if (descriptionIsEdited) - { - existingRecord.Description = genericRecordEditModel.EditRecord.Description; - } - if (mileageIsEdited) - { - existingRecord.Mileage = genericRecordEditModel.EditRecord.Mileage; - } - if (costIsEdited) - { - existingRecord.Cost = genericRecordEditModel.EditRecord.Cost; - } - if (noteIsEdited) - { - existingRecord.Notes = genericRecordEditModel.EditRecord.Notes; - } - if (tagsIsEdited) - { - existingRecord.Tags = genericRecordEditModel.EditRecord.Tags; - } - if (extraFieldIsEdited) - { - foreach (ExtraField extraField in genericRecordEditModel.EditRecord.ExtraFields) - { - if (existingRecord.ExtraFields.Any(x => x.Name == extraField.Name)) - { - var insertIndex = existingRecord.ExtraFields.FindIndex(x => x.Name == extraField.Name); - existingRecord.ExtraFields.RemoveAll(x => x.Name == extraField.Name); - existingRecord.ExtraFields.Insert(insertIndex, extraField); - } - else - { - existingRecord.ExtraFields.Add(extraField); - } - } - } - result = _collisionRecordDataAccess.SaveCollisionRecordToVehicle(existingRecord); - } - break; case ImportMode.UpgradeRecord: { var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId); @@ -1062,15 +938,6 @@ namespace MotoVaultPro.Controllers } break; - case ImportMode.RepairRecord: - { - foreach (int recordId in recordIds) - { - stickerViewModel.GenericRecords.Add(_collisionRecordDataAccess.GetCollisionRecordById(recordId)); - recordsAdded++; - } - } - break; case ImportMode.UpgradeRecord: { foreach (int recordId in recordIds) diff --git a/Enum/ImportMode.cs b/Enum/ImportMode.cs index bad4729..a154170 100644 --- a/Enum/ImportMode.cs +++ b/Enum/ImportMode.cs @@ -3,7 +3,6 @@ public enum ImportMode { ServiceRecord = 0, - RepairRecord = 1, GasRecord = 2, TaxRecord = 3, UpgradeRecord = 4, diff --git a/External/Implementations/Litedb/CollisionRecordDataAccess.cs b/External/Implementations/Litedb/CollisionRecordDataAccess.cs deleted file mode 100644 index 5c3adea..0000000 --- a/External/Implementations/Litedb/CollisionRecordDataAccess.cs +++ /dev/null @@ -1,54 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Helper; -using MotoVaultPro.Models; -using LiteDB; - -namespace MotoVaultPro.External.Implementations -{ - public class CollisionRecordDataAccess : ICollisionRecordDataAccess - { - private ILiteDBHelper _liteDB { get; set; } - private static string tableName = "collisionrecords"; - public CollisionRecordDataAccess(ILiteDBHelper liteDB) - { - _liteDB = liteDB; - } - public List GetCollisionRecordsByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var collisionRecords = table.Find(Query.EQ(nameof(CollisionRecord.VehicleId), vehicleId)); - return collisionRecords.ToList() ?? new List(); - } - public CollisionRecord GetCollisionRecordById(int collisionRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.FindById(collisionRecordId); - } - public bool DeleteCollisionRecordById(int collisionRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Delete(collisionRecordId); - db.Checkpoint(); - return true; - } - public bool SaveCollisionRecordToVehicle(CollisionRecord collisionRecord) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Upsert(collisionRecord); - db.Checkpoint(); - return true; - } - public bool DeleteAllCollisionRecordsByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var collisionRecords = table.DeleteMany(Query.EQ(nameof(CollisionRecord.VehicleId), vehicleId)); - db.Checkpoint(); - return true; - } - } -} diff --git a/External/Implementations/Postgres/CollisionRecordDataAccess.cs b/External/Implementations/Postgres/CollisionRecordDataAccess.cs deleted file mode 100644 index 7a5ea83..0000000 --- a/External/Implementations/Postgres/CollisionRecordDataAccess.cs +++ /dev/null @@ -1,161 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using Npgsql; -using System.Text.Json; - -namespace MotoVaultPro.External.Implementations -{ - public class PGCollisionRecordDataAccess : ICollisionRecordDataAccess - { - private NpgsqlDataSource pgDataSource; - private readonly ILogger _logger; - private static string tableName = "collisionrecords"; - public PGCollisionRecordDataAccess(IConfiguration config, ILogger logger) - { - pgDataSource = NpgsqlDataSource.Create(config["POSTGRES_CONNECTION"]); - - _logger = logger; - try - { - //create table if not exist. - string initCMD = $"CREATE SCHEMA IF NOT EXISTS app; CREATE TABLE IF NOT EXISTS app.{tableName} (id INT GENERATED BY DEFAULT AS IDENTITY primary key, vehicleId INT not null, data jsonb not null)"; - using (var ctext = pgDataSource.CreateCommand(initCMD)) - { - ctext.ExecuteNonQuery(); - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - } - } - public List GetCollisionRecordsByVehicleId(int vehicleId) - { - try - { - string cmd = $"SELECT data FROM app.{tableName} WHERE vehicleId = @vehicleId"; - var results = new List(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("vehicleId", vehicleId); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - CollisionRecord collisionRecord = JsonSerializer.Deserialize(reader["data"] as string); - results.Add(collisionRecord); - } - } - return results; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new List(); - } - } - public CollisionRecord GetCollisionRecordById(int collisionRecordId) - { - try - { - string cmd = $"SELECT data FROM app.{tableName} WHERE id = @id"; - var result = new CollisionRecord(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", collisionRecordId); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - CollisionRecord collisionRecord = JsonSerializer.Deserialize(reader["data"] as string); - result = collisionRecord; - } - } - return result; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new CollisionRecord(); - } - } - public bool DeleteCollisionRecordById(int collisionRecordId) - { - try - { - string cmd = $"DELETE FROM app.{tableName} WHERE id = @id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", collisionRecordId); - return ctext.ExecuteNonQuery() > 0; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool SaveCollisionRecordToVehicle(CollisionRecord collisionRecord) - { - try - { - if (collisionRecord.Id == default) - { - string cmd = $"INSERT INTO app.{tableName} (vehicleId, data) VALUES(@vehicleId, CAST(@data AS jsonb)) RETURNING id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("vehicleId", collisionRecord.VehicleId); - ctext.Parameters.AddWithValue("data", "{}"); - collisionRecord.Id = Convert.ToInt32(ctext.ExecuteScalar()); - //update json data - if (collisionRecord.Id != default) - { - string cmdU = $"UPDATE app.{tableName} SET data = CAST(@data AS jsonb) WHERE id = @id"; - using (var ctextU = pgDataSource.CreateCommand(cmdU)) - { - var serializedData = JsonSerializer.Serialize(collisionRecord); - ctextU.Parameters.AddWithValue("id", collisionRecord.Id); - ctextU.Parameters.AddWithValue("data", serializedData); - return ctextU.ExecuteNonQuery() > 0; - } - } - return collisionRecord.Id != default; - } - } - else - { - string cmd = $"UPDATE app.{tableName} SET data = CAST(@data AS jsonb) WHERE id = @id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - var serializedData = JsonSerializer.Serialize(collisionRecord); - ctext.Parameters.AddWithValue("id", collisionRecord.Id); - ctext.Parameters.AddWithValue("data", serializedData); - return ctext.ExecuteNonQuery() > 0; - } - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool DeleteAllCollisionRecordsByVehicleId(int vehicleId) - { - try - { - string cmd = $"DELETE FROM app.{tableName} WHERE vehicleId = @id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", vehicleId); - ctext.ExecuteNonQuery(); - return true; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - } -} diff --git a/External/Interfaces/ICollisionRecordDataAccess.cs b/External/Interfaces/ICollisionRecordDataAccess.cs deleted file mode 100644 index d1545a0..0000000 --- a/External/Interfaces/ICollisionRecordDataAccess.cs +++ /dev/null @@ -1,13 +0,0 @@ -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Interfaces -{ - public interface ICollisionRecordDataAccess - { - public List GetCollisionRecordsByVehicleId(int vehicleId); - public CollisionRecord GetCollisionRecordById(int serviceRecordId); - public bool DeleteCollisionRecordById(int serviceRecordId); - public bool SaveCollisionRecordToVehicle(CollisionRecord serviceRecord); - public bool DeleteAllCollisionRecordsByVehicleId(int vehicleId); - } -} diff --git a/Helper/ReportHelper.cs b/Helper/ReportHelper.cs index 139a20b..8abbda3 100644 --- a/Helper/ReportHelper.cs +++ b/Helper/ReportHelper.cs @@ -7,7 +7,6 @@ namespace MotoVaultPro.Helper { IEnumerable GetOdometerRecordSum(List odometerRecords, int year = 0, bool sortIntoYear = false); IEnumerable GetServiceRecordSum(List serviceRecords, int year = 0, bool sortIntoYear = false); - IEnumerable GetRepairRecordSum(List repairRecords, int year = 0, bool sortIntoYear = false); IEnumerable GetUpgradeRecordSum(List upgradeRecords, int year = 0, bool sortIntoYear = false); IEnumerable GetGasRecordSum(List gasRecords, int year = 0, bool sortIntoYear = false); IEnumerable GetTaxRecordSum(List taxRecords, int year = 0, bool sortIntoYear = false); @@ -66,31 +65,6 @@ namespace MotoVaultPro.Helper }); } } - public IEnumerable GetRepairRecordSum(List repairRecords, int year = 0, bool sortIntoYear = false) - { - if (year != default) - { - repairRecords.RemoveAll(x => x.Date.Year != year); - } - if (sortIntoYear) - { - return repairRecords.GroupBy(x => new { x.Date.Month, x.Date.Year }).OrderBy(x => x.Key.Month).Select(x => new CostForVehicleByMonth - { - MonthId = x.Key.Month, - MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(x.Key.Month), - Year = x.Key.Year, - Cost = x.Sum(y => y.Cost) - }); - } else - { - return repairRecords.GroupBy(x => x.Date.Month).OrderBy(x => x.Key).Select(x => new CostForVehicleByMonth - { - MonthId = x.Key, - MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(x.Key), - Cost = x.Sum(y => y.Cost) - }); - } - } public IEnumerable GetUpgradeRecordSum(List upgradeRecords, int year = 0, bool sortIntoYear = false) { if (year != default) diff --git a/Helper/StaticHelper.cs b/Helper/StaticHelper.cs index 68b8909..469a103 100644 --- a/Helper/StaticHelper.cs +++ b/Helper/StaticHelper.cs @@ -213,22 +213,6 @@ namespace MotoVaultPro.Helper RequisitionHistory = input.RequisitionHistory }; } - public static CollisionRecord GenericToRepairRecord(GenericRecord input) - { - return new CollisionRecord - { - VehicleId = input.VehicleId, - Date = input.Date, - Description = input.Description, - Cost = input.Cost, - Mileage = input.Mileage, - Files = input.Files, - Notes = input.Notes, - Tags = input.Tags, - ExtraFields = input.ExtraFields, - RequisitionHistory = input.RequisitionHistory - }; - } public static UpgradeRecord GenericToUpgradeRecord(GenericRecord input) { return new UpgradeRecord @@ -443,8 +427,6 @@ namespace MotoVaultPro.Helper { case ImportMode.ServiceRecord: return "bi-card-checklist"; - case ImportMode.RepairRecord: - return "bi-exclamation-octagon"; case ImportMode.UpgradeRecord: return "bi-wrench-adjustable"; case ImportMode.TaxRecord: diff --git a/Logic/VehicleLogic.cs b/Logic/VehicleLogic.cs index 914dda4..e1cada0 100644 --- a/Logic/VehicleLogic.cs +++ b/Logic/VehicleLogic.cs @@ -13,7 +13,7 @@ namespace MotoVaultPro.Logic int GetMaxMileage(VehicleRecords vehicleRecords); int GetMinMileage(int vehicleId); int GetMinMileage(VehicleRecords vehicleRecords); - int GetOwnershipDays(string purchaseDate, string soldDate, int year, List serviceRecords, List repairRecords, List gasRecords, List upgradeRecords, List odometerRecords, List taxRecords); + int GetOwnershipDays(string purchaseDate, string soldDate, int year, List serviceRecords, List gasRecords, List upgradeRecords, List odometerRecords, List taxRecords); bool GetVehicleHasUrgentOrPastDueReminders(int vehicleId, int currentMileage); List GetVehicleInfo(List vehicles); List GetReminders(List vehicles, bool isCalendar); @@ -25,7 +25,6 @@ namespace MotoVaultPro.Logic { private readonly IServiceRecordDataAccess _serviceRecordDataAccess; private readonly IGasRecordDataAccess _gasRecordDataAccess; - private readonly ICollisionRecordDataAccess _collisionRecordDataAccess; private readonly IUpgradeRecordDataAccess _upgradeRecordDataAccess; private readonly ITaxRecordDataAccess _taxRecordDataAccess; private readonly IOdometerRecordDataAccess _odometerRecordDataAccess; @@ -39,7 +38,6 @@ namespace MotoVaultPro.Logic public VehicleLogic( IServiceRecordDataAccess serviceRecordDataAccess, IGasRecordDataAccess gasRecordDataAccess, - ICollisionRecordDataAccess collisionRecordDataAccess, IUpgradeRecordDataAccess upgradeRecordDataAccess, ITaxRecordDataAccess taxRecordDataAccess, IOdometerRecordDataAccess odometerRecordDataAccess, @@ -52,7 +50,6 @@ namespace MotoVaultPro.Logic ) { _serviceRecordDataAccess = serviceRecordDataAccess; _gasRecordDataAccess = gasRecordDataAccess; - _collisionRecordDataAccess = collisionRecordDataAccess; _upgradeRecordDataAccess = upgradeRecordDataAccess; _taxRecordDataAccess = taxRecordDataAccess; _odometerRecordDataAccess = odometerRecordDataAccess; @@ -69,7 +66,6 @@ namespace MotoVaultPro.Logic { ServiceRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicleId), GasRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicleId), - CollisionRecords = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicleId), TaxRecords = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId), UpgradeRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicleId), OdometerRecords = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId), @@ -78,11 +74,10 @@ namespace MotoVaultPro.Logic public decimal GetVehicleTotalCost(VehicleRecords vehicleRecords) { var serviceRecordSum = vehicleRecords.ServiceRecords.Sum(x => x.Cost); - var repairRecordSum = vehicleRecords.CollisionRecords.Sum(x => x.Cost); var upgradeRecordSum = vehicleRecords.UpgradeRecords.Sum(x => x.Cost); var taxRecordSum = vehicleRecords.TaxRecords.Sum(x => x.Cost); var gasRecordSum = vehicleRecords.GasRecords.Sum(x => x.Cost); - return serviceRecordSum + repairRecordSum + upgradeRecordSum + taxRecordSum + gasRecordSum; + return serviceRecordSum + upgradeRecordSum + taxRecordSum + gasRecordSum; } public int GetMaxMileage(int vehicleId) { @@ -92,11 +87,6 @@ namespace MotoVaultPro.Logic { numbersArray.Add(serviceRecords.Max(x => x.Mileage)); } - var repairRecords = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicleId); - if (repairRecords.Any()) - { - numbersArray.Add(repairRecords.Max(x => x.Mileage)); - } var gasRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicleId); if (gasRecords.Any()) { @@ -121,10 +111,6 @@ namespace MotoVaultPro.Logic { numbersArray.Add(vehicleRecords.ServiceRecords.Max(x => x.Mileage)); } - if (vehicleRecords.CollisionRecords.Any()) - { - numbersArray.Add(vehicleRecords.CollisionRecords.Max(x => x.Mileage)); - } if (vehicleRecords.GasRecords.Any()) { numbersArray.Add(vehicleRecords.GasRecords.Max(x => x.Mileage)); @@ -147,11 +133,6 @@ namespace MotoVaultPro.Logic { numbersArray.Add(serviceRecords.Min(x => x.Mileage)); } - var repairRecords = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicleId).Where(x => x.Mileage != default); - if (repairRecords.Any()) - { - numbersArray.Add(repairRecords.Min(x => x.Mileage)); - } var gasRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicleId).Where(x => x.Mileage != default); if (gasRecords.Any()) { @@ -177,11 +158,6 @@ namespace MotoVaultPro.Logic { numbersArray.Add(_serviceRecords.Min(x => x.Mileage)); } - var _repairRecords = vehicleRecords.CollisionRecords.Where(x => x.Mileage != default).ToList(); - if (_repairRecords.Any()) - { - numbersArray.Add(_repairRecords.Min(x => x.Mileage)); - } var _gasRecords = vehicleRecords.GasRecords.Where(x => x.Mileage != default).ToList(); if (_gasRecords.Any()) { @@ -199,7 +175,7 @@ namespace MotoVaultPro.Logic } return numbersArray.Any() ? numbersArray.Min() : 0; } - public int GetOwnershipDays(string purchaseDate, string soldDate, int year, List serviceRecords, List repairRecords, List gasRecords, List upgradeRecords, List odometerRecords, List taxRecords) + public int GetOwnershipDays(string purchaseDate, string soldDate, int year, List serviceRecords, List gasRecords, List upgradeRecords, List odometerRecords, List taxRecords) { var startDate = DateTime.Now; var endDate = DateTime.Now; @@ -238,7 +214,6 @@ namespace MotoVaultPro.Logic } var dateArray = new List() { startDate }; dateArray.AddRange(serviceRecords.Select(x => x.Date)); - dateArray.AddRange(repairRecords.Select(x => x.Date)); dateArray.AddRange(gasRecords.Select(x => x.Date)); dateArray.AddRange(upgradeRecords.Select(x => x.Date)); dateArray.AddRange(odometerRecords.Select(x => x.Date)); @@ -271,7 +246,6 @@ namespace MotoVaultPro.Logic var results = _reminderHelper.GetReminderRecordViewModels(reminders, currentMileage, DateTime.Now); var serviceRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicle.Id); - var repairRecords = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicle.Id); var upgradeRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicle.Id); var gasRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicle.Id); var taxRecords = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicle.Id); @@ -283,8 +257,6 @@ namespace MotoVaultPro.Logic LastReportedOdometer = currentMileage, ServiceRecordCount = serviceRecords.Count(), ServiceRecordCost = serviceRecords.Sum(x => x.Cost), - RepairRecordCount = repairRecords.Count(), - RepairRecordCost = repairRecords.Sum(x => x.Cost), UpgradeRecordCount = upgradeRecords.Count(), UpgradeRecordCost = upgradeRecords.Sum(x => x.Cost), GasRecordCount = gasRecords.Count(), diff --git a/Models/API/VehicleInfo.cs b/Models/API/VehicleInfo.cs index f172034..5e5f56d 100644 --- a/Models/API/VehicleInfo.cs +++ b/Models/API/VehicleInfo.cs @@ -10,8 +10,6 @@ public ReminderAPIExportModel NextReminder { get; set; } public int ServiceRecordCount { get; set; } public decimal ServiceRecordCost { get; set; } - public int RepairRecordCount { get; set; } - public decimal RepairRecordCost { get; set; } public int UpgradeRecordCount { get; set; } public decimal UpgradeRecordCost { get; set; } public int TaxRecordCount { get; set; } diff --git a/Models/Collision/CollisionRecord.cs b/Models/Collision/CollisionRecord.cs deleted file mode 100644 index 712a5a8..0000000 --- a/Models/Collision/CollisionRecord.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class CollisionRecord: GenericRecord - { - } -} diff --git a/Models/Collision/CollisionRecordInput.cs b/Models/Collision/CollisionRecordInput.cs deleted file mode 100644 index c871e3b..0000000 --- a/Models/Collision/CollisionRecordInput.cs +++ /dev/null @@ -1,35 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class CollisionRecordInput - { - public int Id { get; set; } - public int VehicleId { get; set; } - public List ReminderRecordId { get; set; } = new List(); - public string Date { get; set; } = DateTime.Now.ToShortDateString(); - public int Mileage { get; set; } - public string Description { get; set; } - public decimal Cost { get; set; } - public string Notes { get; set; } - public List Files { get; set; } = new List(); - public List Supplies { get; set; } = new List(); - public List Tags { get; set; } = new List(); - public List ExtraFields { get; set; } = new List(); - public List RequisitionHistory { get; set; } = new List(); - public List DeletedRequisitionHistory { get; set; } = new List(); - public bool CopySuppliesAttachment { get; set; } = false; - public CollisionRecord ToCollisionRecord() { return new CollisionRecord { - Id = Id, - VehicleId = VehicleId, - Date = DateTime.Parse(Date), - Cost = Cost, - Mileage = Mileage, - Description = Description, - Notes = Notes, - Files = Files, - Tags = Tags, - ExtraFields = ExtraFields, - RequisitionHistory = RequisitionHistory - }; - } - } -} diff --git a/Models/Report/CostMakeUpForVehicle.cs b/Models/Report/CostMakeUpForVehicle.cs index 96bd857..54cc994 100644 --- a/Models/Report/CostMakeUpForVehicle.cs +++ b/Models/Report/CostMakeUpForVehicle.cs @@ -5,7 +5,6 @@ public decimal ServiceRecordSum { get; set; } public decimal GasRecordSum { get; set; } public decimal TaxRecordSum { get; set; } - public decimal CollisionRecordSum { get; set; } public decimal UpgradeRecordSum { get; set; } } } diff --git a/Models/Report/CostTableForVehicle.cs b/Models/Report/CostTableForVehicle.cs index d3287b4..4f2b412 100644 --- a/Models/Report/CostTableForVehicle.cs +++ b/Models/Report/CostTableForVehicle.cs @@ -8,20 +8,17 @@ public decimal ServiceRecordSum { get; set; } public decimal GasRecordSum { get; set; } public decimal TaxRecordSum { get; set; } - public decimal CollisionRecordSum { get; set; } public decimal UpgradeRecordSum { get; set; } public decimal ServiceRecordPerMile { get { return TotalDistance != default ? ServiceRecordSum / TotalDistance : 0; } } public decimal GasRecordPerMile { get { return TotalDistance != default ? GasRecordSum / TotalDistance : 0; } } - public decimal CollisionRecordPerMile { get { return TotalDistance != default ? CollisionRecordSum / TotalDistance : 0; } } public decimal UpgradeRecordPerMile { get { return TotalDistance != default ? UpgradeRecordSum / TotalDistance : 0; } } public decimal TaxRecordPerMile { get { return TotalDistance != default ? TaxRecordSum / TotalDistance : 0; } } public decimal ServiceRecordPerDay { get { return NumberOfDays != default ? ServiceRecordSum / NumberOfDays : 0; } } public decimal GasRecordPerDay { get { return NumberOfDays != default ? GasRecordSum / NumberOfDays : 0; } } - public decimal CollisionRecordPerDay { get { return NumberOfDays != default ? CollisionRecordSum / NumberOfDays : 0; } } public decimal UpgradeRecordPerDay { get { return NumberOfDays != default ? UpgradeRecordSum / NumberOfDays : 0; } } public decimal TaxRecordPerDay { get { return NumberOfDays != default ? TaxRecordSum / NumberOfDays : 0; } } - public decimal TotalPerDay { get { return ServiceRecordPerDay + CollisionRecordPerDay + UpgradeRecordPerDay + GasRecordPerDay + TaxRecordPerDay; } } - public decimal TotalPerMile { get { return ServiceRecordPerMile + CollisionRecordPerMile + UpgradeRecordPerMile + GasRecordPerMile + TaxRecordPerMile; } } - public decimal TotalCost { get { return ServiceRecordSum + CollisionRecordSum + UpgradeRecordSum + GasRecordSum + TaxRecordSum; } } + public decimal TotalPerDay { get { return ServiceRecordPerDay + UpgradeRecordPerDay + GasRecordPerDay + TaxRecordPerDay; } } + public decimal TotalPerMile { get { return ServiceRecordPerMile + UpgradeRecordPerMile + GasRecordPerMile + TaxRecordPerMile; } } + public decimal TotalCost { get { return ServiceRecordSum + UpgradeRecordSum + GasRecordSum + TaxRecordSum; } } } } diff --git a/Models/Shared/VehicleRecords.cs b/Models/Shared/VehicleRecords.cs index 33e62b8..12d26fb 100644 --- a/Models/Shared/VehicleRecords.cs +++ b/Models/Shared/VehicleRecords.cs @@ -3,7 +3,6 @@ public class VehicleRecords { public List ServiceRecords { get; set; } = new List(); - public List CollisionRecords { get; set; } = new List(); public List UpgradeRecords { get; set; } = new List(); public List GasRecords { get; set; } = new List(); public List TaxRecords { get; set; } = new List(); diff --git a/Models/UserConfig.cs b/Models/UserConfig.cs index 74704c1..2ceb4dc 100644 --- a/Models/UserConfig.cs +++ b/Models/UserConfig.cs @@ -31,8 +31,7 @@ public string UserLanguage { get; set; } = "en_US"; public List VisibleTabs { get; set; } = new List() { ImportMode.Dashboard, - ImportMode.ServiceRecord, - ImportMode.RepairRecord, + ImportMode.ServiceRecord, ImportMode.GasRecord, ImportMode.UpgradeRecord, ImportMode.TaxRecord, @@ -45,7 +44,6 @@ ImportMode.PlanRecord, ImportMode.OdometerRecord, ImportMode.ServiceRecord, - ImportMode.RepairRecord, ImportMode.UpgradeRecord, ImportMode.GasRecord, ImportMode.SupplyRecord, diff --git a/Program.cs b/Program.cs index a096246..2fd5422 100644 --- a/Program.cs +++ b/Program.cs @@ -32,7 +32,6 @@ if (!string.IsNullOrWhiteSpace(builder.Configuration["POSTGRES_CONNECTION"])){ builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); - builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); @@ -52,7 +51,6 @@ else builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); - builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); diff --git a/Views/API/Index.cshtml b/Views/API/Index.cshtml index e1a80d6..fd7a0f8 100644 --- a/Views/API/Index.cshtml +++ b/Views/API/Index.cshtml @@ -223,7 +223,6 @@ Body(form-data): {
description - Description
cost - Cost
- type - ServiceRecord/RepairRecord/UpgradeRecord
priority - Low/Normal/Critical
progress - Backlog/InProgress/Testing
notes - notes(optional)
@@ -247,7 +246,6 @@ Id - Id of Plan Record
description - Description
cost - Cost
- type - ServiceRecord/RepairRecord/UpgradeRecord
priority - Low/Normal/Critical
progress - Backlog/InProgress/Testing
notes - notes(optional)
@@ -352,10 +350,8 @@ GET
- /api/vehicle/repairrecords
- Returns a list of repair records for the vehicle
vehicleId - Id of Vehicle @@ -366,10 +362,8 @@ POST
- /api/vehicle/repairrecords/add
- Adds Repair Record to the vehicle
vehicleId - Id of Vehicle @@ -391,14 +385,11 @@ PUT
- /api/vehicle/repairrecords/update
- Updates Repair Record
Body(form-data): {
- Id - Id of Repair Record
date - Date to be entered
odometer - Odometer reading
description - Description
@@ -415,13 +406,10 @@ DELETE
- /api/vehicle/repairrecords/delete
- Deletes Repair Record
- Id - Id of Repair Record
diff --git a/Views/Home/_ExtraFields.cshtml b/Views/Home/_ExtraFields.cshtml index 3242bfe..c4c6f0e 100644 --- a/Views/Home/_ExtraFields.cshtml +++ b/Views/Home/_ExtraFields.cshtml @@ -20,7 +20,6 @@
-

@@ -136,8 +135,6 @@
  • - -
  • @@ -184,7 +181,6 @@ - -
    - - -
    - -
    - - @if (isNew) - { -
    - -
    - } -
    - - - @if (isNew) - { - - } - - - @await Html.PartialAsync("Supply/_SupplyStore", new SupplyStore { Tab = "RepairRecord", AdditionalSupplies = Model.RequisitionHistory.Any() }) - - - @await Html.PartialAsync("_ExtraField", Model.ExtraFields) -
  • -
    - - - @if (isNew) - { -
    - - -
    - } -
    - @await Html.PartialAsync("_UploadedFiles", Model.Files) - @await Html.PartialAsync("_FileUploader", Model.Files.Any()) -
    -
    -
    -
    - - - - -@await Html.PartialAsync("Supply/_SupplyRequisitionHistory", new SupplyRequisitionHistory { RequisitionHistory = Model.RequisitionHistory, CostInputId = "collisionRecordCost" }) - \ No newline at end of file diff --git a/Views/Vehicle/Collision/_CollisionRecords.cshtml b/Views/Vehicle/Collision/_CollisionRecords.cshtml deleted file mode 100644 index c645e64..0000000 --- a/Views/Vehicle/Collision/_CollisionRecords.cshtml +++ /dev/null @@ -1,207 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var enableCsvImports = userConfig.EnableCsvImports; - var hideZero = userConfig.HideZero; - var recordTags = Model.SelectMany(x => x.Tags).Distinct(); - var userLanguage = userConfig.UserLanguage; - var extraFields = new List(); - if (userConfig.EnableExtraFieldColumns) - { - extraFields = Model.SelectMany(x => x.ExtraFields).Select(y => y.Name).Distinct().ToList(); - } - var userColumnPreferences = userConfig.UserColumnPreferences.Where(x => x.Tab == ImportMode.RepairRecord); -} -@model List -
    -
    -
    - @($"{translator.Translate(userLanguage,"# of Repair Records")}: {Model.Count()}") - @($"{translator.Translate(userLanguage,"Total")}: {Model.Sum(x => x.Cost).ToString("C")}") - @foreach (string recordTag in recordTags) - { - @recordTag - } - - @foreach (string recordTag in recordTags) - { - - } - -
    -
    - @if (enableCsvImports) - { -
    - - - -
    - } - else - { - - } -
    -
    -
    -
    -
    -
    -
    - -
    -
    - - - - - - - - - - @foreach (string extraFieldColumn in extraFields) - { - - } - - - - @foreach (CollisionRecord collisionRecord in Model) - { - - - - - - - - @foreach (string extraFieldColumn in extraFields) - { - - } - - } - - - - - - -
    @translator.Translate(userLanguage, "Date")@translator.Translate(userLanguage, "Odometer")@translator.Translate(userLanguage, "Description")@translator.Translate(userLanguage, "Cost")@translator.Translate(userLanguage, "Notes")
    @collisionRecord.Date.ToShortDateString()@(collisionRecord.Mileage == default ? "---" : collisionRecord.Mileage.ToString())@collisionRecord.Description@(StaticHelper.HideZeroCost(collisionRecord.Cost, hideZero))@StaticHelper.TruncateStrings(collisionRecord.Notes)
    - @StaticHelper.ReportNote -
    -
    -
    - - - - - -@if (userColumnPreferences.Any()) -{ - @await Html.PartialAsync("_UserColumnPreferences", userColumnPreferences) -} \ No newline at end of file diff --git a/Views/Vehicle/Index.cshtml b/Views/Vehicle/Index.cshtml index 5a0ec52..f359f78 100644 --- a/Views/Vehicle/Index.cshtml +++ b/Views/Vehicle/Index.cshtml @@ -13,7 +13,6 @@ - @@ -49,9 +48,6 @@ - @@ -111,9 +107,6 @@ - @@ -140,7 +133,6 @@
    -
    diff --git a/Views/Vehicle/Plan/_PlanRecordItem.cshtml b/Views/Vehicle/Plan/_PlanRecordItem.cshtml index 5d11ade..71e3ff9 100644 --- a/Views/Vehicle/Plan/_PlanRecordItem.cshtml +++ b/Views/Vehicle/Plan/_PlanRecordItem.cshtml @@ -31,7 +31,6 @@ { } - else if (Model.ImportMode == ImportMode.RepairRecord) { } diff --git a/Views/Vehicle/Plan/_PlanRecordModal.cshtml b/Views/Vehicle/Plan/_PlanRecordModal.cshtml index 86c2e37..5f079e4 100644 --- a/Views/Vehicle/Plan/_PlanRecordModal.cshtml +++ b/Views/Vehicle/Plan/_PlanRecordModal.cshtml @@ -25,7 +25,6 @@ diff --git a/Views/Vehicle/Plan/_PlanRecordTemplateEditModal.cshtml b/Views/Vehicle/Plan/_PlanRecordTemplateEditModal.cshtml index f6053ff..dce95bf 100644 --- a/Views/Vehicle/Plan/_PlanRecordTemplateEditModal.cshtml +++ b/Views/Vehicle/Plan/_PlanRecordTemplateEditModal.cshtml @@ -25,7 +25,6 @@ diff --git a/Views/Vehicle/Plan/_PlanRecordTemplateModal.cshtml b/Views/Vehicle/Plan/_PlanRecordTemplateModal.cshtml index 7e0d4cb..d1c6a5e 100644 --- a/Views/Vehicle/Plan/_PlanRecordTemplateModal.cshtml +++ b/Views/Vehicle/Plan/_PlanRecordTemplateModal.cshtml @@ -49,7 +49,6 @@ { } - else if (planRecordTemplate.ImportMode == ImportMode.RepairRecord) { } diff --git a/Views/Vehicle/Service/_ServiceRecordModal.cshtml b/Views/Vehicle/Service/_ServiceRecordModal.cshtml index a8467f0..1f7f20e 100644 --- a/Views/Vehicle/Service/_ServiceRecordModal.cshtml +++ b/Views/Vehicle/Service/_ServiceRecordModal.cshtml @@ -90,7 +90,6 @@ diff --git a/Views/Vehicle/Service/_ServiceRecords.cshtml b/Views/Vehicle/Service/_ServiceRecords.cshtml index 59b6ea6..0e56410 100644 --- a/Views/Vehicle/Service/_ServiceRecords.cshtml +++ b/Views/Vehicle/Service/_ServiceRecords.cshtml @@ -184,7 +184,6 @@
  • @translator.Translate(userLanguage, "Edit Multiple")
  • -
  • @translator.Translate(userLanguage, "Repairs")
  • @translator.Translate(userLanguage, "Upgrades")
  • @translator.Translate(userLanguage, "Duplicate")
  • diff --git a/Views/Vehicle/Supply/_SupplyStore.cshtml b/Views/Vehicle/Supply/_SupplyStore.cshtml index 0dd06d5..7a812ea 100644 --- a/Views/Vehicle/Supply/_SupplyStore.cshtml +++ b/Views/Vehicle/Supply/_SupplyStore.cshtml @@ -41,8 +41,6 @@ case "ServiceRecord": setCostInputWithSupplySum(selectedSupplyResult.totalSum, $('#serviceRecordCost')) break; - case "RepairRecord": - setCostInputWithSupplySum(selectedSupplyResult.totalSum, $('#collisionRecordCost')) break; case "UpgradeRecord": setCostInputWithSupplySum(selectedSupplyResult.totalSum, $('#upgradeRecordCost')) @@ -62,8 +60,6 @@ case "ServiceRecord": $('#serviceRecordModal').modal('hide'); break; - case "RepairRecord": - $('#collisionRecordModal').modal('hide'); break; case "UpgradeRecord": $('#upgradeRecordModal').modal('hide'); @@ -80,8 +76,6 @@ case "ServiceRecord": $('#serviceRecordModal').modal('show'); break; - case "RepairRecord": - $('#collisionRecordModal').modal('show'); break; case "UpgradeRecord": $('#upgradeRecordModal').modal('show'); diff --git a/Views/Vehicle/Upgrade/_UpgradeRecordModal.cshtml b/Views/Vehicle/Upgrade/_UpgradeRecordModal.cshtml index a6c7b46..e5a1ab8 100644 --- a/Views/Vehicle/Upgrade/_UpgradeRecordModal.cshtml +++ b/Views/Vehicle/Upgrade/_UpgradeRecordModal.cshtml @@ -91,7 +91,6 @@ } diff --git a/Views/Vehicle/Upgrade/_UpgradeRecords.cshtml b/Views/Vehicle/Upgrade/_UpgradeRecords.cshtml index 38206d0..85bff62 100644 --- a/Views/Vehicle/Upgrade/_UpgradeRecords.cshtml +++ b/Views/Vehicle/Upgrade/_UpgradeRecords.cshtml @@ -186,7 +186,6 @@
  • @translator.Translate(userLanguage, "Service Records")
  • -
  • @translator.Translate(userLanguage, "Repairs")
  • @translator.Translate(userLanguage, "Duplicate")
  • @translator.Translate(userLanguage, "Duplicate To Vehicle")
  • diff --git a/Views/Vehicle/_BulkDataImporter.cshtml b/Views/Vehicle/_BulkDataImporter.cshtml index a2854e0..4680037 100644 --- a/Views/Vehicle/_BulkDataImporter.cshtml +++ b/Views/Vehicle/_BulkDataImporter.cshtml @@ -52,8 +52,6 @@ getVehicleGasRecords(vehicleId); } else if (mode == "ServiceRecord") { getVehicleServiceRecords(vehicleId); - } else if (mode == "RepairRecord") { - getVehicleCollisionRecords(vehicleId); } else if (mode == "TaxRecord") { getVehicleTaxRecords(vehicleId); } else if (mode == "UpgradeRecord") { diff --git a/Views/Vehicle/_CostMakeUpReport.cshtml b/Views/Vehicle/_CostMakeUpReport.cshtml index 44fd907..dbbd989 100644 --- a/Views/Vehicle/_CostMakeUpReport.cshtml +++ b/Views/Vehicle/_CostMakeUpReport.cshtml @@ -6,7 +6,6 @@ var userLanguage = userConfig.UserLanguage; } @model CostMakeUpForVehicle -@if (Model.CollisionRecordSum + Model.ServiceRecordSum + Model.GasRecordSum + Model.TaxRecordSum + Model.UpgradeRecordSum > 0) {