From 2e8816df7f99fec305254c588555bf2359d74180 Mon Sep 17 00:00:00 2001 From: Eric Gullickson <16152721+ericgullickson@users.noreply.github.com> Date: Thu, 7 Aug 2025 09:59:22 -0500 Subject: [PATCH] Fresh Start --- .env | 12 - AI_IMPLEMENTATION_GUIDE.md | 1266 -- AI_STRUCTURE.md | 591 - CLAUDE.md | 3 - Controllers/APIController.cs | 1815 --- Controllers/AdminController.cs | 85 - Controllers/ErrorController.cs | 17 - Controllers/FilesController.cs | 109 - Controllers/HomeController.cs | 597 - Controllers/LoginController.cs | 464 - Controllers/MigrationController.cs | 720 - Controllers/Vehicle/GasController.cs | 217 - Controllers/Vehicle/ImportController.cs | 614 - Controllers/Vehicle/NoteController.cs | 102 - Controllers/Vehicle/OdometerController.cs | 176 - Controllers/Vehicle/PlanController.cs | 308 - Controllers/Vehicle/ReminderController.cs | 187 - Controllers/Vehicle/ReportController.cs | 708 - Controllers/Vehicle/ServiceController.cs | 131 - Controllers/Vehicle/SupplyController.cs | 215 - Controllers/Vehicle/TaxController.cs | 122 - Controllers/Vehicle/UpgradeController.cs | 131 - Controllers/VehicleController.cs | 1090 -- Dockerfile | 13 - Enum/DashboardMetric.cs | 9 - Enum/ExtraFieldType.cs | 12 - Enum/ImportMode.cs | 17 - Enum/KioskMode.cs | 10 - Enum/PlanPriority.cs | 9 - Enum/PlanProgress.cs | 10 - Enum/ReminderIntervalUnit.cs | 8 - Enum/ReminderMetric.cs | 9 - Enum/ReminderMileageInterval.cs | 24 - Enum/ReminderMonthInterval.cs | 14 - Enum/ReminderUrgency.cs | 10 - Enum/TagFilter.cs | 8 - .../Litedb/ExtraFieldDataAccess.cs | 30 - .../Litedb/GasRecordDataAccess.cs | 54 - .../Implementations/Litedb/NoteDataAccess.cs | 54 - .../Litedb/OdometerRecordDataAccess.cs | 54 - .../Litedb/PlanRecordDataAccess.cs | 54 - .../Litedb/PlanRecordTemplateDataAccess.cs | 54 - .../Litedb/ReminderRecordDataAccess.cs | 54 - .../Litedb/ServiceRecordDataAccess.cs | 54 - .../Litedb/SupplyRecordDataAccess.cs | 54 - .../Litedb/TaxRecordDataAccess.cs | 54 - .../Litedb/TokenRecordDataAccess.cs | 53 - .../Litedb/UpgradeRecordDataAccess.cs | 54 - .../Litedb/UserAccessDataAcces.cs | 81 - .../Litedb/UserConfigDataAccess.cs | 38 - .../Litedb/UserRecordDataAccess.cs | 60 - .../Litedb/VehicleDataAccess.cs | 44 - .../Postgres/ExtraFieldDataAccess.cs | 76 - .../Postgres/GasRecordDataAccess.cs | 160 - .../Postgres/NoteDataAccess.cs | 154 - .../Postgres/OdometerRecordDataAccess.cs | 160 - .../Postgres/PlanRecordDataAccess.cs | 160 - .../Postgres/PlanRecordTemplateDataAccess.cs | 160 - .../Postgres/ReminderRecordDataAccess.cs | 160 - .../Postgres/ServiceRecordDataAccess.cs | 160 - .../Postgres/SupplyRecordDataAccess.cs | 160 - .../Postgres/TaxRecordDataAccess.cs | 160 - .../Postgres/TokenRecordDataAccess.cs | 143 - .../Postgres/UpgradeRecordDataAccess.cs | 160 - .../Postgres/UserAccessDataAccess.cs | 212 - .../Postgres/UserConfigDataAccess.cs | 108 - .../Postgres/UserRecordDataAccess.cs | 194 - .../Postgres/VehicleDataAccess.cs | 138 - External/Interfaces/IExtraFieldDataAccess.cs | 10 - External/Interfaces/IGasRecordDataAccess.cs | 13 - External/Interfaces/INoteDataAccess.cs | 13 - .../Interfaces/IOdometerRecordDataAccess.cs | 13 - External/Interfaces/IPlanRecordDataAccess.cs | 13 - .../IPlanRecordTemplateDataAccess.cs | 13 - .../Interfaces/IReminderRecordDataAccess.cs | 13 - .../Interfaces/IServiceRecordDataAccess.cs | 13 - .../Interfaces/ISupplyRecordDataAccess.cs | 13 - External/Interfaces/ITaxRecordDataAccess.cs | 13 - External/Interfaces/ITokenRecordDataAccess.cs | 13 - .../Interfaces/IUpgradeRecordDataAccess.cs | 13 - External/Interfaces/IUserAccessDataAccess.cs | 15 - External/Interfaces/IUserConfigDataAccess.cs | 11 - External/Interfaces/IUserRecordDataAccess.cs | 14 - External/Interfaces/IVehicleDataAccess.cs | 12 - Filter/CollaboratorFilter.cs | 54 - Helper/ConfigHelper.cs | 391 - Helper/FileHelper.cs | 479 - Helper/GasHelper.cs | 146 - Helper/LiteDBHelper.cs | 36 - Helper/MailHelper.cs | 259 - Helper/ReminderHelper.cs | 175 - Helper/ReportHelper.cs | 144 - Helper/StaticHelper.cs | 855 -- Helper/TranslationHelper.cs | 197 - LICENSE | 21 - Logic/LoginLogic.cs | 510 - Logic/OdometerLogic.cs | 71 - Logic/UserLogic.cs | 123 - Logic/VehicleLogic.cs | 421 - MOTOVAULTPRO.md | 138 - MapProfile/ImportMappers.cs | 47 - Middleware/Authen.cs | 186 - Models/API/MethodParameter.cs | 16 - Models/API/ReleaseVersion.cs | 18 - Models/API/TypeConverter.cs | 138 - Models/API/VehicleInfo.cs | 25 - Models/Admin/AdminViewModel.cs | 8 - Models/Configuration/MailConfig.cs | 11 - Models/ErrorViewModel.cs | 9 - Models/GasRecord/GasRecord.cs | 24 - Models/GasRecord/GasRecordEditModel.cs | 8 - Models/GasRecord/GasRecordInput.cs | 38 - Models/GasRecord/GasRecordInputContainer.cs | 9 - Models/GasRecord/GasRecordViewModel.cs | 29 - .../GasRecord/GasRecordViewModelContainer.cs | 9 - Models/GenericRecordEditModel.cs | 9 - Models/Kiosk/KioskViewModel.cs | 14 - Models/Login/AuthCookie.cs | 8 - Models/Login/LoginModel.cs | 11 - Models/Login/Token.cs | 9 - Models/Note/Note.cs | 14 - Models/OIDC/OpenIDConfig.cs | 28 - Models/OIDC/OpenIDResult.cs | 8 - Models/OIDC/OpenIDUserInfo.cs | 7 - Models/OdometerRecord/OdometerRecord.cs | 16 - .../OdometerRecord/OdometerRecordEditModel.cs | 8 - Models/OdometerRecord/OdometerRecordInput.cs | 16 - Models/OperationResponse.cs | 33 - Models/PlanRecord/PlanRecord.cs | 20 - Models/PlanRecord/PlanRecordInput.cs | 43 - Models/Reminder/ReminderConfig.cs | 10 - Models/Reminder/ReminderRecord.cs | 22 - Models/Reminder/ReminderRecordInput.cs | 44 - Models/Reminder/ReminderRecordViewModel.cs | 28 - Models/Report/CostDistanceTableForVehicle.cs | 8 - Models/Report/CostForVehicleByMonth.cs | 12 - Models/Report/CostMakeUpForVehicle.cs | 10 - Models/Report/CostTableForVehicle.cs | 24 - Models/Report/GenericReportModel.cs | 18 - Models/Report/MPGForVehicleByMonth.cs | 9 - Models/Report/ReminderMakeUpForVehicle.cs | 10 - Models/Report/ReportHeader.cs | 10 - Models/Report/ReportParameter.cs | 14 - Models/Report/ReportViewModel.cs | 15 - Models/Report/VehicleHistoryViewModel.cs | 23 - Models/SearchResult.cs | 9 - Models/ServerConfig.cs | 71 - Models/ServiceRecord/ServiceRecord.cs | 6 - Models/ServiceRecord/ServiceRecordInput.cs | 35 - Models/Settings/ServerSettingsViewModel.cs | 24 - Models/Settings/SettingsViewModel.cs | 8 - Models/Shared/ExtraField.cs | 10 - Models/Shared/GenericRecord.cs | 17 - Models/Shared/ImportModel.cs | 179 - Models/Shared/RecordExtraField.cs | 14 - Models/Shared/StickerViewModel.cs | 11 - Models/Shared/UploadedFiles.cs | 9 - Models/Shared/VehicleRecords.cs | 11 - Models/Shared/WebHookPayload.cs | 253 - Models/Sponsors.cs | 10 - Models/Supply/SupplyAvailability.cs | 11 - Models/Supply/SupplyRecord.cs | 40 - Models/Supply/SupplyRecordInput.cs | 34 - Models/Supply/SupplyRequisitionHistory.cs | 8 - Models/Supply/SupplyStore.cs | 8 - Models/Supply/SupplyUsage.cs | 7 - Models/Supply/SupplyUsageHistory.cs | 11 - Models/Supply/SupplyUsageViewModel.cs | 8 - Models/TaxRecord/TaxRecord.cs | 19 - Models/TaxRecord/TaxRecordInput.cs | 35 - Models/Translations.cs | 12 - Models/UpgradeRecord/UpgradeRecord.cs | 6 - Models/UpgradeRecord/UpgradeReportInput.cs | 35 - Models/User/UserAccess.cs | 12 - Models/User/UserCollaborator.cs | 8 - Models/User/UserColumnPreference.cs | 9 - Models/User/UserConfigData.cs | 11 - Models/User/UserData.cs | 12 - Models/UserConfig.cs | 55 - Models/Vehicle.cs | 43 - Models/VehicleViewModel.cs | 28 - MotoVaultPro.csproj | 21 - MotoVaultPro.sln | 25 - Program.cs | 175 - README.md | 25 - Views/API/Index.cshtml | 842 -- Views/Admin/Index.cshtml | 189 - Views/Admin/_Tokens.cshtml | 12 - Views/Admin/_Users.cshtml | 11 - Views/Home/Index.cshtml | 172 - Views/Home/Kiosk.cshtml | 157 - Views/Home/Setup.cshtml | 276 - Views/Home/_AccountModal.cshtml | 40 - Views/Home/_Calendar.cshtml | 25 - Views/Home/_ExtraFields.cshtml | 142 - Views/Home/_GarageDisplay.cshtml | 89 - Views/Home/_Kiosk.cshtml | 124 - Views/Home/_KioskPlan.cshtml | 85 - Views/Home/_KioskReminder.cshtml | 47 - .../Home/_ReminderRecordCalendarModal.cshtml | 39 - Views/Home/_RootAccountModal.cshtml | 31 - Views/Home/_Settings.cshtml | 421 - Views/Home/_Sponsors.cshtml | 70 - Views/Home/_TranslationEditor.cshtml | 48 - Views/Home/_Translations.cshtml | 76 - Views/Home/_VehicleExtraFields.cshtml | 10 - Views/Home/_VehicleSelector.cshtml | 26 - Views/Home/_WidgetEditor.cshtml | 28 - Views/Login/ForgotPassword.cshtml | 32 - Views/Login/Index.cshtml | 67 - Views/Login/OpenIDRegistration.cshtml | 72 - Views/Login/Registration.cshtml | 57 - Views/Login/RemoteAuthDebug.cshtml | 20 - Views/Login/ResetPassword.cshtml | 43 - Views/Migration/Index.cshtml | 92 - Views/Shared/401.cshtml | 8 - Views/Shared/Error.cshtml | 25 - Views/Shared/_Layout.cshtml | 190 - Views/Shared/_Layout.cshtml.css | 48 - Views/Shared/_ValidationScriptsPartial.cshtml | 2 - Views/Vehicle/Gas/_Gas.cshtml | 292 - Views/Vehicle/Gas/_GasModal.cshtml | 171 - Views/Vehicle/Gas/_GasRecordsModal.cshtml | 53 - Views/Vehicle/Index.cshtml | 213 - Views/Vehicle/Note/_NoteModal.cshtml | 71 - Views/Vehicle/Note/_Notes.cshtml | 178 - .../Odometer/_OdometerRecordModal.cshtml | 121 - .../Vehicle/Odometer/_OdometerRecords.cshtml | 202 - .../Odometer/_OdometerRecordsModal.cshtml | 49 - Views/Vehicle/Plan/_PlanOrderSupplies.cshtml | 46 - Views/Vehicle/Plan/_PlanRecordItem.cshtml | 54 - Views/Vehicle/Plan/_PlanRecordModal.cshtml | 102 - .../Plan/_PlanRecordTemplateEditModal.cshtml | 89 - .../Plan/_PlanRecordTemplateModal.cshtml | 90 - Views/Vehicle/Plan/_PlanRecords.cshtml | 134 - .../Reminder/_ReminderRecordModal.cshtml | 143 - .../Vehicle/Reminder/_ReminderRecords.cshtml | 246 - .../Service/_ServiceRecordModal.cshtml | 115 - Views/Vehicle/Service/_ServiceRecords.cshtml | 204 - .../Vehicle/Supply/_SupplyRecordModal.cshtml | 92 - Views/Vehicle/Supply/_SupplyRecords.cshtml | 213 - .../Supply/_SupplyRequisitionHistory.cshtml | 106 - Views/Vehicle/Supply/_SupplyStore.cshtml | 127 - Views/Vehicle/Supply/_SupplyUsage.cshtml | 147 - Views/Vehicle/Tax/_TaxRecordModal.cshtml | 105 - Views/Vehicle/Tax/_TaxRecords.cshtml | 189 - .../Upgrade/_UpgradeRecordModal.cshtml | 115 - Views/Vehicle/Upgrade/_UpgradeRecords.cshtml | 205 - Views/Vehicle/_AttachmentColumn.cshtml | 9 - Views/Vehicle/_BulkDataImporter.cshtml | 71 - Views/Vehicle/_Collaborators.cshtml | 81 - Views/Vehicle/_CostDistanceTableReport.cshtml | 96 - Views/Vehicle/_CostMakeUpReport.cshtml | 88 - Views/Vehicle/_CostTableReport.cshtml | 76 - Views/Vehicle/_ExtraField.cshtml | 42 - Views/Vehicle/_ExtraFieldMultiple.cshtml | 49 - Views/Vehicle/_FileUploader.cshtml | 20 - Views/Vehicle/_FilesToUpload.cshtml | 25 - Views/Vehicle/_GasCostByMonthReport.cshtml | 103 - Views/Vehicle/_GenericRecordModal.cshtml | 56 - Views/Vehicle/_GlobalSearchResult.cshtml | 34 - Views/Vehicle/_MPGByMonthReport.cshtml | 101 - .../Vehicle/_RecurringReminderSelector.cshtml | 69 - Views/Vehicle/_ReminderMakeUpReport.cshtml | 62 - Views/Vehicle/_Report.cshtml | 167 - Views/Vehicle/_ReportHeader.cshtml | 24 - Views/Vehicle/_ReportParameters.cshtml | 63 - Views/Vehicle/_ReportWidgets.cshtml | 2 - Views/Vehicle/_Stickers.cshtml | 276 - Views/Vehicle/_UploadedFiles.cshtml | 35 - Views/Vehicle/_UserColumnPreferences.cshtml | 13 - Views/Vehicle/_VehicleHistory.cshtml | 286 - Views/Vehicle/_VehicleModal.cshtml | 165 - Views/_ViewImports.cshtml | 4 - Views/_ViewStart.cshtml | 3 - appsettings.Development.json | 8 - appsettings.json | 41 - docker-compose.postgresql.yml | 34 - docker-compose.traefik.yml | 42 - docker-compose.yml | 21 - docs/K8S-OVERVIEW.md | 308 - docs/K8S-PHASE-1-DETAILED.md | 3416 ----- docs/K8S-PHASE-1.md | 365 - docs/K8S-PHASE-2.md | 742 - docs/K8S-PHASE-3.md | 862 -- docs/K8S-PHASE-4.md | 885 -- docs/K8S-REFACTOR.md | 2009 --- docs/MOBILE.md | 185 - docs/architecture.md | 351 - docs/data-model-prompt.md | 1 - docs/generic-record.md | 122 - docs/record-architecture.md | 268 - docs/ux-architecture.md | 434 - init.sql | 6 - package-lock.json | 75 - package.json | 5 - wwwroot/.DS_Store | Bin 6148 -> 0 bytes wwwroot/css/loader.css | 55 - wwwroot/css/site.css | 1118 -- wwwroot/defaults/.DS_Store | Bin 6148 -> 0 bytes wwwroot/defaults/addnew_vehicle.png | Bin 311 -> 0 bytes wwwroot/defaults/demo_default.zip | Bin 456598 -> 0 bytes wwwroot/defaults/en_US.json | 1 - wwwroot/defaults/garage.png | Bin 51422 -> 0 bytes wwwroot/defaults/garage_narrow.png | Bin 102384 -> 0 bytes wwwroot/defaults/motovaultpro.png | Bin 1113198 -> 0 bytes wwwroot/defaults/motovaultpro_icon_128.png | Bin 35057 -> 0 bytes wwwroot/defaults/motovaultpro_icon_144.png | Bin 42850 -> 0 bytes wwwroot/defaults/motovaultpro_icon_192.png | Bin 69071 -> 0 bytes wwwroot/defaults/motovaultpro_icon_72.png | Bin 12480 -> 0 bytes wwwroot/defaults/motovaultpro_launch.png | Bin 1113198 -> 0 bytes wwwroot/defaults/motovaultpro_logo.png | Bin 81285 -> 0 bytes wwwroot/defaults/motovaultpro_logo_small.png | Bin 5679 -> 0 bytes .../motovaultpro_maskable_icon_128.png | Bin 35057 -> 0 bytes .../motovaultpro_maskable_icon_192.png | Bin 69071 -> 0 bytes .../motovaultpro_maskable_icon_72.png | Bin 12480 -> 0 bytes wwwroot/defaults/noimage.png | Bin 1589 -> 0 bytes wwwroot/defaults/reminderemailtemplate.txt | 41 - wwwroot/favicon.png | Bin 1879 -> 0 bytes wwwroot/js/garage.js | 473 - wwwroot/js/gasrecord.js | 667 - wwwroot/js/loader.js | 10 - wwwroot/js/login.js | 91 - wwwroot/js/note.js | 129 - wwwroot/js/odometerrecord.js | 394 - wwwroot/js/planrecord.js | 460 - wwwroot/js/reminderrecord.js | 378 - wwwroot/js/reports.js | 414 - wwwroot/js/serversettings.js | 160 - wwwroot/js/servicerecord.js | 173 - wwwroot/js/settings.js | 420 - wwwroot/js/shared.js | 1827 --- wwwroot/js/supplyrecord.js | 149 - wwwroot/js/taxrecord.js | 215 - wwwroot/js/upgraderecord.js | 171 - wwwroot/js/vehicle.js | 716 - .../css/bootstrap-datepicker.css | 477 - .../css/bootstrap-datepicker.css.map | 1 - .../css/bootstrap-datepicker.min.css | 7 - .../css/bootstrap-datepicker.standalone.css | 510 - .../bootstrap-datepicker.standalone.css.map | 1 - .../bootstrap-datepicker.standalone.min.css | 7 - .../css/bootstrap-datepicker3.css | 683 - .../css/bootstrap-datepicker3.css.map | 1 - .../css/bootstrap-datepicker3.min.css | 7 - .../css/bootstrap-datepicker3.standalone.css | 712 - .../bootstrap-datepicker3.standalone.css.map | 1 - .../bootstrap-datepicker3.standalone.min.css | 7 - .../js/bootstrap-datepicker.js | 2045 --- .../js/bootstrap-datepicker.min.js | 8 - .../locales/bootstrap-datepicker-en-CA.min.js | 1 - .../locales/bootstrap-datepicker.ar-DZ.min.js | 1 - .../locales/bootstrap-datepicker.ar-tn.min.js | 1 - .../locales/bootstrap-datepicker.ar.min.js | 1 - .../locales/bootstrap-datepicker.az.min.js | 1 - .../locales/bootstrap-datepicker.bg.min.js | 1 - .../locales/bootstrap-datepicker.bm.min.js | 1 - .../locales/bootstrap-datepicker.bn.min.js | 1 - .../locales/bootstrap-datepicker.br.min.js | 1 - .../locales/bootstrap-datepicker.bs.min.js | 1 - .../locales/bootstrap-datepicker.ca.min.js | 1 - .../locales/bootstrap-datepicker.cs.min.js | 1 - .../locales/bootstrap-datepicker.cy.min.js | 1 - .../locales/bootstrap-datepicker.da.min.js | 1 - .../locales/bootstrap-datepicker.de.min.js | 1 - .../locales/bootstrap-datepicker.el.min.js | 1 - .../locales/bootstrap-datepicker.en-AU.min.js | 1 - .../locales/bootstrap-datepicker.en-CA.min.js | 1 - .../locales/bootstrap-datepicker.en-GB.min.js | 1 - .../locales/bootstrap-datepicker.en-IE.min.js | 1 - .../locales/bootstrap-datepicker.en-NZ.min.js | 1 - .../locales/bootstrap-datepicker.en-US.min.js | 1 - .../locales/bootstrap-datepicker.en-ZA.min.js | 1 - .../locales/bootstrap-datepicker.eo.min.js | 1 - .../locales/bootstrap-datepicker.es.min.js | 1 - .../locales/bootstrap-datepicker.et.min.js | 1 - .../locales/bootstrap-datepicker.eu.min.js | 1 - .../locales/bootstrap-datepicker.fa.min.js | 1 - .../locales/bootstrap-datepicker.fi.min.js | 1 - .../locales/bootstrap-datepicker.fo.min.js | 1 - .../locales/bootstrap-datepicker.fr-CH.min.js | 1 - .../locales/bootstrap-datepicker.fr.min.js | 1 - .../locales/bootstrap-datepicker.gl.min.js | 1 - .../locales/bootstrap-datepicker.he.min.js | 1 - .../locales/bootstrap-datepicker.hi.min.js | 1 - .../locales/bootstrap-datepicker.hr.min.js | 1 - .../locales/bootstrap-datepicker.hu.min.js | 1 - .../locales/bootstrap-datepicker.hy.min.js | 1 - .../locales/bootstrap-datepicker.id.min.js | 1 - .../locales/bootstrap-datepicker.is.min.js | 1 - .../locales/bootstrap-datepicker.it-CH.min.js | 1 - .../locales/bootstrap-datepicker.it.min.js | 1 - .../locales/bootstrap-datepicker.ja.min.js | 1 - .../locales/bootstrap-datepicker.ka.min.js | 1 - .../locales/bootstrap-datepicker.kh.min.js | 1 - .../locales/bootstrap-datepicker.kk.min.js | 1 - .../locales/bootstrap-datepicker.km.min.js | 1 - .../locales/bootstrap-datepicker.ko.min.js | 1 - .../locales/bootstrap-datepicker.kr.min.js | 1 - .../locales/bootstrap-datepicker.lt.min.js | 1 - .../locales/bootstrap-datepicker.lv.min.js | 1 - .../locales/bootstrap-datepicker.me.min.js | 1 - .../locales/bootstrap-datepicker.mk.min.js | 1 - .../locales/bootstrap-datepicker.mn.min.js | 1 - .../locales/bootstrap-datepicker.mr.min.js | 1 - .../locales/bootstrap-datepicker.ms.min.js | 1 - .../locales/bootstrap-datepicker.nl-BE.min.js | 1 - .../locales/bootstrap-datepicker.nl.min.js | 1 - .../locales/bootstrap-datepicker.no.min.js | 1 - .../locales/bootstrap-datepicker.oc.min.js | 1 - .../locales/bootstrap-datepicker.pl.min.js | 1 - .../locales/bootstrap-datepicker.pt-BR.min.js | 1 - .../locales/bootstrap-datepicker.pt.min.js | 1 - .../locales/bootstrap-datepicker.ro.min.js | 1 - .../bootstrap-datepicker.rs-latin.min.js | 1 - .../locales/bootstrap-datepicker.rs.min.js | 1 - .../locales/bootstrap-datepicker.ru.min.js | 1 - .../locales/bootstrap-datepicker.si.min.js | 1 - .../locales/bootstrap-datepicker.sk.min.js | 1 - .../locales/bootstrap-datepicker.sl.min.js | 1 - .../locales/bootstrap-datepicker.sq.min.js | 1 - .../bootstrap-datepicker.sr-latin.min.js | 1 - .../locales/bootstrap-datepicker.sr.min.js | 1 - .../locales/bootstrap-datepicker.sv.min.js | 1 - .../locales/bootstrap-datepicker.sw.min.js | 1 - .../locales/bootstrap-datepicker.ta.min.js | 1 - .../locales/bootstrap-datepicker.tg.min.js | 1 - .../locales/bootstrap-datepicker.th.min.js | 1 - .../locales/bootstrap-datepicker.tk.min.js | 1 - .../locales/bootstrap-datepicker.tr.min.js | 1 - .../locales/bootstrap-datepicker.uk.min.js | 1 - .../bootstrap-datepicker.uz-cyrl.min.js | 1 - .../bootstrap-datepicker.uz-latn.min.js | 1 - .../locales/bootstrap-datepicker.vi.min.js | 1 - .../locales/bootstrap-datepicker.zh-CN.min.js | 1 - .../locales/bootstrap-datepicker.zh-TW.min.js | 1 - .../bootstrap-tagsinput.css | 21 - .../bootstrap-tagsinput.js | 552 - wwwroot/lib/bootstrap/LICENSE | 22 - .../lib/bootstrap/dist/css/bootstrap-grid.css | 4085 ------ .../bootstrap/dist/css/bootstrap-grid.css.map | 1 - .../bootstrap/dist/css/bootstrap-grid.min.css | 6 - .../dist/css/bootstrap-grid.min.css.map | 1 - .../bootstrap/dist/css/bootstrap-grid.rtl.css | 4084 ------ .../dist/css/bootstrap-grid.rtl.css.map | 1 - .../dist/css/bootstrap-grid.rtl.min.css | 6 - .../dist/css/bootstrap-grid.rtl.min.css.map | 1 - .../bootstrap/dist/css/bootstrap-icons.css | 2078 --- .../bootstrap/dist/css/bootstrap-icons.json | 2052 --- .../dist/css/bootstrap-icons.min.css | 5 - .../bootstrap/dist/css/bootstrap-icons.scss | 2090 --- .../bootstrap/dist/css/bootstrap-reboot.css | 597 - .../dist/css/bootstrap-reboot.css.map | 1 - .../dist/css/bootstrap-reboot.min.css | 6 - .../dist/css/bootstrap-reboot.min.css.map | 1 - .../dist/css/bootstrap-reboot.rtl.css | 594 - .../dist/css/bootstrap-reboot.rtl.css.map | 1 - .../dist/css/bootstrap-reboot.rtl.min.css | 6 - .../dist/css/bootstrap-reboot.rtl.min.css.map | 1 - .../dist/css/bootstrap-utilities.css | 5402 ------- .../dist/css/bootstrap-utilities.css.map | 1 - .../dist/css/bootstrap-utilities.min.css | 6 - .../dist/css/bootstrap-utilities.min.css.map | 1 - .../dist/css/bootstrap-utilities.rtl.css | 5393 ------- .../dist/css/bootstrap-utilities.rtl.css.map | 1 - .../dist/css/bootstrap-utilities.rtl.min.css | 6 - .../css/bootstrap-utilities.rtl.min.css.map | 1 - wwwroot/lib/bootstrap/dist/css/bootstrap.css | 12068 ---------------- .../lib/bootstrap/dist/css/bootstrap.css.map | 1 - .../lib/bootstrap/dist/css/bootstrap.min.css | 6 - .../bootstrap/dist/css/bootstrap.min.css.map | 1 - .../lib/bootstrap/dist/css/bootstrap.rtl.css | 12032 --------------- .../bootstrap/dist/css/bootstrap.rtl.css.map | 1 - .../bootstrap/dist/css/bootstrap.rtl.min.css | 6 - .../dist/css/bootstrap.rtl.min.css.map | 1 - .../dist/css/fonts/bootstrap-icons.woff | Bin 176088 -> 0 bytes .../dist/css/fonts/bootstrap-icons.woff2 | Bin 130648 -> 0 bytes .../lib/bootstrap/dist/js/bootstrap.bundle.js | 6314 -------- .../bootstrap/dist/js/bootstrap.bundle.js.map | 1 - .../bootstrap/dist/js/bootstrap.bundle.min.js | 7 - .../dist/js/bootstrap.bundle.min.js.map | 1 - .../lib/bootstrap/dist/js/bootstrap.esm.js | 4447 ------ .../bootstrap/dist/js/bootstrap.esm.js.map | 1 - .../bootstrap/dist/js/bootstrap.esm.min.js | 7 - .../dist/js/bootstrap.esm.min.js.map | 1 - wwwroot/lib/bootstrap/dist/js/bootstrap.js | 4494 ------ .../lib/bootstrap/dist/js/bootstrap.js.map | 1 - .../lib/bootstrap/dist/js/bootstrap.min.js | 7 - .../bootstrap/dist/js/bootstrap.min.js.map | 1 - wwwroot/lib/chart-js/chart.cjs | 11503 --------------- wwwroot/lib/chart-js/chart.cjs.map | 1 - wwwroot/lib/chart-js/chart.js | 11455 --------------- wwwroot/lib/chart-js/chart.js.map | 1 - wwwroot/lib/chart-js/chart.umd.js | 14 - wwwroot/lib/chart-js/chart.umd.js.map | 1 - .../lib/chart-js/chunks/helpers.segment.cjs | 2872 ---- .../chart-js/chunks/helpers.segment.cjs.map | 1 - .../lib/chart-js/chunks/helpers.segment.js | 2746 ---- .../chart-js/chunks/helpers.segment.js.map | 1 - .../chart-js/controllers/controller.bar.d.ts | 62 - .../controllers/controller.bubble.d.ts | 35 - .../controllers/controller.doughnut.d.ts | 64 - .../chart-js/controllers/controller.line.d.ts | 13 - .../chart-js/controllers/controller.pie.d.ts | 3 - .../controllers/controller.polarArea.d.ts | 35 - .../controllers/controller.radar.d.ts | 19 - .../controllers/controller.scatter.d.ts | 20 - wwwroot/lib/chart-js/controllers/index.d.ts | 8 - wwwroot/lib/chart-js/core/core.adapters.d.ts | 93 - wwwroot/lib/chart-js/core/core.animation.d.ts | 21 - .../lib/chart-js/core/core.animations.d.ts | 22 - .../core/core.animations.defaults.d.ts | 1 - wwwroot/lib/chart-js/core/core.animator.d.ts | 67 - wwwroot/lib/chart-js/core/core.config.d.ts | 86 - .../lib/chart-js/core/core.controller.d.ts | 257 - .../chart-js/core/core.datasetController.d.ts | 251 - wwwroot/lib/chart-js/core/core.defaults.d.ts | 80 - wwwroot/lib/chart-js/core/core.element.d.ts | 21 - .../lib/chart-js/core/core.interaction.d.ts | 92 - wwwroot/lib/chart-js/core/core.layouts.d.ts | 88 - .../chart-js/core/core.layouts.defaults.d.ts | 1 - wwwroot/lib/chart-js/core/core.plugins.d.ts | 61 - wwwroot/lib/chart-js/core/core.registry.d.ts | 90 - .../chart-js/core/core.scale.autoskip.d.ts | 19 - wwwroot/lib/chart-js/core/core.scale.d.ts | 343 - .../chart-js/core/core.scale.defaults.d.ts | 1 - wwwroot/lib/chart-js/core/core.ticks.d.ts | 31 - .../lib/chart-js/core/core.typedRegistry.d.ts | 33 - wwwroot/lib/chart-js/core/index.d.ts | 15 - .../lib/chart-js/elements/element.arc.d.ts | 50 - .../lib/chart-js/elements/element.bar.d.ts | 32 - .../lib/chart-js/elements/element.line.d.ts | 87 - .../lib/chart-js/elements/element.point.d.ts | 39 - wwwroot/lib/chart-js/elements/index.d.ts | 4 - wwwroot/lib/chart-js/helpers.cjs | 135 - wwwroot/lib/chart-js/helpers.cjs.map | 1 - wwwroot/lib/chart-js/helpers.js | 9 - wwwroot/lib/chart-js/helpers.js.map | 1 - .../lib/chart-js/helpers/helpers.canvas.d.ts | 75 - .../chart-js/helpers/helpers.collection.d.ts | 68 - .../lib/chart-js/helpers/helpers.color.d.ts | 13 - .../lib/chart-js/helpers/helpers.config.d.ts | 31 - .../helpers/helpers.config.types.d.ts | 41 - .../lib/chart-js/helpers/helpers.core.d.ts | 147 - .../lib/chart-js/helpers/helpers.curve.d.ts | 17 - wwwroot/lib/chart-js/helpers/helpers.dom.d.ts | 55 - .../lib/chart-js/helpers/helpers.easing.d.ts | 40 - .../lib/chart-js/helpers/helpers.extras.d.ts | 45 - .../helpers/helpers.interpolation.d.ts | 22 - .../lib/chart-js/helpers/helpers.intl.d.ts | 1 - .../lib/chart-js/helpers/helpers.math.d.ts | 84 - .../lib/chart-js/helpers/helpers.options.d.ts | 97 - wwwroot/lib/chart-js/helpers/helpers.rtl.d.ts | 10 - .../lib/chart-js/helpers/helpers.segment.d.ts | 65 - wwwroot/lib/chart-js/helpers/index.d.ts | 15 - wwwroot/lib/chart-js/index.d.ts | 12 - wwwroot/lib/chart-js/index.umd.d.ts | 5 - wwwroot/lib/chart-js/platform/index.d.ts | 5 - .../lib/chart-js/platform/platform.base.d.ts | 63 - .../lib/chart-js/platform/platform.basic.d.ts | 10 - .../lib/chart-js/platform/platform.dom.d.ts | 19 - wwwroot/lib/chart-js/plugins/index.d.ts | 7 - .../lib/chart-js/plugins/plugin.colors.d.ts | 11 - .../chart-js/plugins/plugin.decimation.d.ts | 10 - .../plugins/plugin.filler/filler.drawing.d.ts | 1 - .../plugins/plugin.filler/filler.helper.d.ts | 14 - .../plugins/plugin.filler/filler.options.d.ts | 30 - .../plugins/plugin.filler/filler.segment.d.ts | 36 - .../plugins/plugin.filler/filler.target.d.ts | 9 - .../plugin.filler/filler.target.stack.d.ts | 14 - .../chart-js/plugins/plugin.filler/index.d.ts | 12 - .../plugins/plugin.filler/simpleArc.d.ts | 12 - .../lib/chart-js/plugins/plugin.legend.d.ts | 114 - .../lib/chart-js/plugins/plugin.subtitle.d.ts | 27 - .../lib/chart-js/plugins/plugin.title.d.ts | 61 - .../lib/chart-js/plugins/plugin.tooltip.d.ts | 288 - wwwroot/lib/chart-js/scales/index.d.ts | 6 - .../lib/chart-js/scales/scale.category.d.ts | 21 - wwwroot/lib/chart-js/scales/scale.linear.d.ts | 10 - .../lib/chart-js/scales/scale.linearbase.d.ts | 20 - .../chart-js/scales/scale.logarithmic.d.ts | 25 - .../chart-js/scales/scale.radialLinear.d.ts | 63 - wwwroot/lib/chart-js/scales/scale.time.d.ts | 130 - .../lib/chart-js/scales/scale.timeseries.d.ts | 39 - wwwroot/lib/chart-js/types.d.ts | 10 - wwwroot/lib/chart-js/types/animation.d.ts | 34 - wwwroot/lib/chart-js/types/basic.d.ts | 3 - wwwroot/lib/chart-js/types/color.d.ts | 1 - wwwroot/lib/chart-js/types/geometric.d.ts | 52 - wwwroot/lib/chart-js/types/index.d.ts | 3831 ----- wwwroot/lib/chart-js/types/layout.d.ts | 65 - wwwroot/lib/chart-js/types/utils.d.ts | 30 - wwwroot/lib/drawdown/drawdown.js | 129 - .../jquery-validation-unobtrusive/LICENSE.txt | 23 - .../jquery.validate.unobtrusive.js | 435 - .../jquery.validate.unobtrusive.min.js | 8 - wwwroot/lib/jquery-validation/LICENSE.md | 22 - .../dist/additional-methods.js | 1512 -- .../dist/additional-methods.min.js | 4 - .../jquery-validation/dist/jquery.validate.js | 1661 --- .../dist/jquery.validate.min.js | 4 - wwwroot/lib/jquery/LICENSE.txt | 21 - wwwroot/lib/jquery/dist/jquery.js | 10881 -------------- wwwroot/lib/jquery/dist/jquery.min.js | 2 - wwwroot/lib/jquery/dist/jquery.min.map | 1 - wwwroot/lib/masonry/masonry.min.js | 9 - wwwroot/manifest.json | 63 - wwwroot/sweetalert/sweetalert2.all.min.js | 6 - wwwroot/sweetalert/sweetalert2.min.css | 1 - 609 files changed, 170087 deletions(-) delete mode 100644 .env delete mode 100644 AI_IMPLEMENTATION_GUIDE.md delete mode 100644 AI_STRUCTURE.md delete mode 100644 CLAUDE.md delete mode 100644 Controllers/APIController.cs delete mode 100644 Controllers/AdminController.cs delete mode 100644 Controllers/ErrorController.cs delete mode 100644 Controllers/FilesController.cs delete mode 100644 Controllers/HomeController.cs delete mode 100644 Controllers/LoginController.cs delete mode 100644 Controllers/MigrationController.cs delete mode 100644 Controllers/Vehicle/GasController.cs delete mode 100644 Controllers/Vehicle/ImportController.cs delete mode 100644 Controllers/Vehicle/NoteController.cs delete mode 100644 Controllers/Vehicle/OdometerController.cs delete mode 100644 Controllers/Vehicle/PlanController.cs delete mode 100644 Controllers/Vehicle/ReminderController.cs delete mode 100644 Controllers/Vehicle/ReportController.cs delete mode 100644 Controllers/Vehicle/ServiceController.cs delete mode 100644 Controllers/Vehicle/SupplyController.cs delete mode 100644 Controllers/Vehicle/TaxController.cs delete mode 100644 Controllers/Vehicle/UpgradeController.cs delete mode 100644 Controllers/VehicleController.cs delete mode 100644 Dockerfile delete mode 100644 Enum/DashboardMetric.cs delete mode 100644 Enum/ExtraFieldType.cs delete mode 100644 Enum/ImportMode.cs delete mode 100644 Enum/KioskMode.cs delete mode 100644 Enum/PlanPriority.cs delete mode 100644 Enum/PlanProgress.cs delete mode 100644 Enum/ReminderIntervalUnit.cs delete mode 100644 Enum/ReminderMetric.cs delete mode 100644 Enum/ReminderMileageInterval.cs delete mode 100644 Enum/ReminderMonthInterval.cs delete mode 100644 Enum/ReminderUrgency.cs delete mode 100644 Enum/TagFilter.cs delete mode 100644 External/Implementations/Litedb/ExtraFieldDataAccess.cs delete mode 100644 External/Implementations/Litedb/GasRecordDataAccess.cs delete mode 100644 External/Implementations/Litedb/NoteDataAccess.cs delete mode 100644 External/Implementations/Litedb/OdometerRecordDataAccess.cs delete mode 100644 External/Implementations/Litedb/PlanRecordDataAccess.cs delete mode 100644 External/Implementations/Litedb/PlanRecordTemplateDataAccess.cs delete mode 100644 External/Implementations/Litedb/ReminderRecordDataAccess.cs delete mode 100644 External/Implementations/Litedb/ServiceRecordDataAccess.cs delete mode 100644 External/Implementations/Litedb/SupplyRecordDataAccess.cs delete mode 100644 External/Implementations/Litedb/TaxRecordDataAccess.cs delete mode 100644 External/Implementations/Litedb/TokenRecordDataAccess.cs delete mode 100644 External/Implementations/Litedb/UpgradeRecordDataAccess.cs delete mode 100644 External/Implementations/Litedb/UserAccessDataAcces.cs delete mode 100644 External/Implementations/Litedb/UserConfigDataAccess.cs delete mode 100644 External/Implementations/Litedb/UserRecordDataAccess.cs delete mode 100644 External/Implementations/Litedb/VehicleDataAccess.cs delete mode 100644 External/Implementations/Postgres/ExtraFieldDataAccess.cs delete mode 100644 External/Implementations/Postgres/GasRecordDataAccess.cs delete mode 100644 External/Implementations/Postgres/NoteDataAccess.cs delete mode 100644 External/Implementations/Postgres/OdometerRecordDataAccess.cs delete mode 100644 External/Implementations/Postgres/PlanRecordDataAccess.cs delete mode 100644 External/Implementations/Postgres/PlanRecordTemplateDataAccess.cs delete mode 100644 External/Implementations/Postgres/ReminderRecordDataAccess.cs delete mode 100644 External/Implementations/Postgres/ServiceRecordDataAccess.cs delete mode 100644 External/Implementations/Postgres/SupplyRecordDataAccess.cs delete mode 100644 External/Implementations/Postgres/TaxRecordDataAccess.cs delete mode 100644 External/Implementations/Postgres/TokenRecordDataAccess.cs delete mode 100644 External/Implementations/Postgres/UpgradeRecordDataAccess.cs delete mode 100644 External/Implementations/Postgres/UserAccessDataAccess.cs delete mode 100644 External/Implementations/Postgres/UserConfigDataAccess.cs delete mode 100644 External/Implementations/Postgres/UserRecordDataAccess.cs delete mode 100644 External/Implementations/Postgres/VehicleDataAccess.cs delete mode 100644 External/Interfaces/IExtraFieldDataAccess.cs delete mode 100644 External/Interfaces/IGasRecordDataAccess.cs delete mode 100644 External/Interfaces/INoteDataAccess.cs delete mode 100644 External/Interfaces/IOdometerRecordDataAccess.cs delete mode 100644 External/Interfaces/IPlanRecordDataAccess.cs delete mode 100644 External/Interfaces/IPlanRecordTemplateDataAccess.cs delete mode 100644 External/Interfaces/IReminderRecordDataAccess.cs delete mode 100644 External/Interfaces/IServiceRecordDataAccess.cs delete mode 100644 External/Interfaces/ISupplyRecordDataAccess.cs delete mode 100644 External/Interfaces/ITaxRecordDataAccess.cs delete mode 100644 External/Interfaces/ITokenRecordDataAccess.cs delete mode 100644 External/Interfaces/IUpgradeRecordDataAccess.cs delete mode 100644 External/Interfaces/IUserAccessDataAccess.cs delete mode 100644 External/Interfaces/IUserConfigDataAccess.cs delete mode 100644 External/Interfaces/IUserRecordDataAccess.cs delete mode 100644 External/Interfaces/IVehicleDataAccess.cs delete mode 100644 Filter/CollaboratorFilter.cs delete mode 100644 Helper/ConfigHelper.cs delete mode 100644 Helper/FileHelper.cs delete mode 100644 Helper/GasHelper.cs delete mode 100644 Helper/LiteDBHelper.cs delete mode 100644 Helper/MailHelper.cs delete mode 100644 Helper/ReminderHelper.cs delete mode 100644 Helper/ReportHelper.cs delete mode 100644 Helper/StaticHelper.cs delete mode 100644 Helper/TranslationHelper.cs delete mode 100644 LICENSE delete mode 100644 Logic/LoginLogic.cs delete mode 100644 Logic/OdometerLogic.cs delete mode 100644 Logic/UserLogic.cs delete mode 100644 Logic/VehicleLogic.cs delete mode 100644 MOTOVAULTPRO.md delete mode 100644 MapProfile/ImportMappers.cs delete mode 100644 Middleware/Authen.cs delete mode 100644 Models/API/MethodParameter.cs delete mode 100644 Models/API/ReleaseVersion.cs delete mode 100644 Models/API/TypeConverter.cs delete mode 100644 Models/API/VehicleInfo.cs delete mode 100644 Models/Admin/AdminViewModel.cs delete mode 100644 Models/Configuration/MailConfig.cs delete mode 100644 Models/ErrorViewModel.cs delete mode 100644 Models/GasRecord/GasRecord.cs delete mode 100644 Models/GasRecord/GasRecordEditModel.cs delete mode 100644 Models/GasRecord/GasRecordInput.cs delete mode 100644 Models/GasRecord/GasRecordInputContainer.cs delete mode 100644 Models/GasRecord/GasRecordViewModel.cs delete mode 100644 Models/GasRecord/GasRecordViewModelContainer.cs delete mode 100644 Models/GenericRecordEditModel.cs delete mode 100644 Models/Kiosk/KioskViewModel.cs delete mode 100644 Models/Login/AuthCookie.cs delete mode 100644 Models/Login/LoginModel.cs delete mode 100644 Models/Login/Token.cs delete mode 100644 Models/Note/Note.cs delete mode 100644 Models/OIDC/OpenIDConfig.cs delete mode 100644 Models/OIDC/OpenIDResult.cs delete mode 100644 Models/OIDC/OpenIDUserInfo.cs delete mode 100644 Models/OdometerRecord/OdometerRecord.cs delete mode 100644 Models/OdometerRecord/OdometerRecordEditModel.cs delete mode 100644 Models/OdometerRecord/OdometerRecordInput.cs delete mode 100644 Models/OperationResponse.cs delete mode 100644 Models/PlanRecord/PlanRecord.cs delete mode 100644 Models/PlanRecord/PlanRecordInput.cs delete mode 100644 Models/Reminder/ReminderConfig.cs delete mode 100644 Models/Reminder/ReminderRecord.cs delete mode 100644 Models/Reminder/ReminderRecordInput.cs delete mode 100644 Models/Reminder/ReminderRecordViewModel.cs delete mode 100644 Models/Report/CostDistanceTableForVehicle.cs delete mode 100644 Models/Report/CostForVehicleByMonth.cs delete mode 100644 Models/Report/CostMakeUpForVehicle.cs delete mode 100644 Models/Report/CostTableForVehicle.cs delete mode 100644 Models/Report/GenericReportModel.cs delete mode 100644 Models/Report/MPGForVehicleByMonth.cs delete mode 100644 Models/Report/ReminderMakeUpForVehicle.cs delete mode 100644 Models/Report/ReportHeader.cs delete mode 100644 Models/Report/ReportParameter.cs delete mode 100644 Models/Report/ReportViewModel.cs delete mode 100644 Models/Report/VehicleHistoryViewModel.cs delete mode 100644 Models/SearchResult.cs delete mode 100644 Models/ServerConfig.cs delete mode 100644 Models/ServiceRecord/ServiceRecord.cs delete mode 100644 Models/ServiceRecord/ServiceRecordInput.cs delete mode 100644 Models/Settings/ServerSettingsViewModel.cs delete mode 100644 Models/Settings/SettingsViewModel.cs delete mode 100644 Models/Shared/ExtraField.cs delete mode 100644 Models/Shared/GenericRecord.cs delete mode 100644 Models/Shared/ImportModel.cs delete mode 100644 Models/Shared/RecordExtraField.cs delete mode 100644 Models/Shared/StickerViewModel.cs delete mode 100644 Models/Shared/UploadedFiles.cs delete mode 100644 Models/Shared/VehicleRecords.cs delete mode 100644 Models/Shared/WebHookPayload.cs delete mode 100644 Models/Sponsors.cs delete mode 100644 Models/Supply/SupplyAvailability.cs delete mode 100644 Models/Supply/SupplyRecord.cs delete mode 100644 Models/Supply/SupplyRecordInput.cs delete mode 100644 Models/Supply/SupplyRequisitionHistory.cs delete mode 100644 Models/Supply/SupplyStore.cs delete mode 100644 Models/Supply/SupplyUsage.cs delete mode 100644 Models/Supply/SupplyUsageHistory.cs delete mode 100644 Models/Supply/SupplyUsageViewModel.cs delete mode 100644 Models/TaxRecord/TaxRecord.cs delete mode 100644 Models/TaxRecord/TaxRecordInput.cs delete mode 100644 Models/Translations.cs delete mode 100644 Models/UpgradeRecord/UpgradeRecord.cs delete mode 100644 Models/UpgradeRecord/UpgradeReportInput.cs delete mode 100644 Models/User/UserAccess.cs delete mode 100644 Models/User/UserCollaborator.cs delete mode 100644 Models/User/UserColumnPreference.cs delete mode 100644 Models/User/UserConfigData.cs delete mode 100644 Models/User/UserData.cs delete mode 100644 Models/UserConfig.cs delete mode 100644 Models/Vehicle.cs delete mode 100644 Models/VehicleViewModel.cs delete mode 100644 MotoVaultPro.csproj delete mode 100644 MotoVaultPro.sln delete mode 100644 Program.cs delete mode 100644 README.md delete mode 100644 Views/API/Index.cshtml delete mode 100644 Views/Admin/Index.cshtml delete mode 100644 Views/Admin/_Tokens.cshtml delete mode 100644 Views/Admin/_Users.cshtml delete mode 100644 Views/Home/Index.cshtml delete mode 100644 Views/Home/Kiosk.cshtml delete mode 100644 Views/Home/Setup.cshtml delete mode 100644 Views/Home/_AccountModal.cshtml delete mode 100644 Views/Home/_Calendar.cshtml delete mode 100644 Views/Home/_ExtraFields.cshtml delete mode 100644 Views/Home/_GarageDisplay.cshtml delete mode 100644 Views/Home/_Kiosk.cshtml delete mode 100644 Views/Home/_KioskPlan.cshtml delete mode 100644 Views/Home/_KioskReminder.cshtml delete mode 100644 Views/Home/_ReminderRecordCalendarModal.cshtml delete mode 100644 Views/Home/_RootAccountModal.cshtml delete mode 100644 Views/Home/_Settings.cshtml delete mode 100644 Views/Home/_Sponsors.cshtml delete mode 100644 Views/Home/_TranslationEditor.cshtml delete mode 100644 Views/Home/_Translations.cshtml delete mode 100644 Views/Home/_VehicleExtraFields.cshtml delete mode 100644 Views/Home/_VehicleSelector.cshtml delete mode 100644 Views/Home/_WidgetEditor.cshtml delete mode 100644 Views/Login/ForgotPassword.cshtml delete mode 100644 Views/Login/Index.cshtml delete mode 100644 Views/Login/OpenIDRegistration.cshtml delete mode 100644 Views/Login/Registration.cshtml delete mode 100644 Views/Login/RemoteAuthDebug.cshtml delete mode 100644 Views/Login/ResetPassword.cshtml delete mode 100644 Views/Migration/Index.cshtml delete mode 100644 Views/Shared/401.cshtml delete mode 100644 Views/Shared/Error.cshtml delete mode 100644 Views/Shared/_Layout.cshtml delete mode 100644 Views/Shared/_Layout.cshtml.css delete mode 100644 Views/Shared/_ValidationScriptsPartial.cshtml delete mode 100644 Views/Vehicle/Gas/_Gas.cshtml delete mode 100644 Views/Vehicle/Gas/_GasModal.cshtml delete mode 100644 Views/Vehicle/Gas/_GasRecordsModal.cshtml delete mode 100644 Views/Vehicle/Index.cshtml delete mode 100644 Views/Vehicle/Note/_NoteModal.cshtml delete mode 100644 Views/Vehicle/Note/_Notes.cshtml delete mode 100644 Views/Vehicle/Odometer/_OdometerRecordModal.cshtml delete mode 100644 Views/Vehicle/Odometer/_OdometerRecords.cshtml delete mode 100644 Views/Vehicle/Odometer/_OdometerRecordsModal.cshtml delete mode 100644 Views/Vehicle/Plan/_PlanOrderSupplies.cshtml delete mode 100644 Views/Vehicle/Plan/_PlanRecordItem.cshtml delete mode 100644 Views/Vehicle/Plan/_PlanRecordModal.cshtml delete mode 100644 Views/Vehicle/Plan/_PlanRecordTemplateEditModal.cshtml delete mode 100644 Views/Vehicle/Plan/_PlanRecordTemplateModal.cshtml delete mode 100644 Views/Vehicle/Plan/_PlanRecords.cshtml delete mode 100644 Views/Vehicle/Reminder/_ReminderRecordModal.cshtml delete mode 100644 Views/Vehicle/Reminder/_ReminderRecords.cshtml delete mode 100644 Views/Vehicle/Service/_ServiceRecordModal.cshtml delete mode 100644 Views/Vehicle/Service/_ServiceRecords.cshtml delete mode 100644 Views/Vehicle/Supply/_SupplyRecordModal.cshtml delete mode 100644 Views/Vehicle/Supply/_SupplyRecords.cshtml delete mode 100644 Views/Vehicle/Supply/_SupplyRequisitionHistory.cshtml delete mode 100644 Views/Vehicle/Supply/_SupplyStore.cshtml delete mode 100644 Views/Vehicle/Supply/_SupplyUsage.cshtml delete mode 100644 Views/Vehicle/Tax/_TaxRecordModal.cshtml delete mode 100644 Views/Vehicle/Tax/_TaxRecords.cshtml delete mode 100644 Views/Vehicle/Upgrade/_UpgradeRecordModal.cshtml delete mode 100644 Views/Vehicle/Upgrade/_UpgradeRecords.cshtml delete mode 100644 Views/Vehicle/_AttachmentColumn.cshtml delete mode 100644 Views/Vehicle/_BulkDataImporter.cshtml delete mode 100644 Views/Vehicle/_Collaborators.cshtml delete mode 100644 Views/Vehicle/_CostDistanceTableReport.cshtml delete mode 100644 Views/Vehicle/_CostMakeUpReport.cshtml delete mode 100644 Views/Vehicle/_CostTableReport.cshtml delete mode 100644 Views/Vehicle/_ExtraField.cshtml delete mode 100644 Views/Vehicle/_ExtraFieldMultiple.cshtml delete mode 100644 Views/Vehicle/_FileUploader.cshtml delete mode 100644 Views/Vehicle/_FilesToUpload.cshtml delete mode 100644 Views/Vehicle/_GasCostByMonthReport.cshtml delete mode 100644 Views/Vehicle/_GenericRecordModal.cshtml delete mode 100644 Views/Vehicle/_GlobalSearchResult.cshtml delete mode 100644 Views/Vehicle/_MPGByMonthReport.cshtml delete mode 100644 Views/Vehicle/_RecurringReminderSelector.cshtml delete mode 100644 Views/Vehicle/_ReminderMakeUpReport.cshtml delete mode 100644 Views/Vehicle/_Report.cshtml delete mode 100644 Views/Vehicle/_ReportHeader.cshtml delete mode 100644 Views/Vehicle/_ReportParameters.cshtml delete mode 100644 Views/Vehicle/_ReportWidgets.cshtml delete mode 100644 Views/Vehicle/_Stickers.cshtml delete mode 100644 Views/Vehicle/_UploadedFiles.cshtml delete mode 100644 Views/Vehicle/_UserColumnPreferences.cshtml delete mode 100644 Views/Vehicle/_VehicleHistory.cshtml delete mode 100644 Views/Vehicle/_VehicleModal.cshtml delete mode 100644 Views/_ViewImports.cshtml delete mode 100644 Views/_ViewStart.cshtml delete mode 100644 appsettings.Development.json delete mode 100644 appsettings.json delete mode 100644 docker-compose.postgresql.yml delete mode 100644 docker-compose.traefik.yml delete mode 100644 docker-compose.yml delete mode 100644 docs/K8S-OVERVIEW.md delete mode 100644 docs/K8S-PHASE-1-DETAILED.md delete mode 100644 docs/K8S-PHASE-1.md delete mode 100644 docs/K8S-PHASE-2.md delete mode 100644 docs/K8S-PHASE-3.md delete mode 100644 docs/K8S-PHASE-4.md delete mode 100644 docs/K8S-REFACTOR.md delete mode 100644 docs/MOBILE.md delete mode 100644 docs/architecture.md delete mode 100644 docs/data-model-prompt.md delete mode 100644 docs/generic-record.md delete mode 100644 docs/record-architecture.md delete mode 100644 docs/ux-architecture.md delete mode 100644 init.sql delete mode 100644 package-lock.json delete mode 100644 package.json delete mode 100644 wwwroot/.DS_Store delete mode 100644 wwwroot/css/loader.css delete mode 100644 wwwroot/css/site.css delete mode 100644 wwwroot/defaults/.DS_Store delete mode 100644 wwwroot/defaults/addnew_vehicle.png delete mode 100644 wwwroot/defaults/demo_default.zip delete mode 100644 wwwroot/defaults/en_US.json delete mode 100644 wwwroot/defaults/garage.png delete mode 100644 wwwroot/defaults/garage_narrow.png delete mode 100644 wwwroot/defaults/motovaultpro.png delete mode 100644 wwwroot/defaults/motovaultpro_icon_128.png delete mode 100644 wwwroot/defaults/motovaultpro_icon_144.png delete mode 100644 wwwroot/defaults/motovaultpro_icon_192.png delete mode 100644 wwwroot/defaults/motovaultpro_icon_72.png delete mode 100644 wwwroot/defaults/motovaultpro_launch.png delete mode 100644 wwwroot/defaults/motovaultpro_logo.png delete mode 100644 wwwroot/defaults/motovaultpro_logo_small.png delete mode 100644 wwwroot/defaults/motovaultpro_maskable_icon_128.png delete mode 100644 wwwroot/defaults/motovaultpro_maskable_icon_192.png delete mode 100644 wwwroot/defaults/motovaultpro_maskable_icon_72.png delete mode 100644 wwwroot/defaults/noimage.png delete mode 100644 wwwroot/defaults/reminderemailtemplate.txt delete mode 100644 wwwroot/favicon.png delete mode 100644 wwwroot/js/garage.js delete mode 100644 wwwroot/js/gasrecord.js delete mode 100644 wwwroot/js/loader.js delete mode 100644 wwwroot/js/login.js delete mode 100644 wwwroot/js/note.js delete mode 100644 wwwroot/js/odometerrecord.js delete mode 100644 wwwroot/js/planrecord.js delete mode 100644 wwwroot/js/reminderrecord.js delete mode 100644 wwwroot/js/reports.js delete mode 100644 wwwroot/js/serversettings.js delete mode 100644 wwwroot/js/servicerecord.js delete mode 100644 wwwroot/js/settings.js delete mode 100644 wwwroot/js/shared.js delete mode 100644 wwwroot/js/supplyrecord.js delete mode 100644 wwwroot/js/taxrecord.js delete mode 100644 wwwroot/js/upgraderecord.js delete mode 100644 wwwroot/js/vehicle.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/css/bootstrap-datepicker.css delete mode 100644 wwwroot/lib/bootstrap-datepicker/css/bootstrap-datepicker.css.map delete mode 100644 wwwroot/lib/bootstrap-datepicker/css/bootstrap-datepicker.min.css delete mode 100644 wwwroot/lib/bootstrap-datepicker/css/bootstrap-datepicker.standalone.css delete mode 100644 wwwroot/lib/bootstrap-datepicker/css/bootstrap-datepicker.standalone.css.map delete mode 100644 wwwroot/lib/bootstrap-datepicker/css/bootstrap-datepicker.standalone.min.css delete mode 100644 wwwroot/lib/bootstrap-datepicker/css/bootstrap-datepicker3.css delete mode 100644 wwwroot/lib/bootstrap-datepicker/css/bootstrap-datepicker3.css.map delete mode 100644 wwwroot/lib/bootstrap-datepicker/css/bootstrap-datepicker3.min.css delete mode 100644 wwwroot/lib/bootstrap-datepicker/css/bootstrap-datepicker3.standalone.css delete mode 100644 wwwroot/lib/bootstrap-datepicker/css/bootstrap-datepicker3.standalone.css.map delete mode 100644 wwwroot/lib/bootstrap-datepicker/css/bootstrap-datepicker3.standalone.min.css delete mode 100644 wwwroot/lib/bootstrap-datepicker/js/bootstrap-datepicker.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/js/bootstrap-datepicker.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker-en-CA.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.ar-DZ.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.ar-tn.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.ar.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.az.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.bg.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.bm.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.bn.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.br.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.bs.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.ca.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.cs.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.cy.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.da.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.de.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.el.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.en-AU.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.en-CA.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.en-GB.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.en-IE.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.en-NZ.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.en-US.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.en-ZA.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.eo.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.es.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.et.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.eu.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.fa.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.fi.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.fo.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.fr-CH.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.fr.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.gl.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.he.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.hi.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.mr.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.oc.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.si.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.sw.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.ta.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.tg.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.tk.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.uz-cyrl.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.uz-latn.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js delete mode 100644 wwwroot/lib/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js delete mode 100644 wwwroot/lib/bootstrap-tagsinput/bootstrap-tagsinput.css delete mode 100644 wwwroot/lib/bootstrap-tagsinput/bootstrap-tagsinput.js delete mode 100644 wwwroot/lib/bootstrap/LICENSE delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-icons.css delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-icons.json delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-icons.min.css delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-icons.scss delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap.css delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap.css.map delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap.min.css delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css delete mode 100644 wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css.map delete mode 100644 wwwroot/lib/bootstrap/dist/css/fonts/bootstrap-icons.woff delete mode 100644 wwwroot/lib/bootstrap/dist/css/fonts/bootstrap-icons.woff2 delete mode 100644 wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js delete mode 100644 wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map delete mode 100644 wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js delete mode 100644 wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map delete mode 100644 wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js delete mode 100644 wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map delete mode 100644 wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js delete mode 100644 wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map delete mode 100644 wwwroot/lib/bootstrap/dist/js/bootstrap.js delete mode 100644 wwwroot/lib/bootstrap/dist/js/bootstrap.js.map delete mode 100644 wwwroot/lib/bootstrap/dist/js/bootstrap.min.js delete mode 100644 wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map delete mode 100644 wwwroot/lib/chart-js/chart.cjs delete mode 100644 wwwroot/lib/chart-js/chart.cjs.map delete mode 100644 wwwroot/lib/chart-js/chart.js delete mode 100644 wwwroot/lib/chart-js/chart.js.map delete mode 100644 wwwroot/lib/chart-js/chart.umd.js delete mode 100644 wwwroot/lib/chart-js/chart.umd.js.map delete mode 100644 wwwroot/lib/chart-js/chunks/helpers.segment.cjs delete mode 100644 wwwroot/lib/chart-js/chunks/helpers.segment.cjs.map delete mode 100644 wwwroot/lib/chart-js/chunks/helpers.segment.js delete mode 100644 wwwroot/lib/chart-js/chunks/helpers.segment.js.map delete mode 100644 wwwroot/lib/chart-js/controllers/controller.bar.d.ts delete mode 100644 wwwroot/lib/chart-js/controllers/controller.bubble.d.ts delete mode 100644 wwwroot/lib/chart-js/controllers/controller.doughnut.d.ts delete mode 100644 wwwroot/lib/chart-js/controllers/controller.line.d.ts delete mode 100644 wwwroot/lib/chart-js/controllers/controller.pie.d.ts delete mode 100644 wwwroot/lib/chart-js/controllers/controller.polarArea.d.ts delete mode 100644 wwwroot/lib/chart-js/controllers/controller.radar.d.ts delete mode 100644 wwwroot/lib/chart-js/controllers/controller.scatter.d.ts delete mode 100644 wwwroot/lib/chart-js/controllers/index.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.adapters.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.animation.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.animations.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.animations.defaults.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.animator.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.config.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.controller.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.datasetController.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.defaults.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.element.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.interaction.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.layouts.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.layouts.defaults.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.plugins.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.registry.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.scale.autoskip.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.scale.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.scale.defaults.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.ticks.d.ts delete mode 100644 wwwroot/lib/chart-js/core/core.typedRegistry.d.ts delete mode 100644 wwwroot/lib/chart-js/core/index.d.ts delete mode 100644 wwwroot/lib/chart-js/elements/element.arc.d.ts delete mode 100644 wwwroot/lib/chart-js/elements/element.bar.d.ts delete mode 100644 wwwroot/lib/chart-js/elements/element.line.d.ts delete mode 100644 wwwroot/lib/chart-js/elements/element.point.d.ts delete mode 100644 wwwroot/lib/chart-js/elements/index.d.ts delete mode 100644 wwwroot/lib/chart-js/helpers.cjs delete mode 100644 wwwroot/lib/chart-js/helpers.cjs.map delete mode 100644 wwwroot/lib/chart-js/helpers.js delete mode 100644 wwwroot/lib/chart-js/helpers.js.map delete mode 100644 wwwroot/lib/chart-js/helpers/helpers.canvas.d.ts delete mode 100644 wwwroot/lib/chart-js/helpers/helpers.collection.d.ts delete mode 100644 wwwroot/lib/chart-js/helpers/helpers.color.d.ts delete mode 100644 wwwroot/lib/chart-js/helpers/helpers.config.d.ts delete mode 100644 wwwroot/lib/chart-js/helpers/helpers.config.types.d.ts delete mode 100644 wwwroot/lib/chart-js/helpers/helpers.core.d.ts delete mode 100644 wwwroot/lib/chart-js/helpers/helpers.curve.d.ts delete mode 100644 wwwroot/lib/chart-js/helpers/helpers.dom.d.ts delete mode 100644 wwwroot/lib/chart-js/helpers/helpers.easing.d.ts delete mode 100644 wwwroot/lib/chart-js/helpers/helpers.extras.d.ts delete mode 100644 wwwroot/lib/chart-js/helpers/helpers.interpolation.d.ts delete mode 100644 wwwroot/lib/chart-js/helpers/helpers.intl.d.ts delete mode 100644 wwwroot/lib/chart-js/helpers/helpers.math.d.ts delete mode 100644 wwwroot/lib/chart-js/helpers/helpers.options.d.ts delete mode 100644 wwwroot/lib/chart-js/helpers/helpers.rtl.d.ts delete mode 100644 wwwroot/lib/chart-js/helpers/helpers.segment.d.ts delete mode 100644 wwwroot/lib/chart-js/helpers/index.d.ts delete mode 100644 wwwroot/lib/chart-js/index.d.ts delete mode 100644 wwwroot/lib/chart-js/index.umd.d.ts delete mode 100644 wwwroot/lib/chart-js/platform/index.d.ts delete mode 100644 wwwroot/lib/chart-js/platform/platform.base.d.ts delete mode 100644 wwwroot/lib/chart-js/platform/platform.basic.d.ts delete mode 100644 wwwroot/lib/chart-js/platform/platform.dom.d.ts delete mode 100644 wwwroot/lib/chart-js/plugins/index.d.ts delete mode 100644 wwwroot/lib/chart-js/plugins/plugin.colors.d.ts delete mode 100644 wwwroot/lib/chart-js/plugins/plugin.decimation.d.ts delete mode 100644 wwwroot/lib/chart-js/plugins/plugin.filler/filler.drawing.d.ts delete mode 100644 wwwroot/lib/chart-js/plugins/plugin.filler/filler.helper.d.ts delete mode 100644 wwwroot/lib/chart-js/plugins/plugin.filler/filler.options.d.ts delete mode 100644 wwwroot/lib/chart-js/plugins/plugin.filler/filler.segment.d.ts delete mode 100644 wwwroot/lib/chart-js/plugins/plugin.filler/filler.target.d.ts delete mode 100644 wwwroot/lib/chart-js/plugins/plugin.filler/filler.target.stack.d.ts delete mode 100644 wwwroot/lib/chart-js/plugins/plugin.filler/index.d.ts delete mode 100644 wwwroot/lib/chart-js/plugins/plugin.filler/simpleArc.d.ts delete mode 100644 wwwroot/lib/chart-js/plugins/plugin.legend.d.ts delete mode 100644 wwwroot/lib/chart-js/plugins/plugin.subtitle.d.ts delete mode 100644 wwwroot/lib/chart-js/plugins/plugin.title.d.ts delete mode 100644 wwwroot/lib/chart-js/plugins/plugin.tooltip.d.ts delete mode 100644 wwwroot/lib/chart-js/scales/index.d.ts delete mode 100644 wwwroot/lib/chart-js/scales/scale.category.d.ts delete mode 100644 wwwroot/lib/chart-js/scales/scale.linear.d.ts delete mode 100644 wwwroot/lib/chart-js/scales/scale.linearbase.d.ts delete mode 100644 wwwroot/lib/chart-js/scales/scale.logarithmic.d.ts delete mode 100644 wwwroot/lib/chart-js/scales/scale.radialLinear.d.ts delete mode 100644 wwwroot/lib/chart-js/scales/scale.time.d.ts delete mode 100644 wwwroot/lib/chart-js/scales/scale.timeseries.d.ts delete mode 100644 wwwroot/lib/chart-js/types.d.ts delete mode 100644 wwwroot/lib/chart-js/types/animation.d.ts delete mode 100644 wwwroot/lib/chart-js/types/basic.d.ts delete mode 100644 wwwroot/lib/chart-js/types/color.d.ts delete mode 100644 wwwroot/lib/chart-js/types/geometric.d.ts delete mode 100644 wwwroot/lib/chart-js/types/index.d.ts delete mode 100644 wwwroot/lib/chart-js/types/layout.d.ts delete mode 100644 wwwroot/lib/chart-js/types/utils.d.ts delete mode 100644 wwwroot/lib/drawdown/drawdown.js delete mode 100644 wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt delete mode 100644 wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js delete mode 100644 wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js delete mode 100644 wwwroot/lib/jquery-validation/LICENSE.md delete mode 100644 wwwroot/lib/jquery-validation/dist/additional-methods.js delete mode 100644 wwwroot/lib/jquery-validation/dist/additional-methods.min.js delete mode 100644 wwwroot/lib/jquery-validation/dist/jquery.validate.js delete mode 100644 wwwroot/lib/jquery-validation/dist/jquery.validate.min.js delete mode 100644 wwwroot/lib/jquery/LICENSE.txt delete mode 100644 wwwroot/lib/jquery/dist/jquery.js delete mode 100644 wwwroot/lib/jquery/dist/jquery.min.js delete mode 100644 wwwroot/lib/jquery/dist/jquery.min.map delete mode 100644 wwwroot/lib/masonry/masonry.min.js delete mode 100644 wwwroot/manifest.json delete mode 100644 wwwroot/sweetalert/sweetalert2.all.min.js delete mode 100644 wwwroot/sweetalert/sweetalert2.min.css diff --git a/.env b/.env deleted file mode 100644 index f99be90..0000000 --- a/.env +++ /dev/null @@ -1,12 +0,0 @@ -LC_ALL=en_US.UTF-8 -LANG=en_US.UTF-8 -MailConfig__EmailServer="" -MailConfig__EmailFrom="" -MailConfig__Port=587 -MailConfig__Username="" -MailConfig__Password="" -LOGGING__LOGLEVEL__DEFAULT=Error - -# This file is provided as a GUIDELINE ONLY -# Use the MotoVaultPro Configurator to configure your environment variables -# https://motovaultpro.com/configure \ No newline at end of file diff --git a/AI_IMPLEMENTATION_GUIDE.md b/AI_IMPLEMENTATION_GUIDE.md deleted file mode 100644 index f29691c..0000000 --- a/AI_IMPLEMENTATION_GUIDE.md +++ /dev/null @@ -1,1266 +0,0 @@ -# MotoVaultPro Greenfield AI-First Implementation Guide - -## Executive Summary - -This guide provides a comprehensive approach to build MotoVaultPro from the ground up using AI-optimized patterns designed for maximum efficiency in AI-to-AI collaboration and maintenance. - -**Project Status**: Greenfield - Building from scratch with AI-first architecture -**Target State**: Self-documenting, progressively discoverable codebase with AI-friendly navigation, context-aware documentation, and feature-based modular architecture optimized for AI development from day one. - -**Key Advantage**: No legacy constraints - we can implement the optimal AI structure immediately. - ---- - -## AI-First Project Architecture - -### Optimal Directory Structure - -``` -motovaultpro-v2/ -├── AI_README.md # 200-token complete system overview -├── PROJECT_MAP.md # Navigation and quick reference -├── CONVENTIONS.md # Project patterns and standards -├── CLAUDE.md # AI interaction guide (existing) -├── CHANGELOG_AI.md # AI-focused change tracking -├── -├── .ai/ # AI-specific metadata -│ ├── context.json # Context navigation for AI -│ ├── dependencies.yaml # Module dependency graph -│ └── shortcuts.md # Quick command reference -├── -├── backend/ -│ ├── src/ -│ │ ├── index.ts # Application entry point -│ │ ├── app.ts # Express app configuration -│ │ ├── -│ │ ├── core/ # Stable, critical functionality -│ │ │ ├── config/ # Environment & app configuration -│ │ │ │ ├── database.ts # PostgreSQL connection -│ │ │ │ ├── redis.ts # Redis connection -│ │ │ │ ├── auth0.ts # Auth0 middleware -│ │ │ │ └── minio.ts # MinIO client setup -│ │ │ ├── security/ # Auth and security primitives -│ │ │ │ └── auth.middleware.ts -│ │ │ └── logging/ # Centralized logging -│ │ │ └── logger.ts -│ │ ├── -│ │ ├── features/ # Business logic modules -│ │ │ ├── vehicles/ # Vehicle management feature -│ │ │ │ ├── index.ts # Public API exports -│ │ │ │ ├── vehicle.service.ts # Business logic -│ │ │ │ ├── vehicle.controller.ts # HTTP handlers -│ │ │ │ ├── vehicle.repository.ts # Data access -│ │ │ │ ├── vehicle.types.ts # Type definitions -│ │ │ │ ├── vehicle.validators.ts # Input validation -│ │ │ │ ├── vehicle.routes.ts # Route definitions -│ │ │ │ └── __tests__/ # Feature tests -│ │ │ ├── fuel-logs/ # Fuel tracking feature -│ │ │ │ └── [same structure as vehicles] -│ │ │ ├── maintenance/ # Maintenance tracking feature -│ │ │ │ └── [same structure as vehicles] -│ │ │ └── stations/ # Gas station discovery feature -│ │ │ └── [same structure as vehicles] -│ │ ├── -│ │ ├── shared/ # Reusable utilities -│ │ │ ├── types/ # Shared type definitions -│ │ │ │ ├── common.ts # Common types -│ │ │ │ └── api.ts # API response types -│ │ │ └── utils/ # Pure utility functions -│ │ │ ├── validation.ts -│ │ │ └── formatters.ts -│ │ ├── -│ │ ├── external/ # External API integrations -│ │ │ ├── vpic/ # NHTSA vPIC service -│ │ │ │ ├── vpic.service.ts -│ │ │ │ ├── vpic.types.ts -│ │ │ │ └── __tests__/ -│ │ │ └── google-maps/ # Google Maps integration -│ │ │ ├── maps.service.ts -│ │ │ ├── maps.types.ts -│ │ │ └── __tests__/ -│ │ └── -│ │ └── database/ # Database layer -│ │ ├── migrations/ # Schema migrations -│ │ │ ├── 001_initial_schema.sql -│ │ │ ├── 002_vin_cache.sql -│ │ │ └── 003_stored_procedures.sql -│ │ └── seeds/ # Test/dev data -│ ├── -│ ├── package.json -│ ├── tsconfig.json -│ ├── Dockerfile -│ └── jest.config.js -├── -├── frontend/ -│ ├── src/ -│ │ ├── main.tsx # React entry point -│ │ ├── App.tsx # Root component -│ │ ├── -│ │ ├── features/ # Feature-based organization -│ │ │ ├── vehicles/ # Vehicle management UI -│ │ │ │ ├── components/ -│ │ │ │ │ ├── VehicleForm/ -│ │ │ │ │ ├── VehicleList/ -│ │ │ │ │ └── VINDecoder/ -│ │ │ │ ├── pages/ -│ │ │ │ │ ├── VehiclesPage.tsx -│ │ │ │ │ └── VehicleDetailPage.tsx -│ │ │ │ ├── hooks/ -│ │ │ │ │ └── useVehicles.ts -│ │ │ │ ├── api/ -│ │ │ │ │ └── vehicles.api.ts -│ │ │ │ └── types/ -│ │ │ │ └── vehicle.types.ts -│ │ │ └── [fuel-logs, maintenance, stations with same structure] -│ │ ├── -│ │ ├── shared/ # Shared UI components & utilities -│ │ │ ├── components/ # Reusable UI components -│ │ │ │ ├── common/ # Basic UI elements -│ │ │ │ └── layout/ # Layout components -│ │ │ ├── hooks/ # Shared React hooks -│ │ │ │ ├── useAuth.ts -│ │ │ │ └── useApi.ts -│ │ │ ├── utils/ # Utility functions -│ │ │ └── types/ # Shared TypeScript types -│ │ ├── -│ │ └── core/ # Core application setup -│ │ ├── api/ # API client configuration -│ │ │ └── client.ts # Axios instance -│ │ ├── auth/ # Authentication setup -│ │ │ └── auth0.config.ts -│ │ └── store/ # State management -│ │ └── index.ts # Zustand/Redux store -│ ├── -│ ├── package.json -│ ├── tsconfig.json -│ ├── vite.config.ts -│ ├── Dockerfile -│ └── index.html -├── -├── templates/ # Code generation templates -│ ├── feature/ # Feature module template -│ │ ├── backend/ -│ │ │ ├── [feature].service.ts -│ │ │ ├── [feature].controller.ts -│ │ │ ├── [feature].repository.ts -│ │ │ ├── [feature].types.ts -│ │ │ ├── [feature].validators.ts -│ │ │ └── [feature].routes.ts -│ │ └── frontend/ -│ │ ├── [Feature]Page.tsx -│ │ ├── [Feature]Form.tsx -│ │ ├── [Feature]List.tsx -│ │ ├── use[Feature].ts -│ │ └── [feature].api.ts -│ ├── external-service/ # External API integration template -│ └── database-migration/ # Database migration template -├── -├── docs/ # Comprehensive documentation -│ ├── ARCHITECTURE.md # System design decisions -│ ├── API.md # API documentation -│ ├── DEPLOYMENT.md # Deployment guide -│ ├── TROUBLESHOOTING.md # Common issues and solutions -│ ├── external-apis/ # External API documentation -│ │ ├── nhtsa-vpic.md -│ │ └── google-maps.md -│ └── diagrams/ # Architecture diagrams -├── -├── k8s/ # Kubernetes configurations -│ └── [existing k8s structure from MOTOVAULTPRO.md] -├── -├── scripts/ # Development & deployment scripts -│ ├── setup.sh # Initial project setup -│ ├── generate-feature.sh # Generate new feature from template -│ └── migrate-db.sh # Database migration runner -├── -├── tests/ # Cross-cutting tests -│ ├── integration/ # API integration tests -│ ├── e2e/ # End-to-end tests -│ └── fixtures/ # Shared test data -├── -├── docker-compose.yml # Local development environment -├── .env.example # Environment variables template -├── Makefile # Common commands -└── README.md # Traditional project documentation -``` - ---- - -## Implementation Phases - -### Phase 1: Project Foundation Setup (Day 1-2) - -**Objective**: Create the complete AI-optimized project structure with foundation files. - -#### 1.1 Initialize Project Structure - -**Create complete directory tree** (all folders from structure above) - -**Initialize package management**: -```bash -# Backend setup -cd backend && npm init -y -npm install express typescript @types/node @types/express -npm install --save-dev jest @types/jest ts-jest nodemon -npm install pg redis ioredis minio axios joi -npm install express-jwt jwks-rsa # Auth0 integration - -# Frontend setup -cd ../frontend && npm create vite@latest . -- --template react-ts -npm install @auth0/auth0-react axios zustand -npm install --save-dev @testing-library/react @testing-library/jest-dom vitest -``` - -#### 1.2 Create Foundation Files - -**AI_README.md** (Essential 200-token overview) -```markdown -# MotoVaultPro - AI-First Vehicle Management Platform - -## AI Quick Start (50 tokens) -Full-stack vehicle management platform built with React/TypeScript frontend, Node.js/Express backend, PostgreSQL database. Integrates NHTSA vPIC for VIN decoding and Google Maps for fuel station discovery. Features Auth0 authentication, Redis caching, MinIO storage. AI-optimized architecture with feature-based modules. - -## Navigation Guide -- Start here: PROJECT_MAP.md -- Conventions: CONVENTIONS.md -- Architecture: docs/ARCHITECTURE.md -- AI Context: .ai/context.json - -## Critical Context -- Feature-based architecture: backend/src/features/ & frontend/src/features/ -- External APIs: NHTSA vPIC (VIN decode), Google Maps (stations) -- Auth0 handles authentication (JWT tokens) -- All external calls use caching (Redis TTL-based) -- Database migrations in backend/src/database/migrations/ - -## Primary Entry Points -- Backend: backend/src/index.ts → backend/src/app.ts -- Frontend: frontend/src/main.tsx → frontend/src/App.tsx -- Features: backend/src/features/[feature]/index.ts -- Templates: templates/feature/ for new features -``` - -**PROJECT_MAP.md** (AI Navigation Guide) -```markdown -# MotoVaultPro AI Navigation Map - -## System Overview -AI-first vehicle management platform with React frontend and Node.js backend. Features organized into self-contained modules with clear dependencies. External integrations cached via Redis. PostgreSQL for persistence, MinIO for file storage. - -## Quick Navigation by Task - -### Adding New Feature -1. **Use template**: `scripts/generate-feature.sh [feature-name]` -2. **Backend path**: `backend/src/features/[feature]/` -3. **Frontend path**: `frontend/src/features/[feature]/` -4. **Update dependencies**: `.ai/dependencies.yaml` -5. **Add tests**: Follow existing `__tests__/` patterns - -### Debugging Issues -1. **Check logs**: `backend/src/core/logging/logger.ts` output -2. **API issues**: `backend/src/features/[feature]/[feature].controller.ts` -3. **External APIs**: `backend/src/external/[service]/` -4. **Database**: `backend/src/database/migrations/` for schema -5. **Frontend**: `frontend/src/features/[feature]/components/` - -### Modifying External APIs -1. **Service layer**: `backend/src/external/[service]/[service].service.ts` -2. **Cache strategy**: Check TTL settings and invalidation logic -3. **Error handling**: Implement circuit breaker patterns -4. **Rate limiting**: Monitor API usage and implement backoff -5. **Types**: Update `[service].types.ts` for API changes - -### Database Changes -1. **New migration**: `backend/src/database/migrations/` -2. **Follow naming**: `001_descriptive_name.sql` -3. **Update models**: `backend/src/features/[feature]/[feature].types.ts` -4. **Test migration**: Up AND down migrations -5. **Update seeds**: `backend/src/database/seeds/` if needed - -## Feature Module Map - -Each feature follows identical structure: -``` -features/[feature]/ -├── index.ts # Public API (exports only) -├── [feature].service.ts # Business logic & external calls -├── [feature].controller.ts # HTTP request/response handling -├── [feature].repository.ts # Database operations -├── [feature].types.ts # TypeScript type definitions -├── [feature].validators.ts # Input validation schemas -├── [feature].routes.ts # Express route definitions -└── __tests__/ # Feature-specific tests - ├── unit/ # Service & utility tests - ├── integration/ # API endpoint tests - └── fixtures/ # Test data -``` - -## AI Context Loading Guide - -### Always Load (Essential Context) -- `AI_README.md` - System understanding -- `CONVENTIONS.md` - Coding standards -- `backend/src/core/` - Core functionality -- `.ai/context.json` - Task-specific routing - -### Conditional Loading (Task-Specific) -- **Vehicle operations**: `backend/src/features/vehicles/`, `backend/src/external/vpic/` -- **Fuel tracking**: `backend/src/features/fuel-logs/` -- **Authentication issues**: `backend/src/core/security/`, Auth0 config -- **Database problems**: `backend/src/database/`, core config -- **Frontend bugs**: `frontend/src/features/[relevant-feature]/` -- **External API issues**: `backend/src/external/[service]/` - -## Critical Paths (High-Risk Areas) - -### Security-Critical -- `backend/src/core/security/auth.middleware.ts` - JWT validation -- `backend/src/core/config/auth0.ts` - Auth0 configuration -- All `.env` handling in config files - -### Performance-Critical -- `backend/src/external/` - External API integrations -- Redis caching logic in all services -- Database queries in repositories - -### Business-Critical -- `backend/src/features/vehicles/vehicle.service.ts` - Core vehicle operations -- VIN decoding pipeline (NHTSA integration) -- Fuel cost calculations and tracking -``` - -#### 1.3 Create AI Context System - -**.ai/context.json** -```json -{ - "version": "1.0.0", - "project_type": "full-stack-app", - "language": "typescript", - "ai_optimized": true, - "context_budget": { - "always_load": [ - "AI_README.md", - "CONVENTIONS.md", - "backend/src/core/", - "backend/src/shared/types/" - ], - "essential_paths": [ - "backend/src/index.ts", - "backend/src/app.ts", - "frontend/src/main.tsx", - "frontend/src/App.tsx" - ], - "conditional": { - "if_adding_feature": [ - "templates/feature/", - ".ai/dependencies.yaml", - "scripts/generate-feature.sh" - ], - "if_modifying_vehicles": [ - "backend/src/features/vehicles/", - "backend/src/external/vpic/", - "frontend/src/features/vehicles/" - ], - "if_modifying_fuel": [ - "backend/src/features/fuel-logs/", - "frontend/src/features/fuel-logs/" - ], - "if_debugging_auth": [ - "backend/src/core/security/", - "backend/src/core/config/auth0.ts", - "frontend/src/core/auth/" - ], - "if_external_api_issues": [ - "backend/src/external/", - "docs/external-apis/", - "backend/src/core/logging/" - ], - "if_database_issues": [ - "backend/src/database/", - "backend/src/core/config/database.ts", - "backend/src/features/*/[feature].repository.ts" - ], - "if_frontend_issues": [ - "frontend/src/features/", - "frontend/src/shared/components/", - "frontend/src/core/" - ] - } - }, - "common_tasks": { - "add_feature": { - "command": "./scripts/generate-feature.sh [feature-name]", - "template": "templates/feature/", - "checklist": [ - "Run feature generation script", - "Implement business logic in service", - "Add database operations to repository", - "Create API endpoints in controller", - "Add route definitions", - "Implement frontend components", - "Write comprehensive tests", - "Update .ai/dependencies.yaml", - "Add feature to main app routes" - ], - "auto_created": [ - "backend/src/features/[feature]/", - "frontend/src/features/[feature]/", - "Complete test structure" - ] - }, - "add_external_api": { - "template": "templates/external-service/", - "checklist": [ - "Create service in backend/src/external/[service]/", - "Implement caching strategy", - "Add comprehensive error handling", - "Implement rate limiting/backoff", - "Create TypeScript types", - "Write integration tests", - "Document in docs/external-apis/", - "Add environment variables", - "Update .ai/dependencies.yaml" - ] - }, - "debug_issue": { - "start_with": [ - "Check backend/src/core/logging/ output", - "Review TROUBLESHOOTING.md", - "Check recent CHANGELOG_AI.md", - "Run relevant test suite", - "Check external API status if applicable" - ], - "common_paths": [ - "logs → controllers → services → external APIs", - "frontend errors → API calls → backend logs", - "database issues → migrations → repositories" - ] - } - }, - "danger_zones": { - "backend/src/core/security/": { - "warning": "Authentication & authorization critical path", - "required_review": true, - "test_command": "npm test:security", - "checklist": [ - "Test with valid/invalid JWT tokens", - "Verify Auth0 configuration", - "Check token expiration handling", - "Validate error responses", - "Test rate limiting" - ] - }, - "backend/src/database/migrations/": { - "warning": "Database schema changes", - "required_review": true, - "test_command": "npm run migrate:test", - "checklist": [ - "Test migration UP and DOWN", - "Verify data preservation", - "Check foreign key constraints", - "Test on copy of production data", - "Update repository classes" - ] - }, - "backend/src/external/": { - "warning": "External API integrations", - "test_command": "npm test:integration", - "checklist": [ - "Test with API mocks", - "Verify caching behavior", - "Check error handling", - "Test rate limiting", - "Monitor API usage quotas" - ] - } - }, - "performance_monitoring": { - "critical_paths": [ - "VIN decoding pipeline", - "Fuel station discovery", - "Vehicle data queries", - "Authentication flow" - ], - "caching_strategy": { - "vin_decodes": "30 days (rarely change)", - "fuel_stations": "1 hour (prices change)", - "user_vehicles": "5 minutes (frequent updates)", - "auth_tokens": "Follow JWT expiration" - } - } -} -``` - -**.ai/dependencies.yaml** -```yaml -version: 1.0.0 -last_updated: [DATE] -project_status: greenfield - -# Module dependency graph for AI understanding -modules: - # Core Infrastructure - backend/src/core/config/: - depends_on: [] - consumed_by: ["*"] - critical: true - modification_impact: "critical - full system restart required" - test_command: "npm test:config" - - backend/src/core/logging/: - depends_on: ["backend/src/core/config/"] - consumed_by: ["*"] - critical: true - modification_impact: "medium - affects debugging capability" - test_command: "npm test:logging" - - backend/src/core/security/: - depends_on: ["backend/src/core/config/", "backend/src/core/logging/"] - consumed_by: ["backend/src/features/*/[feature].controller.ts"] - critical: true - modification_impact: "critical - authentication affects all endpoints" - test_command: "npm test:security" - - # Feature Modules (following identical patterns) - backend/src/features/vehicles/: - depends_on: ["backend/src/core/*", "backend/src/external/vpic/", "backend/src/shared/"] - consumed_by: ["backend/src/app.ts", "frontend/src/features/vehicles/"] - critical: true - modification_impact: "high - core business functionality" - test_command: "npm test:features:vehicles" - - backend/src/features/fuel-logs/: - depends_on: ["backend/src/core/*", "backend/src/features/vehicles/", "backend/src/shared/"] - consumed_by: ["backend/src/app.ts", "frontend/src/features/fuel-logs/"] - critical: false - modification_impact: "medium - isolated feature" - test_command: "npm test:features:fuel-logs" - - # External Integrations - backend/src/external/vpic/: - depends_on: ["backend/src/core/config/", "backend/src/core/logging/"] - consumed_by: ["backend/src/features/vehicles/"] - critical: false - modification_impact: "medium - affects VIN decoding only" - test_command: "npm test:external:vpic" - - backend/src/external/google-maps/: - depends_on: ["backend/src/core/config/", "backend/src/core/logging/"] - consumed_by: ["backend/src/features/stations/"] - critical: false - modification_impact: "low - affects fuel station discovery only" - test_command: "npm test:external:maps" - - # Frontend Features (mirror backend structure) - frontend/src/features/vehicles/: - depends_on: ["frontend/src/core/", "frontend/src/shared/"] - consumed_by: ["frontend/src/App.tsx"] - critical: true - modification_impact: "medium - user-facing functionality" - test_command: "npm test:frontend:vehicles" - -# Architectural rules enforced by AI -rules: - - "Features cannot depend on other features (except vehicles as base)" - - "Core modules cannot depend on features" - - "External services must use caching" - - "All modules must depend on core/config for environment" - - "Frontend features mirror backend structure" - - "No direct database access outside repositories" - -# Import cycles to prevent -forbidden_cycles: - - ["core/security", "features/*", "core/security"] - - ["features/vehicles", "features/fuel-logs", "features/vehicles"] - -# High-risk modification paths requiring extra validation -high_risk_paths: - - description: "Authentication flow" - modules: ["core/security", "core/config/auth0.ts", "frontend/src/core/auth/"] - test_suite: "npm test:auth:full" - - - description: "VIN decoding pipeline" - modules: ["external/vpic", "features/vehicles", "frontend/src/features/vehicles/components/VINDecoder"] - test_suite: "npm test:integration:vin" - - - description: "Database operations" - modules: ["database/migrations", "features/*/[feature].repository.ts", "core/config/database.ts"] - test_suite: "npm test:database:full" -``` - -### Phase 2: Feature Templates & Code Generation (Day 3-4) - -**Objective**: Create comprehensive templates that generate consistent, AI-friendly code. - -#### 2.1 Feature Generation Script - -**scripts/generate-feature.sh** -```bash -#!/bin/bash -set -e - -FEATURE_NAME=$1 -if [ -z "$FEATURE_NAME" ]; then - echo "Usage: $0 " - echo "Example: $0 maintenance-logs" - exit 1 -fi - -FEATURE_PASCAL=$(echo $FEATURE_NAME | sed -r 's/(^|-)([a-z])/\U\2/g') -FEATURE_CAMEL=$(echo $FEATURE_PASCAL | sed 's/^./\l&/') - -echo "Generating feature: $FEATURE_NAME" -echo "Pascal case: $FEATURE_PASCAL" -echo "Camel case: $FEATURE_CAMEL" - -# Create backend feature structure -BACKEND_DIR="backend/src/features/$FEATURE_NAME" -mkdir -p "$BACKEND_DIR/__tests__/unit" -mkdir -p "$BACKEND_DIR/__tests__/integration" -mkdir -p "$BACKEND_DIR/__tests__/fixtures" - -# Generate backend files from templates -sed "s/\[FEATURE_NAME\]/$FEATURE_NAME/g; s/\[FEATURE_PASCAL\]/$FEATURE_PASCAL/g; s/\[FEATURE_CAMEL\]/$FEATURE_CAMEL/g" \ - templates/feature/backend/index.template > "$BACKEND_DIR/index.ts" - -sed "s/\[FEATURE_NAME\]/$FEATURE_NAME/g; s/\[FEATURE_PASCAL\]/$FEATURE_PASCAL/g; s/\[FEATURE_CAMEL\]/$FEATURE_CAMEL/g" \ - templates/feature/backend/service.template > "$BACKEND_DIR/$FEATURE_CAMEL.service.ts" - -sed "s/\[FEATURE_NAME\]/$FEATURE_NAME/g; s/\[FEATURE_PASCAL\]/$FEATURE_PASCAL/g; s/\[FEATURE_CAMEL\]/$FEATURE_CAMEL/g" \ - templates/feature/backend/controller.template > "$BACKEND_DIR/$FEATURE_CAMEL.controller.ts" - -sed "s/\[FEATURE_NAME\]/$FEATURE_NAME/g; s/\[FEATURE_PASCAL\]/$FEATURE_PASCAL/g; s/\[FEATURE_CAMEL\]/$FEATURE_CAMEL/g" \ - templates/feature/backend/repository.template > "$BACKEND_DIR/$FEATURE_CAMEL.repository.ts" - -sed "s/\[FEATURE_NAME\]/$FEATURE_NAME/g; s/\[FEATURE_PASCAL\]/$FEATURE_PASCAL/g; s/\[FEATURE_CAMEL\]/$FEATURE_CAMEL/g" \ - templates/feature/backend/types.template > "$BACKEND_DIR/$FEATURE_CAMEL.types.ts" - -sed "s/\[FEATURE_NAME\]/$FEATURE_NAME/g; s/\[FEATURE_PASCAL\]/$FEATURE_PASCAL/g; s/\[FEATURE_CAMEL\]/$FEATURE_CAMEL/g" \ - templates/feature/backend/validators.template > "$BACKEND_DIR/$FEATURE_CAMEL.validators.ts" - -sed "s/\[FEATURE_NAME\]/$FEATURE_NAME/g; s/\[FEATURE_PASCAL\]/$FEATURE_PASCAL/g; s/\[FEATURE_CAMEL\]/$FEATURE_CAMEL/g" \ - templates/feature/backend/routes.template > "$BACKEND_DIR/$FEATURE_CAMEL.routes.ts" - -# Create frontend feature structure -FRONTEND_DIR="frontend/src/features/$FEATURE_NAME" -mkdir -p "$FRONTEND_DIR/components" -mkdir -p "$FRONTEND_DIR/pages" -mkdir -p "$FRONTEND_DIR/hooks" -mkdir -p "$FRONTEND_DIR/api" -mkdir -p "$FRONTEND_DIR/types" -mkdir -p "$FRONTEND_DIR/__tests__" - -# Generate frontend files from templates -sed "s/\[FEATURE_NAME\]/$FEATURE_NAME/g; s/\[FEATURE_PASCAL\]/$FEATURE_PASCAL/g; s/\[FEATURE_CAMEL\]/$FEATURE_CAMEL/g" \ - templates/feature/frontend/Page.template > "$FRONTEND_DIR/pages/${FEATURE_PASCAL}Page.tsx" - -sed "s/\[FEATURE_NAME\]/$FEATURE_NAME/g; s/\[FEATURE_PASCAL\]/$FEATURE_PASCAL/g; s/\[FEATURE_CAMEL\]/$FEATURE_CAMEL/g" \ - templates/feature/frontend/Form.template > "$FRONTEND_DIR/components/${FEATURE_PASCAL}Form.tsx" - -sed "s/\[FEATURE_NAME\]/$FEATURE_NAME/g; s/\[FEATURE_PASCAL\]/$FEATURE_PASCAL/g; s/\[FEATURE_CAMEL\]/$FEATURE_CAMEL/g" \ - templates/feature/frontend/List.template > "$FRONTEND_DIR/components/${FEATURE_PASCAL}List.tsx" - -sed "s/\[FEATURE_NAME\]/$FEATURE_NAME/g; s/\[FEATURE_PASCAL\]/$FEATURE_PASCAL/g; s/\[FEATURE_CAMEL\]/$FEATURE_CAMEL/g" \ - templates/feature/frontend/hook.template > "$FRONTEND_DIR/hooks/use${FEATURE_PASCAL}.ts" - -sed "s/\[FEATURE_NAME\]/$FEATURE_NAME/g; s/\[FEATURE_PASCAL\]/$FEATURE_PASCAL/g; s/\[FEATURE_CAMEL\]/$FEATURE_CAMEL/g" \ - templates/feature/frontend/api.template > "$FRONTEND_DIR/api/$FEATURE_CAMEL.api.ts" - -sed "s/\[FEATURE_NAME\]/$FEATURE_NAME/g; s/\[FEATURE_PASCAL\]/$FEATURE_PASCAL/g; s/\[FEATURE_CAMEL\]/$FEATURE_CAMEL/g" \ - templates/feature/frontend/types.template > "$FRONTEND_DIR/types/$FEATURE_CAMEL.types.ts" - -echo "✅ Feature $FEATURE_NAME generated successfully!" -echo "" -echo "Next steps:" -echo "1. Implement business logic in backend/src/features/$FEATURE_NAME/$FEATURE_CAMEL.service.ts" -echo "2. Add database operations in $FEATURE_CAMEL.repository.ts" -echo "3. Customize React components in frontend/src/features/$FEATURE_NAME/components/" -echo "4. Add feature routes to backend/src/app.ts and frontend/src/App.tsx" -echo "5. Write tests and update .ai/dependencies.yaml" -``` - -#### 2.2 Comprehensive Templates - -**templates/feature/backend/service.template** (AI-optimized service pattern) -```typescript -/** - * @ai-summary Handles [FEATURE_NAME] business logic and external integrations - * @ai-examples backend/src/features/[FEATURE_NAME]/__tests__/fixtures/ - * @critical-context Requires authentication, uses caching for external calls - */ - -import { [FEATURE_PASCAL]Repository } from './[FEATURE_CAMEL].repository'; -import { - [FEATURE_PASCAL]Input, - [FEATURE_PASCAL]Output, - [FEATURE_PASCAL]Error, - Create[FEATURE_PASCAL]Request, - Update[FEATURE_PASCAL]Request -} from './[FEATURE_CAMEL].types'; -import { logger } from '../../core/logging/logger'; -import { CacheService } from '../../shared/utils/cache.service'; - -export class [FEATURE_PASCAL]Service { - private readonly cachePrefix = '[FEATURE_NAME]'; - private readonly cacheTTL = 300; // 5 minutes - - constructor( - private repository: [FEATURE_PASCAL]Repository, - private cacheService: CacheService - ) {} - - /** - * HANDLES: Creates new [FEATURE_NAME] record with validation - * THROWS: ValidationError, DuplicateError, DatabaseError - * SIDE_EFFECTS: Database insert, cache invalidation - * AUTH_REQUIRED: true - */ - async create[FEATURE_PASCAL]( - data: Create[FEATURE_PASCAL]Request, - userId: string - ): Promise<[FEATURE_PASCAL]Output> { - try { - logger.info('[FEATURE_PASCAL]Service.create[FEATURE_PASCAL] started', { - userId, - dataKeys: Object.keys(data) - }); - - // 1. Validate business rules - await this.validateCreate[FEATURE_PASCAL](data, userId); - - // 2. Transform input to domain model - const [FEATURE_CAMEL]Data = this.transformCreate[FEATURE_PASCAL](data, userId); - - // 3. Persist to database - const created[FEATURE_PASCAL] = await this.repository.create( - [FEATURE_CAMEL]Data - ); - - // 4. Invalidate relevant cache entries - await this.invalidate[FEATURE_PASCAL]Cache(userId); - - // 5. Transform to output format - const result = this.transformTo[FEATURE_PASCAL]Output(created[FEATURE_PASCAL]); - - logger.info('[FEATURE_PASCAL]Service.create[FEATURE_PASCAL] completed', { - userId, - [FEATURE_CAMEL]Id: result.id - }); - - return result; - - } catch (error) { - logger.error('[FEATURE_PASCAL]Service.create[FEATURE_PASCAL] failed', { - error: error.message, - userId, - data - }); - - if (error instanceof ValidationError) { - throw error; - } - - throw new [FEATURE_PASCAL]Error(`Failed to create [FEATURE_NAME]: ${error.message}`); - } - } - - /** - * HANDLES: Retrieves [FEATURE_NAME] records for user with caching - * THROWS: DatabaseError, NotFoundError - * SIDE_EFFECTS: Cache read/write - * AUTH_REQUIRED: true - */ - async get[FEATURE_PASCAL]sByUser(userId: string): Promise<[FEATURE_PASCAL]Output[]> { - const cacheKey = `${this.cachePrefix}:user:${userId}`; - - try { - // 1. Check cache first - const cached = await this.cacheService.get<[FEATURE_PASCAL]Output[]>(cacheKey); - if (cached) { - logger.debug('[FEATURE_PASCAL]Service cache hit', { userId, cacheKey }); - return cached; - } - - // 2. Query database - const [FEATURE_CAMEL]s = await this.repository.findByUserId(userId); - - // 3. Transform to output format - const result = [FEATURE_CAMEL]s.map(item => - this.transformTo[FEATURE_PASCAL]Output(item) - ); - - // 4. Cache successful result - await this.cacheService.set(cacheKey, result, this.cacheTTL); - - logger.info('[FEATURE_PASCAL]Service.get[FEATURE_PASCAL]sByUser completed', { - userId, - count: result.length - }); - - return result; - - } catch (error) { - logger.error('[FEATURE_PASCAL]Service.get[FEATURE_PASCAL]sByUser failed', { - error: error.message, - userId - }); - - throw new [FEATURE_PASCAL]Error(`Failed to get [FEATURE_NAME]s: ${error.message}`); - } - } - - // Private helper methods following AI-friendly patterns - private async validateCreate[FEATURE_PASCAL]( - data: Create[FEATURE_PASCAL]Request, - userId: string - ): Promise { - // Implement validation logic - // Check business rules - // Verify user permissions - // Validate foreign key relationships - } - - private transformCreate[FEATURE_PASCAL]( - data: Create[FEATURE_PASCAL]Request, - userId: string - ): [FEATURE_PASCAL]Input { - return { - ...data, - userId, - createdAt: new Date(), - updatedAt: new Date() - } as [FEATURE_PASCAL]Input; - } - - private transformTo[FEATURE_PASCAL]Output(item: [FEATURE_PASCAL]): [FEATURE_PASCAL]Output { - return { - id: item.id, - userId: item.userId, - createdAt: item.createdAt, - updatedAt: item.updatedAt, - // Add other fields as needed - } as [FEATURE_PASCAL]Output; - } - - private async invalidate[FEATURE_PASCAL]Cache(userId: string): Promise { - const cacheKey = `${this.cachePrefix}:user:${userId}`; - await this.cacheService.del(cacheKey); - } -} - -// Custom error class -export class [FEATURE_PASCAL]Error extends Error { - constructor(message: string) { - super(message); - this.name = '[FEATURE_PASCAL]Error'; - } -} -``` - -### Phase 3: Core Infrastructure Implementation (Day 5-7) - -**Objective**: Implement the core system components using AI-optimized patterns. - -#### 3.1 Backend Core Setup - -**backend/src/core/config/database.ts** -```typescript -/** - * @ai-summary PostgreSQL connection setup with connection pooling - * @ai-details docs/database/CONNECTION_MANAGEMENT.md - * @critical-context Connection pooling, automatic reconnection, query logging - */ - -import { Pool, PoolConfig } from 'pg'; -import { logger } from '../logging/logger'; - -const poolConfig: PoolConfig = { - host: process.env.DB_HOST || 'localhost', - port: parseInt(process.env.DB_PORT || '5432'), - database: process.env.DB_NAME || 'motovaultpro', - user: process.env.DB_USER || 'postgres', - password: process.env.DB_PASSWORD || '', - ssl: process.env.NODE_ENV === 'production' ? { rejectUnauthorized: false } : false, - max: parseInt(process.env.DB_POOL_MAX || '10'), - min: parseInt(process.env.DB_POOL_MIN || '2'), - idleTimeoutMillis: parseInt(process.env.DB_IDLE_TIMEOUT || '30000'), - connectionTimeoutMillis: parseInt(process.env.DB_CONNECTION_TIMEOUT || '10000'), -}; - -export const pool = new Pool(poolConfig); - -// Connection event handlers for monitoring -pool.on('connect', (client) => { - logger.info('Database client connected', { - totalCount: pool.totalCount, - idleCount: pool.idleCount - }); -}); - -pool.on('error', (err) => { - logger.error('Database pool error', { error: err.message }); -}); - -pool.on('remove', () => { - logger.info('Database client removed', { - totalCount: pool.totalCount, - idleCount: pool.idleCount - }); -}); - -// Graceful shutdown handler -process.on('SIGTERM', async () => { - logger.info('SIGTERM received, closing database pool'); - await pool.end(); - process.exit(0); -}); - -export default pool; -``` - -**backend/src/core/logging/logger.ts** -```typescript -/** - * @ai-summary Structured logging with correlation IDs and log levels - * @ai-details docs/logging/STRUCTURED_LOGGING.md - * @critical-context All logs include correlation ID, user context, performance metrics - */ - -import winston from 'winston'; - -const isDevelopment = process.env.NODE_ENV === 'development'; - -export const logger = winston.createLogger({ - level: process.env.LOG_LEVEL || (isDevelopment ? 'debug' : 'info'), - format: winston.format.combine( - winston.format.timestamp(), - winston.format.errors({ stack: true }), - winston.format.json(), - winston.format.printf(({ timestamp, level, message, ...meta }) => { - const logEntry = { - timestamp, - level, - message, - service: 'motovaultpro-backend', - environment: process.env.NODE_ENV, - version: process.env.APP_VERSION, - ...meta - }; - return JSON.stringify(logEntry); - }) - ), - defaultMeta: { - service: 'motovaultpro-backend' - }, - transports: [ - new winston.transports.Console({ - format: isDevelopment - ? winston.format.combine( - winston.format.colorize(), - winston.format.simple() - ) - : winston.format.json() - }) - ] -}); - -// Add file transport for production -if (process.env.NODE_ENV === 'production') { - logger.add(new winston.transports.File({ - filename: 'logs/error.log', - level: 'error', - maxsize: 10485760, // 10MB - maxFiles: 5 - })); - - logger.add(new winston.transports.File({ - filename: 'logs/combined.log', - maxsize: 10485760, // 10MB - maxFiles: 5 - })); -} - -export default logger; -``` - -#### 3.2 Frontend Core Setup - -**frontend/src/core/api/client.ts** -```typescript -/** - * @ai-summary Axios client with Auth0 integration and error handling - * @ai-details docs/api/CLIENT_CONFIGURATION.md - * @critical-context Automatic token refresh, request/response logging, error transformation - */ - -import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'; -import { useAuth0 } from '@auth0/auth0-react'; - -const baseURL = import.meta.env.VITE_API_BASE_URL || 'http://localhost:3001/api'; - -// Create axios instance -export const apiClient: AxiosInstance = axios.create({ - baseURL, - timeout: 10000, - headers: { - 'Content-Type': 'application/json', - }, -}); - -// Request interceptor for adding auth token -apiClient.interceptors.request.use( - async (config: AxiosRequestConfig) => { - // Note: In actual implementation, you'd get token from Auth0 context - // This is a placeholder for the pattern - const token = localStorage.getItem('access_token'); - if (token) { - config.headers = { - ...config.headers, - Authorization: `Bearer ${token}`, - }; - } - - // Add correlation ID for request tracking - config.headers['X-Correlation-ID'] = crypto.randomUUID(); - - console.log(`API Request: ${config.method?.toUpperCase()} ${config.url}`, { - correlationId: config.headers['X-Correlation-ID'], - params: config.params, - }); - - return config; - }, - (error) => { - console.error('API Request Error:', error); - return Promise.reject(error); - } -); - -// Response interceptor for error handling -apiClient.interceptors.response.use( - (response: AxiosResponse) => { - console.log(`API Response: ${response.status} ${response.config.url}`, { - correlationId: response.config.headers['X-Correlation-ID'], - duration: Date.now() - (response.config as any).startTime, - }); - return response; - }, - async (error) => { - const { response, config } = error; - - console.error('API Response Error:', { - status: response?.status, - url: config?.url, - correlationId: config?.headers['X-Correlation-ID'], - error: response?.data?.error || error.message, - }); - - // Handle specific error cases - if (response?.status === 401) { - // Token expired or invalid - localStorage.removeItem('access_token'); - window.location.href = '/login'; - } - - // Transform error to consistent format - const apiError = { - status: response?.status || 500, - message: response?.data?.error || error.message || 'An unexpected error occurred', - correlationId: config?.headers['X-Correlation-ID'], - }; - - return Promise.reject(apiError); - } -); - -export default apiClient; -``` - -### Phase 4: Feature Implementation (Day 8-12) - -**Objective**: Implement each feature using the generated templates and AI-optimized patterns. - -#### 4.1 Implementation Order & Dependencies - -1. **Vehicles Feature** (Days 8-9) - Foundation feature -2. **External APIs** (Day 10) - NHTSA vPIC and Google Maps -3. **Fuel Logs Feature** (Day 11) - Depends on vehicles -4. **Maintenance Feature** (Day 12) - Depends on vehicles -5. **Stations Feature** (Day 12) - Independent feature - -#### 4.2 Success Criteria for Each Feature - -**Per Feature Checklist:** -- [ ] Backend service, controller, repository implemented -- [ ] Frontend components, hooks, API client implemented -- [ ] Comprehensive test coverage (unit + integration) -- [ ] External API integrations cached appropriately -- [ ] Database migrations created and tested -- [ ] Documentation updated in feature README -- [ ] Added to main application routing -- [ ] Error handling follows established patterns - -### Phase 5: Testing & Documentation (Day 13-14) - -**Objective**: Comprehensive testing and AI-optimized documentation. - -#### 5.1 Testing Strategy - -**Test Structure** (mirrors feature structure) -``` -__tests__/ -├── unit/ # Individual function/method tests -│ ├── services/ -│ ├── controllers/ -│ └── utils/ -├── integration/ # API endpoint tests with database -│ ├── vehicles.test.ts -│ ├── fuel-logs.test.ts -│ └── auth.test.ts -├── external/ # External API integration tests (mocked) -│ ├── vpic.test.ts -│ └── google-maps.test.ts -└── e2e/ # End-to-end user flow tests - ├── vehicle-management.test.ts - └── fuel-tracking.test.ts -``` - -#### 5.2 AI-Optimized Documentation - -**docs/ARCHITECTURE.md** -```markdown -# MotoVaultPro Architecture Overview - -## System Design Philosophy - -AI-first architecture prioritizing: -- **Self-documenting code** through naming and structure -- **Progressive disclosure** of complexity -- **Feature isolation** with clear dependencies -- **Consistent patterns** across all modules -- **Context-efficient navigation** for AI agents - -## Core Architectural Patterns - -### Feature-Based Organization -Each feature is completely self-contained: -- Business logic in service layer -- Data access in repository layer -- HTTP handling in controller layer -- Type definitions co-located with feature -- Tests mirror implementation structure - -### External API Integration Pattern -All external APIs follow identical structure: -- Service class with caching -- Error handling with circuit breakers -- Rate limiting and backoff -- Comprehensive logging -- Mock-friendly for testing - -### Security Architecture -- Auth0 handles all authentication -- JWT tokens validated on every request -- User context available throughout request lifecycle -- No sensitive data in logs or cache -- Environment-based configuration - -## Database Design - -### Schema Organization -- Core entities: users, vehicles, fuel_logs, maintenance_logs -- Audit fields on all tables (created_at, updated_at, created_by) -- Foreign key constraints enforced -- Indexes on frequently queried columns -- Migration-based schema evolution - -### Caching Strategy -- External API responses: Appropriate TTL based on data volatility -- User data: Short TTL (5 minutes) for consistency -- Static data: Long TTL (30 days) for performance -- Cache invalidation on data mutations - -## Frontend Architecture - -### Component Organization -- Feature-based component grouping -- Shared components for common UI patterns -- Custom hooks for business logic -- API clients co-located with features -- Type definitions shared between frontend and backend - -### State Management -- Local state for UI-only concerns -- Global state for cross-feature data -- Server state managed by API clients -- Authentication state managed by Auth0 -``` - ---- - -## Implementation Timeline - -### Week 1: Foundation (Days 1-7) -- **Days 1-2**: Project structure setup, foundation files -- **Days 3-4**: Templates and code generation scripts -- **Days 5-7**: Core infrastructure implementation - -### Week 2: Feature Development (Days 8-14) -- **Days 8-9**: Vehicles feature (backend + frontend) -- **Day 10**: External API integrations (vPIC, Google Maps) -- **Day 11**: Fuel logs feature -- **Day 12**: Maintenance and stations features -- **Days 13-14**: Testing, documentation, refinement - ---- - -## Success Metrics - -### Quantitative Goals -- [ ] AI can understand system architecture in under 200 tokens -- [ ] Feature generation script creates working code in under 2 minutes -- [ ] AI requires 70% fewer file reads for common tasks vs traditional structure -- [ ] New feature implementation follows consistent patterns automatically -- [ ] Test coverage above 85% for all business logic - -### Qualitative Goals -- [ ] AI can navigate codebase without human guidance -- [ ] Code review focuses on business logic vs structure -- [ ] New developers understand patterns intuitively -- [ ] Feature development velocity increases over time -- [ ] Technical debt accumulates slower due to consistent patterns - ---- - -## Long-term Benefits - -### For AI Collaboration -- **Context Efficiency**: AI loads only relevant code for each task -- **Pattern Recognition**: Consistent structure enables better code generation -- **Self-Documenting**: Code explains itself through naming and organization -- **Progressive Discovery**: AI can start with overview and dive deeper as needed - -### For Human Developers -- **Reduced Cognitive Load**: Clear structure reduces context switching -- **Faster Onboarding**: New developers can follow established patterns -- **Better Maintainability**: Consistent patterns make changes predictable -- **Enhanced Productivity**: Templates and scripts automate repetitive tasks - -### For System Evolution -- **Scalable Architecture**: Feature isolation supports team scaling -- **Technology Migration**: Clear boundaries enable gradual technology updates -- **Performance Optimization**: Well-defined layers enable targeted optimizations -- **Quality Assurance**: Consistent patterns enable automated quality checks - ---- - -## Next Steps - -1. **Begin Phase 1**: Create project structure and foundation files -2. **Setup Development Environment**: Docker Compose for local development -3. **Configure CI/CD**: GitHub Actions for testing and deployment -4. **Team Training**: Onboard development team to AI-first patterns -5. **Iterative Refinement**: Improve templates and patterns based on usage - -This greenfield approach gives us the unique opportunity to build the ideal AI-collaborative codebase from day one, setting the foundation for efficient AI-to-AI development throughout the project lifecycle. \ No newline at end of file diff --git a/AI_STRUCTURE.md b/AI_STRUCTURE.md deleted file mode 100644 index 0d53b3b..0000000 --- a/AI_STRUCTURE.md +++ /dev/null @@ -1,591 +0,0 @@ -You are tasked with creating a new project that follows AI-optimized documentation and structure patterns designed for efficient AI-to-AI code maintenance. This project should be self-describing, context-efficient, and progressively discoverable. -Core Setup Instructions - -1. Initialize Project Structure -Create this exact directory structure: -project-root/ -├── AI_README.md # 200-token complete system overview -├── PROJECT_MAP.md # Navigation and quick reference -├── CONVENTIONS.md # Project patterns and standards -├── CLAUDE.md # This file - AI interaction guide -├── CHANGELOG_AI.md # AI-focused change tracking -├── src/ -│ ├── core/ # Stable, critical functionality -│ │ └── README.md # Core module descriptions -│ ├── features/ # Business logic modules -│ │ └── README.md # Feature development guide -│ ├── shared/ # Reusable utilities -│ │ └── README.md # Utility usage patterns -│ └── index.{ts|py} # Main entry point -├── docs/ -│ ├── ARCHITECTURE.md # System design decisions -│ ├── TROUBLESHOOTING.md # Common issues and solutions -│ ├── dependencies.md # External dependency documentation -│ └── diagrams/ # Visual architecture representations -├── tests/ -│ ├── README.md # Testing strategy -│ ├── fixtures/ # Shared test data -│ └── examples/ # Usage examples -├── templates/ # Code generation templates -│ └── README.md # Template usage guide -├── .ai/ # AI-specific metadata -│ ├── context.json # Context navigation for AI -│ ├── dependencies.yaml # Module dependency graph -│ └── shortcuts.md # Quick command reference -└── scripts/ - └── setup.{sh|py} # Project initialization scripts -2. Create Foundation Files -AI_README.md -markdown# Project Name - -## AI Quick Start (50 tokens) -[One paragraph describing what this system does, its primary purpose, and key technologies] - -## Navigation Guide -- Start here: PROJECT_MAP.md -- Conventions: CONVENTIONS.md -- Architecture: docs/ARCHITECTURE.md -- AI Metadata: .ai/context.json - -## Critical Context -- [List 3-5 things an AI must always know when working on this codebase] - -## Primary Entry Points -- Main application: src/index.{ts|py} -- Core modules: src/core/README.md -- Feature modules: src/features/*/index.{ts|py} -PROJECT_MAP.md -markdown# Project Navigation Map - -## System Overview -[2-3 sentences about the system architecture] - -## Quick Navigation - -### By Task -- **Adding a feature**: Start with templates/ → src/features/ -- **Fixing bugs**: TROUBLESHOOTING.md → tests/ → src/ -- **Modifying core**: Read CONVENTIONS.md first → src/core/ -- **Adding tests**: tests/README.md → tests/examples/ - -### By Frequency -- **Most changed**: [List top 3 most frequently modified paths] -- **Most critical**: src/core/* -- **Most complex**: [List complex modules needing extra context] - -## Module Map -\`\`\` -src/ -├── core/ -│ ├── config/ # Environment and app configuration -│ ├── database/ # Data layer abstractions -│ ├── logging/ # Centralized logging -│ └── security/ # Auth and security primitives -├── features/ -│ └── [feature]/ # Each feature is self-contained -│ ├── index # Public API -│ ├── service # Business logic -│ ├── types # Type definitions -│ └── tests # Feature tests -└── shared/ - ├── utils/ # Pure utility functions - └── types/ # Shared type definitions -\`\`\` - -## AI Interaction Guide -- **Before modifying**: Read .ai/context.json for the area you're working in -- **When debugging**: Start with src/core/logging -- **When adding features**: Use templates/ for consistent patterns -- **After changes**: Update CHANGELOG_AI.md and .ai/dependencies.yaml -CONVENTIONS.md -markdown# Project Conventions - -## Code Style - -### Naming Conventions -- **Files**: kebab-case.ts or snake_case.py -- **Classes**: PascalCase with descriptive names -- **Functions**: camelCase (JS/TS) or snake_case (Python), verb_noun pattern -- **Constants**: UPPER_SNAKE_CASE -- **Interfaces/Types**: PascalCase with 'I' prefix for interfaces (optional) - -### Self-Documenting Code Principles -1. **Prefer clear naming over comments** - \`\`\`typescript - // Bad - const d = new Date(); // Gets current date - - // Good - const currentDate = new Date(); - \`\`\` - -2. **Use type hints as documentation** - \`\`\`python - def process_order( - order_data: OrderDict, - validate: bool = True - ) -> Result[Order, OrderError]: - """Process order. See OrderDict for structure.""" - pass - \`\`\` - -3. **Function names should describe complete behavior** - \`\`\`typescript - // Bad: validate(data) - // Good: validateOrThrow(data) - // Good: validateAndReturnErrors(data) - \`\`\` - -## Documentation Standards - -### Progressive Disclosure Pattern -\`\`\`javascript -/** - * @ai-summary Handles payment processing - * @ai-details docs/payments/PROCESSING.md - * @ai-examples tests/examples/payment-processing.test.js - * @critical-context PCI compliance required, no card storage - */ -\`\`\` - -### Required Annotations -- **Services/Classes**: @ai-summary (one line) -- **Complex functions**: HANDLES, THROWS, SIDE_EFFECTS -- **Security-sensitive code**: SAFETY comment -- **External dependencies**: DEPENDS comment - -### When to Comment -ONLY add inline comments for: -- Regulatory/compliance requirements -- Non-obvious business logic -- Performance optimizations (with metrics) -- Security considerations -- Workarounds with issue references - -## Structure Patterns - -### Feature Module Structure -\`\`\` -features/[feature-name]/ -├── index.{ts|py} # Public API (exports only) -├── service.{ts|py} # Business logic -├── repository.{ts|py} # Data access -├── types.{ts|py} # Type definitions -├── validators.{ts|py} # Input validation -├── README.md # Feature documentation -└── __tests__/ # Feature tests -\`\`\` - -### Service Class Pattern -\`\`\`typescript -export class FeatureService { - constructor( - private repository: FeatureRepository, - private logger: Logger - ) {} - - // Public methods first, prefixed with action verb - async createFeature(data: FeatureInput): Promise> { - const validated = this.validateOrFail(data); - return this.repository.create(validated); - } - - // Private helpers last, prefixed with underscore - private validateOrFail(data: unknown): FeatureInput { - // Validation logic - } -} -\`\`\` - -## Testing Standards - -### Test Naming -- Test files: [module].test.{ts|py} or test_[module].py -- Test names: test_should_[expected_behavior]_when_[condition] -- Use @ai-coverage to link tests to code - -### Test Organization -\`\`\`python -class TestFeatureService: - """ - @ai-coverage FeatureService - @ai-fixtures tests/fixtures/features/ - """ - - def test_should_create_feature_when_data_valid(self): - # Arrange → Act → Assert pattern - pass - - def test_should_reject_when_missing_required_fields(self): - pass -\`\`\` - -## Git Commit Standards -- Format: "type(scope): description" -- Types: feat, fix, docs, refactor, test, chore -- Include "AI-CONTEXT:" line for significant changes - -## Error Handling -- Use Result pattern or explicit error types -- Never catch and ignore errors silently -- Log errors with context at catch point -- Throw early, catch late - -## Performance Guidelines -- Document Big-O complexity for algorithms -- Add benchmarks for critical paths -- Use caching for expensive computations -- Profile before optimizing -.ai/context.json -json{ - "version": "1.0.0", - "project_type": "[web-api|cli-tool|library|full-stack-app]", - "language": "[typescript|python|javascript]", - "context_budget": { - "always_load": [ - "AI_README.md", - "CONVENTIONS.md" - ], - "essential_paths": [ - "src/core/", - "src/index.{ts|py}" - ], - "conditional": { - "if_modifying_auth": [ - "src/features/auth/", - "docs/auth/", - "src/core/security/" - ], - "if_debugging": [ - "src/core/logging/", - "TROUBLESHOOTING.md", - "tests/" - ], - "if_adding_feature": [ - "templates/feature/", - "src/features/README.md", - "CONVENTIONS.md#structure-patterns" - ], - "if_modifying_database": [ - "src/core/database/", - "migrations/", - "docs/database/" - ] - } - }, - "common_tasks": { - "add_endpoint": { - "template": "templates/endpoint.template", - "checklist": [ - "Define route in router", - "Add request/response types", - "Implement handler", - "Add validation", - "Write tests", - "Update API documentation" - ], - "examples": "tests/examples/endpoints/" - }, - "add_feature": { - "template": "templates/feature/", - "checklist": [ - "Create feature folder", - "Define types", - "Implement service", - "Add repository if needed", - "Write tests", - "Update dependencies.yaml", - "Add to feature index" - ] - }, - "debug_issue": { - "start_with": [ - "Check TROUBLESHOOTING.md", - "Review recent CHANGELOG_AI.md", - "Check logs in src/core/logging", - "Run relevant tests" - ] - } - }, - "danger_zones": { - "src/core/security/": { - "warning": "Security-critical code", - "required_review": true, - "checklist": [ - "Run security tests", - "Check for credential exposure", - "Verify input validation" - ] - }, - "migrations/": { - "warning": "Database schema changes", - "required_review": true, - "checklist": [ - "Test rollback procedure", - "Verify data preservation", - "Check migration order" - ] - }, - "src/core/config/": { - "warning": "System configuration", - "checklist": [ - "Update .env.example", - "Check all environments", - "Verify defaults are safe" - ] - } - }, - "dependencies": { - "external": { - "critical": ["framework", "database", "auth-library"], - "optional": ["monitoring", "analytics"] - }, - "internal": { - "most_imported": ["src/core/logger", "src/shared/types"], - "most_dependent": ["src/core/database", "src/core/config"] - } - }, - "testing": { - "test_command": "npm test | pytest", - "coverage_threshold": 80, - "critical_paths": [ - "src/core/security", - "src/core/database", - "src/features/auth" - ] - }, - "performance": { - "bottlenecks": [], - "optimization_notes": [], - "benchmarks": "tests/benchmarks/" - } -} -.ai/dependencies.yaml -yaml# Module Dependency Graph -# Format: module -> depends_on, consumed_by, impact_level - -version: 1.0.0 -last_updated: [DATE] - -modules: - core/config: - depends_on: [] - consumed_by: ["*"] # Everything depends on config - critical: true - modification_impact: "high - requires full system test" - test_command: "npm test core/config" - - core/database: - depends_on: ["core/config", "core/logging"] - consumed_by: ["features/*", "migrations"] - critical: true - modification_impact: "high - affects all data operations" - test_command: "npm test core/database" - - core/logging: - depends_on: ["core/config"] - consumed_by: ["*"] - critical: true - modification_impact: "medium - affects debugging capability" - test_command: "npm test core/logging" - - core/security: - depends_on: ["core/config", "core/database", "core/logging"] - consumed_by: ["features/auth", "api/middleware"] - critical: true - modification_impact: "critical - security review required" - test_command: "npm test core/security" - - features/[example]: - depends_on: ["core/*", "shared/utils"] - consumed_by: ["api/routes/[example]"] - critical: false - modification_impact: "low - isolated feature" - test_command: "npm test features/[example]" - -# Dependency rules -rules: - - "Features cannot depend on other features" - - "Core modules cannot depend on features" - - "Shared utilities cannot depend on core or features" - - "All modules must depend on core/config" - -# Import cycles to avoid -forbidden_cycles: - - ["core/database", "core/security", "core/database"] - -# High-risk modification paths -high_risk_paths: - - description: "Authentication flow" - modules: ["core/security", "features/auth", "api/middleware/auth"] - test_suite: "npm test:auth:full" - - - description: "Data persistence layer" - modules: ["core/database", "migrations", "features/*/repository"] - test_suite: "npm test:database:full" -3. Create Template Files -templates/feature/index.template -typescript/** - * @ai-summary [Feature description in one line] - * @ai-details docs/features/[feature-name].md - * @critical-context [Any critical information] - */ - -export * from './types'; -export * from './service'; -export { [FeatureName]Repository } from './repository'; -templates/feature/service.template -typescript/** - * @ai-summary Handles [feature] business logic - * @ai-examples tests/examples/[feature]/ - */ -export class [FeatureName]Service { - constructor( - private repository: [FeatureName]Repository, - private logger: Logger - ) {} - - /** - * HANDLES: [What it processes] - * THROWS: [Error types] - * SIDE_EFFECTS: [External changes] - */ - async create[FeatureName]( - data: [FeatureName]Input - ): Promise> { - // Validate -> Process -> Persist -> Return - const validated = this.validateOrFail(data); - const processed = this.processBusinessRules(validated); - return this.repository.create(processed); - } - - private validateOrFail(data: unknown): [FeatureName]Input { - // Validation logic - throw new Error('Not implemented'); - } - - private processBusinessRules(data: [FeatureName]Input): [FeatureName]Data { - // Business logic transformations - throw new Error('Not implemented'); - } -} -4. Project-Specific Setup Commands -Based on the project type, run these initialization commands: -bash# For TypeScript projects -npm init -y -npm install --save-dev typescript @types/node prettier eslint -npx tsc --init - -# For Python projects -python -m venv venv -pip install black pytest mypy pylint - -# Initialize git with proper ignores -git init -echo "node_modules/\nvenv/\n.env\n*.log\n.DS_Store" > .gitignore - -# Create initial environment file -echo "# Development Environment Variables\nNODE_ENV=development\nLOG_LEVEL=debug" > .env.example -5. Initial CHANGELOG_AI.md Entry -markdown# AI-Focused Changelog - -## [Date] - Project Initialization -**Created**: Initial project structure -**Architecture**: [Chosen architecture pattern] -**Key Technologies**: [List main technologies] -**AI Context**: -- Project follows AI-optimized documentation patterns -- Self-describing code structure implemented -- Progressive disclosure documentation in place -**Entry Points**: -- Start with AI_README.md -- Conventions in CONVENTIONS.md -- Navigation via PROJECT_MAP.md -Instructions for Claude Code -When creating a new project with these standards: - -Start by asking the user: - -Project type (API, CLI tool, web app, library) -Primary language (TypeScript, Python, JavaScript) -Key features needed initially -Any specific frameworks or libraries required - - -Then systematically: - -Create the complete directory structure -Generate all foundation files with project-specific content -Set up the .ai/ metadata directory -Create initial templates based on project type -Initialize version control and package management -Write the first entry in CHANGELOG_AI.md - - -Customize based on project type: - -API: Add OpenAPI specs, route templates, middleware patterns -CLI: Add command templates, argument parsing patterns -Library: Add export patterns, public API documentation -Full-stack: Add frontend/backend separation, API contracts - - -For each file you create: - -Ensure it follows the self-documenting principles -Add appropriate @ai-* annotations -Include type hints/interfaces -Create corresponding test file structure -Update .ai/context.json with new paths - - -Before completing setup: - -Verify all imports resolve correctly -Ensure templates have clear replacement markers -Check that navigation paths in documentation are accurate -Confirm .ai/dependencies.yaml reflects actual structure -Test that the project runs with minimal setup - - -Final output should include: - -Complete file structure -All content for foundation files -Setup instructions in a setup.md -Initial test file examples -A "Getting Started for AI" section in AI_README.md - - - -Remember: The goal is to create a codebase that another AI can understand and modify efficiently with minimal context loading. Every decision should optimize for clarity and discoverability. -Example First Response -When you run this setup, respond with: -I'll create an AI-optimized project structure for your [project type]. This setup will follow AI-to-AI communication patterns for maximum clarity and minimal context usage. - -## Project Configuration -- Type: [selected type] -- Language: [selected language] -- Architecture: [chosen pattern] - -## Creating Structure... -[Show the directory tree being created] - -## Generating Foundation Files... -[List each file as it's created] - -## Project Ready! - -### Next Steps for AI Interaction: -1. Read AI_README.md for system overview -2. Check CONVENTIONS.md before making changes -3. Use PROJECT_MAP.md for navigation -4. Refer to .ai/context.json for task-specific guidance - -### For Human Developers: -1. Run: [setup command] -2. Configure: Copy .env.example to .env -3. Install: [package manager] install -4. Test: [test command] - -The project is now optimized for AI maintenance and collaboration! \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index 46b5afe..0000000 --- a/CLAUDE.md +++ /dev/null @@ -1,3 +0,0 @@ -# Load Application Architecture - -Read the file @docs/architecture.md to understand the appliaction architecture. \ No newline at end of file diff --git a/Controllers/APIController.cs b/Controllers/APIController.cs deleted file mode 100644 index c2963c4..0000000 --- a/Controllers/APIController.cs +++ /dev/null @@ -1,1815 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Filter; -using MotoVaultPro.Helper; -using MotoVaultPro.Logic; -using MotoVaultPro.Models; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using System.Security.Claims; - -namespace MotoVaultPro.Controllers -{ - [Authorize] - public class APIController : Controller - { - private readonly IVehicleDataAccess _dataAccess; - private readonly INoteDataAccess _noteDataAccess; - private readonly IServiceRecordDataAccess _serviceRecordDataAccess; - private readonly IGasRecordDataAccess _gasRecordDataAccess; - private readonly ITaxRecordDataAccess _taxRecordDataAccess; - private readonly IReminderRecordDataAccess _reminderRecordDataAccess; - private readonly IUpgradeRecordDataAccess _upgradeRecordDataAccess; - private readonly IOdometerRecordDataAccess _odometerRecordDataAccess; - private readonly ISupplyRecordDataAccess _supplyRecordDataAccess; - private readonly IPlanRecordDataAccess _planRecordDataAccess; - private readonly IPlanRecordTemplateDataAccess _planRecordTemplateDataAccess; - private readonly IUserAccessDataAccess _userAccessDataAccess; - private readonly IUserRecordDataAccess _userRecordDataAccess; - private readonly IReminderHelper _reminderHelper; - private readonly IGasHelper _gasHelper; - private readonly IUserLogic _userLogic; - private readonly IVehicleLogic _vehicleLogic; - private readonly IOdometerLogic _odometerLogic; - private readonly IFileHelper _fileHelper; - private readonly IMailHelper _mailHelper; - private readonly IConfigHelper _config; - private readonly IWebHostEnvironment _webEnv; - public APIController(IVehicleDataAccess dataAccess, - IGasHelper gasHelper, - IReminderHelper reminderHelper, - INoteDataAccess noteDataAccess, - IServiceRecordDataAccess serviceRecordDataAccess, - IGasRecordDataAccess gasRecordDataAccess, - ITaxRecordDataAccess taxRecordDataAccess, - IReminderRecordDataAccess reminderRecordDataAccess, - IUpgradeRecordDataAccess upgradeRecordDataAccess, - IOdometerRecordDataAccess odometerRecordDataAccess, - ISupplyRecordDataAccess supplyRecordDataAccess, - IPlanRecordDataAccess planRecordDataAccess, - IPlanRecordTemplateDataAccess planRecordTemplateDataAccess, - IUserAccessDataAccess userAccessDataAccess, - IUserRecordDataAccess userRecordDataAccess, - IMailHelper mailHelper, - IFileHelper fileHelper, - IConfigHelper config, - IUserLogic userLogic, - IVehicleLogic vehicleLogic, - IOdometerLogic odometerLogic, - IWebHostEnvironment webEnv) - { - _dataAccess = dataAccess; - _noteDataAccess = noteDataAccess; - _serviceRecordDataAccess = serviceRecordDataAccess; - _gasRecordDataAccess = gasRecordDataAccess; - _taxRecordDataAccess = taxRecordDataAccess; - _reminderRecordDataAccess = reminderRecordDataAccess; - _upgradeRecordDataAccess = upgradeRecordDataAccess; - _odometerRecordDataAccess = odometerRecordDataAccess; - _supplyRecordDataAccess = supplyRecordDataAccess; - _planRecordDataAccess = planRecordDataAccess; - _planRecordTemplateDataAccess = planRecordTemplateDataAccess; - _userAccessDataAccess = userAccessDataAccess; - _userRecordDataAccess = userRecordDataAccess; - _mailHelper = mailHelper; - _gasHelper = gasHelper; - _reminderHelper = reminderHelper; - _userLogic = userLogic; - _odometerLogic = odometerLogic; - _vehicleLogic = vehicleLogic; - _fileHelper = fileHelper; - _config = config; - _webEnv = webEnv; - } - public IActionResult Index() - { - return View(); - } - private int GetUserID() - { - return int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)); - } - [HttpGet] - [Route("/api/whoami")] - public IActionResult WhoAmI() - { - var result = new UserExportModel - { - Username = User.FindFirstValue(ClaimTypes.Name), - EmailAddress = User.IsInRole(nameof(UserData.IsRootUser)) ? _config.GetDefaultReminderEmail() : User.FindFirstValue(ClaimTypes.Email), - IsAdmin = User.IsInRole(nameof(UserData.IsAdmin)).ToString(), - IsRoot = User.IsInRole(nameof(UserData.IsRootUser)).ToString() - }; - if (_config.GetInvariantApi() || Request.Headers.ContainsKey("culture-invariant")) - { - return Json(result, StaticHelper.GetInvariantOption()); - } - else - { - return Json(result); - } - } - [HttpGet] - [Route("/api/version")] - public async Task ServerVersion(bool checkForUpdate = false) - { - var viewModel = new ReleaseVersion - { - CurrentVersion = StaticHelper.VersionNumber, - LatestVersion = StaticHelper.VersionNumber - }; - if (checkForUpdate) - { - try - { - var httpClient = new HttpClient(); - httpClient.DefaultRequestHeaders.UserAgent.TryParseAdd("request"); - var releaseResponse = await httpClient.GetFromJsonAsync(StaticHelper.ReleasePath) ?? new ReleaseResponse(); - if (!string.IsNullOrWhiteSpace(releaseResponse.tag_name)) - { - viewModel.LatestVersion = releaseResponse.tag_name; - } - } - catch (Exception ex) - { - return Json(OperationResponse.Failed($"Unable to retrieve latest version from GitHub API: {ex.Message}")); - } - } - return Json(viewModel); - } - [HttpGet] - [Route("/api/vehicles")] - public IActionResult Vehicles() - { - var result = _dataAccess.GetVehicles(); - if (!User.IsInRole(nameof(UserData.IsRootUser))) - { - result = _userLogic.FilterUserVehicles(result, GetUserID()); - } - if (_config.GetInvariantApi() || Request.Headers.ContainsKey("culture-invariant")) - { - return Json(result, StaticHelper.GetInvariantOption()); - } - else - { - return Json(result); - } - } - - [HttpGet] - [Route("/api/vehicle/info")] - public IActionResult VehicleInfo(int vehicleId) - { - //stats for a specific or all vehicles - List vehicles = new List(); - if (vehicleId != default) - { - if (_userLogic.UserCanEditVehicle(GetUserID(), vehicleId)) - { - vehicles.Add(_dataAccess.GetVehicleById(vehicleId)); - } else - { - return new RedirectResult("/Error/Unauthorized"); - } - } else - { - var result = _dataAccess.GetVehicles(); - if (!User.IsInRole(nameof(UserData.IsRootUser))) - { - result = _userLogic.FilterUserVehicles(result, GetUserID()); - } - vehicles.AddRange(result); - } - - var apiResult = _vehicleLogic.GetVehicleInfo(vehicles); - if (_config.GetInvariantApi() || Request.Headers.ContainsKey("culture-invariant")) - { - return Json(apiResult, StaticHelper.GetInvariantOption()); - } - else - { - return Json(apiResult); - } - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - [Route("/api/vehicle/adjustedodometer")] - public IActionResult AdjustedOdometer(int vehicleId, int odometer) - { - var vehicle = _dataAccess.GetVehicleById(vehicleId); - if (vehicle == null || !vehicle.HasOdometerAdjustment) - { - return Json(odometer); - } else - { - var convertedOdometer = (odometer + int.Parse(vehicle.OdometerDifference)) * decimal.Parse(vehicle.OdometerMultiplier); - return Json(convertedOdometer); - } - } - #region PlanRecord - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - [Route("/api/vehicle/planrecords")] - public IActionResult PlanRecords(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 = _planRecordDataAccess.GetPlanRecordsByVehicleId(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.DateCreated < startDate); - } - if (!string.IsNullOrWhiteSpace(parameters.EndDate) && DateTime.TryParse(parameters.EndDate, out DateTime endDate)) - { - vehicleRecords.RemoveAll(x => x.DateCreated > endDate); - } - var result = vehicleRecords.Select(x => new PlanRecordExportModel { - Id = x.Id.ToString(), - DateCreated = x.DateCreated.ToShortDateString(), - DateModified = x.DateModified.ToShortDateString(), - Description = x.Description, - Cost = x.Cost.ToString(), - Notes = x.Notes, - Type = x.ImportMode.ToString(), - Priority = x.Priority.ToString(), - Progress = x.Progress.ToString(), - ExtraFields = x.ExtraFields, - Files = x.Files }); - if (_config.GetInvariantApi() || Request.Headers.ContainsKey("culture-invariant")) - { - return Json(result, StaticHelper.GetInvariantOption()); - } - else - { - return Json(result); - } - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - [Route("/api/vehicle/planrecords/add")] - [Consumes("application/json")] - public IActionResult AddPlanRecordJson(int vehicleId, [FromBody] PlanRecordExportModel input) => AddPlanRecord(vehicleId, input); - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - [Route("/api/vehicle/planrecords/add")] - public IActionResult AddPlanRecord(int vehicleId, PlanRecordExportModel input) - { - if (vehicleId == default) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Must provide a valid vehicle id")); - } - if (string.IsNullOrWhiteSpace(input.Description) || - string.IsNullOrWhiteSpace(input.Cost) || - string.IsNullOrWhiteSpace(input.Type) || - string.IsNullOrWhiteSpace(input.Priority) || - string.IsNullOrWhiteSpace(input.Progress)) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, Description, Cost, Type, Priority, and Progress cannot be empty.")); - } - bool validType = Enum.TryParse(input.Type, out ImportMode parsedType); - bool validPriority = Enum.TryParse(input.Priority, out PlanPriority parsedPriority); - bool validProgress = Enum.TryParse(input.Progress, out PlanProgress parsedProgress); - if (!validType || !validPriority || !validProgress) - { - Response.StatusCode = 400; - 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.UpgradeRecord) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, Type can only ServiceRecord or UpgradeRecord")); - } - if (parsedProgress == PlanProgress.Done) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, Progress cannot be set to Done.")); - } - //hardening - turns null values for List types into empty lists. - if (input.Files == null) - { - input.Files = new List(); - } - if (input.ExtraFields == null) - { - input.ExtraFields = new List(); - } - try - { - var planRecord = new PlanRecord() - { - VehicleId = vehicleId, - DateCreated = DateTime.Now, - DateModified = DateTime.Now, - Description = input.Description, - Notes = string.IsNullOrWhiteSpace(input.Notes) ? "" : input.Notes, - Cost = decimal.Parse(input.Cost), - ImportMode = parsedType, - Priority = parsedPriority, - Progress = parsedProgress, - ExtraFields = input.ExtraFields, - Files = input.Files - }; - _planRecordDataAccess.SavePlanRecordToVehicle(planRecord); - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromPlanRecord(planRecord, "planrecord.add.api", User.Identity.Name)); - return Json(OperationResponse.Succeed("Plan Record Added")); - } - catch (Exception ex) - { - Response.StatusCode = 500; - return Json(OperationResponse.Failed(ex.Message)); - } - } - [HttpDelete] - [Route("/api/vehicle/planrecords/delete")] - public IActionResult DeletePlanRecord(int id) - { - var existingRecord = _planRecordDataAccess.GetPlanRecordById(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 = _planRecordDataAccess.DeletePlanRecordById(existingRecord.Id); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromPlanRecord(existingRecord, "planrecord.delete.api", User.Identity.Name)); - } - return Json(OperationResponse.Conditional(result, "Plan Record Deleted")); - } - [HttpPut] - [Route("/api/vehicle/planrecords/update")] - [Consumes("application/json")] - public IActionResult UpdatePlanRecordJson([FromBody] PlanRecordExportModel input) => UpdatePlanRecord(input); - [HttpPut] - [Route("/api/vehicle/planrecords/update")] - public IActionResult UpdatePlanRecord(PlanRecordExportModel input) - { - if (string.IsNullOrWhiteSpace(input.Id) || - string.IsNullOrWhiteSpace(input.Description) || - string.IsNullOrWhiteSpace(input.Cost) || - string.IsNullOrWhiteSpace(input.Type) || - string.IsNullOrWhiteSpace(input.Priority) || - string.IsNullOrWhiteSpace(input.Progress)) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, Id, Description, Cost, Type, Priority, and Progress cannot be empty.")); - } - bool validType = Enum.TryParse(input.Type, out ImportMode parsedType); - bool validPriority = Enum.TryParse(input.Priority, out PlanPriority parsedPriority); - bool validProgress = Enum.TryParse(input.Progress, out PlanProgress parsedProgress); - if (!validType || !validPriority || !validProgress) - { - Response.StatusCode = 400; - 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.UpgradeRecord) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, Type can only ServiceRecord or UpgradeRecord")); - } - if (parsedProgress == PlanProgress.Done) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, Progress cannot be set to Done.")); - } - if (input.Files == null) - { - input.Files = new List(); - } - if (input.ExtraFields == null) - { - input.ExtraFields = new List(); - } - try - { - //retrieve existing record - var existingRecord = _planRecordDataAccess.GetPlanRecordById(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.DateModified = DateTime.Now; - existingRecord.Description = input.Description; - existingRecord.Notes = string.IsNullOrWhiteSpace(input.Notes) ? "" : input.Notes; - existingRecord.Cost = decimal.Parse(input.Cost); - existingRecord.ImportMode = parsedType; - existingRecord.Priority = parsedPriority; - existingRecord.Progress = parsedProgress; - existingRecord.Files = input.Files; - existingRecord.ExtraFields = input.ExtraFields; - _planRecordDataAccess.SavePlanRecordToVehicle(existingRecord); - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromPlanRecord(existingRecord, "planrecord.update.api", User.Identity.Name)); - } - else - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Invalid Record Id")); - } - return Json(OperationResponse.Succeed("Plan Record Updated")); - } - catch (Exception ex) - { - Response.StatusCode = 500; - return Json(OperationResponse.Failed(ex.Message)); - } - } - #endregion - #region ServiceRecord - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - [Route("/api/vehicle/servicerecords")] - public IActionResult ServiceRecords(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 = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(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/servicerecords/add")] - [Consumes("application/json")] - public IActionResult AddServiceRecordJson(int vehicleId, [FromBody] GenericRecordExportModel input) => AddServiceRecord(vehicleId, input); - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - [Route("/api/vehicle/servicerecords/add")] - public IActionResult AddServiceRecord(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 serviceRecord = new ServiceRecord() - { - 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() - }; - _serviceRecordDataAccess.SaveServiceRecordToVehicle(serviceRecord); - 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(serviceRecord, "servicerecord.add.api", User.Identity.Name)); - return Json(OperationResponse.Succeed("Service Record Added")); - } - catch (Exception ex) - { - Response.StatusCode = 500; - return Json(OperationResponse.Failed(ex.Message)); - } - } - [HttpDelete] - [Route("/api/vehicle/servicerecords/delete")] - public IActionResult DeleteServiceRecord(int id) - { - var existingRecord = _serviceRecordDataAccess.GetServiceRecordById(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 = _serviceRecordDataAccess.DeleteServiceRecordById(existingRecord.Id); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGenericRecord(existingRecord, "servicerecord.delete.api", User.Identity.Name)); - } - return Json(OperationResponse.Conditional(result, "Service Record Deleted")); - } - [HttpPut] - [Route("/api/vehicle/servicerecords/update")] - [Consumes("application/json")] - public IActionResult UpdateServiceRecordJson([FromBody] GenericRecordExportModel input) => UpdateServiceRecord(input); - [HttpPut] - [Route("/api/vehicle/servicerecords/update")] - public IActionResult UpdateServiceRecord(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 = _serviceRecordDataAccess.GetServiceRecordById(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.Files = input.Files; - existingRecord.ExtraFields = input.ExtraFields; - existingRecord.Tags = string.IsNullOrWhiteSpace(input.Tags) ? new List() : input.Tags.Split(' ').Distinct().ToList(); - _serviceRecordDataAccess.SaveServiceRecordToVehicle(existingRecord); - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGenericRecord(existingRecord, "servicerecord.update.api", User.Identity.Name)); - } else - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Invalid Record Id")); - } - return Json(OperationResponse.Succeed("Service Record Updated")); - } - catch (Exception ex) - { - Response.StatusCode = 500; - return Json(OperationResponse.Failed(ex.Message)); - } - } - #endregion - #region UpgradeRecord - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - [Route("/api/vehicle/upgraderecords")] - public IActionResult UpgradeRecords(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 = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(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/upgraderecords/add")] - [Consumes("application/json")] - public IActionResult AddUpgradeRecordJson(int vehicleId, [FromBody] GenericRecordExportModel input) => AddUpgradeRecord(vehicleId, input); - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - [Route("/api/vehicle/upgraderecords/add")] - public IActionResult AddUpgradeRecord(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 upgradeRecord = new UpgradeRecord() - { - 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() - }; - _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(upgradeRecord); - 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(upgradeRecord, "upgraderecord.add.api", User.Identity.Name)); - return Json(OperationResponse.Succeed("Upgrade Record Added")); - } - catch (Exception ex) - { - Response.StatusCode = 500; - return Json(OperationResponse.Failed(ex.Message)); - } - } - [HttpDelete] - [Route("/api/vehicle/upgraderecords/delete")] - public IActionResult DeleteUpgradeRecord(int id) - { - var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(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 = _upgradeRecordDataAccess.DeleteUpgradeRecordById(existingRecord.Id); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGenericRecord(existingRecord, "upgraderecord.delete.api", User.Identity.Name)); - } - return Json(OperationResponse.Conditional(result,"Upgrade Record Deleted")); - } - [HttpPut] - [Route("/api/vehicle/upgraderecords/update")] - [Consumes("application/json")] - public IActionResult UpdateUpgradeRecordJson([FromBody] GenericRecordExportModel input) => UpdateUpgradeRecord(input); - [HttpPut] - [Route("/api/vehicle/upgraderecords/update")] - public IActionResult UpdateUpgradeRecord(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 = _upgradeRecordDataAccess.GetUpgradeRecordById(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(); - _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(existingRecord); - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGenericRecord(existingRecord, "upgraderecord.update.api", User.Identity.Name)); - } - else - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Invalid Record Id")); - } - return Json(OperationResponse.Succeed("Upgrade Record Updated")); - } - catch (Exception ex) - { - Response.StatusCode = 500; - return Json(OperationResponse.Failed(ex.Message)); - } - } - #endregion - #region TaxRecord - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - [Route("/api/vehicle/taxrecords")] - public IActionResult TaxRecords(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 = _taxRecordDataAccess.GetTaxRecordsByVehicleId(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 TaxRecordExportModel { Id = x.Id.ToString(), Date = x.Date.ToShortDateString(), Description = x.Description, Cost = x.Cost.ToString(), Notes = x.Notes, 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); - } - } - [HttpGet] - [Route("/api/vehicle/taxrecords/check")] - public IActionResult CheckRecurringTaxRecords() - { - List vehicles = new List(); - try - { - var result = _dataAccess.GetVehicles(); - if (!User.IsInRole(nameof(UserData.IsRootUser))) - { - result = _userLogic.FilterUserVehicles(result, GetUserID()); - } - vehicles.AddRange(result); - int vehiclesUpdated = 0; - foreach(Vehicle vehicle in vehicles) - { - var updateResult = _vehicleLogic.UpdateRecurringTaxes(vehicle.Id); - if (updateResult) - { - vehiclesUpdated++; - } - } - if (vehiclesUpdated != default) - { - return Json(OperationResponse.Succeed($"Recurring Taxes for {vehiclesUpdated} Vehicles Updated!")); - } else - { - return Json(OperationResponse.Succeed("No Recurring Taxes Updated")); - } - } - catch (Exception ex) - { - return Json(OperationResponse.Failed($"No Recurring Taxes Updated Due To Error: {ex.Message}")); - } - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - [Route("/api/vehicle/taxrecords/add")] - [Consumes("application/json")] - public IActionResult AddTaxRecordJson(int vehicleId, [FromBody] TaxRecordExportModel input) => AddTaxRecord(vehicleId, input); - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - [Route("/api/vehicle/taxrecords/add")] - public IActionResult AddTaxRecord(int vehicleId, TaxRecordExportModel 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.Cost)) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, Date, Description, and Cost cannot be empty.")); - } - if (input.Files == null) - { - input.Files = new List(); - } - if (input.ExtraFields == null) - { - input.ExtraFields = new List(); - } - try - { - var taxRecord = new TaxRecord() - { - VehicleId = vehicleId, - Date = DateTime.Parse(input.Date), - 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() - }; - _taxRecordDataAccess.SaveTaxRecordToVehicle(taxRecord); - _vehicleLogic.UpdateRecurringTaxes(vehicleId); - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromTaxRecord(taxRecord, "taxrecord.add.api", User.Identity.Name)); - return Json(OperationResponse.Succeed("Tax Record Added")); - } - catch (Exception ex) - { - Response.StatusCode = 500; - return Json(OperationResponse.Failed(ex.Message)); - } - } - [HttpDelete] - [Route("/api/vehicle/taxrecords/delete")] - public IActionResult DeleteTaxRecord(int id) - { - var existingRecord = _taxRecordDataAccess.GetTaxRecordById(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.")); - } - var result = _taxRecordDataAccess.DeleteTaxRecordById(existingRecord.Id); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromTaxRecord(existingRecord, "taxrecord.delete.api", User.Identity.Name)); - } - return Json(OperationResponse.Conditional(result, "Tax Record Deleted")); - } - [HttpPut] - [Route("/api/vehicle/taxrecords/update")] - [Consumes("application/json")] - public IActionResult UpdateTaxRecordJson([FromBody] TaxRecordExportModel input) => UpdateTaxRecord(input); - [HttpPut] - [Route("/api/vehicle/taxrecords/update")] - public IActionResult UpdateTaxRecord(TaxRecordExportModel input) - { - if (string.IsNullOrWhiteSpace(input.Id) || - string.IsNullOrWhiteSpace(input.Date) || - string.IsNullOrWhiteSpace(input.Description) || - string.IsNullOrWhiteSpace(input.Cost)) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, Id, Date, Description, 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 = _taxRecordDataAccess.GetTaxRecordById(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.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(); - _taxRecordDataAccess.SaveTaxRecordToVehicle(existingRecord); - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromTaxRecord(existingRecord, "taxrecord.update.api", User.Identity.Name)); - } - else - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Invalid Record Id")); - } - return Json(OperationResponse.Succeed("Tax Record Updated")); - } - catch (Exception ex) - { - Response.StatusCode = 500; - return Json(OperationResponse.Failed(ex.Message)); - } - } - #endregion - #region OdometerRecord - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - [Route("/api/vehicle/odometerrecords/latest")] - public IActionResult LastOdometer(int vehicleId) - { - if (vehicleId == default) - { - var response = OperationResponse.Failed("Must provide a valid vehicle id"); - Response.StatusCode = 400; - return Json(response); - } - var result = _vehicleLogic.GetMaxMileage(vehicleId); - return Json(result); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - [Route("/api/vehicle/odometerrecords")] - public IActionResult OdometerRecords(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 = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId); - //determine if conversion is needed. - if (vehicleRecords.All(x => x.InitialMileage == default)) - { - vehicleRecords = _odometerLogic.AutoConvertOdometerRecord(vehicleRecords); - } - 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 OdometerRecordExportModel { Id = x.Id.ToString(), Date = x.Date.ToShortDateString(), InitialOdometer = x.InitialMileage.ToString(), Odometer = x.Mileage.ToString(), Notes = x.Notes, 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/odometerrecords/add")] - [Consumes("application/json")] - public IActionResult AddOdometerRecordJson(int vehicleId, [FromBody] OdometerRecordExportModel input) => AddOdometerRecord(vehicleId, input); - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - [Route("/api/vehicle/odometerrecords/add")] - public IActionResult AddOdometerRecord(int vehicleId, OdometerRecordExportModel 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.Odometer)) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, Date, and Odometer cannot be empty.")); - } - if (input.Files == null) - { - input.Files = new List(); - } - if (input.ExtraFields == null) - { - input.ExtraFields = new List(); - } - try - { - var odometerRecord = new OdometerRecord() - { - VehicleId = vehicleId, - 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), - ExtraFields = input.ExtraFields, - Files = input.Files, - Tags = string.IsNullOrWhiteSpace(input.Tags) ? new List() : input.Tags.Split(' ').Distinct().ToList() - }; - _odometerRecordDataAccess.SaveOdometerRecordToVehicle(odometerRecord); - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromOdometerRecord(odometerRecord, "odometerrecord.add.api", User.Identity.Name)); - return Json(OperationResponse.Succeed("Odometer Record Added")); - } catch (Exception ex) - { - Response.StatusCode = 500; - return Json(OperationResponse.Failed(ex.Message)); - } - } - [HttpDelete] - [Route("/api/vehicle/odometerrecords/delete")] - public IActionResult DeleteOdometerRecord(int id) - { - var existingRecord = _odometerRecordDataAccess.GetOdometerRecordById(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.")); - } - var result = _odometerRecordDataAccess.DeleteOdometerRecordById(existingRecord.Id); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromOdometerRecord(existingRecord, "odometerrecord.delete.api", User.Identity.Name)); - } - return Json(OperationResponse.Conditional(result, "Odometer Record Deleted")); - } - [HttpPut] - [Route("/api/vehicle/odometerrecords/update")] - [Consumes("application/json")] - public IActionResult UpdateOdometerRecordJson([FromBody] OdometerRecordExportModel input) => UpdateOdometerRecord(input); - [HttpPut] - [Route("/api/vehicle/odometerrecords/update")] - public IActionResult UpdateOdometerRecord(OdometerRecordExportModel input) - { - if (string.IsNullOrWhiteSpace(input.Id) || - string.IsNullOrWhiteSpace(input.Date) || - string.IsNullOrWhiteSpace(input.InitialOdometer) || - string.IsNullOrWhiteSpace(input.Odometer)) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, Id, Date, Initial Odometer, and Odometer 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 = _odometerRecordDataAccess.GetOdometerRecordById(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.InitialMileage = int.Parse(input.InitialOdometer); - existingRecord.Notes = string.IsNullOrWhiteSpace(input.Notes) ? "" : input.Notes; - existingRecord.ExtraFields = input.ExtraFields; - existingRecord.Files = input.Files; - existingRecord.Tags = string.IsNullOrWhiteSpace(input.Tags) ? new List() : input.Tags.Split(' ').Distinct().ToList(); - _odometerRecordDataAccess.SaveOdometerRecordToVehicle(existingRecord); - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromOdometerRecord(existingRecord, "odometerrecord.update.api", User.Identity.Name)); - } - else - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Invalid Record Id")); - } - return Json(OperationResponse.Succeed("Odometer Record Updated")); - } - catch (Exception ex) - { - Response.StatusCode = 500; - return Json(OperationResponse.Failed(ex.Message)); - } - } - #endregion - #region GasRecord - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - [Route("/api/vehicle/gasrecords")] - public IActionResult GasRecords(int vehicleId, MethodParameter parameters) - { - if (vehicleId == default) - { - var response = OperationResponse.Failed("Must provide a valid vehicle id"); - Response.StatusCode = 400; - return Json(response); - } - var rawVehicleRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicleId); - var vehicleRecords = _gasHelper.GetGasRecordViewModels(rawVehicleRecords, parameters.UseMPG, parameters.UseUKMPG); - 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 => DateTime.Parse(x.Date) < startDate); - } - if (!string.IsNullOrWhiteSpace(parameters.EndDate) && DateTime.TryParse(parameters.EndDate, out DateTime endDate)) - { - vehicleRecords.RemoveAll(x => DateTime.Parse(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 GasRecordExportModel { - Id = x.Id.ToString(), - Date = x.Date, - Odometer = x.Mileage.ToString(), - Cost = x.Cost.ToString(), - FuelConsumed = x.Gallons.ToString(), - FuelEconomy = x.MilesPerGallon.ToString(), - IsFillToFull = x.IsFillToFull.ToString(), - MissedFuelUp = x.MissedFuelUp.ToString(), - Notes = x.Notes, - 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/gasrecords/add")] - [Consumes("application/json")] - public IActionResult AddGasRecordJson(int vehicleId, [FromBody] GasRecordExportModel input) => AddGasRecord(vehicleId, input); - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - [Route("/api/vehicle/gasrecords/add")] - public IActionResult AddGasRecord(int vehicleId, GasRecordExportModel 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.Odometer) || - string.IsNullOrWhiteSpace(input.FuelConsumed) || - string.IsNullOrWhiteSpace(input.Cost) || - string.IsNullOrWhiteSpace(input.IsFillToFull) || - string.IsNullOrWhiteSpace(input.MissedFuelUp) - ) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, Date, Odometer, FuelConsumed, IsFillToFull, MissedFuelUp, and Cost cannot be empty.")); - } - if (input.Files == null) - { - input.Files = new List(); - } - if (input.ExtraFields == null) - { - input.ExtraFields = new List(); - } - try - { - var gasRecord = new GasRecord() - { - VehicleId = vehicleId, - Date = DateTime.Parse(input.Date), - Mileage = int.Parse(input.Odometer), - Gallons = decimal.Parse(input.FuelConsumed), - IsFillToFull = bool.Parse(input.IsFillToFull), - MissedFuelUp = bool.Parse(input.MissedFuelUp), - 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() - }; - _gasRecordDataAccess.SaveGasRecordToVehicle(gasRecord); - 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.FromGasRecord(gasRecord, "gasrecord.add.api", User.Identity.Name)); - return Json(OperationResponse.Succeed("Gas Record Added")); - } - catch (Exception ex) - { - Response.StatusCode = 500; - return Json(OperationResponse.Failed(ex.Message)); - } - } - [HttpDelete] - [Route("/api/vehicle/gasrecords/delete")] - public IActionResult DeleteGasRecord(int id) - { - var existingRecord = _gasRecordDataAccess.GetGasRecordById(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.")); - } - var result = _gasRecordDataAccess.DeleteGasRecordById(existingRecord.Id); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGasRecord(existingRecord, "gasrecord.delete.api", User.Identity.Name)); - } - return Json(OperationResponse.Conditional(result, "Gas Record Deleted")); - } - [HttpPut] - [Route("/api/vehicle/gasrecords/update")] - [Consumes("application/json")] - public IActionResult UpdateGasRecordJson([FromBody] GasRecordExportModel input) => UpdateGasRecord(input); - [HttpPut] - [Route("/api/vehicle/gasrecords/update")] - public IActionResult UpdateGasRecord(GasRecordExportModel input) - { - if (string.IsNullOrWhiteSpace(input.Id) || - string.IsNullOrWhiteSpace(input.Date) || - string.IsNullOrWhiteSpace(input.Odometer) || - string.IsNullOrWhiteSpace(input.FuelConsumed) || - string.IsNullOrWhiteSpace(input.Cost) || - string.IsNullOrWhiteSpace(input.IsFillToFull) || - string.IsNullOrWhiteSpace(input.MissedFuelUp)) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, Id, Date, Odometer, FuelConsumed, IsFillToFull, MissedFuelUp, 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 = _gasRecordDataAccess.GetGasRecordById(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.Gallons = decimal.Parse(input.FuelConsumed); - existingRecord.IsFillToFull = bool.Parse(input.IsFillToFull); - existingRecord.MissedFuelUp = bool.Parse(input.MissedFuelUp); - 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(); - _gasRecordDataAccess.SaveGasRecordToVehicle(existingRecord); - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGasRecord(existingRecord, "gasrecord.update.api", User.Identity.Name)); - } - else - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Invalid Record Id")); - } - return Json(OperationResponse.Succeed("Gas Record Updated")); - } - catch (Exception ex) - { - Response.StatusCode = 500; - return Json(OperationResponse.Failed(ex.Message)); - } - } - #endregion - #region ReminderRecord - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - [Route("/api/vehicle/reminders")] - public IActionResult Reminders(int vehicleId) - { - if (vehicleId == default) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Must provide a valid vehicle id")); - } - var currentMileage = _vehicleLogic.GetMaxMileage(vehicleId); - var reminders = _reminderRecordDataAccess.GetReminderRecordsByVehicleId(vehicleId); - var results = _reminderHelper.GetReminderRecordViewModels(reminders, currentMileage, DateTime.Now).Select(x=> new ReminderAPIExportModel { Id = x.Id.ToString(), Description = x.Description, Urgency = x.Urgency.ToString(), Metric = x.Metric.ToString(), UserMetric = x.UserMetric.ToString(), Notes = x.Notes, DueDate = x.Date.ToShortDateString(), DueOdometer = x.Mileage.ToString(), DueDays = x.DueDays.ToString(), DueDistance = x.DueMileage.ToString(), Tags = string.Join(' ', x.Tags) }); - if (_config.GetInvariantApi() || Request.Headers.ContainsKey("culture-invariant")) - { - return Json(results, StaticHelper.GetInvariantOption()); - } - else - { - return Json(results); - } - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - [Route("/api/vehicle/reminders/add")] - [Consumes("application/json")] - public IActionResult AddReminderRecordJson(int vehicleId, [FromBody] ReminderExportModel input) => AddReminderRecord(vehicleId, input); - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - [Route("/api/vehicle/reminders/add")] - public IActionResult AddReminderRecord(int vehicleId, ReminderExportModel input) - { - if (vehicleId == default) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Must provide a valid vehicle id")); - } - if (string.IsNullOrWhiteSpace(input.Description) || - string.IsNullOrWhiteSpace(input.Metric)) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, Description and Metric cannot be empty.")); - } - bool validMetric = Enum.TryParse(input.Metric, out ReminderMetric parsedMetric); - bool validDate = DateTime.TryParse(input.DueDate, out DateTime parsedDate); - bool validOdometer = int.TryParse(input.DueOdometer, out int parsedOdometer); - if (!validMetric) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, values for Metric(Date, Odometer, Both) is invalid.")); - } - //validate metrics - switch (parsedMetric) - { - case ReminderMetric.Both: - //validate due date and odometer - if (!validDate || !validOdometer) - { - return Json(OperationResponse.Failed("Input object invalid, DueDate and DueOdometer must be valid if Metric is Both")); - } - break; - case ReminderMetric.Date: - if (!validDate) - { - return Json(OperationResponse.Failed("Input object invalid, DueDate must be valid if Metric is Date")); - } - break; - case ReminderMetric.Odometer: - if (!validOdometer) - { - return Json(OperationResponse.Failed("Input object invalid, DueOdometer must be valid if Metric is Odometer")); - } - break; - } - try - { - var reminderRecord = new ReminderRecord() - { - VehicleId = vehicleId, - Description = input.Description, - Mileage = parsedOdometer, - Date = parsedDate, - Metric = parsedMetric, - Notes = string.IsNullOrWhiteSpace(input.Notes) ? "" : input.Notes, - Tags = string.IsNullOrWhiteSpace(input.Tags) ? new List() : input.Tags.Split(' ').Distinct().ToList() - }; - _reminderRecordDataAccess.SaveReminderRecordToVehicle(reminderRecord); - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromReminderRecord(reminderRecord, "reminderrecord.add.api", User.Identity.Name)); - return Json(OperationResponse.Succeed("Reminder Record Added")); - } - catch (Exception ex) - { - Response.StatusCode = 500; - return Json(OperationResponse.Failed(ex.Message)); - } - } - [HttpPut] - [Route("/api/vehicle/reminders/update")] - [Consumes("application/json")] - public IActionResult UpdateReminderRecordJson([FromBody] ReminderExportModel input) => UpdateReminderRecord(input); - [HttpPut] - [Route("/api/vehicle/reminders/update")] - public IActionResult UpdateReminderRecord(ReminderExportModel input) - { - if (string.IsNullOrWhiteSpace(input.Id) || - string.IsNullOrWhiteSpace(input.Description) || - string.IsNullOrWhiteSpace(input.Metric)) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, Id, Description and Metric cannot be empty.")); - } - bool validMetric = Enum.TryParse(input.Metric, out ReminderMetric parsedMetric); - bool validDate = DateTime.TryParse(input.DueDate, out DateTime parsedDate); - bool validOdometer = int.TryParse(input.DueOdometer, out int parsedOdometer); - if (!validMetric) - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Input object invalid, values for Metric(Date, Odometer, Both) is invalid.")); - } - //validate metrics - switch (parsedMetric) - { - case ReminderMetric.Both: - //validate due date and odometer - if (!validDate || !validOdometer) - { - return Json(OperationResponse.Failed("Input object invalid, DueDate and DueOdometer must be valid if Metric is Both")); - } - break; - case ReminderMetric.Date: - if (!validDate) - { - return Json(OperationResponse.Failed("Input object invalid, DueDate must be valid if Metric is Date")); - } - break; - case ReminderMetric.Odometer: - if (!validOdometer) - { - return Json(OperationResponse.Failed("Input object invalid, DueOdometer must be valid if Metric is Odometer")); - } - break; - } - try - { - //retrieve existing record - var existingRecord = _reminderRecordDataAccess.GetReminderRecordById(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 = parsedDate; - existingRecord.Mileage = parsedOdometer; - existingRecord.Description = input.Description; - existingRecord.Metric = parsedMetric; - existingRecord.Notes = string.IsNullOrWhiteSpace(input.Notes) ? "" : input.Notes; - existingRecord.Tags = string.IsNullOrWhiteSpace(input.Tags) ? new List() : input.Tags.Split(' ').Distinct().ToList(); - _reminderRecordDataAccess.SaveReminderRecordToVehicle(existingRecord); - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromReminderRecord(existingRecord, "reminderrecord.update.api", User.Identity.Name)); - } - else - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("Invalid Record Id")); - } - return Json(OperationResponse.Succeed("Reminder Record Updated")); - } - catch (Exception ex) - { - Response.StatusCode = 500; - return Json(OperationResponse.Failed(ex.Message)); - } - } - [HttpDelete] - [Route("/api/vehicle/reminders/delete")] - public IActionResult DeleteReminderRecord(int id) - { - var existingRecord = _reminderRecordDataAccess.GetReminderRecordById(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.")); - } - var result = _reminderRecordDataAccess.DeleteReminderRecordById(existingRecord.Id); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromReminderRecord(existingRecord, "reminderrecord.delete.api", User.Identity.Name)); - } - return Json(OperationResponse.Conditional(result, "Reminder Record Deleted")); - } - [HttpGet] - [Route("/api/calendar")] - public IActionResult Calendar() - { - var vehiclesStored = _dataAccess.GetVehicles(); - if (!User.IsInRole(nameof(UserData.IsRootUser))) - { - vehiclesStored = _userLogic.FilterUserVehicles(vehiclesStored, GetUserID()); - } - var reminders = _vehicleLogic.GetReminders(vehiclesStored, true); - var calendarContent = StaticHelper.RemindersToCalendar(reminders); - return File(calendarContent, "text/calendar"); - } - #endregion - [HttpPost] - [Route("/api/documents/upload")] - public IActionResult UploadDocument(List documents) - { - if (documents.Any()) - { - List uploadedFiles = new List(); - string uploadDirectory = "documents/"; - string uploadPath = Path.Combine(_webEnv.ContentRootPath, "data", uploadDirectory); - if (!Directory.Exists(uploadPath)) - Directory.CreateDirectory(uploadPath); - foreach (IFormFile document in documents) - { - string fileName = Guid.NewGuid() + Path.GetExtension(document.FileName); - string filePath = Path.Combine(uploadPath, fileName); - using (var stream = System.IO.File.Create(filePath)) - { - document.CopyTo(stream); - } - uploadedFiles.Add(new UploadedFiles - { - Location = Path.Combine("/", uploadDirectory, fileName), - Name = Path.GetFileName(document.FileName) - }); - } - return Json(uploadedFiles); - } else - { - Response.StatusCode = 400; - return Json(OperationResponse.Failed("No files to upload")); - } - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - [HttpGet] - [Route("/api/vehicle/reminders/send")] - public IActionResult SendReminders(List urgencies) - { - if (!urgencies.Any()) - { - //if no urgencies parameter, we will default to all urgencies. - urgencies = new List { ReminderUrgency.NotUrgent, ReminderUrgency.Urgent, ReminderUrgency.VeryUrgent, ReminderUrgency.PastDue }; - } - var vehicles = _dataAccess.GetVehicles(); - List operationResponses = new List(); - var defaultEmailAddress = _config.GetDefaultReminderEmail(); - foreach(Vehicle vehicle in vehicles) - { - var vehicleId = vehicle.Id; - //get reminders - var currentMileage = _vehicleLogic.GetMaxMileage(vehicleId); - var reminders = _reminderRecordDataAccess.GetReminderRecordsByVehicleId(vehicleId); - var results = _reminderHelper.GetReminderRecordViewModels(reminders, currentMileage, DateTime.Now).OrderByDescending(x => x.Urgency).ToList(); - results.RemoveAll(x => !urgencies.Contains(x.Urgency)); - if (!results.Any()) - { - continue; - } - //get list of recipients. - var userIds = _userAccessDataAccess.GetUserAccessByVehicleId(vehicleId).Select(x => x.Id.UserId); - List emailRecipients = new List(); - if (!string.IsNullOrWhiteSpace(defaultEmailAddress)) - { - emailRecipients.Add(defaultEmailAddress); - } - foreach (int userId in userIds) - { - var userData = _userRecordDataAccess.GetUserRecordById(userId); - emailRecipients.Add(userData.EmailAddress); - }; - if (!emailRecipients.Any()) - { - continue; - } - var result = _mailHelper.NotifyUserForReminders(vehicle, emailRecipients, results); - operationResponses.Add(result); - } - if (!operationResponses.Any()) - { - return Json(OperationResponse.Failed("No Emails Sent, No Vehicles Available or No Recipients Configured")); - } - else if (operationResponses.All(x => x.Success)) - { - return Json(OperationResponse.Succeed($"Emails Sent({operationResponses.Count()})")); - } else if (operationResponses.All(x => !x.Success)) - { - return Json(OperationResponse.Failed($"All Emails Failed({operationResponses.Count()}), Check SMTP Settings")); - } else - { - return Json(OperationResponse.Succeed($"Emails Sent({operationResponses.Count(x => x.Success)}), Emails Failed({operationResponses.Count(x => !x.Success)}), Check Recipient Settings")); - } - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - [HttpGet] - [Route("/api/makebackup")] - public IActionResult MakeBackup() - { - var result = _fileHelper.MakeBackup(); - return Json(result); - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - [HttpGet] - [Route("/api/cleanup")] - public IActionResult CleanUp(bool deepClean = false) - { - var jsonResponse = new Dictionary(); - //Clear out temp folder - var tempFilesDeleted = _fileHelper.ClearTempFolder(); - jsonResponse.Add("temp_files_deleted", tempFilesDeleted.ToString()); - if (deepClean) - { - //clear out unused vehicle thumbnails - var vehicles = _dataAccess.GetVehicles(); - var vehicleImages = vehicles.Select(x => x.ImageLocation).Where(x => x.StartsWith("/images/")).Select(x=>Path.GetFileName(x)).ToList(); - if (vehicleImages.Any()) - { - var thumbnailsDeleted = _fileHelper.ClearUnlinkedThumbnails(vehicleImages); - jsonResponse.Add("unlinked_thumbnails_deleted", thumbnailsDeleted.ToString()); - } - var vehicleDocuments = new List(); - foreach(Vehicle vehicle in vehicles) - { - vehicleDocuments.AddRange(_serviceRecordDataAccess.GetServiceRecordsByVehicleId(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))); - vehicleDocuments.AddRange(_noteDataAccess.GetNotesByVehicleId(vehicle.Id).SelectMany(x => x.Files).Select(y => Path.GetFileName(y.Location))); - vehicleDocuments.AddRange(_odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicle.Id).SelectMany(x => x.Files).Select(y => Path.GetFileName(y.Location))); - vehicleDocuments.AddRange(_supplyRecordDataAccess.GetSupplyRecordsByVehicleId(vehicle.Id).SelectMany(x => x.Files).Select(y => Path.GetFileName(y.Location))); - vehicleDocuments.AddRange(_planRecordDataAccess.GetPlanRecordsByVehicleId(vehicle.Id).SelectMany(x => x.Files).Select(y => Path.GetFileName(y.Location))); - vehicleDocuments.AddRange(_planRecordTemplateDataAccess.GetPlanRecordTemplatesByVehicleId(vehicle.Id).SelectMany(x => x.Files).Select(y => Path.GetFileName(y.Location))); - } - //shop supplies - vehicleDocuments.AddRange(_supplyRecordDataAccess.GetSupplyRecordsByVehicleId(0).SelectMany(x => x.Files).Select(y => Path.GetFileName(y.Location))); - if (vehicleDocuments.Any()) - { - var documentsDeleted = _fileHelper.ClearUnlinkedDocuments(vehicleDocuments); - jsonResponse.Add("unlinked_documents_deleted", documentsDeleted.ToString()); - } - } - return Json(jsonResponse); - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - [HttpGet] - [Route("/api/demo/restore")] - public IActionResult RestoreDemo() - { - var result = _fileHelper.RestoreBackup("/defaults/demo_default.zip", true); - return Json(result); - } - } -} diff --git a/Controllers/AdminController.cs b/Controllers/AdminController.cs deleted file mode 100644 index 2503d40..0000000 --- a/Controllers/AdminController.cs +++ /dev/null @@ -1,85 +0,0 @@ -using MotoVaultPro.Helper; -using MotoVaultPro.Logic; -using MotoVaultPro.Models; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; - -namespace MotoVaultPro.Controllers -{ - [Authorize(Roles = nameof(UserData.IsAdmin))] - public class AdminController : Controller - { - private ILoginLogic _loginLogic; - private IUserLogic _userLogic; - private IConfigHelper _configHelper; - public AdminController(ILoginLogic loginLogic, IUserLogic userLogic, IConfigHelper configHelper) - { - _loginLogic = loginLogic; - _userLogic = userLogic; - _configHelper = configHelper; - } - public IActionResult Index() - { - var viewModel = new AdminViewModel - { - Users = _loginLogic.GetAllUsers().OrderBy(x=>x.Id).ToList(), - Tokens = _loginLogic.GetAllTokens() - }; - return View(viewModel); - } - public IActionResult GetTokenPartialView() - { - var viewModel = _loginLogic.GetAllTokens(); - return PartialView("_Tokens", viewModel); - } - public IActionResult GetUserPartialView() - { - var viewModel = _loginLogic.GetAllUsers().OrderBy(x => x.Id).ToList(); - return PartialView("_Users", viewModel); - } - public IActionResult GenerateNewToken(string emailAddress, bool autoNotify) - { - if (emailAddress.Contains(",")) - { - string[] emailAddresses = emailAddress.Split(','); - foreach(string emailAdd in emailAddresses) - { - var trimmedEmail = emailAdd.Trim(); - if (!string.IsNullOrWhiteSpace(trimmedEmail)) - { - var result = _loginLogic.GenerateUserToken(emailAdd.Trim(), autoNotify); - if (!result.Success) - { - //if fail, return prematurely - return Json(result); - } - } - } - var successResponse = OperationResponse.Succeed("Token Generated!"); - return Json(successResponse); - } else - { - var result = _loginLogic.GenerateUserToken(emailAddress, autoNotify); - return Json(result); - } - } - [HttpPost] - public IActionResult DeleteToken(int tokenId) - { - var result = _loginLogic.DeleteUserToken(tokenId); - return Json(result); - } - [HttpPost] - public IActionResult DeleteUser(int userId) - { - var result =_userLogic.DeleteAllAccessToUser(userId) && _configHelper.DeleteUserConfig(userId) && _loginLogic.DeleteUser(userId); - return Json(result); - } - [HttpPost] - public IActionResult UpdateUserAdminStatus(int userId, bool isAdmin) - { - var result = _loginLogic.MakeUserAdmin(userId, isAdmin); - return Json(result); - } - } -} diff --git a/Controllers/ErrorController.cs b/Controllers/ErrorController.cs deleted file mode 100644 index 3cabc9f..0000000 --- a/Controllers/ErrorController.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Microsoft.AspNetCore.Mvc; - -namespace MotoVaultPro.Controllers -{ - public class ErrorController : Controller - { - public IActionResult Unauthorized() - { - if (User.IsInRole("APIAuth")) - { - Response.StatusCode = 403; - return new EmptyResult(); - } - return View("401"); - } - } -} diff --git a/Controllers/FilesController.cs b/Controllers/FilesController.cs deleted file mode 100644 index f3e1c00..0000000 --- a/Controllers/FilesController.cs +++ /dev/null @@ -1,109 +0,0 @@ -using MotoVaultPro.Models; -using Microsoft.AspNetCore.Mvc; -using MotoVaultPro.Helper; -using Microsoft.AspNetCore.Authorization; - -namespace MotoVaultPro.Controllers -{ - [Authorize] - public class FilesController : Controller - { - private readonly ILogger _logger; - private readonly IWebHostEnvironment _webEnv; - private readonly IFileHelper _fileHelper; - - public FilesController(ILogger logger, IFileHelper fileHelper, IWebHostEnvironment webEnv) - { - _logger = logger; - _webEnv = webEnv; - _fileHelper = fileHelper; - } - - [HttpPost] - public IActionResult HandleFileUpload(IFormFile file) - { - var fileName = UploadFile(file); - return Json(fileName); - } - - [HttpPost] - public IActionResult HandleTranslationFileUpload(IFormFile file) - { - var originalFileName = Path.GetFileNameWithoutExtension(file.FileName); - if (originalFileName == "en_US") - { - return Json(OperationResponse.Failed("The translation file name en_US is reserved.")); - } - var fileName = UploadFile(file); - //move file from temp to translation folder. - var uploadedFilePath = _fileHelper.MoveFileFromTemp(fileName, "translations/"); - //rename uploaded file so that it preserves original name. - if (!string.IsNullOrWhiteSpace(uploadedFilePath)) - { - var result = _fileHelper.RenameFile(uploadedFilePath, originalFileName); - return Json(OperationResponse.Conditional(result)); - } - return Json(OperationResponse.Failed()); - } - - [HttpPost] - public IActionResult HandleMultipleFileUpload(List file) - { - List uploadedFiles = new List(); - foreach (IFormFile fileToUpload in file) - { - var fileName = UploadFile(fileToUpload); - uploadedFiles.Add(new UploadedFiles { Name = fileToUpload.FileName, Location = fileName, IsPending = true}); - } - return Json(uploadedFiles); - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - [HttpPost] - public IActionResult DeleteFiles(string fileLocation) - { - var result = _fileHelper.DeleteFile(fileLocation); - return Json(result); - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - [HttpGet] - public IActionResult MakeBackup() - { - var result = _fileHelper.MakeBackup(); - return Json(result); - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - [HttpPost] - public IActionResult RestoreBackup(string fileName) - { - var result = _fileHelper.RestoreBackup(fileName); - return Json(result); - } - private string UploadFile(IFormFile fileToUpload) - { - string uploadDirectory = "temp/"; - string uploadPath = Path.Combine(_webEnv.ContentRootPath, "data", uploadDirectory); - if (!Directory.Exists(uploadPath)) - Directory.CreateDirectory(uploadPath); - string fileName = Guid.NewGuid() + Path.GetExtension(fileToUpload.FileName); - string filePath = Path.Combine(uploadPath, fileName); - using (var stream = System.IO.File.Create(filePath)) - { - fileToUpload.CopyTo(stream); - } - return Path.Combine("/", uploadDirectory, fileName); - } - public IActionResult UploadCoordinates(List coordinates) - { - string uploadDirectory = "temp/"; - string uploadPath = Path.Combine(_webEnv.ContentRootPath, "data", uploadDirectory); - if (!Directory.Exists(uploadPath)) - Directory.CreateDirectory(uploadPath); - string fileName = Guid.NewGuid() + ".csv"; - string filePath = Path.Combine(uploadPath, fileName); - string fileData = string.Join("\r\n", coordinates); - System.IO.File.WriteAllText(filePath, fileData); - var uploadedFile = new UploadedFiles { Name = "coordinates.csv", Location = Path.Combine("/", uploadDirectory, fileName) }; - return Json(uploadedFile); - } - } -} diff --git a/Controllers/HomeController.cs b/Controllers/HomeController.cs deleted file mode 100644 index a30c10e..0000000 --- a/Controllers/HomeController.cs +++ /dev/null @@ -1,597 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using Microsoft.AspNetCore.Mvc; -using System.Diagnostics; -using MotoVaultPro.Helper; -using Microsoft.AspNetCore.Authorization; -using System.Security.Claims; -using MotoVaultPro.Logic; - -namespace MotoVaultPro.Controllers -{ - [Authorize] - public class HomeController : Controller - { - private readonly ILogger _logger; - private readonly IVehicleDataAccess _dataAccess; - private readonly IUserLogic _userLogic; - private readonly ILoginLogic _loginLogic; - private readonly IVehicleLogic _vehicleLogic; - private readonly IFileHelper _fileHelper; - private readonly IConfigHelper _config; - private readonly IExtraFieldDataAccess _extraFieldDataAccess; - private readonly IReminderRecordDataAccess _reminderRecordDataAccess; - private readonly IReminderHelper _reminderHelper; - private readonly ITranslationHelper _translationHelper; - private readonly IMailHelper _mailHelper; - public HomeController(ILogger logger, - IVehicleDataAccess dataAccess, - IUserLogic userLogic, - ILoginLogic loginLogic, - IVehicleLogic vehicleLogic, - IConfigHelper configuration, - IFileHelper fileHelper, - IExtraFieldDataAccess extraFieldDataAccess, - IReminderRecordDataAccess reminderRecordDataAccess, - IReminderHelper reminderHelper, - ITranslationHelper translationHelper, - IMailHelper mailHelper) - { - _logger = logger; - _dataAccess = dataAccess; - _config = configuration; - _userLogic = userLogic; - _fileHelper = fileHelper; - _extraFieldDataAccess = extraFieldDataAccess; - _reminderRecordDataAccess = reminderRecordDataAccess; - _reminderHelper = reminderHelper; - _loginLogic = loginLogic; - _vehicleLogic = vehicleLogic; - _translationHelper = translationHelper; - _mailHelper = mailHelper; - } - private int GetUserID() - { - return int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)); - } - public IActionResult Index(string tab = "garage") - { - return View(model: tab); - } - [Route("/kiosk")] - public IActionResult Kiosk(string exclusions, KioskMode kioskMode = KioskMode.Vehicle) - { - try { - var viewModel = new KioskViewModel - { - Exclusions = string.IsNullOrWhiteSpace(exclusions) ? new List() : exclusions.Split(',').Select(x => int.Parse(x)).ToList(), - KioskMode = kioskMode - }; - return View(viewModel); - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return View(new KioskViewModel()); - } - } - [HttpPost] - public IActionResult KioskContent(KioskViewModel kioskParameters) - { - var vehiclesStored = _dataAccess.GetVehicles(); - if (!User.IsInRole(nameof(UserData.IsRootUser))) - { - vehiclesStored = _userLogic.FilterUserVehicles(vehiclesStored, GetUserID()); - } - vehiclesStored.RemoveAll(x => kioskParameters.Exclusions.Contains(x.Id)); - var userConfig = _config.GetUserConfig(User); - if (userConfig.HideSoldVehicles) - { - vehiclesStored.RemoveAll(x => !string.IsNullOrWhiteSpace(x.SoldDate)); - } - switch (kioskParameters.KioskMode) - { - case KioskMode.Vehicle: - { - var kioskResult = _vehicleLogic.GetVehicleInfo(vehiclesStored); - return PartialView("_Kiosk", kioskResult); - } - case KioskMode.Plan: - { - var kioskResult = _vehicleLogic.GetPlans(vehiclesStored, true); - return PartialView("_KioskPlan", kioskResult); - } - case KioskMode.Reminder: - { - var kioskResult = _vehicleLogic.GetReminders(vehiclesStored, false); - return PartialView("_KioskReminder", kioskResult); - } - } - var result = _vehicleLogic.GetVehicleInfo(vehiclesStored); - return PartialView("_Kiosk", result); - } - public IActionResult Garage() - { - var vehiclesStored = _dataAccess.GetVehicles(); - if (!User.IsInRole(nameof(UserData.IsRootUser))) - { - vehiclesStored = _userLogic.FilterUserVehicles(vehiclesStored, GetUserID()); - } - var vehicleViewModels = vehiclesStored.Select(x => - { - var vehicleVM = new VehicleViewModel - { - Id = x.Id, - ImageLocation = x.ImageLocation, - Year = x.Year, - Make = x.Make, - Model = x.Model, - LicensePlate = x.LicensePlate, - VinNumber = x.VinNumber, - SoldDate = x.SoldDate, - IsElectric = x.IsElectric, - IsDiesel = x.IsDiesel, - UseHours = x.UseHours, - OdometerOptional = x.OdometerOptional, - ExtraFields = x.ExtraFields, - Tags = x.Tags, - DashboardMetrics = x.DashboardMetrics, - VehicleIdentifier = x.VehicleIdentifier - }; - //dashboard metrics - if (x.DashboardMetrics.Any()) - { - var vehicleRecords = _vehicleLogic.GetVehicleRecords(x.Id); - var userConfig = _config.GetUserConfig(User); - var distanceUnit = x.UseHours ? "h" : userConfig.UseMPG ? "mi." : "km"; - if (vehicleVM.DashboardMetrics.Contains(DashboardMetric.Default)) - { - vehicleVM.LastReportedMileage = _vehicleLogic.GetMaxMileage(vehicleRecords); - vehicleVM.HasReminders = _vehicleLogic.GetVehicleHasUrgentOrPastDueReminders(x.Id, vehicleVM.LastReportedMileage); - } - if (vehicleVM.DashboardMetrics.Contains(DashboardMetric.CostPerMile)) - { - var vehicleTotalCost = _vehicleLogic.GetVehicleTotalCost(vehicleRecords); - var maxMileage = _vehicleLogic.GetMaxMileage(vehicleRecords); - var minMileage = _vehicleLogic.GetMinMileage(vehicleRecords); - var totalDistance = maxMileage - minMileage; - vehicleVM.CostPerMile = totalDistance != default ? vehicleTotalCost / totalDistance : 0.00M; - vehicleVM.DistanceUnit = distanceUnit; - } - if (vehicleVM.DashboardMetrics.Contains(DashboardMetric.TotalCost)) - { - vehicleVM.TotalCost = _vehicleLogic.GetVehicleTotalCost(vehicleRecords); - } - } - return vehicleVM; - }).ToList(); - return PartialView("_GarageDisplay", vehicleViewModels); - } - public IActionResult Calendar() - { - var vehiclesStored = _dataAccess.GetVehicles(); - if (!User.IsInRole(nameof(UserData.IsRootUser))) - { - vehiclesStored = _userLogic.FilterUserVehicles(vehiclesStored, GetUserID()); - } - var reminders = _vehicleLogic.GetReminders(vehiclesStored, true); - return PartialView("_Calendar", reminders); - } - public IActionResult ViewCalendarReminder(int reminderId) - { - var reminder = _reminderRecordDataAccess.GetReminderRecordById(reminderId); - var reminderUrgency = _reminderHelper.GetReminderRecordViewModels(new List { reminder }, 0, DateTime.Now).FirstOrDefault(); - return PartialView("_ReminderRecordCalendarModal", reminderUrgency); - } - public async Task Settings() - { - var userConfig = _config.GetUserConfig(User); - var languages = _fileHelper.GetLanguages(); - var viewModel = new SettingsViewModel - { - UserConfig = userConfig, - UILanguages = languages - }; - return PartialView("_Settings", viewModel); - } - public async Task Sponsors() - { - try - { - var httpClient = new HttpClient(); - var sponsorsData = await httpClient.GetFromJsonAsync(StaticHelper.SponsorsPath) ?? new Sponsors(); - return PartialView("_Sponsors", sponsorsData); - } - catch (Exception ex) - { - _logger.LogError($"Unable to retrieve sponsors: {ex.Message}"); - return PartialView("_Sponsors", new Sponsors()); - } - } - [HttpPost] - public IActionResult WriteToSettings(UserConfig userConfig) - { - //retrieve existing userConfig. - var existingConfig = _config.GetUserConfig(User); - //copy over stuff that persists - userConfig.UserColumnPreferences = existingConfig.UserColumnPreferences; - var result = _config.SaveUserConfig(User, userConfig); - return Json(result); - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - public IActionResult GetExtraFieldsModal(int importMode = 0) - { - var recordExtraFields = _extraFieldDataAccess.GetExtraFieldsById(importMode); - if (recordExtraFields.Id != importMode) - { - recordExtraFields.Id = importMode; - } - return PartialView("_ExtraFields", recordExtraFields); - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - public IActionResult UpdateExtraFields(RecordExtraField record) - { - try - { - var result = _extraFieldDataAccess.SaveExtraFields(record); - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - } - var recordExtraFields = _extraFieldDataAccess.GetExtraFieldsById(record.Id); - return PartialView("_ExtraFields", recordExtraFields); - } - [HttpPost] - public IActionResult GenerateTokenForUser() - { - try - { - //get current user email address. - var emailAddress = User.FindFirstValue(ClaimTypes.Email); - if (!string.IsNullOrWhiteSpace(emailAddress)) - { - var result = _loginLogic.GenerateTokenForEmailAddress(emailAddress, false); - return Json(result); - } - return Json(false); - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return Json(false); - } - } - [HttpPost] - public IActionResult UpdateUserAccount(LoginModel userAccount) - { - try - { - var userId = GetUserID(); - if (userId > 0) - { - var result = _loginLogic.UpdateUserDetails(userId, userAccount); - return Json(result); - } - return Json(OperationResponse.Failed()); - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return Json(OperationResponse.Failed()); - } - } - [HttpGet] - public IActionResult GetUserAccountInformationModal() - { - var emailAddress = User.FindFirstValue(ClaimTypes.Email); - var userName = User.Identity.Name; - return PartialView("_AccountModal", new UserData() { EmailAddress = emailAddress, UserName = userName }); - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - [HttpGet] - public IActionResult GetRootAccountInformationModal() - { - var userName = User.Identity.Name; - return PartialView("_RootAccountModal", new UserData() { UserName = userName }); - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - [HttpGet] - public IActionResult GetTranslatorEditor(string userLanguage) - { - var translationData = _translationHelper.GetTranslations(userLanguage); - return PartialView("_TranslationEditor", translationData); - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - [HttpPost] - public IActionResult SaveTranslation(string userLanguage, Dictionary translationData) - { - var result = _translationHelper.SaveTranslation(userLanguage, translationData); - return Json(result); - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - [HttpPost] - public IActionResult ExportTranslation(Dictionary translationData) - { - var result = _translationHelper.ExportTranslation(translationData); - return Json(result); - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - [HttpGet] - public async Task GetAvailableTranslations() - { - try - { - var httpClient = new HttpClient(); - var translations = await httpClient.GetFromJsonAsync(StaticHelper.TranslationDirectoryPath) ?? new Translations(); - return PartialView("_Translations", translations); - } - catch (Exception ex) - { - _logger.LogError($"Unable to retrieve translations: {ex.Message}"); - return PartialView("_Translations", new Translations()); - } - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - [HttpGet] - public async Task DownloadTranslation(string continent, string name) - { - try - { - var httpClient = new HttpClient(); - var translationData = await httpClient.GetFromJsonAsync>(StaticHelper.GetTranslationDownloadPath(continent, name)) ?? new Dictionary(); - if (translationData.Any()) - { - var result = _translationHelper.SaveTranslation(name, translationData); - if (!result.Success) - { - return Json(false); - } - } - else - { - _logger.LogError($"Unable to download translation: {name}"); - return Json(false); - } - return Json(true); - } - catch (Exception ex) - { - _logger.LogError($"Unable to download translation: {ex.Message}"); - return Json(false); - } - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - [HttpGet] - public async Task DownloadAllTranslations() - { - try - { - var httpClient = new HttpClient(); - var translations = await httpClient.GetFromJsonAsync(StaticHelper.TranslationDirectoryPath) ?? new Translations(); - int translationsDownloaded = 0; - foreach (string translation in translations.Asia) - { - try - { - var translationData = await httpClient.GetFromJsonAsync>(StaticHelper.GetTranslationDownloadPath("Asia", translation)) ?? new Dictionary(); - if (translationData.Any()) - { - var result = _translationHelper.SaveTranslation(translation, translationData); - if (result.Success) - { - translationsDownloaded++; - }; - } - } - catch (Exception ex) - { - _logger.LogError($"Error Downloading Translation {translation}: {ex.Message} "); - } - } - foreach (string translation in translations.Africa) - { - try - { - var translationData = await httpClient.GetFromJsonAsync>(StaticHelper.GetTranslationDownloadPath("Africa", translation)) ?? new Dictionary(); - if (translationData.Any()) - { - var result = _translationHelper.SaveTranslation(translation, translationData); - if (result.Success) - { - translationsDownloaded++; - }; - } - } - catch (Exception ex) - { - _logger.LogError($"Error Downloading Translation {translation}: {ex.Message} "); - } - } - foreach (string translation in translations.Europe) - { - try - { - var translationData = await httpClient.GetFromJsonAsync>(StaticHelper.GetTranslationDownloadPath("Europe", translation)) ?? new Dictionary(); - if (translationData.Any()) - { - var result = _translationHelper.SaveTranslation(translation, translationData); - if (result.Success) - { - translationsDownloaded++; - }; - } - } - catch (Exception ex) - { - _logger.LogError($"Error Downloading Translation {translation}: {ex.Message} "); - } - } - foreach (string translation in translations.NorthAmerica) - { - try - { - var translationData = await httpClient.GetFromJsonAsync>(StaticHelper.GetTranslationDownloadPath("NorthAmerica", translation)) ?? new Dictionary(); - if (translationData.Any()) - { - var result = _translationHelper.SaveTranslation(translation, translationData); - if (result.Success) - { - translationsDownloaded++; - }; - } - } - catch (Exception ex) - { - _logger.LogError($"Error Downloading Translation {translation}: {ex.Message} "); - } - } - foreach (string translation in translations.SouthAmerica) - { - try - { - var translationData = await httpClient.GetFromJsonAsync>(StaticHelper.GetTranslationDownloadPath("SouthAmerica", translation)) ?? new Dictionary(); - if (translationData.Any()) - { - var result = _translationHelper.SaveTranslation(translation, translationData); - if (result.Success) - { - translationsDownloaded++; - }; - } - } - catch (Exception ex) - { - _logger.LogError($"Error Downloading Translation {translation}: {ex.Message} "); - } - } - foreach (string translation in translations.Oceania) - { - try - { - var translationData = await httpClient.GetFromJsonAsync>(StaticHelper.GetTranslationDownloadPath("Oceania", translation)) ?? new Dictionary(); - if (translationData.Any()) - { - var result = _translationHelper.SaveTranslation(translation, translationData); - if (result.Success) - { - translationsDownloaded++; - }; - } - } - catch (Exception ex) - { - _logger.LogError($"Error Downloading Translation {translation}: {ex.Message} "); - } - } - if (translationsDownloaded > 0) - { - return Json(OperationResponse.Succeed($"{translationsDownloaded} Translations Downloaded")); - } else - { - return Json(OperationResponse.Failed("No Translations Downloaded")); - } - } - catch (Exception ex) - { - _logger.LogError($"Unable to retrieve translations: {ex.Message}"); - return Json(OperationResponse.Failed()); - } - } - public ActionResult GetVehicleSelector(int vehicleId) - { - var vehiclesStored = _dataAccess.GetVehicles(); - if (!User.IsInRole(nameof(UserData.IsRootUser))) - { - vehiclesStored = _userLogic.FilterUserVehicles(vehiclesStored, GetUserID()); - } - if (vehicleId != default) - { - vehiclesStored.RemoveAll(x => x.Id == vehicleId); - } - var userConfig = _config.GetUserConfig(User); - if (userConfig.HideSoldVehicles) - { - vehiclesStored.RemoveAll(x => !string.IsNullOrWhiteSpace(x.SoldDate)); - } - return PartialView("_VehicleSelector", vehiclesStored); - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - [HttpGet] - public IActionResult GetCustomWidgetEditor() - { - if (_config.GetCustomWidgetsEnabled()) - { - var customWidgetData = _fileHelper.GetWidgets(); - return PartialView("_WidgetEditor", customWidgetData); - } - return Json(string.Empty); - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - [HttpPost] - public IActionResult SaveCustomWidgets(string widgetsData) - { - if (_config.GetCustomWidgetsEnabled()) - { - var saveResult = _fileHelper.SaveWidgets(widgetsData); - return Json(saveResult); - } - return Json(false); - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - [HttpPost] - public IActionResult DeleteCustomWidgets() - { - if (_config.GetCustomWidgetsEnabled()) - { - var deleteResult = _fileHelper.DeleteWidgets(); - return Json(deleteResult); - } - return Json(false); - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - [Route("/setup")] - public IActionResult Setup() - { - var viewModel = new ServerSettingsViewModel - { - PostgresConnection = _config.GetServerPostgresConnection(), - AllowedFileExtensions = _config.GetAllowedFileUploadExtensions(), - CustomLogoURL = _config.GetLogoUrl(), - CustomSmallLogoURL = _config.GetSmallLogoUrl(), - MessageOfTheDay = _config.GetMOTD(), - WebHookURL = _config.GetWebHookUrl(), - CustomWidgetsEnabled = _config.GetCustomWidgetsEnabled(), - InvariantAPIEnabled = _config.GetInvariantApi(), - SMTPConfig = _config.GetMailConfig(), - Domain = _config.GetServerDomain(), - OIDCConfig = _config.GetOpenIDConfig(), - OpenRegistration = _config.GetServerOpenRegistration(), - DisableRegistration = _config.GetServerDisabledRegistration(), - ReminderUrgencyConfig = _config.GetReminderUrgencyConfig(), - EnableAuth = _config.GetServerAuthEnabled(), - DefaultReminderEmail = _config.GetDefaultReminderEmail(), - EnableRootUserOIDC = _config.GetEnableRootUserOIDC() - }; - return View(viewModel); - } - [HttpPost] - [Authorize(Roles = nameof(UserData.IsRootUser))] - public IActionResult WriteServerConfiguration(ServerConfig serverConfig) - { - var result = _config.SaveServerConfig(serverConfig); - return Json(result); - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - public IActionResult SendTestEmail(string emailAddress, MailConfig mailConfig) - { - var result = _mailHelper.SendTestEmail(emailAddress, mailConfig); - return Json(result); - } - [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] - public IActionResult Error() - { - return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); - } - } -} diff --git a/Controllers/LoginController.cs b/Controllers/LoginController.cs deleted file mode 100644 index 62c92c2..0000000 --- a/Controllers/LoginController.cs +++ /dev/null @@ -1,464 +0,0 @@ -using MotoVaultPro.Helper; -using MotoVaultPro.Logic; -using MotoVaultPro.Models; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.DataProtection; -using Microsoft.AspNetCore.Mvc; -using System.IdentityModel.Tokens.Jwt; -using System.Text.Json; - -namespace MotoVaultPro.Controllers -{ - public class LoginController : Controller - { - private IDataProtector _dataProtector; - private ILoginLogic _loginLogic; - private IConfigHelper _config; - private readonly ILogger _logger; - public LoginController( - ILogger logger, - IDataProtectionProvider securityProvider, - ILoginLogic loginLogic, - IConfigHelper config - ) - { - _dataProtector = securityProvider.CreateProtector("login"); - _logger = logger; - _loginLogic = loginLogic; - _config = config; - } - public IActionResult Index(string redirectURL = "") - { - var remoteAuthConfig = _config.GetOpenIDConfig(); - if (remoteAuthConfig.DisableRegularLogin && !string.IsNullOrWhiteSpace(remoteAuthConfig.LogOutURL)) - { - var generatedState = Guid.NewGuid().ToString().Substring(0, 8); - remoteAuthConfig.State = generatedState; - var pkceKeyPair = _loginLogic.GetPKCEChallengeCode(); - remoteAuthConfig.CodeChallenge = pkceKeyPair.Value; - if (remoteAuthConfig.ValidateState) - { - Response.Cookies.Append("OIDC_STATE", remoteAuthConfig.State, new CookieOptions { Expires = new DateTimeOffset(DateTime.Now.AddMinutes(5)) }); - } - if (remoteAuthConfig.UsePKCE) - { - Response.Cookies.Append("OIDC_VERIFIER", pkceKeyPair.Key, new CookieOptions { Expires = new DateTimeOffset(DateTime.Now.AddMinutes(5)) }); - } - var remoteAuthURL = remoteAuthConfig.RemoteAuthURL; - return Redirect(remoteAuthURL); - } - return View(model: redirectURL); - } - public IActionResult Registration(string token = "", string email = "") - { - if (_config.GetServerDisabledRegistration()) - { - return RedirectToAction("Index"); - } - var viewModel = new LoginModel - { - EmailAddress = string.IsNullOrWhiteSpace(email) ? string.Empty : email, - Token = string.IsNullOrWhiteSpace(token) ? string.Empty : token - }; - return View(viewModel); - } - public IActionResult ForgotPassword() - { - return View(); - } - public IActionResult ResetPassword(string token = "", string email = "") - { - var viewModel = new LoginModel - { - EmailAddress = string.IsNullOrWhiteSpace(email) ? string.Empty : email, - Token = string.IsNullOrWhiteSpace(token) ? string.Empty : token - }; - return View(viewModel); - } - public IActionResult GetRemoteLoginLink() - { - var remoteAuthConfig = _config.GetOpenIDConfig(); - var generatedState = Guid.NewGuid().ToString().Substring(0, 8); - remoteAuthConfig.State = generatedState; - var pkceKeyPair = _loginLogic.GetPKCEChallengeCode(); - remoteAuthConfig.CodeChallenge = pkceKeyPair.Value; - if (remoteAuthConfig.ValidateState) - { - Response.Cookies.Append("OIDC_STATE", remoteAuthConfig.State, new CookieOptions { Expires = new DateTimeOffset(DateTime.Now.AddMinutes(5)) }); - } - if (remoteAuthConfig.UsePKCE) - { - Response.Cookies.Append("OIDC_VERIFIER", pkceKeyPair.Key, new CookieOptions { Expires = new DateTimeOffset(DateTime.Now.AddMinutes(5)) }); - } - var remoteAuthURL = remoteAuthConfig.RemoteAuthURL; - return Json(remoteAuthURL); - } - public async Task RemoteAuth(string code, string state = "") - { - try - { - if (!string.IsNullOrWhiteSpace(code)) - { - //received code from OIDC provider - //create http client to retrieve user token from OIDC - var httpClient = new HttpClient(); - var openIdConfig = _config.GetOpenIDConfig(); - //check if validate state is enabled. - if (openIdConfig.ValidateState) - { - var storedStateValue = Request.Cookies["OIDC_STATE"]; - if (!string.IsNullOrWhiteSpace(storedStateValue)) - { - Response.Cookies.Delete("OIDC_STATE"); - } - if (string.IsNullOrWhiteSpace(storedStateValue) || string.IsNullOrWhiteSpace(state) || storedStateValue != state) - { - _logger.LogInformation("Failed OIDC State Validation - Try disabling state validation if you are confident this is not a malicious attempt."); - return new RedirectResult("/Login"); - } - } - var httpParams = new List> - { - new KeyValuePair("code", code), - new KeyValuePair("grant_type", "authorization_code"), - new KeyValuePair("client_id", openIdConfig.ClientId), - new KeyValuePair("client_secret", openIdConfig.ClientSecret), - new KeyValuePair("redirect_uri", openIdConfig.RedirectURL) - }; - if (openIdConfig.UsePKCE) - { - //retrieve stored challenge verifier - var storedVerifier = Request.Cookies["OIDC_VERIFIER"]; - if (!string.IsNullOrWhiteSpace(storedVerifier)) - { - httpParams.Add(new KeyValuePair("code_verifier", storedVerifier)); - Response.Cookies.Delete("OIDC_VERIFIER"); - } - } - var httpRequest = new HttpRequestMessage(HttpMethod.Post, openIdConfig.TokenURL) - { - Content = new FormUrlEncodedContent(httpParams) - }; - var tokenResult = await httpClient.SendAsync(httpRequest).Result.Content.ReadAsStringAsync(); - var decodedToken = JsonSerializer.Deserialize(tokenResult); - var userJwt = decodedToken?.id_token ?? string.Empty; - var userAccessToken = decodedToken?.access_token ?? string.Empty; - if (!string.IsNullOrWhiteSpace(userJwt)) - { - //validate JWT token - var tokenParser = new JwtSecurityTokenHandler(); - var parsedToken = tokenParser.ReadJwtToken(userJwt); - var userEmailAddress = string.Empty; - if (parsedToken.Claims.Any(x => x.Type == "email")) - { - userEmailAddress = parsedToken.Claims.First(x => x.Type == "email").Value; - } - else if (!string.IsNullOrWhiteSpace(openIdConfig.UserInfoURL) && !string.IsNullOrWhiteSpace(userAccessToken)) - { - //retrieve claims from userinfo endpoint if no email claims are returned within id_token - var userInfoHttpRequest = new HttpRequestMessage(HttpMethod.Get, openIdConfig.UserInfoURL); - userInfoHttpRequest.Headers.Add("Authorization", $"Bearer {userAccessToken}"); - var userInfoResult = await httpClient.SendAsync(userInfoHttpRequest).Result.Content.ReadAsStringAsync(); - var userInfo = JsonSerializer.Deserialize(userInfoResult); - if (!string.IsNullOrWhiteSpace(userInfo?.email ?? string.Empty)) - { - userEmailAddress = userInfo?.email ?? string.Empty; - } else - { - _logger.LogError($"OpenID Provider did not provide an email claim via UserInfo endpoint"); - } - } - else - { - var returnedClaims = parsedToken.Claims.Select(x => x.Type); - _logger.LogError($"OpenID Provider did not provide an email claim, claims returned: {string.Join(",", returnedClaims)}"); - } - if (!string.IsNullOrWhiteSpace(userEmailAddress)) - { - var userData = _loginLogic.ValidateOpenIDUser(new LoginModel() { EmailAddress = userEmailAddress }); - if (userData.Id != default) - { - AuthCookie authCookie = new AuthCookie - { - UserData = userData, - ExpiresOn = DateTime.Now.AddDays(1) - }; - var serializedCookie = JsonSerializer.Serialize(authCookie); - var encryptedCookie = _dataProtector.Protect(serializedCookie); - Response.Cookies.Append("ACCESS_TOKEN", encryptedCookie, new CookieOptions { Expires = new DateTimeOffset(authCookie.ExpiresOn) }); - return new RedirectResult("/Home"); - } else - { - _logger.LogInformation($"User {userEmailAddress} tried to login via OpenID but is not a registered user in MotoVaultPro."); - return View("OpenIDRegistration", model: userEmailAddress); - } - } else - { - _logger.LogInformation("OpenID Provider did not provide a valid email address for the user"); - } - } else - { - _logger.LogInformation("OpenID Provider did not provide a valid id_token"); - if (!string.IsNullOrWhiteSpace(tokenResult)) - { - //if something was returned from the IdP but it's invalid, we want to log it as an error. - _logger.LogError($"Expected id_token, received {tokenResult}"); - } - } - } else - { - _logger.LogInformation("OpenID Provider did not provide a code."); - } - } catch (Exception ex) - { - _logger.LogError(ex.Message); - return new RedirectResult("/Login"); - } - return new RedirectResult("/Login"); - } - public async Task RemoteAuthDebug(string code, string state = "") - { - List results = new List(); - try - { - if (!string.IsNullOrWhiteSpace(code)) - { - results.Add(OperationResponse.Succeed($"Received code from OpenID Provider: {code}")); - //received code from OIDC provider - //create http client to retrieve user token from OIDC - var httpClient = new HttpClient(); - var openIdConfig = _config.GetOpenIDConfig(); - //check if validate state is enabled. - if (openIdConfig.ValidateState) - { - var storedStateValue = Request.Cookies["OIDC_STATE"]; - if (!string.IsNullOrWhiteSpace(storedStateValue)) - { - Response.Cookies.Delete("OIDC_STATE"); - } - if (string.IsNullOrWhiteSpace(storedStateValue) || string.IsNullOrWhiteSpace(state) || storedStateValue != state) - { - results.Add(OperationResponse.Failed($"Failed State Validation - Expected: {storedStateValue} Received: {state}")); - } else - { - results.Add(OperationResponse.Succeed($"Passed State Validation - Expected: {storedStateValue} Received: {state}")); - } - } - var httpParams = new List> - { - new KeyValuePair("code", code), - new KeyValuePair("grant_type", "authorization_code"), - new KeyValuePair("client_id", openIdConfig.ClientId), - new KeyValuePair("client_secret", openIdConfig.ClientSecret), - new KeyValuePair("redirect_uri", openIdConfig.RedirectURL) - }; - if (openIdConfig.UsePKCE) - { - //retrieve stored challenge verifier - var storedVerifier = Request.Cookies["OIDC_VERIFIER"]; - if (!string.IsNullOrWhiteSpace(storedVerifier)) - { - httpParams.Add(new KeyValuePair("code_verifier", storedVerifier)); - Response.Cookies.Delete("OIDC_VERIFIER"); - } - } - var httpRequest = new HttpRequestMessage(HttpMethod.Post, openIdConfig.TokenURL) - { - Content = new FormUrlEncodedContent(httpParams) - }; - var tokenResult = await httpClient.SendAsync(httpRequest).Result.Content.ReadAsStringAsync(); - var decodedToken = JsonSerializer.Deserialize(tokenResult); - var userJwt = decodedToken?.id_token ?? string.Empty; - var userAccessToken = decodedToken?.access_token ?? string.Empty; - if (!string.IsNullOrWhiteSpace(userJwt)) - { - results.Add(OperationResponse.Succeed($"Passed JWT Parsing - id_token: {userJwt}")); - //validate JWT token - var tokenParser = new JwtSecurityTokenHandler(); - var parsedToken = tokenParser.ReadJwtToken(userJwt); - var userEmailAddress = string.Empty; - if (parsedToken.Claims.Any(x => x.Type == "email")) - { - userEmailAddress = parsedToken.Claims.First(x => x.Type == "email").Value; - results.Add(OperationResponse.Succeed($"Passed Claim Validation - email")); - } - else if (!string.IsNullOrWhiteSpace(openIdConfig.UserInfoURL) && !string.IsNullOrWhiteSpace(userAccessToken)) - { - //retrieve claims from userinfo endpoint if no email claims are returned within id_token - var userInfoHttpRequest = new HttpRequestMessage(HttpMethod.Get, openIdConfig.UserInfoURL); - userInfoHttpRequest.Headers.Add("Authorization", $"Bearer {userAccessToken}"); - var userInfoResult = await httpClient.SendAsync(userInfoHttpRequest).Result.Content.ReadAsStringAsync(); - var userInfo = JsonSerializer.Deserialize(userInfoResult); - if (!string.IsNullOrWhiteSpace(userInfo?.email ?? string.Empty)) - { - userEmailAddress = userInfo?.email ?? string.Empty; - results.Add(OperationResponse.Succeed($"Passed Claim Validation - Retrieved email via UserInfo endpoint")); - } else - { - results.Add(OperationResponse.Failed($"Failed Claim Validation - Unable to retrieve email via UserInfo endpoint: {openIdConfig.UserInfoURL} using access_token: {userAccessToken} - Received {userInfoResult}")); - } - } - else - { - var returnedClaims = parsedToken.Claims.Select(x => x.Type); - results.Add(OperationResponse.Failed($"Failed Claim Validation - Expected: email Received: {string.Join(",", returnedClaims)}")); - } - if (!string.IsNullOrWhiteSpace(userEmailAddress)) - { - var userData = _loginLogic.ValidateOpenIDUser(new LoginModel() { EmailAddress = userEmailAddress }); - if (userData.Id != default) - { - results.Add(OperationResponse.Succeed($"Passed User Validation - Email: {userEmailAddress} Username: {userData.UserName}")); - } - else - { - results.Add(OperationResponse.Succeed($"Passed Email Validation - Email: {userEmailAddress} User not registered")); - } - } - else - { - results.Add(OperationResponse.Failed($"Failed Email Validation - No email received from OpenID Provider")); - } - } - else - { - results.Add(OperationResponse.Failed($"Failed to parse JWT - Expected: id_token Received: {tokenResult}")); - } - } - else - { - results.Add(OperationResponse.Failed("No code received from OpenID Provider")); - } - } - catch (Exception ex) - { - results.Add(OperationResponse.Failed($"Exception: {ex.Message}")); - } - return View(results); - } - [HttpPost] - public IActionResult Login(LoginModel credentials) - { - if (string.IsNullOrWhiteSpace(credentials.UserName) || - string.IsNullOrWhiteSpace(credentials.Password)) - { - return Json(false); - } - //compare it against hashed credentials - try - { - var userData = _loginLogic.ValidateUserCredentials(credentials); - if (userData.Id != default) - { - AuthCookie authCookie = new AuthCookie - { - UserData = userData, - ExpiresOn = DateTime.Now.AddDays(credentials.IsPersistent ? 30 : 1) - }; - var serializedCookie = JsonSerializer.Serialize(authCookie); - var encryptedCookie = _dataProtector.Protect(serializedCookie); - Response.Cookies.Append("ACCESS_TOKEN", encryptedCookie, new CookieOptions { Expires = new DateTimeOffset(authCookie.ExpiresOn) }); - return Json(true); - } - } - catch (Exception ex) - { - _logger.LogError(ex, "Error on saving config file."); - } - return Json(false); - } - - [HttpPost] - public IActionResult Register(LoginModel credentials) - { - var result = _loginLogic.RegisterNewUser(credentials); - return Json(result); - } - [HttpPost] - public IActionResult RegisterOpenIdUser(LoginModel credentials) - { - var result = _loginLogic.RegisterOpenIdUser(credentials); - if (result.Success) - { - var userData = _loginLogic.ValidateOpenIDUser(new LoginModel() { EmailAddress = credentials.EmailAddress }); - if (userData.Id != default) - { - AuthCookie authCookie = new AuthCookie - { - UserData = userData, - ExpiresOn = DateTime.Now.AddDays(1) - }; - var serializedCookie = JsonSerializer.Serialize(authCookie); - var encryptedCookie = _dataProtector.Protect(serializedCookie); - Response.Cookies.Append("ACCESS_TOKEN", encryptedCookie, new CookieOptions { Expires = new DateTimeOffset(authCookie.ExpiresOn) }); - } - } - return Json(result); - } - [HttpPost] - public IActionResult SendRegistrationToken(LoginModel credentials) - { - var result = _loginLogic.SendRegistrationToken(credentials); - return Json(result); - } - [HttpPost] - public IActionResult RequestResetPassword(LoginModel credentials) - { - var result = _loginLogic.RequestResetPassword(credentials); - return Json(result); - } - [HttpPost] - public IActionResult PerformPasswordReset(LoginModel credentials) - { - var result = _loginLogic.ResetPasswordByUser(credentials); - return Json(result); - } - [Authorize(Roles = nameof(UserData.IsRootUser))] //User must already be logged in as root user to do this. - [HttpPost] - public IActionResult CreateLoginCreds(LoginModel credentials) - { - try - { - var result = _loginLogic.CreateRootUserCredentials(credentials); - return Json(result); - } - catch (Exception ex) - { - _logger.LogError(ex, "Error on saving config file."); - } - return Json(false); - } - [Authorize(Roles = nameof(UserData.IsRootUser))] - [HttpPost] - public IActionResult DestroyLoginCreds() - { - try - { - var result = _loginLogic.DeleteRootUserCredentials(); - //destroy any login cookies. - if (result) - { - Response.Cookies.Delete("ACCESS_TOKEN"); - } - return Json(result); - } - catch (Exception ex) - { - _logger.LogError(ex, "Error on saving config file."); - } - return Json(false); - } - [Authorize] - [HttpPost] - public IActionResult LogOut() - { - Response.Cookies.Delete("ACCESS_TOKEN"); - var remoteAuthConfig = _config.GetOpenIDConfig(); - if (remoteAuthConfig.DisableRegularLogin && !string.IsNullOrWhiteSpace(remoteAuthConfig.LogOutURL)) - { - return Json(remoteAuthConfig.LogOutURL); - } - return Json("/Login"); - } - } -} diff --git a/Controllers/MigrationController.cs b/Controllers/MigrationController.cs deleted file mode 100644 index 5a88d86..0000000 --- a/Controllers/MigrationController.cs +++ /dev/null @@ -1,720 +0,0 @@ -using MotoVaultPro.Helper; -using MotoVaultPro.Models; -using LiteDB; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Npgsql; -using System.IO.Compression; -using JsonSerializer=System.Text.Json.JsonSerializer; - -namespace MotoVaultPro.Controllers -{ - [Authorize(Roles = nameof(UserData.IsRootUser))] - public class MigrationController : Controller - { - private IConfigHelper _configHelper; - private IFileHelper _fileHelper; - private readonly ILogger _logger; - public MigrationController(IConfigHelper configHelper, IFileHelper fileHelper, ILogger logger) - { - _configHelper = configHelper; - _fileHelper = fileHelper; - _logger = logger; - } - public IActionResult Index() - { - if (!string.IsNullOrWhiteSpace(_configHelper.GetServerPostgresConnection())) - { - return View(); - } else - { - return new RedirectResult("/Error/Unauthorized"); - } - } - private void InitializeTables(NpgsqlDataSource conn) - { - var cmds = new List - { - "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.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)", - "CREATE TABLE IF NOT EXISTS app.notes (id INT GENERATED BY DEFAULT AS IDENTITY primary key, vehicleId INT not null, data jsonb not null)", - "CREATE TABLE IF NOT EXISTS app.odometerrecords (id INT GENERATED BY DEFAULT AS IDENTITY primary key, vehicleId INT not null, data jsonb not null)", - "CREATE TABLE IF NOT EXISTS app.reminderrecords (id INT GENERATED BY DEFAULT AS IDENTITY primary key, vehicleId INT not null, data jsonb not null)", - "CREATE TABLE IF NOT EXISTS app.planrecords (id INT GENERATED BY DEFAULT AS IDENTITY primary key, vehicleId INT not null, data jsonb not null)", - "CREATE TABLE IF NOT EXISTS app.planrecordtemplates (id INT GENERATED BY DEFAULT AS IDENTITY primary key, vehicleId INT not null, data jsonb not null)", - "CREATE TABLE IF NOT EXISTS app.supplyrecords (id INT GENERATED BY DEFAULT AS IDENTITY primary key, vehicleId INT not null, data jsonb not null)", - "CREATE TABLE IF NOT EXISTS app.taxrecords (id INT GENERATED BY DEFAULT AS IDENTITY primary key, vehicleId INT not null, data jsonb not null)", - "CREATE TABLE IF NOT EXISTS app.userrecords (id INT GENERATED BY DEFAULT AS IDENTITY primary key, username TEXT not null, emailaddress TEXT not null, password TEXT not null, isadmin BOOLEAN)", - "CREATE TABLE IF NOT EXISTS app.tokenrecords (id INT GENERATED BY DEFAULT AS IDENTITY primary key, body TEXT not null, emailaddress TEXT not null)", - "CREATE TABLE IF NOT EXISTS app.userconfigrecords (id INT primary key, data jsonb not null)", - "CREATE TABLE IF NOT EXISTS app.useraccessrecords (userId INT, vehicleId INT, PRIMARY KEY(userId, vehicleId))", - "CREATE TABLE IF NOT EXISTS app.extrafields (id INT primary key, data jsonb not null)" - }; - foreach(string cmd in cmds) - { - using (var ctext = conn.CreateCommand(cmd)) - { - ctext.ExecuteNonQuery(); - } - } - } - public IActionResult Export() - { - if (string.IsNullOrWhiteSpace(_configHelper.GetServerPostgresConnection())) - { - return Json(OperationResponse.Failed("Postgres connection not set up")); - } - var tempFolder = $"temp/{Guid.NewGuid()}"; - var tempPath = $"{tempFolder}/cartracker.db"; - var fullFolderPath = _fileHelper.GetFullFilePath(tempFolder, false); - Directory.CreateDirectory(fullFolderPath); - var fullFileName = _fileHelper.GetFullFilePath(tempPath, false); - try - { - var pgDataSource = NpgsqlDataSource.Create(_configHelper.GetServerPostgresConnection()); - InitializeTables(pgDataSource); - //pull records - var vehicles = new List(); - var upgraderecords = new List(); - var servicerecords = new List(); - - var gasrecords = new List(); - var noterecords = new List(); - var odometerrecords = new List(); - var reminderrecords = new List(); - - var planrecords = new List(); - var planrecordtemplates = new List(); - var supplyrecords = new List(); - var taxrecords = new List(); - - var userrecords = new List(); - var tokenrecords = new List(); - var userconfigrecords = new List(); - var useraccessrecords = new List(); - - var extrafields = new List(); - #region "Part1" - string cmd = $"SELECT data FROM app.vehicles"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - Vehicle vehicle = JsonSerializer.Deserialize(reader["data"] as string); - vehicles.Add(vehicle); - } - } - foreach (var vehicle in vehicles) - { - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("vehicles"); - table.Upsert(vehicle); - }; - } - cmd = $"SELECT data FROM app.upgraderecords"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - upgraderecords.Add(JsonSerializer.Deserialize(reader["data"] as string)); - } - } - foreach (var record in upgraderecords) - { - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("upgraderecords"); - table.Upsert(record); - }; - } - cmd = $"SELECT data FROM app.servicerecords"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - servicerecords.Add(JsonSerializer.Deserialize(reader["data"] as string)); - } - } - foreach (var record in servicerecords) - { - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("servicerecords"); - table.Upsert(record); - }; - } - #endregion - #region "Part2" - cmd = $"SELECT data FROM app.gasrecords"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - gasrecords.Add(JsonSerializer.Deserialize(reader["data"] as string)); - } - } - foreach (var record in gasrecords) - { - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("gasrecords"); - table.Upsert(record); - }; - } - cmd = $"SELECT data FROM app.notes"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - noterecords.Add(JsonSerializer.Deserialize(reader["data"] as string)); - } - } - foreach (var record in noterecords) - { - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("notes"); - table.Upsert(record); - }; - } - cmd = $"SELECT data FROM app.odometerrecords"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - odometerrecords.Add(JsonSerializer.Deserialize(reader["data"] as string)); - } - } - foreach (var record in odometerrecords) - { - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("odometerrecords"); - table.Upsert(record); - }; - } - cmd = $"SELECT data FROM app.reminderrecords"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - reminderrecords.Add(JsonSerializer.Deserialize(reader["data"] as string)); - } - } - foreach (var record in reminderrecords) - { - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("reminderrecords"); - table.Upsert(record); - }; - } - #endregion - #region "Part3" - cmd = $"SELECT data FROM app.planrecords"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - planrecords.Add(JsonSerializer.Deserialize(reader["data"] as string)); - } - } - foreach (var record in planrecords) - { - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("planrecords"); - table.Upsert(record); - }; - } - cmd = $"SELECT data FROM app.planrecordtemplates"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - planrecordtemplates.Add(JsonSerializer.Deserialize(reader["data"] as string)); - } - } - foreach (var record in planrecordtemplates) - { - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("planrecordtemplates"); - table.Upsert(record); - }; - } - cmd = $"SELECT data FROM app.supplyrecords"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - supplyrecords.Add(JsonSerializer.Deserialize(reader["data"] as string)); - } - } - foreach (var record in supplyrecords) - { - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("supplyrecords"); - table.Upsert(record); - }; - } - cmd = $"SELECT data FROM app.taxrecords"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - taxrecords.Add(JsonSerializer.Deserialize(reader["data"] as string)); - } - } - foreach (var record in taxrecords) - { - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("taxrecords"); - table.Upsert(record); - }; - } - #endregion - #region "Part4" - cmd = $"SELECT id, username, emailaddress, password, isadmin FROM app.userrecords"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - UserData result = new UserData(); - result.Id = int.Parse(reader["id"].ToString()); - result.UserName = reader["username"].ToString(); - result.EmailAddress = reader["emailaddress"].ToString(); - result.Password = reader["password"].ToString(); - result.IsAdmin = bool.Parse(reader["isadmin"].ToString()); - userrecords.Add(result); - } - } - foreach (var record in userrecords) - { - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("userrecords"); - table.Upsert(record); - }; - } - cmd = $"SELECT id, emailaddress, body FROM app.tokenrecords"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - Token result = new Token(); - result.Id = int.Parse(reader["id"].ToString()); - result.EmailAddress = reader["emailaddress"].ToString(); - result.Body = reader["body"].ToString(); - tokenrecords.Add(result); - } - } - foreach (var record in tokenrecords) - { - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("tokenrecords"); - table.Upsert(record); - }; - } - cmd = $"SELECT data FROM app.userconfigrecords"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - userconfigrecords.Add(JsonSerializer.Deserialize(reader["data"] as string)); - } - } - foreach (var record in userconfigrecords) - { - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("userconfigrecords"); - table.Upsert(record); - }; - } - cmd = $"SELECT userId, vehicleId FROM app.useraccessrecords"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - UserAccess result = new UserAccess() - { - Id = new UserVehicle - { - UserId = int.Parse(reader["userId"].ToString()), - VehicleId = int.Parse(reader["vehicleId"].ToString()) - } - }; - useraccessrecords.Add(result); - } - } - foreach (var record in useraccessrecords) - { - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("useraccessrecords"); - table.Upsert(record); - }; - } - #endregion - #region "Part5" - cmd = $"SELECT data FROM app.extrafields"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - extrafields.Add(JsonSerializer.Deserialize(reader["data"] as string)); - } - } - foreach (var record in extrafields) - { - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("extrafields"); - table.Upsert(record); - }; - } - #endregion - var destFilePath = $"{fullFolderPath}.zip"; - ZipFile.CreateFromDirectory(fullFolderPath, destFilePath); - return Json(OperationResponse.Succeed($"/{tempFolder}.zip")); - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return Json(OperationResponse.Failed()); - } - } - public IActionResult Import(string fileName) - { - if (string.IsNullOrWhiteSpace(_configHelper.GetServerPostgresConnection())) - { - return Json(OperationResponse.Failed("Postgres connection not set up")); - } - var fullFileName = _fileHelper.GetFullFilePath(fileName); - if (string.IsNullOrWhiteSpace(fullFileName)) - { - return Json(OperationResponse.Failed()); - } - try - { - var pgDataSource = NpgsqlDataSource.Create(_configHelper.GetServerPostgresConnection()); - InitializeTables(pgDataSource); - //pull records - var vehicles = new List(); - var upgraderecords = new List(); - var servicerecords = new List(); - - var gasrecords = new List(); - var noterecords = new List(); - var odometerrecords = new List(); - var reminderrecords = new List(); - - var planrecords = new List(); - var planrecordtemplates = new List(); - var supplyrecords = new List(); - var taxrecords = new List(); - - var userrecords = new List(); - var tokenrecords = new List(); - var userconfigrecords = new List(); - var useraccessrecords = new List(); - - var extrafields = new List(); - #region "Part1" - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("vehicles"); - vehicles = table.FindAll().ToList(); - }; - foreach(var vehicle in vehicles) - { - string cmd = $"INSERT INTO app.vehicles (id, data) VALUES(@id, CAST(@data AS jsonb)); SELECT setval('app.vehicles_id_seq', (SELECT MAX(id) from app.vehicles));"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", vehicle.Id); - ctext.Parameters.AddWithValue("data", JsonSerializer.Serialize(vehicle)); - ctext.ExecuteNonQuery(); - } - } - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("servicerecords"); - servicerecords = table.FindAll().ToList(); - }; - foreach (var record in servicerecords) - { - string cmd = $"INSERT INTO app.servicerecords (id, vehicleId, data) VALUES(@id, @vehicleId, CAST(@data AS jsonb)); SELECT setval('app.servicerecords_id_seq', (SELECT MAX(id) from app.servicerecords));"; - 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("upgraderecords"); - upgraderecords = table.FindAll().ToList(); - }; - foreach (var record in upgraderecords) - { - string cmd = $"INSERT INTO app.upgraderecords (id, vehicleId, data) VALUES(@id, @vehicleId, CAST(@data AS jsonb)); SELECT setval('app.upgraderecords_id_seq', (SELECT MAX(id) from app.upgraderecords));"; - 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(); - } - } - #endregion - #region "Part2" - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("gasrecords"); - gasrecords = table.FindAll().ToList(); - }; - foreach (var record in gasrecords) - { - string cmd = $"INSERT INTO app.gasrecords (id, vehicleId, data) VALUES(@id, @vehicleId, CAST(@data AS jsonb)); SELECT setval('app.gasrecords_id_seq', (SELECT MAX(id) from app.gasrecords));"; - 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("notes"); - noterecords = table.FindAll().ToList(); - }; - foreach (var record in noterecords) - { - string cmd = $"INSERT INTO app.notes (id, vehicleId, data) VALUES(@id, @vehicleId, CAST(@data AS jsonb)); SELECT setval('app.notes_id_seq', (SELECT MAX(id) from app.notes));"; - 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("odometerrecords"); - odometerrecords = table.FindAll().ToList(); - }; - foreach (var record in odometerrecords) - { - string cmd = $"INSERT INTO app.odometerrecords (id, vehicleId, data) VALUES(@id, @vehicleId, CAST(@data AS jsonb)); SELECT setval('app.odometerrecords_id_seq', (SELECT MAX(id) from app.odometerrecords));"; - 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("reminderrecords"); - reminderrecords = table.FindAll().ToList(); - }; - foreach (var record in reminderrecords) - { - string cmd = $"INSERT INTO app.reminderrecords (id, vehicleId, data) VALUES(@id, @vehicleId, CAST(@data AS jsonb)); SELECT setval('app.reminderrecords_id_seq', (SELECT MAX(id) from app.reminderrecords));"; - 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(); - } - } - #endregion - #region "Part3" - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("planrecords"); - planrecords = table.FindAll().ToList(); - }; - foreach (var record in planrecords) - { - string cmd = $"INSERT INTO app.planrecords (id, vehicleId, data) VALUES(@id, @vehicleId, CAST(@data AS jsonb)); SELECT setval('app.planrecords_id_seq', (SELECT MAX(id) from app.planrecords));"; - 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("planrecordtemplates"); - planrecordtemplates = table.FindAll().ToList(); - }; - foreach (var record in planrecordtemplates) - { - string cmd = $"INSERT INTO app.planrecordtemplates (id, vehicleId, data) VALUES(@id, @vehicleId, CAST(@data AS jsonb)); SELECT setval('app.planrecordtemplates_id_seq', (SELECT MAX(id) from app.planrecordtemplates));"; - 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("supplyrecords"); - supplyrecords = table.FindAll().ToList(); - }; - foreach (var record in supplyrecords) - { - string cmd = $"INSERT INTO app.supplyrecords (id, vehicleId, data) VALUES(@id, @vehicleId, CAST(@data AS jsonb)); SELECT setval('app.supplyrecords_id_seq', (SELECT MAX(id) from app.supplyrecords));"; - 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("taxrecords"); - taxrecords = table.FindAll().ToList(); - }; - foreach (var record in taxrecords) - { - string cmd = $"INSERT INTO app.taxrecords (id, vehicleId, data) VALUES(@id, @vehicleId, CAST(@data AS jsonb)); SELECT setval('app.taxrecords_id_seq', (SELECT MAX(id) from app.taxrecords));"; - 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(); - } - } - #endregion - #region "Part4" - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("userrecords"); - userrecords = table.FindAll().ToList(); - }; - foreach (var record in userrecords) - { - string cmd = $"INSERT INTO app.userrecords (id, username, emailaddress, password, isadmin) VALUES(@id, @username, @emailaddress, @password, @isadmin); SELECT setval('app.userrecords_id_seq', (SELECT MAX(id) from app.userrecords));"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", record.Id); - ctext.Parameters.AddWithValue("username", record.UserName); - ctext.Parameters.AddWithValue("emailaddress", record.EmailAddress); - ctext.Parameters.AddWithValue("password", record.Password); - ctext.Parameters.AddWithValue("isadmin", record.IsAdmin); - ctext.ExecuteNonQuery(); - } - } - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("tokenrecords"); - tokenrecords = table.FindAll().ToList(); - }; - foreach (var record in tokenrecords) - { - string cmd = $"INSERT INTO app.tokenrecords (id, emailaddress, body) VALUES(@id, @emailaddress, @body); SELECT setval('app.tokenrecords_id_seq', (SELECT MAX(id) from app.tokenrecords));"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", record.Id); - ctext.Parameters.AddWithValue("emailaddress", record.EmailAddress); - ctext.Parameters.AddWithValue("body", record.Body); - ctext.ExecuteNonQuery(); - } - } - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("userconfigrecords"); - userconfigrecords = table.FindAll().ToList(); - }; - foreach (var record in userconfigrecords) - { - string cmd = $"INSERT INTO app.userconfigrecords (id, data) VALUES(@id, CAST(@data AS jsonb))"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", record.Id); - ctext.Parameters.AddWithValue("data", JsonSerializer.Serialize(record)); - ctext.ExecuteNonQuery(); - } - } - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("useraccessrecords"); - useraccessrecords = table.FindAll().ToList(); - }; - foreach (var record in useraccessrecords) - { - string cmd = $"INSERT INTO app.useraccessrecords (userId, vehicleId) VALUES(@userId, @vehicleId)"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("userId", record.Id.UserId); - ctext.Parameters.AddWithValue("vehicleId", record.Id.VehicleId); - ctext.ExecuteNonQuery(); - } - } - #endregion - #region "Part5" - using (var db = new LiteDatabase(fullFileName)) - { - var table = db.GetCollection("extrafields"); - extrafields = table.FindAll().ToList(); - }; - foreach (var record in extrafields) - { - string cmd = $"INSERT INTO app.extrafields (id, data) VALUES(@id, CAST(@data AS jsonb))"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", record.Id); - ctext.Parameters.AddWithValue("data", JsonSerializer.Serialize(record)); - ctext.ExecuteNonQuery(); - } - } - #endregion - return Json(OperationResponse.Succeed("Data Imported Successfully")); - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return Json(OperationResponse.Failed()); - } - } - } -} diff --git a/Controllers/Vehicle/GasController.cs b/Controllers/Vehicle/GasController.cs deleted file mode 100644 index 3d3aca1..0000000 --- a/Controllers/Vehicle/GasController.cs +++ /dev/null @@ -1,217 +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 GetGasRecordsByVehicleId(int vehicleId) - { - var result = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicleId); - //check if the user uses MPG or Liters per 100km. - var userConfig = _config.GetUserConfig(User); - bool useMPG = userConfig.UseMPG; - bool useUKMPG = userConfig.UseUKMPG; - var computedResults = _gasHelper.GetGasRecordViewModels(result, useMPG, useUKMPG); - if (userConfig.UseDescending) - { - computedResults = computedResults.OrderByDescending(x => DateTime.Parse(x.Date)).ThenByDescending(x => x.Mileage).ToList(); - } - var vehicleData = _dataAccess.GetVehicleById(vehicleId); - var vehicleIsElectric = vehicleData.IsElectric; - var vehicleUseHours = vehicleData.UseHours; - var viewModel = new GasRecordViewModelContainer() - { - UseKwh = vehicleIsElectric, - UseHours = vehicleUseHours, - GasRecords = computedResults - }; - return PartialView("Gas/_Gas", viewModel); - } - [HttpPost] - public IActionResult SaveGasRecordToVehicleId(GasRecordInput gasRecord) - { - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), gasRecord.VehicleId)) - { - return Json(false); - } - if (gasRecord.Id == default && _config.GetUserConfig(User).EnableAutoOdometerInsert) - { - _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord - { - Date = DateTime.Parse(gasRecord.Date), - VehicleId = gasRecord.VehicleId, - Mileage = gasRecord.Mileage, - Notes = $"Auto Insert From Gas Record. {gasRecord.Notes}" - }); - } - gasRecord.Files = gasRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList(); - var result = _gasRecordDataAccess.SaveGasRecordToVehicle(gasRecord.ToGasRecord()); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGasRecord(gasRecord.ToGasRecord(), gasRecord.Id == default ? "gasrecord.add" : "gasrecord.update", User.Identity.Name)); - } - return Json(result); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - public IActionResult GetAddGasRecordPartialView(int vehicleId) - { - var vehicleData = _dataAccess.GetVehicleById(vehicleId); - var vehicleIsElectric = vehicleData.IsElectric; - var vehicleUseHours = vehicleData.UseHours; - return PartialView("Gas/_GasModal", new GasRecordInputContainer() { UseKwh = vehicleIsElectric, UseHours = vehicleUseHours, GasRecord = new GasRecordInput() { ExtraFields = _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.GasRecord).ExtraFields } }); - } - [HttpGet] - public IActionResult GetGasRecordForEditById(int gasRecordId) - { - var result = _gasRecordDataAccess.GetGasRecordById(gasRecordId); - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId)) - { - return Redirect("/Error/Unauthorized"); - } - var convertedResult = new GasRecordInput - { - Id = result.Id, - Mileage = result.Mileage, - VehicleId = result.VehicleId, - Cost = result.Cost, - Date = result.Date.ToShortDateString(), - Files = result.Files, - Gallons = result.Gallons, - IsFillToFull = result.IsFillToFull, - MissedFuelUp = result.MissedFuelUp, - Notes = result.Notes, - Tags = result.Tags, - ExtraFields = StaticHelper.AddExtraFields(result.ExtraFields, _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.GasRecord).ExtraFields) - }; - var vehicleData = _dataAccess.GetVehicleById(convertedResult.VehicleId); - var vehicleIsElectric = vehicleData.IsElectric; - var vehicleUseHours = vehicleData.UseHours; - var viewModel = new GasRecordInputContainer() - { - UseKwh = vehicleIsElectric, - UseHours = vehicleUseHours, - GasRecord = convertedResult - }; - return PartialView("Gas/_GasModal", viewModel); - } - private bool DeleteGasRecordWithChecks(int gasRecordId) - { - var existingRecord = _gasRecordDataAccess.GetGasRecordById(gasRecordId); - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId)) - { - return false; - } - var result = _gasRecordDataAccess.DeleteGasRecordById(existingRecord.Id); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGasRecord(existingRecord, "gasrecord.delete", User.Identity.Name)); - } - return result; - } - [HttpPost] - public IActionResult DeleteGasRecordById(int gasRecordId) - { - var result = DeleteGasRecordWithChecks(gasRecordId); - return Json(result); - } - [HttpPost] - public IActionResult SaveUserGasTabPreferences(string gasUnit, string fuelMileageUnit) - { - var currentConfig = _config.GetUserConfig(User); - currentConfig.PreferredGasUnit = gasUnit; - currentConfig.PreferredGasMileageUnit = fuelMileageUnit; - var result = _config.SaveUserConfig(User, currentConfig); - return Json(result); - } - [HttpPost] - public IActionResult SaveSimpleFuelEntryPreference(bool useSimpleFuelEntry) - { - var currentConfig = _config.GetUserConfig(User); - currentConfig.UseSimpleFuelEntry = useSimpleFuelEntry; - var result = _config.SaveUserConfig(User, currentConfig); - return Json(result); - } - [HttpPost] - public IActionResult GetGasRecordsEditModal(List recordIds) - { - var extraFields = _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.GasRecord).ExtraFields; - return PartialView("Gas/_GasRecordsModal", new GasRecordEditModel { RecordIds = recordIds, EditRecord = new GasRecord { ExtraFields = extraFields } }); - } - [HttpPost] - public IActionResult SaveMultipleGasRecords(GasRecordEditModel editModel) - { - var dateIsEdited = editModel.EditRecord.Date != default; - var mileageIsEdited = editModel.EditRecord.Mileage != default; - var consumptionIsEdited = editModel.EditRecord.Gallons != default; - var costIsEdited = editModel.EditRecord.Cost != default; - var noteIsEdited = !string.IsNullOrWhiteSpace(editModel.EditRecord.Notes); - var tagsIsEdited = editModel.EditRecord.Tags.Any(); - var extraFieldIsEdited = editModel.EditRecord.ExtraFields.Any(); - //handle clear overrides - if (tagsIsEdited && editModel.EditRecord.Tags.Contains("---")) - { - editModel.EditRecord.Tags = new List(); - } - if (noteIsEdited && editModel.EditRecord.Notes == "---") - { - editModel.EditRecord.Notes = ""; - } - bool result = false; - foreach (int recordId in editModel.RecordIds) - { - var existingRecord = _gasRecordDataAccess.GetGasRecordById(recordId); - if (dateIsEdited) - { - existingRecord.Date = editModel.EditRecord.Date; - } - if (consumptionIsEdited) - { - existingRecord.Gallons = editModel.EditRecord.Gallons; - } - if (costIsEdited) - { - existingRecord.Cost = editModel.EditRecord.Cost; - } - if (mileageIsEdited) - { - existingRecord.Mileage = editModel.EditRecord.Mileage; - } - if (noteIsEdited) - { - existingRecord.Notes = editModel.EditRecord.Notes; - } - if (tagsIsEdited) - { - existingRecord.Tags = editModel.EditRecord.Tags; - } - if (extraFieldIsEdited) - { - foreach (ExtraField extraField in editModel.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 = _gasRecordDataAccess.SaveGasRecordToVehicle(existingRecord); - } - return Json(result); - } - } -} diff --git a/Controllers/Vehicle/ImportController.cs b/Controllers/Vehicle/ImportController.cs deleted file mode 100644 index d03ca13..0000000 --- a/Controllers/Vehicle/ImportController.cs +++ /dev/null @@ -1,614 +0,0 @@ -using MotoVaultPro.Filter; -using MotoVaultPro.Helper; -using MotoVaultPro.MapProfile; -using MotoVaultPro.Models; -using CsvHelper; -using CsvHelper.Configuration; -using Microsoft.AspNetCore.Mvc; -using System.Globalization; - -namespace MotoVaultPro.Controllers -{ - public partial class VehicleController - { - [HttpGet] - public IActionResult GetBulkImportModalPartialView(ImportMode mode) - { - return PartialView("_BulkDataImporter", mode); - } - [HttpGet] - public IActionResult GenerateCsvSample(ImportMode mode) - { - string uploadDirectory = "temp/"; - string uploadPath = Path.Combine(_webEnv.ContentRootPath, "data", uploadDirectory); - if (!Directory.Exists(uploadPath)) - Directory.CreateDirectory(uploadPath); - var fileNameToExport = $"temp/{Guid.NewGuid()}.csv"; - var fullExportFilePath = _fileHelper.GetFullFilePath(fileNameToExport, false); - switch (mode) - { - case ImportMode.ServiceRecord: - case ImportMode.UpgradeRecord: - { - var exportData = new List { new GenericRecordExportModel - { - Date = DateTime.Now.ToShortDateString(), - Description = "Test", - Cost = 123.45M.ToString("C"), - Notes = "Test Note", - Odometer = 12345.ToString(), - Tags = "test1 test2" - } }; - using (var writer = new StreamWriter(fullExportFilePath)) - { - using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) - { - //custom writer - StaticHelper.WriteGenericRecordExportModel(csv, exportData); - } - writer.Dispose(); - } - } - break; - case ImportMode.GasRecord: - { - var exportData = new List { new GasRecordExportModel - { - Date = DateTime.Now.ToShortDateString(), - Odometer = 12345.ToString(), - FuelConsumed = 12.34M.ToString(), - Cost = 45.67M.ToString("C"), - IsFillToFull = true.ToString(), - MissedFuelUp = false.ToString(), - Notes = "Test Note", - Tags = "test1 test2" - } }; - using (var writer = new StreamWriter(fullExportFilePath)) - { - using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) - { - //custom writer - StaticHelper.WriteGasRecordExportModel(csv, exportData); - } - writer.Dispose(); - } - } - break; - case ImportMode.OdometerRecord: - { - var exportData = new List { new OdometerRecordExportModel - { - Date = DateTime.Now.ToShortDateString(), - InitialOdometer = 12345.ToString(), - Odometer = 12345.ToString(), - Notes = "Test Note", - Tags = "test1 test2" - } }; - using (var writer = new StreamWriter(fullExportFilePath)) - { - using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) - { - //custom writer - StaticHelper.WriteOdometerRecordExportModel(csv, exportData); - } - writer.Dispose(); - } - } - break; - case ImportMode.TaxRecord: - { - var exportData = new List { new TaxRecordExportModel - { - Date = DateTime.Now.ToShortDateString(), - Description = "Test", - Cost = 123.45M.ToString("C"), - Notes = "Test Note", - Tags = "test1 test2" - } }; - using (var writer = new StreamWriter(fullExportFilePath)) - { - using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) - { - //custom writer - StaticHelper.WriteTaxRecordExportModel(csv, exportData); - } - writer.Dispose(); - } - } - break; - case ImportMode.SupplyRecord: - { - var exportData = new List { new SupplyRecordExportModel - { - Date = DateTime.Now.ToShortDateString(), - PartNumber = "TEST-123456", - PartSupplier = "Test Supplier", - PartQuantity = 1.5M.ToString(), - Description = "Test", - Cost = 123.45M.ToString("C"), - Notes = "Test Note", - Tags = "test1 test2" - } }; - using (var writer = new StreamWriter(fullExportFilePath)) - { - using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) - { - //custom writer - StaticHelper.WriteSupplyRecordExportModel(csv, exportData); - } - writer.Dispose(); - } - } - break; - case ImportMode.PlanRecord: - { - var exportData = new List { new PlanRecordExportModel - { - DateCreated = DateTime.Now.ToString(), - DateModified = DateTime.Now.ToString(), - Description = "Test", - Type = ImportMode.ServiceRecord.ToString(), - Priority = PlanPriority.Normal.ToString(), - Progress = PlanProgress.Testing.ToString(), - Cost = 123.45M.ToString("C"), - Notes = "Test Note" - } }; - using (var writer = new StreamWriter(fullExportFilePath)) - { - using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) - { - //custom writer - StaticHelper.WritePlanRecordExportModel(csv, exportData); - } - writer.Dispose(); - } - } - break; - default: - return Json(OperationResponse.Failed("No parameters")); - } - try - { - var fileBytes = _fileHelper.GetFileBytes(fullExportFilePath, true); - if (fileBytes.Length > 0) - { - return File(fileBytes, "text/csv", $"{mode.ToString().ToLower()}sample.csv"); - } - else - { - return Json(OperationResponse.Failed("An error has occurred while generating CSV sample: file has zero bytes")); - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return Json(OperationResponse.Failed($"An error has occurred while generating CSV sample: {ex.Message}")); - } - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - public IActionResult ExportFromVehicleToCsv(int vehicleId, ImportMode mode) - { - if (vehicleId == default && mode != ImportMode.SupplyRecord) - { - return Json(false); - } - string uploadDirectory = "temp/"; - string uploadPath = Path.Combine(_webEnv.ContentRootPath, "data", uploadDirectory); - if (!Directory.Exists(uploadPath)) - Directory.CreateDirectory(uploadPath); - var fileNameToExport = $"temp/{Guid.NewGuid()}.csv"; - var fullExportFilePath = _fileHelper.GetFullFilePath(fileNameToExport, false); - if (mode == ImportMode.ServiceRecord) - { - var vehicleRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(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)) - { - //custom writer - StaticHelper.WriteGenericRecordExportModel(csv, exportData); - } - writer.Dispose(); - } - return Json($"/{fileNameToExport}"); - } - } - else if (mode == ImportMode.UpgradeRecord) - { - var vehicleRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(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.OdometerRecord) - { - var vehicleRecords = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId); - if (vehicleRecords.Any()) - { - var exportData = vehicleRecords.Select(x => new OdometerRecordExportModel - { - Date = x.Date.ToShortDateString(), - Notes = x.Notes, - InitialOdometer = x.InitialMileage.ToString(), - 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.WriteOdometerRecordExportModel(csv, exportData); - } - } - return Json($"/{fileNameToExport}"); - } - } - else if (mode == ImportMode.SupplyRecord) - { - var vehicleRecords = _supplyRecordDataAccess.GetSupplyRecordsByVehicleId(vehicleId); - if (vehicleRecords.Any()) - { - var exportData = vehicleRecords.Select(x => new SupplyRecordExportModel - { - Date = x.Date.ToShortDateString(), - Description = x.Description, - Cost = x.Cost.ToString("C"), - PartNumber = x.PartNumber, - PartQuantity = x.Quantity.ToString(), - PartSupplier = x.PartSupplier, - Notes = x.Notes, - Tags = string.Join(" ", x.Tags), - ExtraFields = x.ExtraFields - }); - using (var writer = new StreamWriter(fullExportFilePath)) - { - using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) - { - StaticHelper.WriteSupplyRecordExportModel(csv, exportData); - } - } - return Json($"/{fileNameToExport}"); - } - } - else if (mode == ImportMode.TaxRecord) - { - var vehicleRecords = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId); - if (vehicleRecords.Any()) - { - var exportData = vehicleRecords.Select(x => new TaxRecordExportModel - { - Date = x.Date.ToShortDateString(), - Description = x.Description, - Cost = x.Cost.ToString("C"), - Notes = x.Notes, - Tags = string.Join(" ", x.Tags), - ExtraFields = x.ExtraFields - }); - using (var writer = new StreamWriter(fullExportFilePath)) - { - using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) - { - StaticHelper.WriteTaxRecordExportModel(csv, exportData); - } - } - return Json($"/{fileNameToExport}"); - } - } - else if (mode == ImportMode.PlanRecord) - { - var vehicleRecords = _planRecordDataAccess.GetPlanRecordsByVehicleId(vehicleId); - if (vehicleRecords.Any()) - { - var exportData = vehicleRecords.Select(x => new PlanRecordExportModel - { - DateCreated = x.DateCreated.ToString("G"), - DateModified = x.DateModified.ToString("G"), - Description = x.Description, - Cost = x.Cost.ToString("C"), - Type = x.ImportMode.ToString(), - Priority = x.Priority.ToString(), - Progress = x.Progress.ToString(), - Notes = x.Notes, - ExtraFields = x.ExtraFields - }); - using (var writer = new StreamWriter(fullExportFilePath)) - { - using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) - { - StaticHelper.WritePlanRecordExportModel(csv, exportData); - } - } - return Json($"/{fileNameToExport}"); - } - } - else if (mode == ImportMode.GasRecord) - { - var vehicleRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicleId); - 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 GasRecordExportModel - { - Date = x.Date.ToString(), - Cost = x.Cost.ToString(), - FuelConsumed = x.Gallons.ToString(), - FuelEconomy = x.MilesPerGallon.ToString(), - Odometer = x.Mileage.ToString(), - IsFillToFull = x.IsFillToFull.ToString(), - MissedFuelUp = x.MissedFuelUp.ToString(), - Notes = x.Notes, - Tags = string.Join(" ", x.Tags), - ExtraFields = x.ExtraFields - }); - using (var writer = new StreamWriter(fullExportFilePath)) - { - using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) - { - StaticHelper.WriteGasRecordExportModel(csv, exportData); - } - } - return Json($"/{fileNameToExport}"); - } - return Json(false); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - public IActionResult ImportToVehicleIdFromCsv(int vehicleId, ImportMode mode, string fileName) - { - if (vehicleId == default && mode != ImportMode.SupplyRecord) - { - return Json(false); - } - if (string.IsNullOrWhiteSpace(fileName)) - { - return Json(false); - } - var fullFileName = _fileHelper.GetFullFilePath(fileName); - if (string.IsNullOrWhiteSpace(fullFileName)) - { - return Json(false); - } - try - { - using (var reader = new StreamReader(fullFileName)) - { - var config = new CsvConfiguration(CultureInfo.InvariantCulture); - config.MissingFieldFound = null; - config.HeaderValidated = null; - config.PrepareHeaderForMatch = args => { return args.Header.Trim().ToLower(); }; - using (var csv = new CsvReader(reader, config)) - { - csv.Context.RegisterClassMap(); - var records = csv.GetRecords().ToList(); - if (records.Any()) - { - var requiredExtraFields = _extraFieldDataAccess.GetExtraFieldsById((int)mode).ExtraFields.Where(x => x.IsRequired).Select(y => y.Name); - foreach (ImportModel importModel in records) - { - var parsedDate = DateTime.Now.Date; - if (!string.IsNullOrWhiteSpace(importModel.Date)) - { - parsedDate = DateTime.Parse(importModel.Date); - } - else if (!string.IsNullOrWhiteSpace(importModel.Day) && !string.IsNullOrWhiteSpace(importModel.Month) && !string.IsNullOrWhiteSpace(importModel.Year)) - { - parsedDate = new DateTime(int.Parse(importModel.Year), int.Parse(importModel.Month), int.Parse(importModel.Day)); - } - if (mode == ImportMode.GasRecord) - { - //convert to gas model. - var convertedRecord = new GasRecord() - { - VehicleId = vehicleId, - Date = parsedDate, - Mileage = decimal.ToInt32(decimal.Parse(importModel.Odometer, NumberStyles.Any)), - Gallons = decimal.Parse(importModel.FuelConsumed, NumberStyles.Any), - Notes = string.IsNullOrWhiteSpace(importModel.Notes) ? "" : importModel.Notes, - 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() - }; - if (string.IsNullOrWhiteSpace(importModel.Cost) && !string.IsNullOrWhiteSpace(importModel.Price)) - { - //cost was not given but price is. - //fuelly sometimes exports CSVs without total cost. - var parsedPrice = decimal.Parse(importModel.Price, NumberStyles.Any); - convertedRecord.Cost = convertedRecord.Gallons * parsedPrice; - } - else - { - convertedRecord.Cost = decimal.Parse(importModel.Cost, NumberStyles.Any); - } - if (string.IsNullOrWhiteSpace(importModel.IsFillToFull) && !string.IsNullOrWhiteSpace(importModel.PartialFuelUp)) - { - var parsedBool = importModel.PartialFuelUp.Trim() == "1"; - convertedRecord.IsFillToFull = !parsedBool; - } - else if (!string.IsNullOrWhiteSpace(importModel.IsFillToFull)) - { - var possibleFillToFullValues = new List { "1", "true", "full" }; - var parsedBool = possibleFillToFullValues.Contains(importModel.IsFillToFull.Trim().ToLower()); - convertedRecord.IsFillToFull = parsedBool; - } - if (!string.IsNullOrWhiteSpace(importModel.MissedFuelUp)) - { - var possibleMissedFuelUpValues = new List { "1", "true" }; - var parsedBool = possibleMissedFuelUpValues.Contains(importModel.MissedFuelUp.Trim().ToLower()); - convertedRecord.MissedFuelUp = parsedBool; - } - //insert record into db, check to make sure fuelconsumed is not zero so we don't get a divide by zero error. - if (convertedRecord.Gallons > 0) - { - _gasRecordDataAccess.SaveGasRecordToVehicle(convertedRecord); - if (_config.GetUserConfig(User).EnableAutoOdometerInsert) - { - _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord - { - Date = convertedRecord.Date, - VehicleId = convertedRecord.VehicleId, - Mileage = convertedRecord.Mileage, - Notes = $"Auto Insert From Gas Record via CSV Import. {convertedRecord.Notes}" - }); - } - } - } - else if (mode == ImportMode.ServiceRecord) - { - var convertedRecord = new ServiceRecord() - { - VehicleId = vehicleId, - Date = parsedDate, - Mileage = decimal.ToInt32(decimal.Parse(importModel.Odometer, NumberStyles.Any)), - Description = string.IsNullOrWhiteSpace(importModel.Description) ? $"Service 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() - }; - _serviceRecordDataAccess.SaveServiceRecordToVehicle(convertedRecord); - if (_config.GetUserConfig(User).EnableAutoOdometerInsert) - { - _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord - { - Date = convertedRecord.Date, - VehicleId = convertedRecord.VehicleId, - Mileage = convertedRecord.Mileage, - Notes = $"Auto Insert From Service Record via CSV Import. {convertedRecord.Notes}" - }); - } - } - else if (mode == ImportMode.OdometerRecord) - { - var convertedRecord = new OdometerRecord() - { - VehicleId = vehicleId, - Date = parsedDate, - InitialMileage = string.IsNullOrWhiteSpace(importModel.InitialOdometer) ? 0 : decimal.ToInt32(decimal.Parse(importModel.InitialOdometer, NumberStyles.Any)), - Mileage = decimal.ToInt32(decimal.Parse(importModel.Odometer, NumberStyles.Any)), - Notes = string.IsNullOrWhiteSpace(importModel.Notes) ? "" : importModel.Notes, - 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() - }; - _odometerRecordDataAccess.SaveOdometerRecordToVehicle(convertedRecord); - } - else if (mode == ImportMode.PlanRecord) - { - var progressIsEnum = Enum.TryParse(importModel.Progress, out PlanProgress parsedProgress); - var typeIsEnum = Enum.TryParse(importModel.Type, out ImportMode parsedType); - var priorityIsEnum = Enum.TryParse(importModel.Priority, out PlanPriority parsedPriority); - var convertedRecord = new PlanRecord() - { - VehicleId = vehicleId, - DateCreated = DateTime.Parse(importModel.DateCreated), - DateModified = DateTime.Parse(importModel.DateModified), - Progress = parsedProgress, - ImportMode = parsedType, - Priority = parsedPriority, - Description = string.IsNullOrWhiteSpace(importModel.Description) ? $"Plan Record on {importModel.DateCreated}" : importModel.Description, - Notes = string.IsNullOrWhiteSpace(importModel.Notes) ? "" : importModel.Notes, - Cost = decimal.Parse(importModel.Cost, NumberStyles.Any), - ExtraFields = importModel.ExtraFields.Any() ? importModel.ExtraFields.Select(x => new ExtraField { Name = x.Key, Value = x.Value, IsRequired = requiredExtraFields.Contains(x.Key) }).ToList() : new List() - }; - _planRecordDataAccess.SavePlanRecordToVehicle(convertedRecord); - } - else if (mode == ImportMode.UpgradeRecord) - { - var convertedRecord = new UpgradeRecord() - { - VehicleId = vehicleId, - Date = parsedDate, - Mileage = decimal.ToInt32(decimal.Parse(importModel.Odometer, NumberStyles.Any)), - Description = string.IsNullOrWhiteSpace(importModel.Description) ? $"Upgrade 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() - }; - _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(convertedRecord); - if (_config.GetUserConfig(User).EnableAutoOdometerInsert) - { - _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord - { - Date = convertedRecord.Date, - VehicleId = convertedRecord.VehicleId, - Mileage = convertedRecord.Mileage, - Notes = $"Auto Insert From Upgrade Record via CSV Import. {convertedRecord.Notes}" - }); - } - } - else if (mode == ImportMode.SupplyRecord) - { - var convertedRecord = new SupplyRecord() - { - VehicleId = vehicleId, - Date = parsedDate, - PartNumber = importModel.PartNumber, - PartSupplier = importModel.PartSupplier, - Quantity = decimal.Parse(importModel.PartQuantity, NumberStyles.Any), - Description = importModel.Description, - Cost = decimal.Parse(importModel.Cost, NumberStyles.Any), - Notes = importModel.Notes, - 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() - }; - _supplyRecordDataAccess.SaveSupplyRecordToVehicle(convertedRecord); - } - else if (mode == ImportMode.TaxRecord) - { - var convertedRecord = new TaxRecord() - { - VehicleId = vehicleId, - Date = parsedDate, - Description = string.IsNullOrWhiteSpace(importModel.Description) ? $"Tax 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() - }; - _taxRecordDataAccess.SaveTaxRecordToVehicle(convertedRecord); - } - } - } - } - } - return Json(true); - } - catch (Exception ex) - { - _logger.LogError(ex, "Error Occurred While Bulk Inserting"); - return Json(false); - } - } - } -} diff --git a/Controllers/Vehicle/NoteController.cs b/Controllers/Vehicle/NoteController.cs deleted file mode 100644 index dabddaf..0000000 --- a/Controllers/Vehicle/NoteController.cs +++ /dev/null @@ -1,102 +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 GetNotesByVehicleId(int vehicleId) - { - var result = _noteDataAccess.GetNotesByVehicleId(vehicleId); - result = result.OrderByDescending(x => x.Pinned).ThenBy(x => x.Description).ToList(); - return PartialView("Note/_Notes", result); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - public IActionResult GetPinnedNotesByVehicleId(int vehicleId) - { - var result = _noteDataAccess.GetNotesByVehicleId(vehicleId); - result = result.Where(x => x.Pinned).ToList(); - return Json(result); - } - [HttpPost] - public IActionResult SaveNoteToVehicleId(Note note) - { - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), note.VehicleId)) - { - return Json(false); - } - note.Files = note.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList(); - bool isCreate = note.Id == default; //needed here since Notes don't use an input object. - var result = _noteDataAccess.SaveNoteToVehicle(note); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromNoteRecord(note, isCreate ? "noterecord.add" : "noterecord.update", User.Identity.Name)); - } - return Json(result); - } - [HttpGet] - public IActionResult GetAddNotePartialView() - { - var extraFields = _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.NoteRecord).ExtraFields; - return PartialView("Note/_NoteModal", new Note() { ExtraFields = extraFields }); - } - [HttpGet] - public IActionResult GetNoteForEditById(int noteId) - { - var result = _noteDataAccess.GetNoteById(noteId); - result.ExtraFields = StaticHelper.AddExtraFields(result.ExtraFields, _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.NoteRecord).ExtraFields); - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId)) - { - return Redirect("/Error/Unauthorized"); - } - return PartialView("Note/_NoteModal", result); - } - private bool DeleteNoteWithChecks(int noteId) - { - var existingRecord = _noteDataAccess.GetNoteById(noteId); - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId)) - { - return false; - } - var result = _noteDataAccess.DeleteNoteById(existingRecord.Id); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromNoteRecord(existingRecord, "noterecord.delete", User.Identity.Name)); - } - return result; - } - [HttpPost] - public IActionResult DeleteNoteById(int noteId) - { - var result = DeleteNoteWithChecks(noteId); - return Json(result); - } - [HttpPost] - public IActionResult PinNotes(List noteIds, bool isToggle = false, bool pinStatus = false) - { - var result = false; - foreach (int noteId in noteIds) - { - var existingNote = _noteDataAccess.GetNoteById(noteId); - if (isToggle) - { - existingNote.Pinned = !existingNote.Pinned; - } - else - { - existingNote.Pinned = pinStatus; - } - result = _noteDataAccess.SaveNoteToVehicle(existingNote); - } - return Json(result); - } - } -} diff --git a/Controllers/Vehicle/OdometerController.cs b/Controllers/Vehicle/OdometerController.cs deleted file mode 100644 index 46741aa..0000000 --- a/Controllers/Vehicle/OdometerController.cs +++ /dev/null @@ -1,176 +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))] - [HttpPost] - public IActionResult ForceRecalculateDistanceByVehicleId(int vehicleId) - { - var result = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId); - result = _odometerLogic.AutoConvertOdometerRecord(result); - return Json(result.Any()); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - public IActionResult GetOdometerRecordsByVehicleId(int vehicleId) - { - var result = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId); - //determine if conversion is needed. - if (result.All(x => x.InitialMileage == default)) - { - result = _odometerLogic.AutoConvertOdometerRecord(result); - } - 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("Odometer/_OdometerRecords", result); - } - [HttpPost] - public IActionResult SaveOdometerRecordToVehicleId(OdometerRecordInput odometerRecord) - { - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), odometerRecord.VehicleId)) - { - return Json(false); - } - //move files from temp. - odometerRecord.Files = odometerRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList(); - var result = _odometerRecordDataAccess.SaveOdometerRecordToVehicle(odometerRecord.ToOdometerRecord()); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromOdometerRecord(odometerRecord.ToOdometerRecord(), odometerRecord.Id == default ? "odometerrecord.add" : "odometerrecord.update", User.Identity.Name)); - } - return Json(result); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - public IActionResult GetAddOdometerRecordPartialView(int vehicleId) - { - return PartialView("Odometer/_OdometerRecordModal", new OdometerRecordInput() { InitialMileage = _odometerLogic.GetLastOdometerRecordMileage(vehicleId, new List()), ExtraFields = _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.OdometerRecord).ExtraFields }); - } - [HttpPost] - public IActionResult GetOdometerRecordsEditModal(List recordIds) - { - var extraFields = _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.OdometerRecord).ExtraFields; - return PartialView("Odometer/_OdometerRecordsModal", new OdometerRecordEditModel { RecordIds = recordIds, EditRecord = new OdometerRecord { ExtraFields = extraFields } }); - } - [HttpPost] - public IActionResult SaveMultipleOdometerRecords(OdometerRecordEditModel editModel) - { - var dateIsEdited = editModel.EditRecord.Date != default; - var initialMileageIsEdited = editModel.EditRecord.InitialMileage != default; - var mileageIsEdited = editModel.EditRecord.Mileage != default; - var noteIsEdited = !string.IsNullOrWhiteSpace(editModel.EditRecord.Notes); - var tagsIsEdited = editModel.EditRecord.Tags.Any(); - var extraFieldIsEdited = editModel.EditRecord.ExtraFields.Any(); - //handle clear overrides - if (tagsIsEdited && editModel.EditRecord.Tags.Contains("---")) - { - editModel.EditRecord.Tags = new List(); - } - if (noteIsEdited && editModel.EditRecord.Notes == "---") - { - editModel.EditRecord.Notes = ""; - } - bool result = false; - foreach (int recordId in editModel.RecordIds) - { - var existingRecord = _odometerRecordDataAccess.GetOdometerRecordById(recordId); - if (dateIsEdited) - { - existingRecord.Date = editModel.EditRecord.Date; - } - if (initialMileageIsEdited) - { - existingRecord.InitialMileage = editModel.EditRecord.InitialMileage; - } - if (mileageIsEdited) - { - existingRecord.Mileage = editModel.EditRecord.Mileage; - } - if (noteIsEdited) - { - existingRecord.Notes = editModel.EditRecord.Notes; - } - if (tagsIsEdited) - { - existingRecord.Tags = editModel.EditRecord.Tags; - } - if (extraFieldIsEdited) - { - foreach (ExtraField extraField in editModel.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 = _odometerRecordDataAccess.SaveOdometerRecordToVehicle(existingRecord); - } - return Json(result); - } - [HttpGet] - public IActionResult GetOdometerRecordForEditById(int odometerRecordId) - { - var result = _odometerRecordDataAccess.GetOdometerRecordById(odometerRecordId); - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId)) - { - return Redirect("/Error/Unauthorized"); - } - //convert to Input object. - var convertedResult = new OdometerRecordInput - { - Id = result.Id, - Date = result.Date.ToShortDateString(), - InitialMileage = result.InitialMileage, - Mileage = result.Mileage, - Notes = result.Notes, - VehicleId = result.VehicleId, - Files = result.Files, - Tags = result.Tags, - ExtraFields = StaticHelper.AddExtraFields(result.ExtraFields, _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.OdometerRecord).ExtraFields) - }; - return PartialView("Odometer/_OdometerRecordModal", convertedResult); - } - private bool DeleteOdometerRecordWithChecks(int odometerRecordId) - { - var existingRecord = _odometerRecordDataAccess.GetOdometerRecordById(odometerRecordId); - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId)) - { - return false; - } - var result = _odometerRecordDataAccess.DeleteOdometerRecordById(existingRecord.Id); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromOdometerRecord(existingRecord, "odometerrecord.delete", User.Identity.Name)); - } - return result; - } - [HttpPost] - public IActionResult DeleteOdometerRecordById(int odometerRecordId) - { - var result = DeleteOdometerRecordWithChecks(odometerRecordId); - return Json(result); - } - } -} diff --git a/Controllers/Vehicle/PlanController.cs b/Controllers/Vehicle/PlanController.cs deleted file mode 100644 index ed5395c..0000000 --- a/Controllers/Vehicle/PlanController.cs +++ /dev/null @@ -1,308 +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 GetPlanRecordsByVehicleId(int vehicleId) - { - var result = _planRecordDataAccess.GetPlanRecordsByVehicleId(vehicleId); - return PartialView("Plan/_PlanRecords", result); - } - [HttpPost] - public IActionResult SavePlanRecordToVehicleId(PlanRecordInput planRecord) - { - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), planRecord.VehicleId)) - { - return Json(false); - } - //populate createdDate - if (planRecord.Id == default) - { - planRecord.DateCreated = DateTime.Now.ToString("G"); - } - planRecord.DateModified = DateTime.Now.ToString("G"); - //move files from temp. - planRecord.Files = planRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList(); - if (planRecord.Supplies.Any()) - { - planRecord.RequisitionHistory.AddRange(RequisitionSupplyRecordsByUsage(planRecord.Supplies, DateTime.Parse(planRecord.DateCreated), planRecord.Description)); - if (planRecord.CopySuppliesAttachment) - { - planRecord.Files.AddRange(GetSuppliesAttachments(planRecord.Supplies)); - } - } - if (planRecord.DeletedRequisitionHistory.Any()) - { - _vehicleLogic.RestoreSupplyRecordsByUsage(planRecord.DeletedRequisitionHistory, planRecord.Description); - } - var result = _planRecordDataAccess.SavePlanRecordToVehicle(planRecord.ToPlanRecord()); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromPlanRecord(planRecord.ToPlanRecord(), planRecord.Id == default ? "planrecord.add" : "planrecord.update", User.Identity.Name)); - } - return Json(result); - } - [HttpPost] - public IActionResult SavePlanRecordTemplateToVehicleId(PlanRecordInput planRecord) - { - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), planRecord.VehicleId)) - { - return Json(OperationResponse.Failed("Access Denied")); - } - //check if template name already taken. - var existingRecord = _planRecordTemplateDataAccess.GetPlanRecordTemplatesByVehicleId(planRecord.VehicleId).Where(x => x.Description == planRecord.Description).Any(); - if (planRecord.Id == default && existingRecord) - { - return Json(OperationResponse.Failed("A template with that description already exists for this vehicle")); - } - planRecord.Files = planRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList(); - var result = _planRecordTemplateDataAccess.SavePlanRecordTemplateToVehicle(planRecord); - return Json(OperationResponse.Conditional(result, "Template Added", string.Empty)); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - public IActionResult GetPlanRecordTemplatesForVehicleId(int vehicleId) - { - var result = _planRecordTemplateDataAccess.GetPlanRecordTemplatesByVehicleId(vehicleId); - return PartialView("Plan/_PlanRecordTemplateModal", result); - } - [HttpPost] - public IActionResult DeletePlanRecordTemplateById(int planRecordTemplateId) - { - var existingRecord = _planRecordTemplateDataAccess.GetPlanRecordTemplateById(planRecordTemplateId); - if (existingRecord.Id == default) - { - return Json(false); - } - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId)) - { - return Json(false); - } - var result = _planRecordTemplateDataAccess.DeletePlanRecordTemplateById(planRecordTemplateId); - return Json(result); - } - [HttpGet] - public IActionResult OrderPlanSupplies(int planRecordTemplateId) - { - var existingRecord = _planRecordTemplateDataAccess.GetPlanRecordTemplateById(planRecordTemplateId); - if (existingRecord.Id == default) - { - return Json(OperationResponse.Failed("Unable to find template")); - } - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId)) - { - return Json(OperationResponse.Failed("Access Denied")); - } - if (existingRecord.Supplies.Any()) - { - var suppliesToOrder = CheckSupplyRecordsAvailability(existingRecord.Supplies); - return PartialView("Plan/_PlanOrderSupplies", suppliesToOrder); - } - else - { - return Json(OperationResponse.Failed("Template has No Supplies")); - } - } - [HttpPost] - public IActionResult ConvertPlanRecordTemplateToPlanRecord(int planRecordTemplateId) - { - var existingRecord = _planRecordTemplateDataAccess.GetPlanRecordTemplateById(planRecordTemplateId); - if (existingRecord.Id == default) - { - return Json(OperationResponse.Failed("Unable to find template")); - } - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId)) - { - return Json(OperationResponse.Failed("Access Denied")); - } - if (existingRecord.Supplies.Any()) - { - //check if all supplies are available - var supplyAvailability = CheckSupplyRecordsAvailability(existingRecord.Supplies); - if (supplyAvailability.Any(x => x.Missing)) - { - return Json(OperationResponse.Failed("Missing Supplies, Please Delete This Template and Recreate It.")); - } - else if (supplyAvailability.Any(x => x.Insufficient)) - { - return Json(OperationResponse.Failed("Insufficient Supplies")); - } - } - if (existingRecord.ReminderRecordId != default) - { - //check if reminder still exists and is still recurring. - var existingReminder = _reminderRecordDataAccess.GetReminderRecordById(existingRecord.ReminderRecordId); - if (existingReminder is null || existingReminder.Id == default || !existingReminder.IsRecurring) - { - return Json(OperationResponse.Failed("Missing or Non-recurring Reminder, Please Delete This Template and Recreate It.")); - } - } - //populate createdDate - existingRecord.DateCreated = DateTime.Now.ToString("G"); - existingRecord.DateModified = DateTime.Now.ToString("G"); - existingRecord.Id = default; - if (existingRecord.Supplies.Any()) - { - existingRecord.RequisitionHistory = RequisitionSupplyRecordsByUsage(existingRecord.Supplies, DateTime.Parse(existingRecord.DateCreated), existingRecord.Description); - if (existingRecord.CopySuppliesAttachment) - { - existingRecord.Files.AddRange(GetSuppliesAttachments(existingRecord.Supplies)); - } - } - var result = _planRecordDataAccess.SavePlanRecordToVehicle(existingRecord.ToPlanRecord()); - return Json(OperationResponse.Conditional(result, "Plan Record Added", string.Empty)); - } - [HttpGet] - public IActionResult GetAddPlanRecordPartialView() - { - return PartialView("Plan/_PlanRecordModal", new PlanRecordInput() { ExtraFields = _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.PlanRecord).ExtraFields }); - } - [HttpPost] - public IActionResult GetAddPlanRecordPartialView(PlanRecordInput? planModel) - { - if (planModel is not null) - { - planModel.ExtraFields = _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.PlanRecord).ExtraFields; - return PartialView("Plan/_PlanRecordModal", planModel); - } - return PartialView("Plan/_PlanRecordModal", new PlanRecordInput() { ExtraFields = _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.PlanRecord).ExtraFields }); - } - [HttpPost] - public IActionResult UpdatePlanRecordProgress(int planRecordId, PlanProgress planProgress, int odometer = 0) - { - if (planRecordId == default) - { - return Json(false); - } - var existingRecord = _planRecordDataAccess.GetPlanRecordById(planRecordId); - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId)) - { - return Json(false); - } - existingRecord.Progress = planProgress; - existingRecord.DateModified = DateTime.Now; - var result = _planRecordDataAccess.SavePlanRecordToVehicle(existingRecord); - if (planProgress == PlanProgress.Done) - { - if (_config.GetUserConfig(User).EnableAutoOdometerInsert) - { - _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord - { - Date = DateTime.Now.Date, - VehicleId = existingRecord.VehicleId, - Mileage = odometer, - Notes = $"Auto Insert From Plan Record: {existingRecord.Description}", - ExtraFields = existingRecord.ExtraFields - }); - } - //convert plan record to service/upgrade/repair record. - if (existingRecord.ImportMode == ImportMode.ServiceRecord) - { - var newRecord = new ServiceRecord() - { - 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 - }; - _serviceRecordDataAccess.SaveServiceRecordToVehicle(newRecord); - } - else if (existingRecord.ImportMode == ImportMode.UpgradeRecord) - { - var newRecord = new UpgradeRecord() - { - 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 - }; - _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(newRecord); - } - //push back any reminders - if (existingRecord.ReminderRecordId != default) - { - PushbackRecurringReminderRecordWithChecks(existingRecord.ReminderRecordId, DateTime.Now, odometer); - } - } - return Json(result); - } - [HttpGet] - public IActionResult GetPlanRecordTemplateForEditById(int planRecordTemplateId) - { - var result = _planRecordTemplateDataAccess.GetPlanRecordTemplateById(planRecordTemplateId); - return PartialView("Plan/_PlanRecordTemplateEditModal", result); - } - [HttpGet] - public IActionResult GetPlanRecordForEditById(int planRecordId) - { - var result = _planRecordDataAccess.GetPlanRecordById(planRecordId); - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId)) - { - return Redirect("/Error/Unauthorized"); - } - //convert to Input object. - var convertedResult = new PlanRecordInput - { - Id = result.Id, - Description = result.Description, - DateCreated = result.DateCreated.ToString("G"), - DateModified = result.DateModified.ToString("G"), - ImportMode = result.ImportMode, - Priority = result.Priority, - Progress = result.Progress, - Cost = result.Cost, - Notes = result.Notes, - VehicleId = result.VehicleId, - Files = result.Files, - RequisitionHistory = result.RequisitionHistory, - ReminderRecordId = result.ReminderRecordId, - ExtraFields = StaticHelper.AddExtraFields(result.ExtraFields, _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.PlanRecord).ExtraFields) - }; - return PartialView("Plan/_PlanRecordModal", convertedResult); - } - [HttpPost] - public IActionResult DeletePlanRecordById(int planRecordId) - { - var existingRecord = _planRecordDataAccess.GetPlanRecordById(planRecordId); - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId)) - { - return Json(false); - } - //restore any requisitioned supplies if it has not been converted to other record types. - if (existingRecord.RequisitionHistory.Any() && existingRecord.Progress != PlanProgress.Done) - { - _vehicleLogic.RestoreSupplyRecordsByUsage(existingRecord.RequisitionHistory, existingRecord.Description); - } - var result = _planRecordDataAccess.DeletePlanRecordById(existingRecord.Id); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromPlanRecord(existingRecord, "planrecord.delete", User.Identity.Name)); - } - return Json(result); - } - } -} diff --git a/Controllers/Vehicle/ReminderController.cs b/Controllers/Vehicle/ReminderController.cs deleted file mode 100644 index c6d7f9e..0000000 --- a/Controllers/Vehicle/ReminderController.cs +++ /dev/null @@ -1,187 +0,0 @@ -using MotoVaultPro.Filter; -using MotoVaultPro.Helper; -using MotoVaultPro.Models; -using Microsoft.AspNetCore.Mvc; - -namespace MotoVaultPro.Controllers -{ - public partial class VehicleController - { - private List GetRemindersAndUrgency(int vehicleId, DateTime dateCompare) - { - var currentMileage = _vehicleLogic.GetMaxMileage(vehicleId); - var reminders = _reminderRecordDataAccess.GetReminderRecordsByVehicleId(vehicleId); - List results = _reminderHelper.GetReminderRecordViewModels(reminders, currentMileage, dateCompare); - return results; - } - private bool GetAndUpdateVehicleUrgentOrPastDueReminders(int vehicleId) - { - var result = GetRemindersAndUrgency(vehicleId, DateTime.Now); - //check if user wants auto-refresh past-due reminders - if (_config.GetUserConfig(User).EnableAutoReminderRefresh) - { - //check for past due reminders that are eligible for recurring. - var pastDueAndRecurring = result.Where(x => x.Urgency == ReminderUrgency.PastDue && x.IsRecurring); - if (pastDueAndRecurring.Any()) - { - foreach (ReminderRecordViewModel reminderRecord in pastDueAndRecurring) - { - //update based on recurring intervals. - //pull reminderRecord based on ID - var existingReminder = _reminderRecordDataAccess.GetReminderRecordById(reminderRecord.Id); - existingReminder = _reminderHelper.GetUpdatedRecurringReminderRecord(existingReminder, null, null); - //save to db. - _reminderRecordDataAccess.SaveReminderRecordToVehicle(existingReminder); - //set urgency to not urgent so it gets excluded in count. - reminderRecord.Urgency = ReminderUrgency.NotUrgent; - } - } - } - //check for very urgent or past due reminders that were not eligible for recurring. - var pastDueAndUrgentReminders = result.Where(x => x.Urgency == ReminderUrgency.VeryUrgent || x.Urgency == ReminderUrgency.PastDue); - if (pastDueAndUrgentReminders.Any()) - { - return true; - } - return false; - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - public IActionResult GetVehicleHaveUrgentOrPastDueReminders(int vehicleId) - { - var result = GetAndUpdateVehicleUrgentOrPastDueReminders(vehicleId); - return Json(result); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - public IActionResult GetReminderRecordsByVehicleId(int vehicleId) - { - var result = GetRemindersAndUrgency(vehicleId, DateTime.Now); - result = result.OrderByDescending(x => x.Urgency).ToList(); - return PartialView("Reminder/_ReminderRecords", result); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - public IActionResult GetRecurringReminderRecordsByVehicleId(int vehicleId) - { - var result = GetRemindersAndUrgency(vehicleId, DateTime.Now); - result.RemoveAll(x => !x.IsRecurring); - result = result.OrderByDescending(x => x.Urgency).ThenBy(x => x.Description).ToList(); - return PartialView("_RecurringReminderSelector", result); - } - [HttpPost] - public IActionResult PushbackRecurringReminderRecord(int reminderRecordId) - { - var result = PushbackRecurringReminderRecordWithChecks(reminderRecordId, null, null); - return Json(result); - } - private bool PushbackRecurringReminderRecordWithChecks(int reminderRecordId, DateTime? currentDate, int? currentMileage) - { - try - { - var existingReminder = _reminderRecordDataAccess.GetReminderRecordById(reminderRecordId); - if (existingReminder is not null && existingReminder.Id != default && existingReminder.IsRecurring) - { - existingReminder = _reminderHelper.GetUpdatedRecurringReminderRecord(existingReminder, currentDate, currentMileage); - //save to db. - var reminderUpdateResult = _reminderRecordDataAccess.SaveReminderRecordToVehicle(existingReminder); - if (!reminderUpdateResult) - { - _logger.LogError("Unable to update reminder either because the reminder no longer exists or is no longer recurring"); - return false; - } - return true; - } - else - { - _logger.LogError("Unable to update reminder because it no longer exists."); - return false; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - [HttpPost] - public IActionResult SaveReminderRecordToVehicleId(ReminderRecordInput reminderRecord) - { - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), reminderRecord.VehicleId)) - { - return Json(false); - } - var result = _reminderRecordDataAccess.SaveReminderRecordToVehicle(reminderRecord.ToReminderRecord()); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromReminderRecord(reminderRecord.ToReminderRecord(), reminderRecord.Id == default ? "reminderrecord.add" : "reminderrecord.update", User.Identity.Name)); - } - return Json(result); - } - [HttpPost] - public IActionResult GetAddReminderRecordPartialView(ReminderRecordInput? reminderModel) - { - if (reminderModel is not null) - { - return PartialView("Reminder/_ReminderRecordModal", reminderModel); - } - else - { - return PartialView("Reminder/_ReminderRecordModal", new ReminderRecordInput()); - } - } - [HttpGet] - public IActionResult GetReminderRecordForEditById(int reminderRecordId) - { - var result = _reminderRecordDataAccess.GetReminderRecordById(reminderRecordId); - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId)) - { - return Redirect("/Error/Unauthorized"); - } - //convert to Input object. - var convertedResult = new ReminderRecordInput - { - Id = result.Id, - Date = result.Date.ToShortDateString(), - Description = result.Description, - Notes = result.Notes, - VehicleId = result.VehicleId, - Mileage = result.Mileage, - Metric = result.Metric, - IsRecurring = result.IsRecurring, - UseCustomThresholds = result.UseCustomThresholds, - CustomThresholds = result.CustomThresholds, - ReminderMileageInterval = result.ReminderMileageInterval, - ReminderMonthInterval = result.ReminderMonthInterval, - CustomMileageInterval = result.CustomMileageInterval, - CustomMonthInterval = result.CustomMonthInterval, - CustomMonthIntervalUnit = result.CustomMonthIntervalUnit, - Tags = result.Tags - }; - return PartialView("Reminder/_ReminderRecordModal", convertedResult); - } - private bool DeleteReminderRecordWithChecks(int reminderRecordId) - { - var existingRecord = _reminderRecordDataAccess.GetReminderRecordById(reminderRecordId); - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId)) - { - return false; - } - var result = _reminderRecordDataAccess.DeleteReminderRecordById(existingRecord.Id); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromReminderRecord(existingRecord, "reminderrecord.delete", User.Identity.Name)); - } - return result; - } - [HttpPost] - public IActionResult DeleteReminderRecordById(int reminderRecordId) - { - var result = DeleteReminderRecordWithChecks(reminderRecordId); - return Json(result); - } - } -} diff --git a/Controllers/Vehicle/ReportController.cs b/Controllers/Vehicle/ReportController.cs deleted file mode 100644 index a70e321..0000000 --- a/Controllers/Vehicle/ReportController.cs +++ /dev/null @@ -1,708 +0,0 @@ -using MotoVaultPro.Filter; -using MotoVaultPro.Helper; -using MotoVaultPro.Models; -using Microsoft.AspNetCore.Mvc; -using System.Globalization; - -namespace MotoVaultPro.Controllers -{ - public partial class VehicleController - { - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - public IActionResult GetReportPartialView(int vehicleId) - { - //get records - var vehicleData = _dataAccess.GetVehicleById(vehicleId); - var vehicleRecords = _vehicleLogic.GetVehicleRecords(vehicleId); - var serviceRecords = vehicleRecords.ServiceRecords; - var gasRecords = vehicleRecords.GasRecords; - var taxRecords = vehicleRecords.TaxRecords; - var upgradeRecords = vehicleRecords.UpgradeRecords; - var odometerRecords = vehicleRecords.OdometerRecords; - var userConfig = _config.GetUserConfig(User); - var viewModel = new ReportViewModel() { ReportHeaderForVehicle = new ReportHeader() }; - //check if custom widgets are configured - viewModel.CustomWidgetsConfigured = _fileHelper.WidgetsExist(); - //get totalCostMakeUp - viewModel.CostMakeUpForVehicle = new CostMakeUpForVehicle - { - ServiceRecordSum = serviceRecords.Sum(x => x.Cost), - GasRecordSum = gasRecords.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.GetUpgradeRecordSum(upgradeRecords, 0)); - allCosts.AddRange(_reportHelper.GetGasRecordSum(gasRecords, 0)); - allCosts.AddRange(_reportHelper.GetTaxRecordSum(taxRecords, 0)); - allCosts.AddRange(_reportHelper.GetOdometerRecordSum(odometerRecords, 0)); - viewModel.CostForVehicleByMonth = allCosts.GroupBy(x => new { x.MonthName, x.MonthId }).OrderBy(x => x.Key.MonthId).Select(x => new CostForVehicleByMonth - { - MonthName = x.Key.MonthName, - Cost = x.Sum(y => y.Cost), - DistanceTraveled = x.Max(y => y.DistanceTraveled) - }).ToList(); - - //set available metrics - var visibleTabs = userConfig.VisibleTabs; - if (visibleTabs.Contains(ImportMode.OdometerRecord) || odometerRecords.Any()) - { - viewModel.AvailableMetrics.Add(ImportMode.OdometerRecord); - } - if (visibleTabs.Contains(ImportMode.ServiceRecord) || serviceRecords.Any()) - { - viewModel.AvailableMetrics.Add(ImportMode.ServiceRecord); - } - if (visibleTabs.Contains(ImportMode.UpgradeRecord) || upgradeRecords.Any()) - { - viewModel.AvailableMetrics.Add(ImportMode.UpgradeRecord); - } - if (visibleTabs.Contains(ImportMode.GasRecord) || gasRecords.Any()) - { - viewModel.AvailableMetrics.Add(ImportMode.GasRecord); - } - if (visibleTabs.Contains(ImportMode.TaxRecord) || taxRecords.Any()) - { - viewModel.AvailableMetrics.Add(ImportMode.TaxRecord); - } - - //get reminders - var reminders = GetRemindersAndUrgency(vehicleId, DateTime.Now); - viewModel.ReminderMakeUpForVehicle = new ReminderMakeUpForVehicle - { - NotUrgentCount = reminders.Where(x => x.Urgency == ReminderUrgency.NotUrgent).Count(), - UrgentCount = reminders.Where(x => x.Urgency == ReminderUrgency.Urgent).Count(), - VeryUrgentCount = reminders.Where(x => x.Urgency == ReminderUrgency.VeryUrgent).Count(), - PastDueCount = reminders.Where(x => x.Urgency == ReminderUrgency.PastDue).Count() - }; - //populate year dropdown. - var numbersArray = new List(); - if (serviceRecords.Any()) - { - numbersArray.Add(serviceRecords.Min(x => x.Date.Year)); - } - if (gasRecords.Any()) - { - numbersArray.Add(gasRecords.Min(x => x.Date.Year)); - } - if (upgradeRecords.Any()) - { - numbersArray.Add(upgradeRecords.Min(x => x.Date.Year)); - } - if (odometerRecords.Any()) - { - numbersArray.Add(odometerRecords.Min(x => x.Date.Year)); - } - var minYear = numbersArray.Any() ? numbersArray.Min() : DateTime.Now.AddYears(-5).Year; - var yearDifference = DateTime.Now.Year - minYear + 1; - for (int i = 0; i < yearDifference; i++) - { - viewModel.Years.Add(DateTime.Now.AddYears(i * -1).Year); - } - //get collaborators - var collaborators = _userLogic.GetCollaboratorsForVehicle(vehicleId); - viewModel.Collaborators = collaborators; - //get MPG per month. - var mileageData = _gasHelper.GetGasRecordViewModels(gasRecords, userConfig.UseMPG, userConfig.UseUKMPG); - string preferredFuelMileageUnit = _config.GetUserConfig(User).PreferredGasMileageUnit; - var fuelEconomyMileageUnit = StaticHelper.GetFuelEconomyUnit(vehicleData.IsElectric, vehicleData.UseHours, userConfig.UseMPG, userConfig.UseUKMPG); - var averageMPG = _gasHelper.GetAverageGasMileage(mileageData, userConfig.UseMPG); - mileageData.RemoveAll(x => x.MilesPerGallon == default); - bool invertedFuelMileageUnit = fuelEconomyMileageUnit == "l/100km" && preferredFuelMileageUnit == "km/l"; - var monthlyMileageData = StaticHelper.GetBaseLineCostsNoMonthName(); - monthlyMileageData.AddRange(mileageData.GroupBy(x => x.MonthId).Select(x => new CostForVehicleByMonth - { - MonthId = x.Key, - Cost = x.Average(y => y.MilesPerGallon) - })); - monthlyMileageData = monthlyMileageData.GroupBy(x => x.MonthId).OrderBy(x => x.Key).Select(x => new CostForVehicleByMonth - { - MonthId = x.Key, - MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(x.Key), - Cost = x.Sum(y => y.Cost) - }).ToList(); - if (invertedFuelMileageUnit) - { - foreach (CostForVehicleByMonth monthMileage in monthlyMileageData) - { - if (monthMileage.Cost != default) - { - monthMileage.Cost = 100 / monthMileage.Cost; - } - } - var newAverageMPG = decimal.Parse(averageMPG, NumberStyles.Any); - if (newAverageMPG != 0) - { - newAverageMPG = 100 / newAverageMPG; - } - averageMPG = newAverageMPG.ToString("F"); - } - var mpgViewModel = new MPGForVehicleByMonth { - CostData = monthlyMileageData, - Unit = invertedFuelMileageUnit ? preferredFuelMileageUnit : fuelEconomyMileageUnit, - SortedCostData = (userConfig.UseMPG || invertedFuelMileageUnit) ? monthlyMileageData.OrderByDescending(x => x.Cost).ToList() : monthlyMileageData.OrderBy(x => x.Cost).ToList() - }; - viewModel.FuelMileageForVehicleByMonth = mpgViewModel; - //report header - - var maxMileage = _vehicleLogic.GetMaxMileage(vehicleRecords); - var minMileage = _vehicleLogic.GetMinMileage(vehicleRecords); - - viewModel.ReportHeaderForVehicle.TotalCost = _vehicleLogic.GetVehicleTotalCost(vehicleRecords); - viewModel.ReportHeaderForVehicle.AverageMPG = $"{averageMPG} {mpgViewModel.Unit}"; - viewModel.ReportHeaderForVehicle.MaxOdometer = maxMileage; - viewModel.ReportHeaderForVehicle.DistanceTraveled = maxMileage - minMileage; - return PartialView("_Report", viewModel); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - public IActionResult GetCollaboratorsForVehicle(int vehicleId) - { - var result = _userLogic.GetCollaboratorsForVehicle(vehicleId); - return PartialView("_Collaborators", result); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - public IActionResult AddCollaboratorsToVehicle(int vehicleId, string username) - { - var result = _userLogic.AddCollaboratorToVehicle(vehicleId, username); - return Json(result); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - public IActionResult DeleteCollaboratorFromVehicle(int userId, int vehicleId) - { - var result = _userLogic.DeleteCollaboratorFromVehicle(userId, vehicleId); - return Json(result); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - public IActionResult GetSummaryForVehicle(int vehicleId, int year = 0) - { - var vehicleData = _dataAccess.GetVehicleById(vehicleId); - var vehicleRecords = _vehicleLogic.GetVehicleRecords(vehicleId); - - var serviceRecords = vehicleRecords.ServiceRecords; - var gasRecords = vehicleRecords.GasRecords; - var taxRecords = vehicleRecords.TaxRecords; - var upgradeRecords = vehicleRecords.UpgradeRecords; - var odometerRecords = vehicleRecords.OdometerRecords; - - if (year != default) - { - serviceRecords.RemoveAll(x => x.Date.Year != year); - gasRecords.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); - } - - var userConfig = _config.GetUserConfig(User); - - var mileageData = _gasHelper.GetGasRecordViewModels(gasRecords, userConfig.UseMPG, userConfig.UseUKMPG); - string preferredFuelMileageUnit = _config.GetUserConfig(User).PreferredGasMileageUnit; - var fuelEconomyMileageUnit = StaticHelper.GetFuelEconomyUnit(vehicleData.IsElectric, vehicleData.UseHours, userConfig.UseMPG, userConfig.UseUKMPG); - var averageMPG = _gasHelper.GetAverageGasMileage(mileageData, userConfig.UseMPG); - bool invertedFuelMileageUnit = fuelEconomyMileageUnit == "l/100km" && preferredFuelMileageUnit == "km/l"; - - if (invertedFuelMileageUnit) - { - var newAverageMPG = decimal.Parse(averageMPG, NumberStyles.Any); - if (newAverageMPG != 0) - { - newAverageMPG = 100 / newAverageMPG; - } - averageMPG = newAverageMPG.ToString("F"); - } - - var mpgUnit = invertedFuelMileageUnit ? preferredFuelMileageUnit : fuelEconomyMileageUnit; - - var maxMileage = _vehicleLogic.GetMaxMileage(vehicleRecords); - var minMileage = _vehicleLogic.GetMinMileage(vehicleRecords); - - var viewModel = new ReportHeader() - { - TotalCost = _vehicleLogic.GetVehicleTotalCost(vehicleRecords), - AverageMPG = $"{averageMPG} {mpgUnit}", - MaxOdometer = maxMileage, - DistanceTraveled = maxMileage - minMileage - }; - - return PartialView("_ReportHeader", viewModel); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - public IActionResult GetCostMakeUpForVehicle(int vehicleId, int year = 0) - { - var serviceRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicleId); - var gasRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(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); - taxRecords.RemoveAll(x => x.Date.Year != year); - upgradeRecords.RemoveAll(x => x.Date.Year != year); - } - var viewModel = new CostMakeUpForVehicle - { - ServiceRecordSum = serviceRecords.Sum(x => x.Cost), - GasRecordSum = gasRecords.Sum(x => x.Cost), - TaxRecordSum = taxRecords.Sum(x => x.Cost), - UpgradeRecordSum = upgradeRecords.Sum(x => x.Cost) - }; - return PartialView("_CostMakeUpReport", viewModel); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - public IActionResult GetCostTableForVehicle(int vehicleId, int year = 0) - { - var vehicleRecords = _vehicleLogic.GetVehicleRecords(vehicleId); - var serviceRecords = vehicleRecords.ServiceRecords; - var gasRecords = vehicleRecords.GasRecords; - var taxRecords = vehicleRecords.TaxRecords; - var upgradeRecords = vehicleRecords.UpgradeRecords; - var odometerRecords = vehicleRecords.OdometerRecords; - if (year != default) - { - serviceRecords.RemoveAll(x => x.Date.Year != year); - gasRecords.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); - } - var maxMileage = _vehicleLogic.GetMaxMileage(vehicleRecords); - var minMileage = _vehicleLogic.GetMinMileage(vehicleRecords); - var vehicleData = _dataAccess.GetVehicleById(vehicleId); - var userConfig = _config.GetUserConfig(User); - var totalDistanceTraveled = maxMileage - minMileage; - 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), - TaxRecordSum = taxRecords.Sum(x => x.Cost), - UpgradeRecordSum = upgradeRecords.Sum(x => x.Cost), - TotalDistance = totalDistanceTraveled, - DistanceUnit = vehicleData.UseHours ? "Cost Per Hour" : userConfig.UseMPG ? "Cost Per Mile" : "Cost Per Kilometer", - NumberOfDays = totalDays - }; - return PartialView("_CostTableReport", viewModel); - } - [TypeFilter(typeof(CollaboratorFilter))] - public IActionResult GetReminderMakeUpByVehicle(int vehicleId, int daysToAdd) - { - var reminders = GetRemindersAndUrgency(vehicleId, DateTime.Now.AddDays(daysToAdd)); - var viewModel = new ReminderMakeUpForVehicle - { - NotUrgentCount = reminders.Where(x => x.Urgency == ReminderUrgency.NotUrgent).Count(), - UrgentCount = reminders.Where(x => x.Urgency == ReminderUrgency.Urgent).Count(), - VeryUrgentCount = reminders.Where(x => x.Urgency == ReminderUrgency.VeryUrgent).Count(), - PastDueCount = reminders.Where(x => x.Urgency == ReminderUrgency.PastDue).Count() - }; - return PartialView("_ReminderMakeUpReport", viewModel); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - public IActionResult GetVehicleAttachments(int vehicleId, List exportTabs) - { - List attachmentData = new List(); - if (exportTabs.Contains(ImportMode.ServiceRecord)) - { - var records = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicleId).Where(x => x.Files.Any()); - attachmentData.AddRange(records.Select(x => new GenericReportModel - { - DataType = ImportMode.ServiceRecord, - Date = x.Date, - Odometer = x.Mileage, - Files = x.Files - })); - } - if (exportTabs.Contains(ImportMode.UpgradeRecord)) - { - var records = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicleId).Where(x => x.Files.Any()); - attachmentData.AddRange(records.Select(x => new GenericReportModel - { - DataType = ImportMode.UpgradeRecord, - Date = x.Date, - Odometer = x.Mileage, - Files = x.Files - })); - } - if (exportTabs.Contains(ImportMode.GasRecord)) - { - var records = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicleId).Where(x => x.Files.Any()); - attachmentData.AddRange(records.Select(x => new GenericReportModel - { - DataType = ImportMode.GasRecord, - Date = x.Date, - Odometer = x.Mileage, - Files = x.Files - })); - } - if (exportTabs.Contains(ImportMode.TaxRecord)) - { - var records = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId).Where(x => x.Files.Any()); - attachmentData.AddRange(records.Select(x => new GenericReportModel - { - DataType = ImportMode.TaxRecord, - Date = x.Date, - Odometer = 0, - Files = x.Files - })); - } - if (exportTabs.Contains(ImportMode.OdometerRecord)) - { - var records = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId).Where(x => x.Files.Any()); - attachmentData.AddRange(records.Select(x => new GenericReportModel - { - DataType = ImportMode.OdometerRecord, - Date = x.Date, - Odometer = x.Mileage, - Files = x.Files - })); - } - if (exportTabs.Contains(ImportMode.NoteRecord)) - { - var records = _noteDataAccess.GetNotesByVehicleId(vehicleId).Where(x => x.Files.Any()); - attachmentData.AddRange(records.Select(x => new GenericReportModel - { - DataType = ImportMode.NoteRecord, - Date = DateTime.Now, - Odometer = 0, - Files = x.Files - })); - } - if (attachmentData.Any()) - { - attachmentData = attachmentData.OrderBy(x => x.Date).ThenBy(x => x.Odometer).ToList(); - var result = _fileHelper.MakeAttachmentsExport(attachmentData); - if (string.IsNullOrWhiteSpace(result)) - { - return Json(OperationResponse.Failed()); - } - return Json(OperationResponse.Succeed(result)); - } - else - { - return Json(OperationResponse.Failed("No Attachments Found")); - } - } - public IActionResult GetReportParameters() - { - var viewModel = new ReportParameter() { - VisibleColumns = new List { - nameof(GenericReportModel.DataType), - nameof(GenericReportModel.Date), - nameof(GenericReportModel.Odometer), - nameof(GenericReportModel.Description), - nameof(GenericReportModel.Cost), - nameof(GenericReportModel.Notes) - } - }; - //get all extra fields from service records, repairs, upgrades, and tax records. - var recordTypes = new List() { 0, 1, 3, 4 }; - var extraFields = new List(); - foreach(int recordType in recordTypes) - { - extraFields.AddRange(_extraFieldDataAccess.GetExtraFieldsById(recordType).ExtraFields.Select(x => x.Name)); - } - viewModel.ExtraFields = extraFields.Distinct().ToList(); - - return PartialView("_ReportParameters", viewModel); - } - [TypeFilter(typeof(CollaboratorFilter))] - public IActionResult GetVehicleHistory(int vehicleId, ReportParameter reportParameter) - { - var vehicleHistory = new VehicleHistoryViewModel(); - vehicleHistory.ReportParameters = reportParameter; - vehicleHistory.VehicleData = _dataAccess.GetVehicleById(vehicleId); - var vehicleRecords = _vehicleLogic.GetVehicleRecords(vehicleId); - bool useMPG = _config.GetUserConfig(User).UseMPG; - bool useUKMPG = _config.GetUserConfig(User).UseUKMPG; - var gasViewModels = _gasHelper.GetGasRecordViewModels(vehicleRecords.GasRecords, useMPG, useUKMPG); - //filter by tags - if (reportParameter.Tags.Any()) - { - if (reportParameter.TagFilter == TagFilter.Exclude) - { - 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.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))); - vehicleRecords.GasRecords.RemoveAll(x => x.Tags.Any(y => reportParameter.Tags.Contains(y))); - } - else if (reportParameter.TagFilter == TagFilter.IncludeOnly) - { - 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.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))); - vehicleRecords.GasRecords.RemoveAll(x => !x.Tags.Any(y => reportParameter.Tags.Contains(y))); - } - } - //filter by date range. - if (reportParameter.FilterByDateRange && !string.IsNullOrWhiteSpace(reportParameter.StartDate) && !string.IsNullOrWhiteSpace(reportParameter.EndDate)) - { - var startDate = DateTime.Parse(reportParameter.StartDate).Date; - var endDate = DateTime.Parse(reportParameter.EndDate).Date; - //validate date range - if (endDate >= startDate) //allow for same day. - { - vehicleHistory.StartDate = reportParameter.StartDate; - vehicleHistory.EndDate = reportParameter.EndDate; - //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.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); - vehicleRecords.GasRecords.RemoveAll(x => x.Date.Date > endDate || x.Date.Date < startDate); - } - } - var maxMileage = _vehicleLogic.GetMaxMileage(vehicleRecords); - vehicleHistory.Odometer = maxMileage.ToString("N0"); - var minMileage = _vehicleLogic.GetMinMileage(vehicleRecords); - var distanceTraveled = maxMileage - minMileage; - if (!string.IsNullOrWhiteSpace(vehicleHistory.VehicleData.PurchaseDate)) - { - var endDate = vehicleHistory.VehicleData.SoldDate; - int daysOwned = 0; - if (string.IsNullOrWhiteSpace(endDate)) - { - endDate = DateTime.Now.ToShortDateString(); - } - try - { - daysOwned = (DateTime.Parse(endDate) - DateTime.Parse(vehicleHistory.VehicleData.PurchaseDate)).Days; - vehicleHistory.DaysOwned = daysOwned.ToString("N0"); - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - vehicleHistory.DaysOwned = string.Empty; - } - //calculate depreciation - var totalDepreciation = vehicleHistory.VehicleData.PurchasePrice - vehicleHistory.VehicleData.SoldPrice; - //we only calculate depreciation if a sold price is provided. - if (totalDepreciation != default && vehicleHistory.VehicleData.SoldPrice != default) - { - vehicleHistory.TotalDepreciation = totalDepreciation; - if (daysOwned != default) - { - vehicleHistory.DepreciationPerDay = Math.Abs(totalDepreciation / daysOwned); - } - if (distanceTraveled != default) - { - vehicleHistory.DepreciationPerMile = Math.Abs(totalDepreciation / distanceTraveled); - } - } - } - List reportData = new List(); - 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.UpgradeRecords.Sum(x => x.Cost) + vehicleRecords.TaxRecords.Sum(x => x.Cost); - if (distanceTraveled != default) - { - vehicleHistory.DistanceTraveled = distanceTraveled.ToString("N0"); - vehicleHistory.TotalCostPerMile = vehicleHistory.TotalCost / distanceTraveled; - vehicleHistory.TotalGasCostPerMile = vehicleHistory.TotalGasCost / distanceTraveled; - } - var averageMPG = "0"; - if (gasViewModels.Any()) - { - averageMPG = _gasHelper.GetAverageGasMileage(gasViewModels, useMPG); - } - var fuelEconomyMileageUnit = StaticHelper.GetFuelEconomyUnit(vehicleHistory.VehicleData.IsElectric, vehicleHistory.VehicleData.UseHours, useMPG, useUKMPG); - if (fuelEconomyMileageUnit == "l/100km" && preferredFuelMileageUnit == "km/l") - { - //conversion needed. - var newAverageMPG = decimal.Parse(averageMPG, NumberStyles.Any); - if (newAverageMPG != 0) - { - newAverageMPG = 100 / newAverageMPG; - } - averageMPG = newAverageMPG.ToString("F"); - fuelEconomyMileageUnit = preferredFuelMileageUnit; - } - vehicleHistory.MPG = $"{averageMPG} {fuelEconomyMileageUnit}"; - //insert servicerecords - reportData.AddRange(vehicleRecords.ServiceRecords.Select(x => new GenericReportModel - { - Date = x.Date, - Odometer = x.Mileage, - Description = x.Description, - Notes = x.Notes, - Cost = x.Cost, - DataType = ImportMode.ServiceRecord, - ExtraFields = x.ExtraFields, - RequisitionHistory = x.RequisitionHistory - })); - //repair records - reportData.AddRange(vehicleRecords.UpgradeRecords.Select(x => new GenericReportModel - { - Date = x.Date, - Odometer = x.Mileage, - Description = x.Description, - Notes = x.Notes, - Cost = x.Cost, - DataType = ImportMode.UpgradeRecord, - ExtraFields = x.ExtraFields, - RequisitionHistory = x.RequisitionHistory - })); - reportData.AddRange(vehicleRecords.TaxRecords.Select(x => new GenericReportModel - { - Date = x.Date, - Odometer = 0, - Description = x.Description, - Notes = x.Notes, - Cost = x.Cost, - DataType = ImportMode.TaxRecord, - ExtraFields = x.ExtraFields - })); - vehicleHistory.VehicleHistory = reportData.OrderBy(x => x.Date).ThenBy(x => x.Odometer).ToList(); - return PartialView("_VehicleHistory", vehicleHistory); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - public IActionResult GetMonthMPGByVehicle(int vehicleId, int year = 0) - { - var vehicleData = _dataAccess.GetVehicleById(vehicleId); - var gasRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicleId); - var userConfig = _config.GetUserConfig(User); - string preferredFuelMileageUnit = _config.GetUserConfig(User).PreferredGasMileageUnit; - var fuelEconomyMileageUnit = StaticHelper.GetFuelEconomyUnit(vehicleData.IsElectric, vehicleData.UseHours, userConfig.UseMPG, userConfig.UseUKMPG); - bool invertedFuelMileageUnit = fuelEconomyMileageUnit == "l/100km" && preferredFuelMileageUnit == "km/l"; - var mileageData = _gasHelper.GetGasRecordViewModels(gasRecords, userConfig.UseMPG, userConfig.UseUKMPG); - if (year != 0) - { - mileageData.RemoveAll(x => DateTime.Parse(x.Date).Year != year); - } - mileageData.RemoveAll(x => x.MilesPerGallon == default); - var monthlyMileageData = StaticHelper.GetBaseLineCostsNoMonthName(); - monthlyMileageData.AddRange(mileageData.GroupBy(x => x.MonthId).Select(x => new CostForVehicleByMonth - { - MonthId = x.Key, - Cost = x.Average(y => y.MilesPerGallon) - })); - monthlyMileageData = monthlyMileageData.GroupBy(x => x.MonthId).OrderBy(x => x.Key).Select(x => new CostForVehicleByMonth - { - MonthId = x.Key, - MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(x.Key), - Cost = x.Sum(y => y.Cost) - }).ToList(); - if (invertedFuelMileageUnit) - { - foreach (CostForVehicleByMonth monthMileage in monthlyMileageData) - { - if (monthMileage.Cost != default) - { - monthMileage.Cost = 100 / monthMileage.Cost; - } - } - } - var mpgViewModel = new MPGForVehicleByMonth - { - CostData = monthlyMileageData, - Unit = invertedFuelMileageUnit ? preferredFuelMileageUnit : fuelEconomyMileageUnit, - SortedCostData = (userConfig.UseMPG || invertedFuelMileageUnit) ? monthlyMileageData.OrderByDescending(x => x.Cost).ToList() : monthlyMileageData.OrderBy(x => x.Cost).ToList() - }; - return PartialView("_MPGByMonthReport", mpgViewModel); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - public IActionResult GetCostByMonthByVehicle(int vehicleId, List selectedMetrics, int year = 0) - { - List allCosts = StaticHelper.GetBaseLineCosts(); - if (selectedMetrics.Contains(ImportMode.ServiceRecord)) - { - var serviceRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicleId); - allCosts.AddRange(_reportHelper.GetServiceRecordSum(serviceRecords, year)); - } - if (selectedMetrics.Contains(ImportMode.UpgradeRecord)) - { - var upgradeRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicleId); - allCosts.AddRange(_reportHelper.GetUpgradeRecordSum(upgradeRecords, year)); - } - if (selectedMetrics.Contains(ImportMode.GasRecord)) - { - var gasRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicleId); - allCosts.AddRange(_reportHelper.GetGasRecordSum(gasRecords, year)); - } - if (selectedMetrics.Contains(ImportMode.TaxRecord)) - { - var taxRecords = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId); - allCosts.AddRange(_reportHelper.GetTaxRecordSum(taxRecords, year)); - } - if (selectedMetrics.Contains(ImportMode.OdometerRecord)) - { - var odometerRecords = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId); - allCosts.AddRange(_reportHelper.GetOdometerRecordSum(odometerRecords, year)); - } - var groupedRecord = allCosts.GroupBy(x => new { x.MonthName, x.MonthId }).OrderBy(x => x.Key.MonthId).Select(x => new CostForVehicleByMonth - { - MonthName = x.Key.MonthName, - Cost = x.Sum(y => y.Cost), - DistanceTraveled = x.Max(y => y.DistanceTraveled) - }).ToList(); - return PartialView("_GasCostByMonthReport", groupedRecord); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - public IActionResult GetCostByMonthAndYearByVehicle(int vehicleId, List selectedMetrics, int year = 0) - { - List allCosts = StaticHelper.GetBaseLineCosts(); - if (selectedMetrics.Contains(ImportMode.ServiceRecord)) - { - var serviceRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicleId); - allCosts.AddRange(_reportHelper.GetServiceRecordSum(serviceRecords, year, true)); - } - if (selectedMetrics.Contains(ImportMode.UpgradeRecord)) - { - var upgradeRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicleId); - allCosts.AddRange(_reportHelper.GetUpgradeRecordSum(upgradeRecords, year, true)); - } - if (selectedMetrics.Contains(ImportMode.GasRecord)) - { - var gasRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicleId); - allCosts.AddRange(_reportHelper.GetGasRecordSum(gasRecords, year, true)); - } - if (selectedMetrics.Contains(ImportMode.TaxRecord)) - { - var taxRecords = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId); - allCosts.AddRange(_reportHelper.GetTaxRecordSum(taxRecords, year, true)); - } - if (selectedMetrics.Contains(ImportMode.OdometerRecord)) - { - var odometerRecords = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId); - allCosts.AddRange(_reportHelper.GetOdometerRecordSum(odometerRecords, year, true)); - } - var groupedRecord = allCosts.GroupBy(x => new { x.MonthName, x.MonthId, x.Year }).OrderByDescending(x=>x.Key.Year).Select(x => new CostForVehicleByMonth - { - Year = x.Key.Year, - MonthName = x.Key.MonthName, - Cost = x.Sum(y => y.Cost), - DistanceTraveled = x.Max(y => y.DistanceTraveled), - MonthId = x.Key.MonthId - }).ToList(); - var vehicleData = _dataAccess.GetVehicleById(vehicleId); - var userConfig = _config.GetUserConfig(User); - var viewModel = new CostDistanceTableForVehicle { CostData = groupedRecord }; - viewModel.DistanceUnit = vehicleData.UseHours ? "h" : userConfig.UseMPG ? "mi." : "km"; - return PartialView("_CostDistanceTableReport", viewModel); - } - [HttpGet] - public IActionResult GetAdditionalWidgets() - { - var widgets = _fileHelper.GetWidgets(); - return PartialView("_ReportWidgets", widgets); - } - } -} diff --git a/Controllers/Vehicle/ServiceController.cs b/Controllers/Vehicle/ServiceController.cs deleted file mode 100644 index d4ba42c..0000000 --- a/Controllers/Vehicle/ServiceController.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 GetServiceRecordsByVehicleId(int vehicleId) - { - var result = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(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("Service/_ServiceRecords", result); - } - [HttpPost] - public IActionResult SaveServiceRecordToVehicleId(ServiceRecordInput serviceRecord) - { - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), serviceRecord.VehicleId)) - { - return Json(false); - } - if (serviceRecord.Id == default && _config.GetUserConfig(User).EnableAutoOdometerInsert) - { - _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord - { - Date = DateTime.Parse(serviceRecord.Date), - VehicleId = serviceRecord.VehicleId, - Mileage = serviceRecord.Mileage, - Notes = $"Auto Insert From Service Record: {serviceRecord.Description}" - }); - } - //move files from temp. - serviceRecord.Files = serviceRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList(); - if (serviceRecord.Supplies.Any()) - { - serviceRecord.RequisitionHistory.AddRange(RequisitionSupplyRecordsByUsage(serviceRecord.Supplies, DateTime.Parse(serviceRecord.Date), serviceRecord.Description)); - if (serviceRecord.CopySuppliesAttachment) - { - serviceRecord.Files.AddRange(GetSuppliesAttachments(serviceRecord.Supplies)); - } - } - if (serviceRecord.DeletedRequisitionHistory.Any()) - { - _vehicleLogic.RestoreSupplyRecordsByUsage(serviceRecord.DeletedRequisitionHistory, serviceRecord.Description); - } - //push back any reminders - if (serviceRecord.ReminderRecordId.Any()) - { - foreach (int reminderRecordId in serviceRecord.ReminderRecordId) - { - PushbackRecurringReminderRecordWithChecks(reminderRecordId, DateTime.Parse(serviceRecord.Date), serviceRecord.Mileage); - } - } - var result = _serviceRecordDataAccess.SaveServiceRecordToVehicle(serviceRecord.ToServiceRecord()); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGenericRecord(serviceRecord.ToServiceRecord(), serviceRecord.Id == default ? "servicerecord.add" : "servicerecord.update", User.Identity.Name)); - } - return Json(result); - } - [HttpGet] - public IActionResult GetAddServiceRecordPartialView() - { - return PartialView("Service/_ServiceRecordModal", new ServiceRecordInput() { ExtraFields = _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.ServiceRecord).ExtraFields }); - } - [HttpGet] - public IActionResult GetServiceRecordForEditById(int serviceRecordId) - { - var result = _serviceRecordDataAccess.GetServiceRecordById(serviceRecordId); - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId)) - { - return Redirect("/Error/Unauthorized"); - } - //convert to Input object. - var convertedResult = new ServiceRecordInput - { - 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.ServiceRecord).ExtraFields) - }; - return PartialView("Service/_ServiceRecordModal", convertedResult); - } - private bool DeleteServiceRecordWithChecks(int serviceRecordId) - { - var existingRecord = _serviceRecordDataAccess.GetServiceRecordById(serviceRecordId); - //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 = _serviceRecordDataAccess.DeleteServiceRecordById(existingRecord.Id); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGenericRecord(existingRecord, "servicerecord.delete", User.Identity.Name)); - } - return result; - } - [HttpPost] - public IActionResult DeleteServiceRecordById(int serviceRecordId) - { - var result = DeleteServiceRecordWithChecks(serviceRecordId); - return Json(result); - } - } -} diff --git a/Controllers/Vehicle/SupplyController.cs b/Controllers/Vehicle/SupplyController.cs deleted file mode 100644 index 00487dd..0000000 --- a/Controllers/Vehicle/SupplyController.cs +++ /dev/null @@ -1,215 +0,0 @@ -using MotoVaultPro.Filter; -using MotoVaultPro.Helper; -using MotoVaultPro.Models; -using Microsoft.AspNetCore.Mvc; - -namespace MotoVaultPro.Controllers -{ - public partial class VehicleController - { - private List CheckSupplyRecordsAvailability(List supplyUsage) - { - //returns empty string if all supplies are available - var result = new List(); - foreach (SupplyUsage supply in supplyUsage) - { - //get supply record. - var supplyData = _supplyRecordDataAccess.GetSupplyRecordById(supply.SupplyId); - if (supplyData == null) - { - result.Add(new SupplyAvailability { Missing = true }); - } - else - { - result.Add(new SupplyAvailability { Missing = false, Description = supplyData.Description, Required = supply.Quantity, InStock = supplyData.Quantity }); - } - } - return result; - } - private List GetSuppliesAttachments(List supplyUsage) - { - List results = new List(); - foreach (SupplyUsage supply in supplyUsage) - { - var result = _supplyRecordDataAccess.GetSupplyRecordById(supply.SupplyId); - results.AddRange(result.Files); - } - return results; - } - private List RequisitionSupplyRecordsByUsage(List supplyUsage, DateTime dateRequisitioned, string usageDescription) - { - List results = new List(); - foreach (SupplyUsage supply in supplyUsage) - { - //get supply record. - var result = _supplyRecordDataAccess.GetSupplyRecordById(supply.SupplyId); - var unitCost = (result.Quantity != 0) ? result.Cost / result.Quantity : 0; - //deduct quantity used. - result.Quantity -= supply.Quantity; - //deduct cost. - result.Cost -= (supply.Quantity * unitCost); - //check decimal places to ensure that it always has a max of 3 decimal places. - var roundedDecimal = decimal.Round(result.Cost, 3); - if (roundedDecimal != result.Cost) - { - //Too many decimals - result.Cost = roundedDecimal; - } - //create new requisitionrrecord - var requisitionRecord = new SupplyUsageHistory - { - Id = supply.SupplyId, - Date = dateRequisitioned, - Description = usageDescription, - Quantity = supply.Quantity, - Cost = (supply.Quantity * unitCost) - }; - result.RequisitionHistory.Add(requisitionRecord); - //save - _supplyRecordDataAccess.SaveSupplyRecordToVehicle(result); - requisitionRecord.Description = result.Description; //change the name of the description for plan/service/repair/upgrade records - requisitionRecord.PartNumber = result.PartNumber; //populate part number if not displayed in supplies modal. - results.Add(requisitionRecord); - } - return results; - } - - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - public IActionResult GetSupplyRecordsByVehicleId(int vehicleId) - { - var result = _supplyRecordDataAccess.GetSupplyRecordsByVehicleId(vehicleId); - bool _useDescending = _config.GetUserConfig(User).UseDescending; - if (_useDescending) - { - result = result.OrderByDescending(x => x.Date).ToList(); - } - else - { - result = result.OrderBy(x => x.Date).ToList(); - } - return PartialView("Supply/_SupplyRecords", result); - } - [HttpGet] - public IActionResult GetSupplyRecordsForPlanRecordTemplate(int planRecordTemplateId) - { - var viewModel = new SupplyUsageViewModel(); - var planRecordTemplate = _planRecordTemplateDataAccess.GetPlanRecordTemplateById(planRecordTemplateId); - if (planRecordTemplate != default && planRecordTemplate.VehicleId != default) - { - var supplies = _supplyRecordDataAccess.GetSupplyRecordsByVehicleId(planRecordTemplate.VehicleId); - if (_config.GetServerEnableShopSupplies()) - { - supplies.AddRange(_supplyRecordDataAccess.GetSupplyRecordsByVehicleId(0)); // add shop supplies - } - supplies.RemoveAll(x => x.Quantity <= 0); - bool _useDescending = _config.GetUserConfig(User).UseDescending; - if (_useDescending) - { - supplies = supplies.OrderByDescending(x => x.Date).ToList(); - } - else - { - supplies = supplies.OrderBy(x => x.Date).ToList(); - } - viewModel.Supplies = supplies; - viewModel.Usage = planRecordTemplate.Supplies; - } - return PartialView("Supply/_SupplyUsage", viewModel); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - public IActionResult GetSupplyRecordsForRecordsByVehicleId(int vehicleId) - { - var result = _supplyRecordDataAccess.GetSupplyRecordsByVehicleId(vehicleId); - if (_config.GetServerEnableShopSupplies()) - { - result.AddRange(_supplyRecordDataAccess.GetSupplyRecordsByVehicleId(0)); // add shop supplies - } - result.RemoveAll(x => x.Quantity <= 0); - bool _useDescending = _config.GetUserConfig(User).UseDescending; - if (_useDescending) - { - result = result.OrderByDescending(x => x.Date).ToList(); - } - else - { - result = result.OrderBy(x => x.Date).ToList(); - } - var viewModel = new SupplyUsageViewModel - { - Supplies = result - }; - return PartialView("Supply/_SupplyUsage", viewModel); - } - [HttpPost] - public IActionResult SaveSupplyRecordToVehicleId(SupplyRecordInput supplyRecord) - { - //move files from temp. - supplyRecord.Files = supplyRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList(); - var result = _supplyRecordDataAccess.SaveSupplyRecordToVehicle(supplyRecord.ToSupplyRecord()); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromSupplyRecord(supplyRecord.ToSupplyRecord(), supplyRecord.Id == default ? "supplyrecord.add" : "supplyrecord.update", User.Identity.Name)); - } - return Json(result); - } - [HttpGet] - public IActionResult GetAddSupplyRecordPartialView() - { - return PartialView("Supply/_SupplyRecordModal", new SupplyRecordInput() { ExtraFields = _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.SupplyRecord).ExtraFields }); - } - [HttpGet] - public IActionResult GetSupplyRecordForEditById(int supplyRecordId) - { - var result = _supplyRecordDataAccess.GetSupplyRecordById(supplyRecordId); - if (result.RequisitionHistory.Any()) - { - //requisition history when viewed through the supply is always immutable. - result.RequisitionHistory = result.RequisitionHistory.Select(x => new SupplyUsageHistory { Id = default, Cost = x.Cost, Description = x.Description, Date = x.Date, PartNumber = x.PartNumber, Quantity = x.Quantity }).ToList(); - } - //convert to Input object. - var convertedResult = new SupplyRecordInput - { - Id = result.Id, - Cost = result.Cost, - Date = result.Date.ToShortDateString(), - Description = result.Description, - PartNumber = result.PartNumber, - Quantity = result.Quantity, - PartSupplier = result.PartSupplier, - Notes = result.Notes, - VehicleId = result.VehicleId, - Files = result.Files, - Tags = result.Tags, - RequisitionHistory = result.RequisitionHistory, - ExtraFields = StaticHelper.AddExtraFields(result.ExtraFields, _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.SupplyRecord).ExtraFields) - }; - return PartialView("Supply/_SupplyRecordModal", convertedResult); - } - private bool DeleteSupplyRecordWithChecks(int supplyRecordId) - { - var existingRecord = _supplyRecordDataAccess.GetSupplyRecordById(supplyRecordId); - if (existingRecord.VehicleId != default) - { - //security check only if not editing shop supply. - if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId)) - { - return false; - } - } - var result = _supplyRecordDataAccess.DeleteSupplyRecordById(existingRecord.Id); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromSupplyRecord(existingRecord, "supplyrecord.delete", User.Identity.Name)); - } - return result; - } - [HttpPost] - public IActionResult DeleteSupplyRecordById(int supplyRecordId) - { - var result = DeleteSupplyRecordWithChecks(supplyRecordId); - return Json(result); - } - } -} diff --git a/Controllers/Vehicle/TaxController.cs b/Controllers/Vehicle/TaxController.cs deleted file mode 100644 index 44a675f..0000000 --- a/Controllers/Vehicle/TaxController.cs +++ /dev/null @@ -1,122 +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 GetTaxRecordsByVehicleId(int vehicleId) - { - var result = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId); - bool _useDescending = _config.GetUserConfig(User).UseDescending; - if (_useDescending) - { - result = result.OrderByDescending(x => x.Date).ToList(); - } - else - { - result = result.OrderBy(x => x.Date).ToList(); - } - return PartialView("Tax/_TaxRecords", result); - } - - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - public IActionResult CheckRecurringTaxRecords(int vehicleId) - { - try - { - var result = _vehicleLogic.UpdateRecurringTaxes(vehicleId); - return Json(result); - } catch (Exception ex) - { - _logger.LogError(ex.Message); - return Json(false); - } - } - [HttpPost] - public IActionResult SaveTaxRecordToVehicleId(TaxRecordInput taxRecord) - { - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), taxRecord.VehicleId)) - { - return Json(false); - } - //move files from temp. - taxRecord.Files = taxRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList(); - //push back any reminders - if (taxRecord.ReminderRecordId.Any()) - { - foreach (int reminderRecordId in taxRecord.ReminderRecordId) - { - PushbackRecurringReminderRecordWithChecks(reminderRecordId, DateTime.Parse(taxRecord.Date), null); - } - } - var result = _taxRecordDataAccess.SaveTaxRecordToVehicle(taxRecord.ToTaxRecord()); - _vehicleLogic.UpdateRecurringTaxes(taxRecord.VehicleId); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromTaxRecord(taxRecord.ToTaxRecord(), taxRecord.Id == default ? "taxrecord.add" : "taxrecord.update", User.Identity.Name)); - } - return Json(result); - } - [HttpGet] - public IActionResult GetAddTaxRecordPartialView() - { - return PartialView("Tax/_TaxRecordModal", new TaxRecordInput() { ExtraFields = _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.TaxRecord).ExtraFields }); - } - [HttpGet] - public IActionResult GetTaxRecordForEditById(int taxRecordId) - { - var result = _taxRecordDataAccess.GetTaxRecordById(taxRecordId); - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId)) - { - return Redirect("/Error/Unauthorized"); - } - //convert to Input object. - var convertedResult = new TaxRecordInput - { - Id = result.Id, - Cost = result.Cost, - Date = result.Date.ToShortDateString(), - Description = result.Description, - Notes = result.Notes, - VehicleId = result.VehicleId, - IsRecurring = result.IsRecurring, - RecurringInterval = result.RecurringInterval, - CustomMonthInterval = result.CustomMonthInterval, - CustomMonthIntervalUnit = result.CustomMonthIntervalUnit, - Files = result.Files, - Tags = result.Tags, - ExtraFields = StaticHelper.AddExtraFields(result.ExtraFields, _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.TaxRecord).ExtraFields) - }; - return PartialView("Tax/_TaxRecordModal", convertedResult); - } - private bool DeleteTaxRecordWithChecks(int taxRecordId) - { - var existingRecord = _taxRecordDataAccess.GetTaxRecordById(taxRecordId); - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId)) - { - return false; - } - var result = _taxRecordDataAccess.DeleteTaxRecordById(existingRecord.Id); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromTaxRecord(existingRecord, "taxrecord.delete", User.Identity.Name)); - } - return result; - } - [HttpPost] - public IActionResult DeleteTaxRecordById(int taxRecordId) - { - var result = DeleteTaxRecordWithChecks(taxRecordId); - return Json(result); - } - } -} diff --git a/Controllers/Vehicle/UpgradeController.cs b/Controllers/Vehicle/UpgradeController.cs deleted file mode 100644 index 97cd3bb..0000000 --- a/Controllers/Vehicle/UpgradeController.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 GetUpgradeRecordsByVehicleId(int vehicleId) - { - var result = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(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("Upgrade/_UpgradeRecords", result); - } - [HttpPost] - public IActionResult SaveUpgradeRecordToVehicleId(UpgradeRecordInput upgradeRecord) - { - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), upgradeRecord.VehicleId)) - { - return Json(false); - } - if (upgradeRecord.Id == default && _config.GetUserConfig(User).EnableAutoOdometerInsert) - { - _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord - { - Date = DateTime.Parse(upgradeRecord.Date), - VehicleId = upgradeRecord.VehicleId, - Mileage = upgradeRecord.Mileage, - Notes = $"Auto Insert From Upgrade Record: {upgradeRecord.Description}" - }); - } - //move files from temp. - upgradeRecord.Files = upgradeRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList(); - if (upgradeRecord.Supplies.Any()) - { - upgradeRecord.RequisitionHistory.AddRange(RequisitionSupplyRecordsByUsage(upgradeRecord.Supplies, DateTime.Parse(upgradeRecord.Date), upgradeRecord.Description)); - if (upgradeRecord.CopySuppliesAttachment) - { - upgradeRecord.Files.AddRange(GetSuppliesAttachments(upgradeRecord.Supplies)); - } - } - if (upgradeRecord.DeletedRequisitionHistory.Any()) - { - _vehicleLogic.RestoreSupplyRecordsByUsage(upgradeRecord.DeletedRequisitionHistory, upgradeRecord.Description); - } - //push back any reminders - if (upgradeRecord.ReminderRecordId.Any()) - { - foreach (int reminderRecordId in upgradeRecord.ReminderRecordId) - { - PushbackRecurringReminderRecordWithChecks(reminderRecordId, DateTime.Parse(upgradeRecord.Date), upgradeRecord.Mileage); - } - } - var result = _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(upgradeRecord.ToUpgradeRecord()); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGenericRecord(upgradeRecord.ToUpgradeRecord(), upgradeRecord.Id == default ? "upgraderecord.add" : "upgraderecord.update", User.Identity.Name)); - } - return Json(result); - } - [HttpGet] - public IActionResult GetAddUpgradeRecordPartialView() - { - return PartialView("Upgrade/_UpgradeRecordModal", new UpgradeRecordInput() { ExtraFields = _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.UpgradeRecord).ExtraFields }); - } - [HttpGet] - public IActionResult GetUpgradeRecordForEditById(int upgradeRecordId) - { - var result = _upgradeRecordDataAccess.GetUpgradeRecordById(upgradeRecordId); - //security check. - if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId)) - { - return Redirect("/Error/Unauthorized"); - } - //convert to Input object. - var convertedResult = new UpgradeRecordInput - { - 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.UpgradeRecord).ExtraFields) - }; - return PartialView("Upgrade/_UpgradeRecordModal", convertedResult); - } - private bool DeleteUpgradeRecordWithChecks(int upgradeRecordId) - { - var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(upgradeRecordId); - //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 = _upgradeRecordDataAccess.DeleteUpgradeRecordById(existingRecord.Id); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGenericRecord(existingRecord, "upgraderecord.delete", User.Identity.Name)); - } - return result; - } - [HttpPost] - public IActionResult DeleteUpgradeRecordById(int upgradeRecordId) - { - var result = DeleteUpgradeRecordWithChecks(upgradeRecordId); - return Json(result); - } - } -} diff --git a/Controllers/VehicleController.cs b/Controllers/VehicleController.cs deleted file mode 100644 index 9321b43..0000000 --- a/Controllers/VehicleController.cs +++ /dev/null @@ -1,1090 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Filter; -using MotoVaultPro.Helper; -using MotoVaultPro.Logic; -using MotoVaultPro.Models; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using System.Globalization; -using System.Security.Claims; -using System.Text.Json; - -namespace MotoVaultPro.Controllers -{ - [Authorize] - public partial class VehicleController : Controller - { - private readonly ILogger _logger; - private readonly IVehicleDataAccess _dataAccess; - private readonly INoteDataAccess _noteDataAccess; - private readonly IServiceRecordDataAccess _serviceRecordDataAccess; - private readonly IGasRecordDataAccess _gasRecordDataAccess; - private readonly ITaxRecordDataAccess _taxRecordDataAccess; - private readonly IReminderRecordDataAccess _reminderRecordDataAccess; - private readonly IUpgradeRecordDataAccess _upgradeRecordDataAccess; - private readonly ISupplyRecordDataAccess _supplyRecordDataAccess; - private readonly IPlanRecordDataAccess _planRecordDataAccess; - private readonly IPlanRecordTemplateDataAccess _planRecordTemplateDataAccess; - private readonly IOdometerRecordDataAccess _odometerRecordDataAccess; - private readonly IWebHostEnvironment _webEnv; - private readonly IConfigHelper _config; - private readonly IFileHelper _fileHelper; - private readonly IGasHelper _gasHelper; - private readonly IReminderHelper _reminderHelper; - private readonly IReportHelper _reportHelper; - private readonly IUserLogic _userLogic; - private readonly IOdometerLogic _odometerLogic; - private readonly IVehicleLogic _vehicleLogic; - private readonly IExtraFieldDataAccess _extraFieldDataAccess; - - public VehicleController(ILogger logger, - IFileHelper fileHelper, - IGasHelper gasHelper, - IReminderHelper reminderHelper, - IReportHelper reportHelper, - IVehicleDataAccess dataAccess, - INoteDataAccess noteDataAccess, - IServiceRecordDataAccess serviceRecordDataAccess, - IGasRecordDataAccess gasRecordDataAccess, - ITaxRecordDataAccess taxRecordDataAccess, - IReminderRecordDataAccess reminderRecordDataAccess, - IUpgradeRecordDataAccess upgradeRecordDataAccess, - ISupplyRecordDataAccess supplyRecordDataAccess, - IPlanRecordDataAccess planRecordDataAccess, - IPlanRecordTemplateDataAccess planRecordTemplateDataAccess, - IOdometerRecordDataAccess odometerRecordDataAccess, - IExtraFieldDataAccess extraFieldDataAccess, - IUserLogic userLogic, - IOdometerLogic odometerLogic, - IVehicleLogic vehicleLogic, - IWebHostEnvironment webEnv, - IConfigHelper config) - { - _logger = logger; - _dataAccess = dataAccess; - _noteDataAccess = noteDataAccess; - _fileHelper = fileHelper; - _gasHelper = gasHelper; - _reminderHelper = reminderHelper; - _reportHelper = reportHelper; - _serviceRecordDataAccess = serviceRecordDataAccess; - _gasRecordDataAccess = gasRecordDataAccess; - _taxRecordDataAccess = taxRecordDataAccess; - _reminderRecordDataAccess = reminderRecordDataAccess; - _upgradeRecordDataAccess = upgradeRecordDataAccess; - _supplyRecordDataAccess = supplyRecordDataAccess; - _planRecordDataAccess = planRecordDataAccess; - _planRecordTemplateDataAccess = planRecordTemplateDataAccess; - _odometerRecordDataAccess = odometerRecordDataAccess; - _extraFieldDataAccess = extraFieldDataAccess; - _userLogic = userLogic; - _odometerLogic = odometerLogic; - _vehicleLogic = vehicleLogic; - _webEnv = webEnv; - _config = config; - } - private int GetUserID() - { - return int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - public IActionResult Index(int vehicleId) - { - var data = _dataAccess.GetVehicleById(vehicleId); - return View(data); - } - [HttpGet] - public IActionResult AddVehiclePartialView() - { - return PartialView("_VehicleModal", new Vehicle() { ExtraFields = _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.VehicleRecord).ExtraFields }); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpGet] - public IActionResult GetEditVehiclePartialViewById(int vehicleId) - { - var data = _dataAccess.GetVehicleById(vehicleId); - data.ExtraFields = StaticHelper.AddExtraFields(data.ExtraFields, _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.VehicleRecord).ExtraFields); - return PartialView("_VehicleModal", data); - } - [HttpPost] - public IActionResult SaveVehicle(Vehicle vehicleInput) - { - try - { - bool isNewAddition = vehicleInput.Id == default; - if (!isNewAddition) - { - if (!_userLogic.UserCanEditVehicle(GetUserID(), vehicleInput.Id)) - { - return View("401"); - } - } - //move image from temp folder to images folder. - vehicleInput.ImageLocation = _fileHelper.MoveFileFromTemp(vehicleInput.ImageLocation, "images/"); - //save vehicle. - var result = _dataAccess.SaveVehicle(vehicleInput); - if (isNewAddition) - { - _userLogic.AddUserAccessToVehicle(GetUserID(), vehicleInput.Id); - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Created Vehicle {vehicleInput.Year} {vehicleInput.Make} {vehicleInput.Model}({StaticHelper.GetVehicleIdentifier(vehicleInput)})", "vehicle.add", User.Identity.Name, vehicleInput.Id.ToString())); - } - else - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Updated Vehicle {vehicleInput.Year} {vehicleInput.Make} {vehicleInput.Model}({StaticHelper.GetVehicleIdentifier(vehicleInput)})", "vehicle.update", User.Identity.Name, vehicleInput.Id.ToString())); - } - return Json(result); - } - catch (Exception ex) - { - _logger.LogError(ex, "Error Saving Vehicle"); - return Json(false); - } - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - public IActionResult DeleteVehicle(int vehicleId) - { - //Delete all service records, gas records, notes, etc. - var result = _gasRecordDataAccess.DeleteAllGasRecordsByVehicleId(vehicleId) && - _serviceRecordDataAccess.DeleteAllServiceRecordsByVehicleId(vehicleId) && - _taxRecordDataAccess.DeleteAllTaxRecordsByVehicleId(vehicleId) && - _noteDataAccess.DeleteAllNotesByVehicleId(vehicleId) && - _reminderRecordDataAccess.DeleteAllReminderRecordsByVehicleId(vehicleId) && - _upgradeRecordDataAccess.DeleteAllUpgradeRecordsByVehicleId(vehicleId) && - _planRecordDataAccess.DeleteAllPlanRecordsByVehicleId(vehicleId) && - _planRecordTemplateDataAccess.DeleteAllPlanRecordTemplatesByVehicleId(vehicleId) && - _supplyRecordDataAccess.DeleteAllSupplyRecordsByVehicleId(vehicleId) && - _odometerRecordDataAccess.DeleteAllOdometerRecordsByVehicleId(vehicleId) && - _userLogic.DeleteAllAccessToVehicle(vehicleId) && - _dataAccess.DeleteVehicle(vehicleId); - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic(string.Empty, "vehicle.delete", User.Identity.Name, vehicleId.ToString())); - } - return Json(result); - } - [HttpPost] - public IActionResult DuplicateVehicleCollaborators(int sourceVehicleId, int destVehicleId) - { - try - { - //retrieve collaborators for both source and destination vehicle id. - if (_userLogic.UserCanEditVehicle(GetUserID(), sourceVehicleId) && _userLogic.UserCanEditVehicle(GetUserID(), destVehicleId)) - { - var sourceCollaborators = _userLogic.GetCollaboratorsForVehicle(sourceVehicleId).Select(x => x.UserVehicle.UserId).ToList(); - var destCollaborators = _userLogic.GetCollaboratorsForVehicle(destVehicleId).Select(x => x.UserVehicle.UserId).ToList(); - sourceCollaborators.RemoveAll(x => destCollaborators.Contains(x)); - if (sourceCollaborators.Any()) - { - foreach (int collaboratorId in sourceCollaborators) - { - _userLogic.AddUserAccessToVehicle(collaboratorId, destVehicleId); - } - } - else - { - return Json(OperationResponse.Failed("Both vehicles already have identical collaborators")); - } - } - return Json(OperationResponse.Succeed("Collaborators Copied")); - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return Json(OperationResponse.Failed()); - } - } - - #region "Shared Methods" - [HttpPost] - public IActionResult GetFilesPendingUpload(List uploadedFiles) - { - var filesPendingUpload = uploadedFiles.Where(x => x.IsPending).ToList(); - return PartialView("_FilesToUpload", filesPendingUpload); - } - [HttpPost] - [TypeFilter(typeof(CollaboratorFilter))] - public IActionResult SearchRecords(int vehicleId, string searchQuery, bool caseSensitive) - { - List searchResults = new List(); - if (string.IsNullOrWhiteSpace(searchQuery)) - { - return Json(searchResults); - } - if (!caseSensitive) - { - searchQuery = searchQuery.ToLower(); - } - foreach (ImportMode visibleTab in _config.GetUserConfig(User).VisibleTabs) - { - switch (visibleTab) - { - case ImportMode.ServiceRecord: - { - var results = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicleId); - if (caseSensitive) - { - searchResults.AddRange(results.Where(x => JsonSerializer.Serialize(x).Contains(searchQuery)).Select(x => new SearchResult { Id = x.Id, RecordType = ImportMode.ServiceRecord, 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.ServiceRecord, Description = $"{x.Date.ToShortDateString()} - {x.Description}" })); - } - } - break; - case ImportMode.UpgradeRecord: - { - var results = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicleId); - if (caseSensitive) - { - searchResults.AddRange(results.Where(x => JsonSerializer.Serialize(x).Contains(searchQuery)).Select(x => new SearchResult { Id = x.Id, RecordType = ImportMode.UpgradeRecord, 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.UpgradeRecord, Description = $"{x.Date.ToShortDateString()} - {x.Description}" })); - } - } - break; - case ImportMode.TaxRecord: - { - var results = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId); - if (caseSensitive) - { - searchResults.AddRange(results.Where(x => JsonSerializer.Serialize(x).Contains(searchQuery)).Select(x => new SearchResult { Id = x.Id, RecordType = ImportMode.TaxRecord, 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.TaxRecord, Description = $"{x.Date.ToShortDateString()} - {x.Description}" })); - } - } - break; - case ImportMode.SupplyRecord: - { - var results = _supplyRecordDataAccess.GetSupplyRecordsByVehicleId(vehicleId); - if (caseSensitive) - { - searchResults.AddRange(results.Where(x => JsonSerializer.Serialize(x).Contains(searchQuery)).Select(x => new SearchResult { Id = x.Id, RecordType = ImportMode.SupplyRecord, 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.SupplyRecord, Description = $"{x.Date.ToShortDateString()} - {x.Description}" })); - } - } - break; - case ImportMode.PlanRecord: - { - var results = _planRecordDataAccess.GetPlanRecordsByVehicleId(vehicleId); - if (caseSensitive) - { - searchResults.AddRange(results.Where(x => JsonSerializer.Serialize(x).Contains(searchQuery)).Select(x => new SearchResult { Id = x.Id, RecordType = ImportMode.PlanRecord, Description = $"{x.DateCreated.ToShortDateString()} - {x.Description}" })); - } - else - { - searchResults.AddRange(results.Where(x => JsonSerializer.Serialize(x).ToLower().Contains(searchQuery)).Select(x => new SearchResult { Id = x.Id, RecordType = ImportMode.PlanRecord, Description = $"{x.DateCreated.ToShortDateString()} - {x.Description}" })); - } - } - break; - case ImportMode.OdometerRecord: - { - var results = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId); - if (caseSensitive) - { - searchResults.AddRange(results.Where(x => JsonSerializer.Serialize(x).Contains(searchQuery)).Select(x => new SearchResult { Id = x.Id, RecordType = ImportMode.OdometerRecord, Description = $"{x.Date.ToShortDateString()} - {x.Mileage}" })); - } - else - { - searchResults.AddRange(results.Where(x => JsonSerializer.Serialize(x).ToLower().Contains(searchQuery)).Select(x => new SearchResult { Id = x.Id, RecordType = ImportMode.OdometerRecord, Description = $"{x.Date.ToShortDateString()} - {x.Mileage}" })); - } - } - break; - case ImportMode.GasRecord: - { - var results = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicleId); - if (caseSensitive) - { - searchResults.AddRange(results.Where(x => JsonSerializer.Serialize(x).Contains(searchQuery)).Select(x => new SearchResult { Id = x.Id, RecordType = ImportMode.GasRecord, Description = $"{x.Date.ToShortDateString()} - {x.Mileage}" })); - } - else - { - searchResults.AddRange(results.Where(x => JsonSerializer.Serialize(x).ToLower().Contains(searchQuery)).Select(x => new SearchResult { Id = x.Id, RecordType = ImportMode.GasRecord, Description = $"{x.Date.ToShortDateString()} - {x.Mileage}" })); - } - } - break; - case ImportMode.NoteRecord: - { - var results = _noteDataAccess.GetNotesByVehicleId(vehicleId); - if (caseSensitive) - { - searchResults.AddRange(results.Where(x => JsonSerializer.Serialize(x).Contains(searchQuery)).Select(x => new SearchResult { Id = x.Id, RecordType = ImportMode.NoteRecord, Description = $"{x.Description}" })); - } - else - { - searchResults.AddRange(results.Where(x => JsonSerializer.Serialize(x).ToLower().Contains(searchQuery)).Select(x => new SearchResult { Id = x.Id, RecordType = ImportMode.NoteRecord, Description = $"{x.Description}" })); - } - } - break; - case ImportMode.ReminderRecord: - { - var results = _reminderRecordDataAccess.GetReminderRecordsByVehicleId(vehicleId); - if (caseSensitive) - { - searchResults.AddRange(results.Where(x => JsonSerializer.Serialize(x).Contains(searchQuery)).Select(x => new SearchResult { Id = x.Id, RecordType = ImportMode.ReminderRecord, Description = $"{x.Description}" })); - } - else - { - searchResults.AddRange(results.Where(x => JsonSerializer.Serialize(x).ToLower().Contains(searchQuery)).Select(x => new SearchResult { Id = x.Id, RecordType = ImportMode.ReminderRecord, Description = $"{x.Description}" })); - } - } - break; - } - } - return PartialView("_GlobalSearchResult", searchResults); - } - [TypeFilter(typeof(CollaboratorFilter))] - public IActionResult GetMaxMileage(int vehicleId) - { - var result = _vehicleLogic.GetMaxMileage(vehicleId); - return Json(result); - } - public IActionResult MoveRecord(int recordId, ImportMode source, ImportMode destination) - { - var genericRecord = new GenericRecord(); - bool result = false; - //get - switch (source) - { - case ImportMode.ServiceRecord: - genericRecord = _serviceRecordDataAccess.GetServiceRecordById(recordId); - break; - case ImportMode.UpgradeRecord: - genericRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId); - break; - } - //save - switch (destination) - { - case ImportMode.ServiceRecord: - result = _serviceRecordDataAccess.SaveServiceRecordToVehicle(StaticHelper.GenericToServiceRecord(genericRecord)); - break; - case ImportMode.UpgradeRecord: - result = _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(StaticHelper.GenericToUpgradeRecord(genericRecord)); - break; - } - //delete - if (result) - { - switch (source) - { - case ImportMode.ServiceRecord: - _serviceRecordDataAccess.DeleteServiceRecordById(recordId); - break; - case ImportMode.UpgradeRecord: - _upgradeRecordDataAccess.DeleteUpgradeRecordById(recordId); - break; - } - } - return Json(result); - } - public IActionResult MoveRecords(List recordIds, ImportMode source, ImportMode destination) - { - var genericRecord = new GenericRecord(); - bool result = false; - foreach (int recordId in recordIds) - { - //get - switch (source) - { - case ImportMode.ServiceRecord: - genericRecord = _serviceRecordDataAccess.GetServiceRecordById(recordId); - break; - case ImportMode.UpgradeRecord: - genericRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId); - break; - } - //save - switch (destination) - { - case ImportMode.ServiceRecord: - result = _serviceRecordDataAccess.SaveServiceRecordToVehicle(StaticHelper.GenericToServiceRecord(genericRecord)); - break; - case ImportMode.UpgradeRecord: - result = _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(StaticHelper.GenericToUpgradeRecord(genericRecord)); - break; - } - //delete - if (result) - { - switch (source) - { - case ImportMode.ServiceRecord: - _serviceRecordDataAccess.DeleteServiceRecordById(recordId); - break; - case ImportMode.UpgradeRecord: - _upgradeRecordDataAccess.DeleteUpgradeRecordById(recordId); - break; - } - } - } - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Moved multiple {source.ToString()} to {destination.ToString()} - Ids: {string.Join(",", recordIds)}", "bulk.move", User.Identity.Name, string.Empty)); - } - return Json(result); - } - public IActionResult DeleteRecords(List recordIds, ImportMode importMode) - { - bool result = false; - foreach (int recordId in recordIds) - { - switch (importMode) - { - case ImportMode.ServiceRecord: - result = DeleteServiceRecordWithChecks(recordId); - break; - case ImportMode.UpgradeRecord: - result = DeleteUpgradeRecordWithChecks(recordId); - break; - case ImportMode.GasRecord: - result = DeleteGasRecordWithChecks(recordId); - break; - case ImportMode.TaxRecord: - result = DeleteTaxRecordWithChecks(recordId); - break; - case ImportMode.SupplyRecord: - result = DeleteSupplyRecordWithChecks(recordId); - break; - case ImportMode.NoteRecord: - result = DeleteNoteWithChecks(recordId); - break; - case ImportMode.OdometerRecord: - result = DeleteOdometerRecordWithChecks(recordId); - break; - case ImportMode.ReminderRecord: - result = DeleteReminderRecordWithChecks(recordId); - break; - } - } - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Deleted multiple {importMode.ToString()} - Ids: {string.Join(", ", recordIds)}", "bulk.delete", User.Identity.Name, string.Empty)); - } - return Json(result); - } - [TypeFilter(typeof(CollaboratorFilter))] - [HttpPost] - public IActionResult AdjustRecordsOdometer(List recordIds, int vehicleId, ImportMode importMode) - { - bool result = false; - //get vehicle's odometer adjustments - var vehicleData = _dataAccess.GetVehicleById(vehicleId); - foreach (int recordId in recordIds) - { - switch (importMode) - { - case ImportMode.ServiceRecord: - { - var existingRecord = _serviceRecordDataAccess.GetServiceRecordById(recordId); - existingRecord.Mileage += int.Parse(vehicleData.OdometerDifference); - existingRecord.Mileage = decimal.ToInt32(existingRecord.Mileage * decimal.Parse(vehicleData.OdometerMultiplier, NumberStyles.Any)); - result = _serviceRecordDataAccess.SaveServiceRecordToVehicle(existingRecord); - } - break; - case ImportMode.UpgradeRecord: - { - var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId); - existingRecord.Mileage += int.Parse(vehicleData.OdometerDifference); - existingRecord.Mileage = decimal.ToInt32(existingRecord.Mileage * decimal.Parse(vehicleData.OdometerMultiplier, NumberStyles.Any)); - result = _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(existingRecord); - } - break; - case ImportMode.GasRecord: - { - var existingRecord = _gasRecordDataAccess.GetGasRecordById(recordId); - existingRecord.Mileage += int.Parse(vehicleData.OdometerDifference); - existingRecord.Mileage = decimal.ToInt32(existingRecord.Mileage * decimal.Parse(vehicleData.OdometerMultiplier, NumberStyles.Any)); - result = _gasRecordDataAccess.SaveGasRecordToVehicle(existingRecord); - } - break; - case ImportMode.OdometerRecord: - { - var existingRecord = _odometerRecordDataAccess.GetOdometerRecordById(recordId); - existingRecord.Mileage += int.Parse(vehicleData.OdometerDifference); - existingRecord.Mileage = decimal.ToInt32(existingRecord.Mileage * decimal.Parse(vehicleData.OdometerMultiplier, NumberStyles.Any)); - result = _odometerRecordDataAccess.SaveOdometerRecordToVehicle(existingRecord); - } - break; - } - } - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Adjusted odometer for multiple {importMode.ToString()} - Ids: {string.Join(",", recordIds)}", "bulk.odometer.adjust", User.Identity.Name, string.Empty)); - } - return Json(result); - } - [HttpPost] - public IActionResult DuplicateRecords(List recordIds, ImportMode importMode) - { - bool result = false; - foreach (int recordId in recordIds) - { - switch (importMode) - { - case ImportMode.ServiceRecord: - { - var existingRecord = _serviceRecordDataAccess.GetServiceRecordById(recordId); - existingRecord.Id = default; - existingRecord.RequisitionHistory = new List(); - result = _serviceRecordDataAccess.SaveServiceRecordToVehicle(existingRecord); - } - break; - case ImportMode.UpgradeRecord: - { - var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId); - existingRecord.Id = default; - existingRecord.RequisitionHistory = new List(); - result = _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(existingRecord); - } - break; - case ImportMode.GasRecord: - { - var existingRecord = _gasRecordDataAccess.GetGasRecordById(recordId); - existingRecord.Id = default; - result = _gasRecordDataAccess.SaveGasRecordToVehicle(existingRecord); - } - break; - case ImportMode.TaxRecord: - { - var existingRecord = _taxRecordDataAccess.GetTaxRecordById(recordId); - existingRecord.Id = default; - result = _taxRecordDataAccess.SaveTaxRecordToVehicle(existingRecord); - } - break; - case ImportMode.SupplyRecord: - { - var existingRecord = _supplyRecordDataAccess.GetSupplyRecordById(recordId); - existingRecord.Id = default; - existingRecord.RequisitionHistory = new List(); - result = _supplyRecordDataAccess.SaveSupplyRecordToVehicle(existingRecord); - } - break; - case ImportMode.NoteRecord: - { - var existingRecord = _noteDataAccess.GetNoteById(recordId); - existingRecord.Id = default; - result = _noteDataAccess.SaveNoteToVehicle(existingRecord); - } - break; - case ImportMode.OdometerRecord: - { - var existingRecord = _odometerRecordDataAccess.GetOdometerRecordById(recordId); - existingRecord.Id = default; - result = _odometerRecordDataAccess.SaveOdometerRecordToVehicle(existingRecord); - } - break; - case ImportMode.ReminderRecord: - { - var existingRecord = _reminderRecordDataAccess.GetReminderRecordById(recordId); - existingRecord.Id = default; - result = _reminderRecordDataAccess.SaveReminderRecordToVehicle(existingRecord); - } - break; - case ImportMode.PlanRecord: - { - var existingRecord = _planRecordDataAccess.GetPlanRecordById(recordId); - existingRecord.Id = default; - existingRecord.ReminderRecordId = default; - existingRecord.RequisitionHistory = new List(); - result = _planRecordDataAccess.SavePlanRecordToVehicle(existingRecord); - } - break; - } - } - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Duplicated multiple {importMode.ToString()} - Ids: {string.Join(",", recordIds)}", "bulk.duplicate", User.Identity.Name, string.Empty)); - } - return Json(result); - } - [HttpPost] - public IActionResult DuplicateRecordsToOtherVehicles(List recordIds, List vehicleIds, ImportMode importMode) - { - bool result = false; - if (!recordIds.Any() || !vehicleIds.Any()) - { - return Json(result); - } - foreach (int recordId in recordIds) - { - switch (importMode) - { - case ImportMode.ServiceRecord: - { - var existingRecord = _serviceRecordDataAccess.GetServiceRecordById(recordId); - existingRecord.Id = default; - existingRecord.RequisitionHistory = new List(); - foreach (int vehicleId in vehicleIds) - { - existingRecord.VehicleId = vehicleId; - result = _serviceRecordDataAccess.SaveServiceRecordToVehicle(existingRecord); - } - } - break; - case ImportMode.UpgradeRecord: - { - var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId); - existingRecord.Id = default; - existingRecord.RequisitionHistory = new List(); - foreach (int vehicleId in vehicleIds) - { - existingRecord.VehicleId = vehicleId; - result = _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(existingRecord); - } - } - break; - case ImportMode.GasRecord: - { - var existingRecord = _gasRecordDataAccess.GetGasRecordById(recordId); - existingRecord.Id = default; - foreach (int vehicleId in vehicleIds) - { - existingRecord.VehicleId = vehicleId; - result = _gasRecordDataAccess.SaveGasRecordToVehicle(existingRecord); - } - } - break; - case ImportMode.TaxRecord: - { - var existingRecord = _taxRecordDataAccess.GetTaxRecordById(recordId); - existingRecord.Id = default; - foreach (int vehicleId in vehicleIds) - { - existingRecord.VehicleId = vehicleId; - result = _taxRecordDataAccess.SaveTaxRecordToVehicle(existingRecord); - } - } - break; - case ImportMode.SupplyRecord: - { - var existingRecord = _supplyRecordDataAccess.GetSupplyRecordById(recordId); - existingRecord.Id = default; - foreach (int vehicleId in vehicleIds) - { - existingRecord.VehicleId = vehicleId; - result = _supplyRecordDataAccess.SaveSupplyRecordToVehicle(existingRecord); - } - } - break; - case ImportMode.NoteRecord: - { - var existingRecord = _noteDataAccess.GetNoteById(recordId); - existingRecord.Id = default; - foreach (int vehicleId in vehicleIds) - { - existingRecord.VehicleId = vehicleId; - result = _noteDataAccess.SaveNoteToVehicle(existingRecord); - } - } - break; - case ImportMode.OdometerRecord: - { - var existingRecord = _odometerRecordDataAccess.GetOdometerRecordById(recordId); - existingRecord.Id = default; - foreach (int vehicleId in vehicleIds) - { - existingRecord.VehicleId = vehicleId; - result = _odometerRecordDataAccess.SaveOdometerRecordToVehicle(existingRecord); - } - } - break; - case ImportMode.ReminderRecord: - { - var existingRecord = _reminderRecordDataAccess.GetReminderRecordById(recordId); - existingRecord.Id = default; - foreach (int vehicleId in vehicleIds) - { - existingRecord.VehicleId = vehicleId; - result = _reminderRecordDataAccess.SaveReminderRecordToVehicle(existingRecord); - } - } - break; - case ImportMode.PlanRecord: - { - var existingRecord = _planRecordDataAccess.GetPlanRecordById(recordId); - existingRecord.Id = default; - existingRecord.ReminderRecordId = default; - existingRecord.RequisitionHistory = new List(); - foreach (int vehicleId in vehicleIds) - { - existingRecord.VehicleId = vehicleId; - result = _planRecordDataAccess.SavePlanRecordToVehicle(existingRecord); - } - } - break; - } - } - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Duplicated multiple {importMode.ToString()} - Ids: {string.Join(",", recordIds)} - to Vehicle Ids: {string.Join(",", vehicleIds)}", "bulk.duplicate.to.vehicles", User.Identity.Name, string.Join(",", vehicleIds))); - } - return Json(result); - } - [HttpPost] - public IActionResult BulkCreateOdometerRecords(List recordIds, ImportMode importMode) - { - bool result = false; - foreach (int recordId in recordIds) - { - switch (importMode) - { - case ImportMode.ServiceRecord: - { - var existingRecord = _serviceRecordDataAccess.GetServiceRecordById(recordId); - result = _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord - { - Date = existingRecord.Date, - VehicleId = existingRecord.VehicleId, - Mileage = existingRecord.Mileage, - Notes = $"Auto Insert From Service Record: {existingRecord.Description}" - }); - } - break; - case ImportMode.UpgradeRecord: - { - var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId); - result = _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord - { - Date = existingRecord.Date, - VehicleId = existingRecord.VehicleId, - Mileage = existingRecord.Mileage, - Notes = $"Auto Insert From Upgrade Record: {existingRecord.Description}" - }); - } - break; - case ImportMode.GasRecord: - { - var existingRecord = _gasRecordDataAccess.GetGasRecordById(recordId); - result = _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord - { - Date = existingRecord.Date, - VehicleId = existingRecord.VehicleId, - Mileage = existingRecord.Mileage, - Notes = $"Auto Insert From Gas Record. {existingRecord.Notes}" - }); - } - break; - } - } - if (result) - { - StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Created Odometer Records based on {importMode.ToString()} - Ids: {string.Join(",", recordIds)}", "bulk.odometer.insert", User.Identity.Name, string.Empty)); - } - return Json(result); - } - [HttpPost] - public IActionResult GetGenericRecordModal(List recordIds, ImportMode dataType) - { - var extraFields = _extraFieldDataAccess.GetExtraFieldsById((int)dataType).ExtraFields; - return PartialView("_GenericRecordModal", new GenericRecordEditModel() { DataType = dataType, RecordIds = recordIds, EditRecord = new GenericRecord { ExtraFields = extraFields } }); - } - [HttpPost] - public IActionResult EditMultipleRecords(GenericRecordEditModel genericRecordEditModel) - { - var dateIsEdited = genericRecordEditModel.EditRecord.Date != default; - var descriptionIsEdited = !string.IsNullOrWhiteSpace(genericRecordEditModel.EditRecord.Description); - var mileageIsEdited = genericRecordEditModel.EditRecord.Mileage != default; - var costIsEdited = genericRecordEditModel.EditRecord.Cost != default; - var noteIsEdited = !string.IsNullOrWhiteSpace(genericRecordEditModel.EditRecord.Notes); - var tagsIsEdited = genericRecordEditModel.EditRecord.Tags.Any(); - var extraFieldIsEdited = genericRecordEditModel.EditRecord.ExtraFields.Any(); - //handle clear overrides - if (tagsIsEdited && genericRecordEditModel.EditRecord.Tags.Contains("---")) - { - genericRecordEditModel.EditRecord.Tags = new List(); - } - if (noteIsEdited && genericRecordEditModel.EditRecord.Notes == "---") - { - genericRecordEditModel.EditRecord.Notes = ""; - } - bool result = false; - foreach (int recordId in genericRecordEditModel.RecordIds) - { - switch (genericRecordEditModel.DataType) - { - case ImportMode.ServiceRecord: - { - var existingRecord = _serviceRecordDataAccess.GetServiceRecordById(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 = _serviceRecordDataAccess.SaveServiceRecordToVehicle(existingRecord); - } - break; - case ImportMode.UpgradeRecord: - { - var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(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 = _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(existingRecord); - } - break; - } - } - return Json(result); - } - [HttpPost] - public IActionResult PrintRecordStickers(int vehicleId, List recordIds, ImportMode importMode) - { - bool result = false; - if (!recordIds.Any()) - { - return Json(result); - } - var stickerViewModel = new StickerViewModel() { RecordType = importMode }; - if (vehicleId != default) - { - var vehicleData = _dataAccess.GetVehicleById(vehicleId); - if (vehicleData != null && vehicleData.Id != default) - { - stickerViewModel.VehicleData = vehicleData; - } - } - - int recordsAdded = 0; - switch (importMode) - { - case ImportMode.ServiceRecord: - { - foreach (int recordId in recordIds) - { - stickerViewModel.GenericRecords.Add(_serviceRecordDataAccess.GetServiceRecordById(recordId)); - recordsAdded++; - } - - } - break; - case ImportMode.UpgradeRecord: - { - foreach (int recordId in recordIds) - { - stickerViewModel.GenericRecords.Add(_upgradeRecordDataAccess.GetUpgradeRecordById(recordId)); - recordsAdded++; - } - } - break; - case ImportMode.GasRecord: - { - foreach (int recordId in recordIds) - { - var record = _gasRecordDataAccess.GetGasRecordById(recordId); - stickerViewModel.GenericRecords.Add(new GenericRecord - { - Cost = record.Cost, - Date = record.Date, - Notes = record.Notes, - Mileage = record.Mileage, - ExtraFields = record.ExtraFields - }); - recordsAdded++; - } - - } - break; - case ImportMode.TaxRecord: - { - foreach (int recordId in recordIds) - { - var record = _taxRecordDataAccess.GetTaxRecordById(recordId); - stickerViewModel.GenericRecords.Add(new GenericRecord - { - Description = record.Description, - Cost = record.Cost, - Notes = record.Notes, - Date = record.Date, - ExtraFields = record.ExtraFields - }); - recordsAdded++; - } - } - break; - case ImportMode.SupplyRecord: - { - foreach (int recordId in recordIds) - { - var record = _supplyRecordDataAccess.GetSupplyRecordById(recordId); - stickerViewModel.SupplyRecords.Add(record); - recordsAdded++; - } - } - break; - case ImportMode.NoteRecord: - { - foreach (int recordId in recordIds) - { - var record = _noteDataAccess.GetNoteById(recordId); - stickerViewModel.GenericRecords.Add(new GenericRecord - { - Description = record.Description, - Notes = record.NoteText - }); - recordsAdded++; - } - - } - break; - case ImportMode.OdometerRecord: - { - foreach (int recordId in recordIds) - { - var record = _odometerRecordDataAccess.GetOdometerRecordById(recordId); - stickerViewModel.GenericRecords.Add(new GenericRecord - { - Date = record.Date, - Mileage = record.Mileage, - Notes = record.Notes, - ExtraFields = record.ExtraFields - }); - recordsAdded++; - } - - } - break; - case ImportMode.ReminderRecord: - { - foreach (int recordId in recordIds) - { - stickerViewModel.ReminderRecords.Add(_reminderRecordDataAccess.GetReminderRecordById(recordId)); - recordsAdded++; - } - - } - break; - case ImportMode.PlanRecord: - { - foreach (int recordId in recordIds) - { - var record = _planRecordDataAccess.GetPlanRecordById(recordId); - stickerViewModel.GenericRecords.Add(new GenericRecord - { - Description = record.Description, - Cost = record.Cost, - Notes = record.Notes, - Date = record.DateModified, - ExtraFields = record.ExtraFields, - RequisitionHistory = record.RequisitionHistory - }); - recordsAdded++; - } - } - break; - } - if (recordsAdded > 0) - { - return PartialView("_Stickers", stickerViewModel); - } - return Json(result); - } - [HttpPost] - public IActionResult SaveUserColumnPreferences(UserColumnPreference columnPreference) - { - try - { - var userConfig = _config.GetUserConfig(User); - var existingUserColumnPreference = userConfig.UserColumnPreferences.Where(x => x.Tab == columnPreference.Tab); - if (existingUserColumnPreference.Any()) - { - var existingPreference = existingUserColumnPreference.Single(); - existingPreference.VisibleColumns = columnPreference.VisibleColumns; - existingPreference.ColumnOrder = columnPreference.ColumnOrder; - } - else - { - userConfig.UserColumnPreferences.Add(columnPreference); - } - var result = _config.SaveUserConfig(User, userConfig); - return Json(result); - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return Json(false); - } - } - #endregion - } -} diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index e6b9fee..0000000 --- a/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env -WORKDIR /App - -COPY . ./ -ARG TARGETARCH -RUN dotnet restore -a $TARGETARCH -RUN dotnet publish -a $TARGETARCH -c Release -o out - -FROM mcr.microsoft.com/dotnet/aspnet:8.0 -WORKDIR /App -COPY --from=build-env /App/out . -EXPOSE 8080 -CMD ["./MotoVaultPro"] diff --git a/Enum/DashboardMetric.cs b/Enum/DashboardMetric.cs deleted file mode 100644 index 38ee91f..0000000 --- a/Enum/DashboardMetric.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace MotoVaultPro.Models -{ - public enum DashboardMetric - { - Default = 0, - TotalCost = 1, - CostPerMile = 2 - } -} diff --git a/Enum/ExtraFieldType.cs b/Enum/ExtraFieldType.cs deleted file mode 100644 index 1e770f3..0000000 --- a/Enum/ExtraFieldType.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace MotoVaultPro.Models -{ - public enum ExtraFieldType - { - Text = 0, - Number = 1, - Decimal = 2, - Date = 3, - Time = 4, - Location = 5 - } -} diff --git a/Enum/ImportMode.cs b/Enum/ImportMode.cs deleted file mode 100644 index a154170..0000000 --- a/Enum/ImportMode.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace MotoVaultPro.Models -{ - public enum ImportMode - { - ServiceRecord = 0, - GasRecord = 2, - TaxRecord = 3, - UpgradeRecord = 4, - ReminderRecord = 5, - NoteRecord = 6, - SupplyRecord = 7, - Dashboard = 8, - PlanRecord = 9, - OdometerRecord = 10, - VehicleRecord = 11 - } -} diff --git a/Enum/KioskMode.cs b/Enum/KioskMode.cs deleted file mode 100644 index c8ab4c9..0000000 --- a/Enum/KioskMode.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace MotoVaultPro.Models -{ - public enum KioskMode - { - Vehicle = 0, - Plan = 1, - Reminder = 2, - Cycle = 3 - } -} diff --git a/Enum/PlanPriority.cs b/Enum/PlanPriority.cs deleted file mode 100644 index ccf04b4..0000000 --- a/Enum/PlanPriority.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace MotoVaultPro.Models -{ - public enum PlanPriority - { - Critical = 0, - Normal = 1, - Low = 2 - } -} diff --git a/Enum/PlanProgress.cs b/Enum/PlanProgress.cs deleted file mode 100644 index db32273..0000000 --- a/Enum/PlanProgress.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace MotoVaultPro.Models -{ - public enum PlanProgress - { - Backlog = 0, - InProgress = 1, - Testing = 2, - Done = 3 - } -} diff --git a/Enum/ReminderIntervalUnit.cs b/Enum/ReminderIntervalUnit.cs deleted file mode 100644 index 611c579..0000000 --- a/Enum/ReminderIntervalUnit.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace MotoVaultPro.Models -{ - public enum ReminderIntervalUnit - { - Months = 1, - Days = 2 - } -} diff --git a/Enum/ReminderMetric.cs b/Enum/ReminderMetric.cs deleted file mode 100644 index 294b271..0000000 --- a/Enum/ReminderMetric.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace MotoVaultPro.Models -{ - public enum ReminderMetric - { - Date = 0, - Odometer = 1, - Both = 2 - } -} diff --git a/Enum/ReminderMileageInterval.cs b/Enum/ReminderMileageInterval.cs deleted file mode 100644 index e29b91d..0000000 --- a/Enum/ReminderMileageInterval.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace MotoVaultPro.Models -{ - public enum ReminderMileageInterval - { - Other = 0, - FiftyMiles = 50, - OneHundredMiles = 100, - FiveHundredMiles = 500, - OneThousandMiles = 1000, - ThreeThousandMiles = 3000, - FourThousandMiles = 4000, - FiveThousandMiles = 5000, - SevenThousandFiveHundredMiles = 7500, - TenThousandMiles = 10000, - FifteenThousandMiles = 15000, - TwentyThousandMiles = 20000, - ThirtyThousandMiles = 30000, - FortyThousandMiles = 40000, - FiftyThousandMiles = 50000, - SixtyThousandMiles = 60000, - OneHundredThousandMiles = 100000, - OneHundredFiftyThousandMiles = 150000 - } -} diff --git a/Enum/ReminderMonthInterval.cs b/Enum/ReminderMonthInterval.cs deleted file mode 100644 index f8f765a..0000000 --- a/Enum/ReminderMonthInterval.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace MotoVaultPro.Models -{ - public enum ReminderMonthInterval - { - Other = 0, - OneMonth = 1, - ThreeMonths = 3, - SixMonths = 6, - OneYear = 12, - TwoYears = 24, - ThreeYears = 36, - FiveYears = 60 - } -} diff --git a/Enum/ReminderUrgency.cs b/Enum/ReminderUrgency.cs deleted file mode 100644 index 2807ade..0000000 --- a/Enum/ReminderUrgency.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace MotoVaultPro.Models -{ - public enum ReminderUrgency - { - NotUrgent = 0, - Urgent = 1, - VeryUrgent = 2, - PastDue = 3 - } -} diff --git a/Enum/TagFilter.cs b/Enum/TagFilter.cs deleted file mode 100644 index fd95b4a..0000000 --- a/Enum/TagFilter.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace MotoVaultPro.Models -{ - public enum TagFilter - { - Exclude = 0, - IncludeOnly = 1 - } -} diff --git a/External/Implementations/Litedb/ExtraFieldDataAccess.cs b/External/Implementations/Litedb/ExtraFieldDataAccess.cs deleted file mode 100644 index 9ba3d37..0000000 --- a/External/Implementations/Litedb/ExtraFieldDataAccess.cs +++ /dev/null @@ -1,30 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Helper; -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Implementations -{ - public class ExtraFieldDataAccess : IExtraFieldDataAccess - { - private ILiteDBHelper _liteDB { get; set; } - private static string tableName = "extrafields"; - public ExtraFieldDataAccess(ILiteDBHelper liteDB) - { - _liteDB = liteDB; - } - public RecordExtraField GetExtraFieldsById(int importMode) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.FindById(importMode) ?? new RecordExtraField(); - } - public bool SaveExtraFields(RecordExtraField record) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Upsert(record); - db.Checkpoint(); - return true; - } - } -} diff --git a/External/Implementations/Litedb/GasRecordDataAccess.cs b/External/Implementations/Litedb/GasRecordDataAccess.cs deleted file mode 100644 index 2506320..0000000 --- a/External/Implementations/Litedb/GasRecordDataAccess.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 GasRecordDataAccess : IGasRecordDataAccess - { - private ILiteDBHelper _liteDB { get; set; } - private static string tableName = "gasrecords"; - public GasRecordDataAccess(ILiteDBHelper liteDB) - { - _liteDB = liteDB; - } - public List GetGasRecordsByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var gasRecords = table.Find(Query.EQ(nameof(GasRecord.VehicleId), vehicleId)); - return gasRecords.ToList() ?? new List(); - } - public GasRecord GetGasRecordById(int gasRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.FindById(gasRecordId); - } - public bool DeleteGasRecordById(int gasRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Delete(gasRecordId); - db.Checkpoint(); - return true; - } - public bool SaveGasRecordToVehicle(GasRecord gasRecord) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Upsert(gasRecord); - db.Checkpoint(); - return true; - } - public bool DeleteAllGasRecordsByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var gasRecords = table.DeleteMany(Query.EQ(nameof(GasRecord.VehicleId), vehicleId)); - db.Checkpoint(); - return true; - } - } -} diff --git a/External/Implementations/Litedb/NoteDataAccess.cs b/External/Implementations/Litedb/NoteDataAccess.cs deleted file mode 100644 index 0023c82..0000000 --- a/External/Implementations/Litedb/NoteDataAccess.cs +++ /dev/null @@ -1,54 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using MotoVaultPro.Helper; -using LiteDB; - -namespace MotoVaultPro.External.Implementations -{ - public class NoteDataAccess : INoteDataAccess - { - private ILiteDBHelper _liteDB { get; set; } - private static string tableName = "notes"; - public NoteDataAccess(ILiteDBHelper liteDB) - { - _liteDB = liteDB; - } - public List GetNotesByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var noteToReturn = table.Find(Query.EQ(nameof(Note.VehicleId), vehicleId)); - return noteToReturn.ToList() ?? new List(); - } - public Note GetNoteById(int noteId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.FindById(noteId); - } - public bool SaveNoteToVehicle(Note note) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Upsert(note); - db.Checkpoint(); - return true; - } - public bool DeleteNoteById(int noteId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Delete(noteId); - db.Checkpoint(); - return true; - } - public bool DeleteAllNotesByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var notes = table.DeleteMany(Query.EQ(nameof(Note.VehicleId), vehicleId)); - db.Checkpoint(); - return true; - } - } -} diff --git a/External/Implementations/Litedb/OdometerRecordDataAccess.cs b/External/Implementations/Litedb/OdometerRecordDataAccess.cs deleted file mode 100644 index 3653308..0000000 --- a/External/Implementations/Litedb/OdometerRecordDataAccess.cs +++ /dev/null @@ -1,54 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using MotoVaultPro.Helper; -using LiteDB; - -namespace MotoVaultPro.External.Implementations -{ - public class OdometerRecordDataAccess : IOdometerRecordDataAccess - { - private ILiteDBHelper _liteDB { get; set; } - private static string tableName = "odometerrecords"; - public OdometerRecordDataAccess(ILiteDBHelper liteDB) - { - _liteDB = liteDB; - } - public List GetOdometerRecordsByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var odometerRecords = table.Find(Query.EQ(nameof(OdometerRecord.VehicleId), vehicleId)); - return odometerRecords.ToList() ?? new List(); - } - public OdometerRecord GetOdometerRecordById(int odometerRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.FindById(odometerRecordId); - } - public bool DeleteOdometerRecordById(int odometerRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Delete(odometerRecordId); - db.Checkpoint(); - return true; - } - public bool SaveOdometerRecordToVehicle(OdometerRecord odometerRecord) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Upsert(odometerRecord); - db.Checkpoint(); - return true; - } - public bool DeleteAllOdometerRecordsByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var odometerRecords = table.DeleteMany(Query.EQ(nameof(OdometerRecord.VehicleId), vehicleId)); - db.Checkpoint(); - return true; - } - } -} diff --git a/External/Implementations/Litedb/PlanRecordDataAccess.cs b/External/Implementations/Litedb/PlanRecordDataAccess.cs deleted file mode 100644 index d51b40f..0000000 --- a/External/Implementations/Litedb/PlanRecordDataAccess.cs +++ /dev/null @@ -1,54 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using MotoVaultPro.Helper; -using LiteDB; - -namespace MotoVaultPro.External.Implementations -{ - public class PlanRecordDataAccess : IPlanRecordDataAccess - { - private ILiteDBHelper _liteDB { get; set; } - private static string tableName = "planrecords"; - public PlanRecordDataAccess(ILiteDBHelper liteDB) - { - _liteDB = liteDB; - } - public List GetPlanRecordsByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var planRecords = table.Find(Query.EQ(nameof(PlanRecord.VehicleId), vehicleId)); - return planRecords.ToList() ?? new List(); - } - public PlanRecord GetPlanRecordById(int planRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.FindById(planRecordId); - } - public bool DeletePlanRecordById(int planRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Delete(planRecordId); - db.Checkpoint(); - return true; - } - public bool SavePlanRecordToVehicle(PlanRecord planRecord) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Upsert(planRecord); - db.Checkpoint(); - return true; - } - public bool DeleteAllPlanRecordsByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var planRecords = table.DeleteMany(Query.EQ(nameof(PlanRecord.VehicleId), vehicleId)); - db.Checkpoint(); - return true; - } - } -} diff --git a/External/Implementations/Litedb/PlanRecordTemplateDataAccess.cs b/External/Implementations/Litedb/PlanRecordTemplateDataAccess.cs deleted file mode 100644 index 35b3389..0000000 --- a/External/Implementations/Litedb/PlanRecordTemplateDataAccess.cs +++ /dev/null @@ -1,54 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using MotoVaultPro.Helper; -using LiteDB; - -namespace MotoVaultPro.External.Implementations -{ - public class PlanRecordTemplateDataAccess : IPlanRecordTemplateDataAccess - { - private ILiteDBHelper _liteDB { get; set; } - private static string tableName = "planrecordtemplates"; - public PlanRecordTemplateDataAccess(ILiteDBHelper liteDB) - { - _liteDB = liteDB; - } - public List GetPlanRecordTemplatesByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var planRecords = table.Find(Query.EQ(nameof(PlanRecordInput.VehicleId), vehicleId)); - return planRecords.ToList() ?? new List(); - } - public PlanRecordInput GetPlanRecordTemplateById(int planRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.FindById(planRecordId); - } - public bool DeletePlanRecordTemplateById(int planRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Delete(planRecordId); - db.Checkpoint(); - return true; - } - public bool SavePlanRecordTemplateToVehicle(PlanRecordInput planRecord) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Upsert(planRecord); - db.Checkpoint(); - return true; - } - public bool DeleteAllPlanRecordTemplatesByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var planRecords = table.DeleteMany(Query.EQ(nameof(PlanRecordInput.VehicleId), vehicleId)); - db.Checkpoint(); - return true; - } - } -} diff --git a/External/Implementations/Litedb/ReminderRecordDataAccess.cs b/External/Implementations/Litedb/ReminderRecordDataAccess.cs deleted file mode 100644 index 7b5f567..0000000 --- a/External/Implementations/Litedb/ReminderRecordDataAccess.cs +++ /dev/null @@ -1,54 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using MotoVaultPro.Helper; -using LiteDB; - -namespace MotoVaultPro.External.Implementations -{ - public class ReminderRecordDataAccess : IReminderRecordDataAccess - { - private ILiteDBHelper _liteDB { get; set; } - private static string tableName = "reminderrecords"; - public ReminderRecordDataAccess(ILiteDBHelper liteDB) - { - _liteDB = liteDB; - } - public List GetReminderRecordsByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var reminderRecords = table.Find(Query.EQ(nameof(ReminderRecord.VehicleId), vehicleId)); - return reminderRecords.ToList() ?? new List(); - } - public ReminderRecord GetReminderRecordById(int reminderRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.FindById(reminderRecordId); - } - public bool DeleteReminderRecordById(int reminderRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Delete(reminderRecordId); - db.Checkpoint(); - return true; - } - public bool SaveReminderRecordToVehicle(ReminderRecord reminderRecord) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Upsert(reminderRecord); - db.Checkpoint(); - return true; - } - public bool DeleteAllReminderRecordsByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var reminderRecords = table.DeleteMany(Query.EQ(nameof(ReminderRecord.VehicleId), vehicleId)); - db.Checkpoint(); - return true; - } - } -} diff --git a/External/Implementations/Litedb/ServiceRecordDataAccess.cs b/External/Implementations/Litedb/ServiceRecordDataAccess.cs deleted file mode 100644 index bdd291d..0000000 --- a/External/Implementations/Litedb/ServiceRecordDataAccess.cs +++ /dev/null @@ -1,54 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using MotoVaultPro.Helper; -using LiteDB; - -namespace MotoVaultPro.External.Implementations -{ - public class ServiceRecordDataAccess : IServiceRecordDataAccess - { - private ILiteDBHelper _liteDB { get; set; } - private static string tableName = "servicerecords"; - public ServiceRecordDataAccess(ILiteDBHelper liteDB) - { - _liteDB = liteDB; - } - public List GetServiceRecordsByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var serviceRecords = table.Find(Query.EQ(nameof(ServiceRecord.VehicleId), vehicleId)); - return serviceRecords.ToList() ?? new List(); - } - public ServiceRecord GetServiceRecordById(int serviceRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.FindById(serviceRecordId); - } - public bool DeleteServiceRecordById(int serviceRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Delete(serviceRecordId); - db.Checkpoint(); - return true; - } - public bool SaveServiceRecordToVehicle(ServiceRecord serviceRecord) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Upsert(serviceRecord); - db.Checkpoint(); - return true; - } - public bool DeleteAllServiceRecordsByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var serviceRecords = table.DeleteMany(Query.EQ(nameof(ServiceRecord.VehicleId), vehicleId)); - db.Checkpoint(); - return true; - } - } -} diff --git a/External/Implementations/Litedb/SupplyRecordDataAccess.cs b/External/Implementations/Litedb/SupplyRecordDataAccess.cs deleted file mode 100644 index 6fdb27e..0000000 --- a/External/Implementations/Litedb/SupplyRecordDataAccess.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 SupplyRecordDataAccess : ISupplyRecordDataAccess - { - private ILiteDBHelper _liteDB { get; set; } - private static string tableName = "supplyrecords"; - public SupplyRecordDataAccess(ILiteDBHelper liteDB) - { - _liteDB = liteDB; - } - public List GetSupplyRecordsByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var supplyRecords = table.Find(Query.EQ(nameof(SupplyRecord.VehicleId), vehicleId)); - return supplyRecords.ToList() ?? new List(); - } - public SupplyRecord GetSupplyRecordById(int supplyRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.FindById(supplyRecordId); - } - public bool DeleteSupplyRecordById(int supplyRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Delete(supplyRecordId); - db.Checkpoint(); - return true; - } - public bool SaveSupplyRecordToVehicle(SupplyRecord supplyRecord) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Upsert(supplyRecord); - db.Checkpoint(); - return true; - } - public bool DeleteAllSupplyRecordsByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var supplyRecords = table.DeleteMany(Query.EQ(nameof(SupplyRecord.VehicleId), vehicleId)); - db.Checkpoint(); - return true; - } - } -} diff --git a/External/Implementations/Litedb/TaxRecordDataAccess.cs b/External/Implementations/Litedb/TaxRecordDataAccess.cs deleted file mode 100644 index c6f4235..0000000 --- a/External/Implementations/Litedb/TaxRecordDataAccess.cs +++ /dev/null @@ -1,54 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using MotoVaultPro.Helper; -using LiteDB; - -namespace MotoVaultPro.External.Implementations -{ - public class TaxRecordDataAccess : ITaxRecordDataAccess - { - private ILiteDBHelper _liteDB { get; set; } - private static string tableName = "taxrecords"; - public TaxRecordDataAccess(ILiteDBHelper liteDB) - { - _liteDB = liteDB; - } - public List GetTaxRecordsByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var taxRecords = table.Find(Query.EQ(nameof(TaxRecord.VehicleId), vehicleId)); - return taxRecords.ToList() ?? new List(); - } - public TaxRecord GetTaxRecordById(int taxRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.FindById(taxRecordId); - } - public bool DeleteTaxRecordById(int taxRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Delete(taxRecordId); - db.Checkpoint(); - return true; - } - public bool SaveTaxRecordToVehicle(TaxRecord taxRecord) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Upsert(taxRecord); - db.Checkpoint(); - return true; - } - public bool DeleteAllTaxRecordsByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var taxRecords = table.DeleteMany(Query.EQ(nameof(TaxRecord.VehicleId), vehicleId)); - db.Checkpoint(); - return true; - } - } -} diff --git a/External/Implementations/Litedb/TokenRecordDataAccess.cs b/External/Implementations/Litedb/TokenRecordDataAccess.cs deleted file mode 100644 index c3cbdcc..0000000 --- a/External/Implementations/Litedb/TokenRecordDataAccess.cs +++ /dev/null @@ -1,53 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Helper; -using MotoVaultPro.Models; -using LiteDB; - -namespace MotoVaultPro.External.Implementations -{ - public class TokenRecordDataAccess : ITokenRecordDataAccess - { - private ILiteDBHelper _liteDB { get; set; } - private static string tableName = "tokenrecords"; - public TokenRecordDataAccess(ILiteDBHelper liteDB) - { - _liteDB = liteDB; - } - public List GetTokens() - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.FindAll().ToList(); - } - public Token GetTokenRecordByBody(string tokenBody) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var tokenRecord = table.FindOne(Query.EQ(nameof(Token.Body), tokenBody)); - return tokenRecord ?? new Token(); - } - public Token GetTokenRecordByEmailAddress(string emailAddress) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var tokenRecord = table.FindOne(Query.EQ(nameof(Token.EmailAddress), emailAddress)); - return tokenRecord ?? new Token(); - } - public bool CreateNewToken(Token token) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Insert(token); - db.Checkpoint(); - return true; - } - public bool DeleteToken(int tokenId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Delete(tokenId); - db.Checkpoint(); - return true; - } - } -} \ No newline at end of file diff --git a/External/Implementations/Litedb/UpgradeRecordDataAccess.cs b/External/Implementations/Litedb/UpgradeRecordDataAccess.cs deleted file mode 100644 index 086a44c..0000000 --- a/External/Implementations/Litedb/UpgradeRecordDataAccess.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 UpgradeRecordDataAccess : IUpgradeRecordDataAccess - { - private ILiteDBHelper _liteDB { get; set; } - public UpgradeRecordDataAccess(ILiteDBHelper liteDB) - { - _liteDB = liteDB; - } - private static string tableName = "upgraderecords"; - public List GetUpgradeRecordsByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var upgradeRecords = table.Find(Query.EQ(nameof(UpgradeRecord.VehicleId), vehicleId)); - return upgradeRecords.ToList() ?? new List(); - } - public UpgradeRecord GetUpgradeRecordById(int upgradeRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.FindById(upgradeRecordId); - } - public bool DeleteUpgradeRecordById(int upgradeRecordId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Delete(upgradeRecordId); - db.Checkpoint(); - return true; - } - public bool SaveUpgradeRecordToVehicle(UpgradeRecord upgradeRecord) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Upsert(upgradeRecord); - db.Checkpoint(); - return true; - } - public bool DeleteAllUpgradeRecordsByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var upgradeRecords = table.DeleteMany(Query.EQ(nameof(UpgradeRecord.VehicleId), vehicleId)); - db.Checkpoint(); - return true; - } - } -} diff --git a/External/Implementations/Litedb/UserAccessDataAcces.cs b/External/Implementations/Litedb/UserAccessDataAcces.cs deleted file mode 100644 index 404e0c9..0000000 --- a/External/Implementations/Litedb/UserAccessDataAcces.cs +++ /dev/null @@ -1,81 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Helper; -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Implementations -{ - public class UserAccessDataAccess : IUserAccessDataAccess - { - private ILiteDBHelper _liteDB { get; set; } - private static string tableName = "useraccessrecords"; - public UserAccessDataAccess(ILiteDBHelper liteDB) - { - _liteDB = liteDB; - } - /// - /// Gets a list of vehicles user have access to. - /// - /// - /// - public List GetUserAccessByUserId(int userId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.Find(x => x.Id.UserId == userId).ToList(); - } - public UserAccess GetUserAccessByVehicleAndUserId(int userId, int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.Find(x => x.Id.UserId == userId && x.Id.VehicleId == vehicleId).FirstOrDefault(); - } - public List GetUserAccessByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.Find(x => x.Id.VehicleId == vehicleId).ToList(); - } - public bool SaveUserAccess(UserAccess userAccess) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Upsert(userAccess); - db.Checkpoint(); - return true; - } - public bool DeleteUserAccess(int userId, int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.DeleteMany(x => x.Id.UserId == userId && x.Id.VehicleId == vehicleId); - db.Checkpoint(); - return true; - } - /// - /// Delete all access records when a vehicle is deleted. - /// - /// - /// - public bool DeleteAllAccessRecordsByVehicleId(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.DeleteMany(x => x.Id.VehicleId == vehicleId); - db.Checkpoint(); - return true; - } - /// - /// Delee all access records when a user is deleted. - /// - /// - /// - public bool DeleteAllAccessRecordsByUserId(int userId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.DeleteMany(x => x.Id.UserId == userId); - db.Checkpoint(); - return true; - } - } -} \ No newline at end of file diff --git a/External/Implementations/Litedb/UserConfigDataAccess.cs b/External/Implementations/Litedb/UserConfigDataAccess.cs deleted file mode 100644 index 0bd53ad..0000000 --- a/External/Implementations/Litedb/UserConfigDataAccess.cs +++ /dev/null @@ -1,38 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using MotoVaultPro.Helper; - -namespace MotoVaultPro.External.Implementations -{ - public class UserConfigDataAccess : IUserConfigDataAccess - { - private ILiteDBHelper _liteDB { get; set; } - private static string tableName = "userconfigrecords"; - public UserConfigDataAccess(ILiteDBHelper liteDB) - { - _liteDB = liteDB; - } - public UserConfigData GetUserConfig(int userId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.FindById(userId); - } - public bool SaveUserConfig(UserConfigData userConfigData) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Upsert(userConfigData); - db.Checkpoint(); - return true; - } - public bool DeleteUserConfig(int userId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Delete(userId); - db.Checkpoint(); - return true; - } - } -} diff --git a/External/Implementations/Litedb/UserRecordDataAccess.cs b/External/Implementations/Litedb/UserRecordDataAccess.cs deleted file mode 100644 index 8159aa7..0000000 --- a/External/Implementations/Litedb/UserRecordDataAccess.cs +++ /dev/null @@ -1,60 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using LiteDB; -using MotoVaultPro.Helper; - -namespace MotoVaultPro.External.Implementations -{ - public class UserRecordDataAccess : IUserRecordDataAccess - { - private ILiteDBHelper _liteDB { get; set; } - private static string tableName = "userrecords"; - public UserRecordDataAccess(ILiteDBHelper liteDB) - { - _liteDB = liteDB; - } - public List GetUsers() - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.FindAll().ToList(); - } - public UserData GetUserRecordByUserName(string userName) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var userRecord = table.FindOne(Query.EQ(nameof(UserData.UserName), userName)); - return userRecord ?? new UserData(); - } - public UserData GetUserRecordByEmailAddress(string emailAddress) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var userRecord = table.FindOne(Query.EQ(nameof(UserData.EmailAddress), emailAddress)); - return userRecord ?? new UserData(); - } - public UserData GetUserRecordById(int userId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var userRecord = table.FindById(userId); - return userRecord ?? new UserData(); - } - public bool SaveUserRecord(UserData userRecord) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Upsert(userRecord); - db.Checkpoint(); - return true; - } - public bool DeleteUserRecord(int userId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - table.Delete(userId); - db.Checkpoint(); - return true; - } - } -} \ No newline at end of file diff --git a/External/Implementations/Litedb/VehicleDataAccess.cs b/External/Implementations/Litedb/VehicleDataAccess.cs deleted file mode 100644 index f8bd00d..0000000 --- a/External/Implementations/Litedb/VehicleDataAccess.cs +++ /dev/null @@ -1,44 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Helper; -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Implementations -{ - public class VehicleDataAccess : IVehicleDataAccess - { - private ILiteDBHelper _liteDB { get; set; } - private static string tableName = "vehicles"; - public VehicleDataAccess(ILiteDBHelper liteDB) - { - _liteDB = liteDB; - } - public bool SaveVehicle(Vehicle vehicle) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var result = table.Upsert(vehicle); - db.Checkpoint(); - return true; - } - public bool DeleteVehicle(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - var result = table.Delete(vehicleId); - db.Checkpoint(); - return result; - } - public List GetVehicles() - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.FindAll().ToList(); - } - public Vehicle GetVehicleById(int vehicleId) - { - var db = _liteDB.GetLiteDB(); - var table = db.GetCollection(tableName); - return table.FindById(vehicleId); - } - } -} diff --git a/External/Implementations/Postgres/ExtraFieldDataAccess.cs b/External/Implementations/Postgres/ExtraFieldDataAccess.cs deleted file mode 100644 index cdb13d9..0000000 --- a/External/Implementations/Postgres/ExtraFieldDataAccess.cs +++ /dev/null @@ -1,76 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using Npgsql; -using System.Text.Json; - -namespace MotoVaultPro.External.Implementations -{ - public class PGExtraFieldDataAccess : IExtraFieldDataAccess - { - private NpgsqlDataSource pgDataSource; - private readonly ILogger _logger; - private static string tableName = "extrafields"; - public PGExtraFieldDataAccess(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 primary key, data jsonb not null)"; - using (var ctext = pgDataSource.CreateCommand(initCMD)) - { - ctext.ExecuteNonQuery(); - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - } - } - public RecordExtraField GetExtraFieldsById(int importMode) - { - try - { - string cmd = $"SELECT data FROM app.{tableName} WHERE id = @id"; - var results = new RecordExtraField(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", importMode); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - RecordExtraField result = JsonSerializer.Deserialize(reader["data"] as string); - results = result; - } - } - return results; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new RecordExtraField(); - } - } - public bool SaveExtraFields(RecordExtraField record) - { - try - { - var existingRecord = GetExtraFieldsById(record.Id); - string cmd = $"INSERT INTO app.{tableName} (id, data) VALUES(@id, CAST(@data AS jsonb)) ON CONFLICT(id) DO UPDATE SET data = CAST(@data AS jsonb)"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", record.Id); - ctext.Parameters.AddWithValue("data", JsonSerializer.Serialize(record)); - return ctext.ExecuteNonQuery() > 0; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - } -} diff --git a/External/Implementations/Postgres/GasRecordDataAccess.cs b/External/Implementations/Postgres/GasRecordDataAccess.cs deleted file mode 100644 index e705c54..0000000 --- a/External/Implementations/Postgres/GasRecordDataAccess.cs +++ /dev/null @@ -1,160 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using Npgsql; -using System.Text.Json; - -namespace MotoVaultPro.External.Implementations -{ - public class PGGasRecordDataAccess: IGasRecordDataAccess - { - private NpgsqlDataSource pgDataSource; - private readonly ILogger _logger; - private static string tableName = "gasrecords"; - public PGGasRecordDataAccess(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 GetGasRecordsByVehicleId(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()) - { - GasRecord gasRecord = JsonSerializer.Deserialize(reader["data"] as string); - results.Add(gasRecord); - } - } - return results; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new List(); - } - } - public GasRecord GetGasRecordById(int gasRecordId) - { - try - { - string cmd = $"SELECT data FROM app.{tableName} WHERE id = @id"; - var result = new GasRecord(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", gasRecordId); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - GasRecord gasRecord = JsonSerializer.Deserialize(reader["data"] as string); - result = gasRecord; - } - } - return result; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new GasRecord(); - } - } - public bool DeleteGasRecordById(int gasRecordId) - { - try - { - string cmd = $"DELETE FROM app.{tableName} WHERE id = @id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", gasRecordId); - return ctext.ExecuteNonQuery() > 0; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool SaveGasRecordToVehicle(GasRecord gasRecord) - { - try - { - if (gasRecord.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", gasRecord.VehicleId); - ctext.Parameters.AddWithValue("data", "{}"); - gasRecord.Id = Convert.ToInt32(ctext.ExecuteScalar()); - //update json data - if (gasRecord.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(gasRecord); - ctextU.Parameters.AddWithValue("id", gasRecord.Id); - ctextU.Parameters.AddWithValue("data", serializedData); - return ctextU.ExecuteNonQuery() > 0; - } - } - return gasRecord.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(gasRecord); - ctext.Parameters.AddWithValue("id", gasRecord.Id); - ctext.Parameters.AddWithValue("data", serializedData); - return ctext.ExecuteNonQuery() > 0; - } - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool DeleteAllGasRecordsByVehicleId(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/Implementations/Postgres/NoteDataAccess.cs b/External/Implementations/Postgres/NoteDataAccess.cs deleted file mode 100644 index 47f647b..0000000 --- a/External/Implementations/Postgres/NoteDataAccess.cs +++ /dev/null @@ -1,154 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using Npgsql; -using System.Text.Json; - -namespace MotoVaultPro.External.Implementations -{ - public class PGNoteDataAccess: INoteDataAccess - { - private NpgsqlDataSource pgDataSource; - private readonly ILogger _logger; - private static string tableName = "notes"; - public PGNoteDataAccess(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 GetNotesByVehicleId(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()) - { - Note note = JsonSerializer.Deserialize(reader["data"] as string); - results.Add(note); - } - } - return results; - } catch (Exception ex) - { - _logger.LogError(ex.Message); - return new List(); - } - } - public Note GetNoteById(int noteId) - { - try - { - string cmd = $"SELECT data FROM app.{tableName} WHERE id = @id"; - var result = new Note(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", noteId); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - Note note = JsonSerializer.Deserialize(reader["data"] as string); - result = note; - } - } - return result; - } catch (Exception ex) - { - _logger.LogError(ex.Message); - return new Note(); - } - } - public bool SaveNoteToVehicle(Note note) - { - try - { - if (note.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", note.VehicleId); - ctext.Parameters.AddWithValue("data", "{}"); - note.Id = Convert.ToInt32(ctext.ExecuteScalar()); - //update json data - if (note.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(note); - ctextU.Parameters.AddWithValue("id", note.Id); - ctextU.Parameters.AddWithValue("data", serializedData); - return ctextU.ExecuteNonQuery() > 0; - } - } - return note.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(note); - ctext.Parameters.AddWithValue("id", note.Id); - ctext.Parameters.AddWithValue("data", serializedData); - return ctext.ExecuteNonQuery() > 0; - } - } - } catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool DeleteNoteById(int noteId) - { - try - { - string cmd = $"DELETE FROM app.{tableName} WHERE id = @id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", noteId); - return ctext.ExecuteNonQuery() > 0; - } - } catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool DeleteAllNotesByVehicleId(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/Implementations/Postgres/OdometerRecordDataAccess.cs b/External/Implementations/Postgres/OdometerRecordDataAccess.cs deleted file mode 100644 index bc38142..0000000 --- a/External/Implementations/Postgres/OdometerRecordDataAccess.cs +++ /dev/null @@ -1,160 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using Npgsql; -using System.Text.Json; - -namespace MotoVaultPro.External.Implementations -{ - public class PGOdometerRecordDataAccess : IOdometerRecordDataAccess - { - private NpgsqlDataSource pgDataSource; - private readonly ILogger _logger; - private static string tableName = "odometerrecords"; - public PGOdometerRecordDataAccess(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 GetOdometerRecordsByVehicleId(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()) - { - OdometerRecord odometerRecord = JsonSerializer.Deserialize(reader["data"] as string); - results.Add(odometerRecord); - } - } - return results; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new List(); - } - } - public OdometerRecord GetOdometerRecordById(int odometerRecordId) - { - try - { - string cmd = $"SELECT data FROM app.{tableName} WHERE id = @id"; - var result = new OdometerRecord(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", odometerRecordId); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - OdometerRecord odometerRecord = JsonSerializer.Deserialize(reader["data"] as string); - result = odometerRecord; - } - } - return result; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new OdometerRecord(); - } - } - public bool DeleteOdometerRecordById(int odometerRecordId) - { - try - { - string cmd = $"DELETE FROM app.{tableName} WHERE id = @id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", odometerRecordId); - return ctext.ExecuteNonQuery() > 0; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool SaveOdometerRecordToVehicle(OdometerRecord odometerRecord) - { - try - { - if (odometerRecord.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", odometerRecord.VehicleId); - ctext.Parameters.AddWithValue("data", "{}"); - odometerRecord.Id = Convert.ToInt32(ctext.ExecuteScalar()); - //update json data - if (odometerRecord.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(odometerRecord); - ctextU.Parameters.AddWithValue("id", odometerRecord.Id); - ctextU.Parameters.AddWithValue("data", serializedData); - return ctextU.ExecuteNonQuery() > 0; - } - } - return odometerRecord.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(odometerRecord); - ctext.Parameters.AddWithValue("id", odometerRecord.Id); - ctext.Parameters.AddWithValue("data", serializedData); - return ctext.ExecuteNonQuery() > 0; - } - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool DeleteAllOdometerRecordsByVehicleId(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/Implementations/Postgres/PlanRecordDataAccess.cs b/External/Implementations/Postgres/PlanRecordDataAccess.cs deleted file mode 100644 index 7c27583..0000000 --- a/External/Implementations/Postgres/PlanRecordDataAccess.cs +++ /dev/null @@ -1,160 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using Npgsql; -using System.Text.Json; - -namespace MotoVaultPro.External.Implementations -{ - public class PGPlanRecordDataAccess : IPlanRecordDataAccess - { - private NpgsqlDataSource pgDataSource; - private readonly ILogger _logger; - private static string tableName = "planrecords"; - public PGPlanRecordDataAccess(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 GetPlanRecordsByVehicleId(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()) - { - PlanRecord planRecord = JsonSerializer.Deserialize(reader["data"] as string); - results.Add(planRecord); - } - } - return results; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new List(); - } - } - public PlanRecord GetPlanRecordById(int planRecordId) - { - try - { - string cmd = $"SELECT data FROM app.{tableName} WHERE id = @id"; - var result = new PlanRecord(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", planRecordId); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - PlanRecord planRecord = JsonSerializer.Deserialize(reader["data"] as string); - result = planRecord; - } - } - return result; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new PlanRecord(); - } - } - public bool DeletePlanRecordById(int planRecordId) - { - try - { - string cmd = $"DELETE FROM app.{tableName} WHERE id = @id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", planRecordId); - return ctext.ExecuteNonQuery() > 0; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool SavePlanRecordToVehicle(PlanRecord planRecord) - { - try - { - if (planRecord.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", planRecord.VehicleId); - ctext.Parameters.AddWithValue("data", "{}"); - planRecord.Id = Convert.ToInt32(ctext.ExecuteScalar()); - //update json data - if (planRecord.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(planRecord); - ctextU.Parameters.AddWithValue("id", planRecord.Id); - ctextU.Parameters.AddWithValue("data", serializedData); - return ctextU.ExecuteNonQuery() > 0; - } - } - return planRecord.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(planRecord); - ctext.Parameters.AddWithValue("id", planRecord.Id); - ctext.Parameters.AddWithValue("data", serializedData); - return ctext.ExecuteNonQuery() > 0; - } - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool DeleteAllPlanRecordsByVehicleId(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/Implementations/Postgres/PlanRecordTemplateDataAccess.cs b/External/Implementations/Postgres/PlanRecordTemplateDataAccess.cs deleted file mode 100644 index 33ca3a7..0000000 --- a/External/Implementations/Postgres/PlanRecordTemplateDataAccess.cs +++ /dev/null @@ -1,160 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using Npgsql; -using System.Text.Json; - -namespace MotoVaultPro.External.Implementations -{ - public class PGPlanRecordTemplateDataAccess : IPlanRecordTemplateDataAccess - { - private NpgsqlDataSource pgDataSource; - private readonly ILogger _logger; - private static string tableName = "planrecordtemplates"; - public PGPlanRecordTemplateDataAccess(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 GetPlanRecordTemplatesByVehicleId(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()) - { - PlanRecordInput planRecord = JsonSerializer.Deserialize(reader["data"] as string); - results.Add(planRecord); - } - } - return results; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new List(); - } - } - public PlanRecordInput GetPlanRecordTemplateById(int planRecordId) - { - try - { - string cmd = $"SELECT data FROM app.{tableName} WHERE id = @id"; - var result = new PlanRecordInput(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", planRecordId); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - PlanRecordInput planRecord = JsonSerializer.Deserialize(reader["data"] as string); - result = planRecord; - } - } - return result; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new PlanRecordInput(); - } - } - public bool DeletePlanRecordTemplateById(int planRecordId) - { - try - { - string cmd = $"DELETE FROM app.{tableName} WHERE id = @id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", planRecordId); - return ctext.ExecuteNonQuery() > 0; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool SavePlanRecordTemplateToVehicle(PlanRecordInput planRecord) - { - try - { - if (planRecord.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", planRecord.VehicleId); - ctext.Parameters.AddWithValue("data", "{}"); - planRecord.Id = Convert.ToInt32(ctext.ExecuteScalar()); - //update json data - if (planRecord.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(planRecord); - ctextU.Parameters.AddWithValue("id", planRecord.Id); - ctextU.Parameters.AddWithValue("data", serializedData); - return ctextU.ExecuteNonQuery() > 0; - } - } - return planRecord.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(planRecord); - ctext.Parameters.AddWithValue("id", planRecord.Id); - ctext.Parameters.AddWithValue("data", serializedData); - return ctext.ExecuteNonQuery() > 0; - } - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool DeleteAllPlanRecordTemplatesByVehicleId(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/Implementations/Postgres/ReminderRecordDataAccess.cs b/External/Implementations/Postgres/ReminderRecordDataAccess.cs deleted file mode 100644 index b811927..0000000 --- a/External/Implementations/Postgres/ReminderRecordDataAccess.cs +++ /dev/null @@ -1,160 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using Npgsql; -using System.Text.Json; - -namespace MotoVaultPro.External.Implementations -{ - public class PGReminderRecordDataAccess : IReminderRecordDataAccess - { - private NpgsqlDataSource pgDataSource; - private readonly ILogger _logger; - private static string tableName = "reminderrecords"; - public PGReminderRecordDataAccess(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 GetReminderRecordsByVehicleId(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()) - { - ReminderRecord reminderRecord = JsonSerializer.Deserialize(reader["data"] as string); - results.Add(reminderRecord); - } - } - return results; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new List(); - } - } - public ReminderRecord GetReminderRecordById(int reminderRecordId) - { - try - { - string cmd = $"SELECT data FROM app.{tableName} WHERE id = @id"; - var result = new ReminderRecord(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", reminderRecordId); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - ReminderRecord reminderRecord = JsonSerializer.Deserialize(reader["data"] as string); - result = reminderRecord; - } - } - return result; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new ReminderRecord(); - } - } - public bool DeleteReminderRecordById(int reminderRecordId) - { - try - { - string cmd = $"DELETE FROM app.{tableName} WHERE id = @id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", reminderRecordId); - return ctext.ExecuteNonQuery() > 0; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool SaveReminderRecordToVehicle(ReminderRecord reminderRecord) - { - try - { - if (reminderRecord.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", reminderRecord.VehicleId); - ctext.Parameters.AddWithValue("data", "{}"); - reminderRecord.Id = Convert.ToInt32(ctext.ExecuteScalar()); - //update json data - if (reminderRecord.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(reminderRecord); - ctextU.Parameters.AddWithValue("id", reminderRecord.Id); - ctextU.Parameters.AddWithValue("data", serializedData); - return ctextU.ExecuteNonQuery() > 0; - } - } - return reminderRecord.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(reminderRecord); - ctext.Parameters.AddWithValue("id", reminderRecord.Id); - ctext.Parameters.AddWithValue("data", serializedData); - return ctext.ExecuteNonQuery() > 0; - } - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool DeleteAllReminderRecordsByVehicleId(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/Implementations/Postgres/ServiceRecordDataAccess.cs b/External/Implementations/Postgres/ServiceRecordDataAccess.cs deleted file mode 100644 index 040d5f1..0000000 --- a/External/Implementations/Postgres/ServiceRecordDataAccess.cs +++ /dev/null @@ -1,160 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using Npgsql; -using System.Text.Json; - -namespace MotoVaultPro.External.Implementations -{ - public class PGServiceRecordDataAccess: IServiceRecordDataAccess - { - private NpgsqlDataSource pgDataSource; - private readonly ILogger _logger; - private static string tableName = "servicerecords"; - public PGServiceRecordDataAccess(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 GetServiceRecordsByVehicleId(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()) - { - ServiceRecord serviceRecord = JsonSerializer.Deserialize(reader["data"] as string); - results.Add(serviceRecord); - } - } - return results; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new List(); - } - } - public ServiceRecord GetServiceRecordById(int serviceRecordId) - { - try - { - string cmd = $"SELECT data FROM app.{tableName} WHERE id = @id"; - var result = new ServiceRecord(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", serviceRecordId); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - ServiceRecord serviceRecord = JsonSerializer.Deserialize(reader["data"] as string); - result = serviceRecord; - } - } - return result; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new ServiceRecord(); - } - } - public bool DeleteServiceRecordById(int serviceRecordId) - { - try - { - string cmd = $"DELETE FROM app.{tableName} WHERE id = @id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", serviceRecordId); - return ctext.ExecuteNonQuery() > 0; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool SaveServiceRecordToVehicle(ServiceRecord serviceRecord) - { - try - { - if (serviceRecord.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", serviceRecord.VehicleId); - ctext.Parameters.AddWithValue("data", "{}"); - serviceRecord.Id = Convert.ToInt32(ctext.ExecuteScalar()); - //update json data - if (serviceRecord.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(serviceRecord); - ctextU.Parameters.AddWithValue("id", serviceRecord.Id); - ctextU.Parameters.AddWithValue("data", serializedData); - return ctextU.ExecuteNonQuery() > 0; - } - } - return serviceRecord.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(serviceRecord); - ctext.Parameters.AddWithValue("id", serviceRecord.Id); - ctext.Parameters.AddWithValue("data", serializedData); - return ctext.ExecuteNonQuery() > 0; - } - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool DeleteAllServiceRecordsByVehicleId(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/Implementations/Postgres/SupplyRecordDataAccess.cs b/External/Implementations/Postgres/SupplyRecordDataAccess.cs deleted file mode 100644 index 2a1a1ff..0000000 --- a/External/Implementations/Postgres/SupplyRecordDataAccess.cs +++ /dev/null @@ -1,160 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using Npgsql; -using System.Text.Json; - -namespace MotoVaultPro.External.Implementations -{ - public class PGSupplyRecordDataAccess : ISupplyRecordDataAccess - { - private NpgsqlDataSource pgDataSource; - private readonly ILogger _logger; - private static string tableName = "supplyrecords"; - public PGSupplyRecordDataAccess(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 GetSupplyRecordsByVehicleId(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()) - { - SupplyRecord supplyRecord = JsonSerializer.Deserialize(reader["data"] as string); - results.Add(supplyRecord); - } - } - return results; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new List(); - } - } - public SupplyRecord GetSupplyRecordById(int supplyRecordId) - { - try - { - string cmd = $"SELECT data FROM app.{tableName} WHERE id = @id"; - var result = new SupplyRecord(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", supplyRecordId); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - SupplyRecord supplyRecord = JsonSerializer.Deserialize(reader["data"] as string); - result = supplyRecord; - } - } - return result; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new SupplyRecord(); - } - } - public bool DeleteSupplyRecordById(int supplyRecordId) - { - try - { - string cmd = $"DELETE FROM app.{tableName} WHERE id = @id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", supplyRecordId); - return ctext.ExecuteNonQuery() > 0; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool SaveSupplyRecordToVehicle(SupplyRecord supplyRecord) - { - try - { - if (supplyRecord.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", supplyRecord.VehicleId); - ctext.Parameters.AddWithValue("data", "{}"); - supplyRecord.Id = Convert.ToInt32(ctext.ExecuteScalar()); - //update json data - if (supplyRecord.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(supplyRecord); - ctextU.Parameters.AddWithValue("id", supplyRecord.Id); - ctextU.Parameters.AddWithValue("data", serializedData); - return ctextU.ExecuteNonQuery() > 0; - } - } - return supplyRecord.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(supplyRecord); - ctext.Parameters.AddWithValue("id", supplyRecord.Id); - ctext.Parameters.AddWithValue("data", serializedData); - return ctext.ExecuteNonQuery() > 0; - } - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool DeleteAllSupplyRecordsByVehicleId(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/Implementations/Postgres/TaxRecordDataAccess.cs b/External/Implementations/Postgres/TaxRecordDataAccess.cs deleted file mode 100644 index e393c5f..0000000 --- a/External/Implementations/Postgres/TaxRecordDataAccess.cs +++ /dev/null @@ -1,160 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using Npgsql; -using System.Text.Json; - -namespace MotoVaultPro.External.Implementations -{ - public class PGTaxRecordDataAccess : ITaxRecordDataAccess - { - private NpgsqlDataSource pgDataSource; - private readonly ILogger _logger; - private static string tableName = "taxrecords"; - public PGTaxRecordDataAccess(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 GetTaxRecordsByVehicleId(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()) - { - TaxRecord taxRecord = JsonSerializer.Deserialize(reader["data"] as string); - results.Add(taxRecord); - } - } - return results; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new List(); - } - } - public TaxRecord GetTaxRecordById(int taxRecordId) - { - try - { - string cmd = $"SELECT data FROM app.{tableName} WHERE id = @id"; - var result = new TaxRecord(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", taxRecordId); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - TaxRecord taxRecord = JsonSerializer.Deserialize(reader["data"] as string); - result = taxRecord; - } - } - return result; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new TaxRecord(); - } - } - public bool DeleteTaxRecordById(int taxRecordId) - { - try - { - string cmd = $"DELETE FROM app.{tableName} WHERE id = @id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", taxRecordId); - return ctext.ExecuteNonQuery() > 0; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool SaveTaxRecordToVehicle(TaxRecord taxRecord) - { - try - { - if (taxRecord.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", taxRecord.VehicleId); - ctext.Parameters.AddWithValue("data", "{}"); - taxRecord.Id = Convert.ToInt32(ctext.ExecuteScalar()); - //update json data - if (taxRecord.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(taxRecord); - ctextU.Parameters.AddWithValue("id", taxRecord.Id); - ctextU.Parameters.AddWithValue("data", serializedData); - return ctextU.ExecuteNonQuery() > 0; - } - } - return taxRecord.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(taxRecord); - ctext.Parameters.AddWithValue("id", taxRecord.Id); - ctext.Parameters.AddWithValue("data", serializedData); - return ctext.ExecuteNonQuery() > 0; - } - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool DeleteAllTaxRecordsByVehicleId(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/Implementations/Postgres/TokenRecordDataAccess.cs b/External/Implementations/Postgres/TokenRecordDataAccess.cs deleted file mode 100644 index 855a619..0000000 --- a/External/Implementations/Postgres/TokenRecordDataAccess.cs +++ /dev/null @@ -1,143 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using Npgsql; - -namespace MotoVaultPro.External.Implementations -{ - public class PGTokenRecordDataAccess : ITokenRecordDataAccess - { - private NpgsqlDataSource pgDataSource; - private readonly ILogger _logger; - private static string tableName = "tokenrecords"; - public PGTokenRecordDataAccess(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, body TEXT not null, emailaddress TEXT not null)"; - using (var ctext = pgDataSource.CreateCommand(initCMD)) - { - ctext.ExecuteNonQuery(); - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - } - } - public List GetTokens() - { - try - { - string cmd = $"SELECT id, emailaddress, body FROM app.{tableName}"; - var results = new List(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - Token result = new Token(); - result.Id = int.Parse(reader["id"].ToString()); - result.EmailAddress = reader["emailaddress"].ToString(); - result.Body = reader["body"].ToString(); - results.Add(result); - } - } - return results; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new List(); - } - } - public Token GetTokenRecordByBody(string tokenBody) - { - try - { - string cmd = $"SELECT id, emailaddress, body FROM app.{tableName} WHERE body = @body"; - var result = new Token(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("body", tokenBody); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - result.Id = int.Parse(reader["id"].ToString()); - result.EmailAddress = reader["emailaddress"].ToString(); - result.Body = reader["body"].ToString(); - } - } - return result; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new Token(); - } - } - public Token GetTokenRecordByEmailAddress(string emailAddress) - { - try - { - string cmd = $"SELECT id, emailaddress, body FROM app.{tableName} WHERE emailaddress = @emailaddress"; - var result = new Token(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("emailaddress", emailAddress); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - result.Id = int.Parse(reader["id"].ToString()); - result.EmailAddress = reader["emailaddress"].ToString(); - result.Body = reader["body"].ToString(); - } - } - return result; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new Token(); - } - } - public bool CreateNewToken(Token token) - { - try - { - string cmd = $"INSERT INTO app.{tableName} (emailaddress, body) VALUES(@emailaddress, @body) RETURNING id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("emailaddress", token.EmailAddress); - ctext.Parameters.AddWithValue("body", token.Body); - token.Id = Convert.ToInt32(ctext.ExecuteScalar()); - return token.Id != default; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool DeleteToken(int tokenId) - { - try - { - string cmd = $"DELETE FROM app.{tableName} WHERE id = @id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", tokenId); - return ctext.ExecuteNonQuery() > 0; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - } -} \ No newline at end of file diff --git a/External/Implementations/Postgres/UpgradeRecordDataAccess.cs b/External/Implementations/Postgres/UpgradeRecordDataAccess.cs deleted file mode 100644 index 4f87f7c..0000000 --- a/External/Implementations/Postgres/UpgradeRecordDataAccess.cs +++ /dev/null @@ -1,160 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using Npgsql; -using System.Text.Json; - -namespace MotoVaultPro.External.Implementations -{ - public class PGUpgradeRecordDataAccess : IUpgradeRecordDataAccess - { - private NpgsqlDataSource pgDataSource; - private readonly ILogger _logger; - private static string tableName = "upgraderecords"; - public PGUpgradeRecordDataAccess(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 GetUpgradeRecordsByVehicleId(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()) - { - UpgradeRecord upgradeRecord = JsonSerializer.Deserialize(reader["data"] as string); - results.Add(upgradeRecord); - } - } - return results; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new List(); - } - } - public UpgradeRecord GetUpgradeRecordById(int upgradeRecordId) - { - try - { - string cmd = $"SELECT data FROM app.{tableName} WHERE id = @id"; - var result = new UpgradeRecord(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", upgradeRecordId); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - UpgradeRecord upgradeRecord = JsonSerializer.Deserialize(reader["data"] as string); - result = upgradeRecord; - } - } - return result; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new UpgradeRecord(); - } - } - public bool DeleteUpgradeRecordById(int upgradeRecordId) - { - try - { - string cmd = $"DELETE FROM app.{tableName} WHERE id = @id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", upgradeRecordId); - return ctext.ExecuteNonQuery() > 0; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool SaveUpgradeRecordToVehicle(UpgradeRecord upgradeRecord) - { - try - { - if (upgradeRecord.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", upgradeRecord.VehicleId); - ctext.Parameters.AddWithValue("data", "{}"); - upgradeRecord.Id = Convert.ToInt32(ctext.ExecuteScalar()); - //update json data - if (upgradeRecord.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(upgradeRecord); - ctextU.Parameters.AddWithValue("id", upgradeRecord.Id); - ctextU.Parameters.AddWithValue("data", serializedData); - return ctextU.ExecuteNonQuery() > 0; - } - } - return upgradeRecord.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(upgradeRecord); - ctext.Parameters.AddWithValue("id", upgradeRecord.Id); - ctext.Parameters.AddWithValue("data", serializedData); - return ctext.ExecuteNonQuery() > 0; - } - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool DeleteAllUpgradeRecordsByVehicleId(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/Implementations/Postgres/UserAccessDataAccess.cs b/External/Implementations/Postgres/UserAccessDataAccess.cs deleted file mode 100644 index f3c335c..0000000 --- a/External/Implementations/Postgres/UserAccessDataAccess.cs +++ /dev/null @@ -1,212 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using Npgsql; - -namespace MotoVaultPro.External.Implementations -{ - public class PGUserAccessDataAccess : IUserAccessDataAccess - { - private NpgsqlDataSource pgDataSource; - private readonly ILogger _logger; - private static string tableName = "useraccessrecords"; - public PGUserAccessDataAccess(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} (userId INT, vehicleId INT, PRIMARY KEY(userId, vehicleId))"; - using (var ctext = pgDataSource.CreateCommand(initCMD)) - { - ctext.ExecuteNonQuery(); - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - } - } - /// - /// Gets a list of vehicles user have access to. - /// - /// - /// - public List GetUserAccessByUserId(int userId) - { - try - { - string cmd = $"SELECT userId, vehicleId FROM app.{tableName} WHERE userId = @userId"; - var results = new List(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("userId", userId); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - UserAccess result = new UserAccess() - { - Id = new UserVehicle - { - UserId = int.Parse(reader["userId"].ToString()), - VehicleId = int.Parse(reader["vehicleId"].ToString()) - } - }; - results.Add(result); - } - } - return results; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new List(); - } - } - public UserAccess GetUserAccessByVehicleAndUserId(int userId, int vehicleId) - { - try - { - string cmd = $"SELECT userId, vehicleId FROM app.{tableName} WHERE userId = @userId AND vehicleId = @vehicleId"; - UserAccess result = null; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("userId", userId); - ctext.Parameters.AddWithValue("vehicleId", vehicleId); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - result = new UserAccess() - { - Id = new UserVehicle - { - UserId = int.Parse(reader["userId"].ToString()), - VehicleId = int.Parse(reader["vehicleId"].ToString()) - } - }; - return result; - } - } - return result; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new UserAccess(); - } - } - public List GetUserAccessByVehicleId(int vehicleId) - { - try - { - string cmd = $"SELECT userId, vehicleId 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()) - { - UserAccess result = new UserAccess() - { - Id = new UserVehicle - { - UserId = int.Parse(reader["userId"].ToString()), - VehicleId = int.Parse(reader["vehicleId"].ToString()) - } - }; - results.Add(result); - } - } - return results; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new List(); - } - } - public bool SaveUserAccess(UserAccess userAccess) - { - try - { - string cmd = $"INSERT INTO app.{tableName} (userId, vehicleId) VALUES(@userId, @vehicleId)"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("userId", userAccess.Id.UserId); - ctext.Parameters.AddWithValue("vehicleId", userAccess.Id.VehicleId); - return ctext.ExecuteNonQuery() > 0; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool DeleteUserAccess(int userId, int vehicleId) - { - try - { - string cmd = $"DELETE FROM app.{tableName} WHERE userId = @userId AND vehicleId = @vehicleId"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("userId", userId); - ctext.Parameters.AddWithValue("vehicleId", vehicleId); - return ctext.ExecuteNonQuery() > 0; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - /// - /// Delete all access records when a vehicle is deleted. - /// - /// - /// - public bool DeleteAllAccessRecordsByVehicleId(int vehicleId) - { - try - { - string cmd = $"DELETE FROM app.{tableName} WHERE vehicleId = @vehicleId"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("vehicleId", vehicleId); - ctext.ExecuteNonQuery(); - return true; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - /// - /// Delee all access records when a user is deleted. - /// - /// - /// - public bool DeleteAllAccessRecordsByUserId(int userId) - { - try - { - string cmd = $"DELETE FROM app.{tableName} WHERE userId = @userId"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("userId", userId); - ctext.ExecuteNonQuery(); - return true; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - } -} \ No newline at end of file diff --git a/External/Implementations/Postgres/UserConfigDataAccess.cs b/External/Implementations/Postgres/UserConfigDataAccess.cs deleted file mode 100644 index 6235f55..0000000 --- a/External/Implementations/Postgres/UserConfigDataAccess.cs +++ /dev/null @@ -1,108 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using Npgsql; -using System.Text.Json; - -namespace MotoVaultPro.External.Implementations -{ - public class PGUserConfigDataAccess: IUserConfigDataAccess - { - private NpgsqlDataSource pgDataSource; - private readonly ILogger _logger; - private static string tableName = "userconfigrecords"; - public PGUserConfigDataAccess(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 primary key, data jsonb not null)"; - using (var ctext = pgDataSource.CreateCommand(initCMD)) - { - ctext.ExecuteNonQuery(); - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - } - } - public UserConfigData GetUserConfig(int userId) - { - try - { - string cmd = $"SELECT data FROM app.{tableName} WHERE id = @id"; - UserConfigData result = null; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", userId); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - UserConfigData userConfig = JsonSerializer.Deserialize(reader["data"] as string); - result = userConfig; - } - } - return result; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new UserConfigData(); - } - } - public bool SaveUserConfig(UserConfigData userConfigData) - { - var existingRecord = GetUserConfig(userConfigData.Id); - try - { - if (existingRecord == null) - { - string cmd = $"INSERT INTO app.{tableName} (id, data) VALUES(@id, CAST(@data AS jsonb))"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - var serializedData = JsonSerializer.Serialize(userConfigData); - ctext.Parameters.AddWithValue("id", userConfigData.Id); - ctext.Parameters.AddWithValue("data", serializedData); - return ctext.ExecuteNonQuery() > 0; - } - } - 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(userConfigData); - ctext.Parameters.AddWithValue("id", userConfigData.Id); - ctext.Parameters.AddWithValue("data", serializedData); - return ctext.ExecuteNonQuery() > 0; - } - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool DeleteUserConfig(int userId) - { - try - { - string cmd = $"DELETE FROM app.{tableName} WHERE id = @id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", userId); - ctext.ExecuteNonQuery(); - return true; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - } -} diff --git a/External/Implementations/Postgres/UserRecordDataAccess.cs b/External/Implementations/Postgres/UserRecordDataAccess.cs deleted file mode 100644 index a9941e4..0000000 --- a/External/Implementations/Postgres/UserRecordDataAccess.cs +++ /dev/null @@ -1,194 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using Npgsql; - -namespace MotoVaultPro.External.Implementations -{ - public class PGUserRecordDataAccess : IUserRecordDataAccess - { - private NpgsqlDataSource pgDataSource; - private readonly ILogger _logger; - private static string tableName = "userrecords"; - public PGUserRecordDataAccess(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, username TEXT not null, emailaddress TEXT not null, password TEXT not null, isadmin BOOLEAN)"; - using (var ctext = pgDataSource.CreateCommand(initCMD)) - { - ctext.ExecuteNonQuery(); - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - } - } - public List GetUsers() - { - try - { - string cmd = $"SELECT id, username, emailaddress, password, isadmin FROM app.{tableName}"; - var results = new List(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - UserData result = new UserData(); - result.Id = int.Parse(reader["id"].ToString()); - result.UserName = reader["username"].ToString(); - result.EmailAddress = reader["emailaddress"].ToString(); - result.Password = reader["password"].ToString(); - result.IsAdmin = bool.Parse(reader["isadmin"].ToString()); - results.Add(result); - } - } - return results; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new List(); - } - } - public UserData GetUserRecordByUserName(string userName) - { - try - { - string cmd = $"SELECT id, username, emailaddress, password, isadmin FROM app.{tableName} WHERE username = @username"; - var result = new UserData(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("username", userName); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - result.Id = int.Parse(reader["id"].ToString()); - result.UserName = reader["username"].ToString(); - result.EmailAddress = reader["emailaddress"].ToString(); - result.Password = reader["password"].ToString(); - result.IsAdmin = bool.Parse(reader["isadmin"].ToString()); - } - } - return result; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new UserData(); - } - } - public UserData GetUserRecordByEmailAddress(string emailAddress) - { - try - { - string cmd = $"SELECT id, username, emailaddress, password, isadmin FROM app.{tableName} WHERE emailaddress = @emailaddress"; - var result = new UserData(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("emailaddress", emailAddress); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - result.Id = int.Parse(reader["id"].ToString()); - result.UserName = reader["username"].ToString(); - result.EmailAddress = reader["emailaddress"].ToString(); - result.Password = reader["password"].ToString(); - result.IsAdmin = bool.Parse(reader["isadmin"].ToString()); - } - } - return result; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new UserData(); - } - } - public UserData GetUserRecordById(int userId) - { - try - { - string cmd = $"SELECT id, username, emailaddress, password, isadmin FROM app.{tableName} WHERE id = @id"; - var result = new UserData(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", userId); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - result.Id = int.Parse(reader["id"].ToString()); - result.UserName = reader["username"].ToString(); - result.EmailAddress = reader["emailaddress"].ToString(); - result.Password = reader["password"].ToString(); - result.IsAdmin = bool.Parse(reader["isadmin"].ToString()); - } - } - return result; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new UserData(); - } - } - public bool SaveUserRecord(UserData userRecord) - { - try - { - if (userRecord.Id == default) - { - string cmd = $"INSERT INTO app.{tableName} (username, emailaddress, password, isadmin) VALUES(@username, @emailaddress, @password, @isadmin) RETURNING id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("username", userRecord.UserName); - ctext.Parameters.AddWithValue("emailaddress", userRecord.EmailAddress); - ctext.Parameters.AddWithValue("password", userRecord.Password); - ctext.Parameters.AddWithValue("isadmin", userRecord.IsAdmin); - userRecord.Id = Convert.ToInt32(ctext.ExecuteScalar()); - return userRecord.Id != default; - } - } - else - { - string cmd = $"UPDATE app.{tableName} SET username = @username, emailaddress = @emailaddress, password = @password, isadmin = @isadmin WHERE id = @id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", userRecord.Id); - ctext.Parameters.AddWithValue("username", userRecord.UserName); - ctext.Parameters.AddWithValue("emailaddress", userRecord.EmailAddress); - ctext.Parameters.AddWithValue("password", userRecord.Password); - ctext.Parameters.AddWithValue("isadmin", userRecord.IsAdmin); - return ctext.ExecuteNonQuery() > 0; - } - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool DeleteUserRecord(int userId) - { - try - { - string cmd = $"DELETE FROM app.{tableName} WHERE id = @id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", userId); - return ctext.ExecuteNonQuery() > 0; - } - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - } -} \ No newline at end of file diff --git a/External/Implementations/Postgres/VehicleDataAccess.cs b/External/Implementations/Postgres/VehicleDataAccess.cs deleted file mode 100644 index 374058a..0000000 --- a/External/Implementations/Postgres/VehicleDataAccess.cs +++ /dev/null @@ -1,138 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using Npgsql; -using System.Text.Json; - -namespace MotoVaultPro.External.Implementations -{ - public class PGVehicleDataAccess: IVehicleDataAccess - { - private NpgsqlDataSource pgDataSource; - private readonly ILogger _logger; - private static string tableName = "vehicles"; - public PGVehicleDataAccess(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, data jsonb not null)"; - using (var ctext = pgDataSource.CreateCommand(initCMD)) - { - ctext.ExecuteNonQuery(); - } - } catch (Exception ex) - { - _logger.LogError(ex.Message); - } - } - public bool SaveVehicle(Vehicle vehicle) - { - try - { - if (string.IsNullOrWhiteSpace(vehicle.ImageLocation)) - { - vehicle.ImageLocation = "/defaults/noimage.png"; - } - if (vehicle.Id == default) - { - string cmd = $"INSERT INTO app.{tableName} (data) VALUES(CAST(@data AS jsonb)) RETURNING id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("data", "{}"); - vehicle.Id = Convert.ToInt32(ctext.ExecuteScalar()); - //update json data - if (vehicle.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(vehicle); - ctextU.Parameters.AddWithValue("id", vehicle.Id); - ctextU.Parameters.AddWithValue("data", serializedData); - return ctextU.ExecuteNonQuery() > 0; - } - } - return vehicle.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(vehicle); - ctext.Parameters.AddWithValue("id", vehicle.Id); - ctext.Parameters.AddWithValue("data", serializedData); - return ctext.ExecuteNonQuery() > 0; - } - } - } catch (Exception ex) - { - _logger.LogError(ex.Message); - } - return false; - } - public bool DeleteVehicle(int vehicleId) - { - try - { - string cmd = $"DELETE FROM app.{tableName} WHERE id = @id"; - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", vehicleId); - return ctext.ExecuteNonQuery() > 0; - } - } catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public List GetVehicles() - { - try - { - string cmd = $"SELECT id, data FROM app.{tableName} ORDER BY id ASC"; - var results = new List(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - Vehicle vehicle = JsonSerializer.Deserialize(reader["data"] as string); - results.Add(vehicle); - } - } - return results; - } catch (Exception ex) - { - _logger.LogError(ex.Message); - return new List(); - } - } - public Vehicle GetVehicleById(int vehicleId) - { - try - { - string cmd = $"SELECT id, data FROM app.{tableName} WHERE id = @id"; - Vehicle vehicle = new Vehicle(); - using (var ctext = pgDataSource.CreateCommand(cmd)) - { - ctext.Parameters.AddWithValue("id", vehicleId); - using (NpgsqlDataReader reader = ctext.ExecuteReader()) - while (reader.Read()) - { - vehicle = JsonSerializer.Deserialize(reader["data"] as string); - } - } - return vehicle; - } catch (Exception ex) - { - _logger.LogError(ex.Message); - return new Vehicle(); - } - } - } -} diff --git a/External/Interfaces/IExtraFieldDataAccess.cs b/External/Interfaces/IExtraFieldDataAccess.cs deleted file mode 100644 index 69d4ab9..0000000 --- a/External/Interfaces/IExtraFieldDataAccess.cs +++ /dev/null @@ -1,10 +0,0 @@ -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Interfaces -{ - public interface IExtraFieldDataAccess - { - public RecordExtraField GetExtraFieldsById(int importMode); - public bool SaveExtraFields(RecordExtraField record); - } -} diff --git a/External/Interfaces/IGasRecordDataAccess.cs b/External/Interfaces/IGasRecordDataAccess.cs deleted file mode 100644 index b24f345..0000000 --- a/External/Interfaces/IGasRecordDataAccess.cs +++ /dev/null @@ -1,13 +0,0 @@ -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Interfaces -{ - public interface IGasRecordDataAccess - { - public List GetGasRecordsByVehicleId(int vehicleId); - public GasRecord GetGasRecordById(int gasRecordId); - public bool DeleteGasRecordById(int gasRecordId); - public bool SaveGasRecordToVehicle(GasRecord gasRecord); - public bool DeleteAllGasRecordsByVehicleId(int vehicleId); - } -} diff --git a/External/Interfaces/INoteDataAccess.cs b/External/Interfaces/INoteDataAccess.cs deleted file mode 100644 index 49fdc8f..0000000 --- a/External/Interfaces/INoteDataAccess.cs +++ /dev/null @@ -1,13 +0,0 @@ -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Interfaces -{ - public interface INoteDataAccess - { - public List GetNotesByVehicleId(int vehicleId); - public Note GetNoteById(int noteId); - public bool SaveNoteToVehicle(Note note); - public bool DeleteNoteById(int noteId); - public bool DeleteAllNotesByVehicleId(int vehicleId); - } -} diff --git a/External/Interfaces/IOdometerRecordDataAccess.cs b/External/Interfaces/IOdometerRecordDataAccess.cs deleted file mode 100644 index 00b48fa..0000000 --- a/External/Interfaces/IOdometerRecordDataAccess.cs +++ /dev/null @@ -1,13 +0,0 @@ -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Interfaces -{ - public interface IOdometerRecordDataAccess - { - public List GetOdometerRecordsByVehicleId(int vehicleId); - public OdometerRecord GetOdometerRecordById(int odometerRecordId); - public bool DeleteOdometerRecordById(int odometerRecordId); - public bool SaveOdometerRecordToVehicle(OdometerRecord odometerRecord); - public bool DeleteAllOdometerRecordsByVehicleId(int vehicleId); - } -} diff --git a/External/Interfaces/IPlanRecordDataAccess.cs b/External/Interfaces/IPlanRecordDataAccess.cs deleted file mode 100644 index 9d8180d..0000000 --- a/External/Interfaces/IPlanRecordDataAccess.cs +++ /dev/null @@ -1,13 +0,0 @@ -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Interfaces -{ - public interface IPlanRecordDataAccess - { - public List GetPlanRecordsByVehicleId(int vehicleId); - public PlanRecord GetPlanRecordById(int planRecordId); - public bool DeletePlanRecordById(int planRecordId); - public bool SavePlanRecordToVehicle(PlanRecord planRecord); - public bool DeleteAllPlanRecordsByVehicleId(int vehicleId); - } -} diff --git a/External/Interfaces/IPlanRecordTemplateDataAccess.cs b/External/Interfaces/IPlanRecordTemplateDataAccess.cs deleted file mode 100644 index f1be692..0000000 --- a/External/Interfaces/IPlanRecordTemplateDataAccess.cs +++ /dev/null @@ -1,13 +0,0 @@ -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Interfaces -{ - public interface IPlanRecordTemplateDataAccess - { - public List GetPlanRecordTemplatesByVehicleId(int vehicleId); - public PlanRecordInput GetPlanRecordTemplateById(int planRecordId); - public bool DeletePlanRecordTemplateById(int planRecordId); - public bool SavePlanRecordTemplateToVehicle(PlanRecordInput planRecord); - public bool DeleteAllPlanRecordTemplatesByVehicleId(int vehicleId); - } -} diff --git a/External/Interfaces/IReminderRecordDataAccess.cs b/External/Interfaces/IReminderRecordDataAccess.cs deleted file mode 100644 index 54bbea9..0000000 --- a/External/Interfaces/IReminderRecordDataAccess.cs +++ /dev/null @@ -1,13 +0,0 @@ -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Interfaces -{ - public interface IReminderRecordDataAccess - { - public List GetReminderRecordsByVehicleId(int vehicleId); - public ReminderRecord GetReminderRecordById(int reminderRecordId); - public bool DeleteReminderRecordById(int reminderRecordId); - public bool SaveReminderRecordToVehicle(ReminderRecord reminderRecord); - public bool DeleteAllReminderRecordsByVehicleId(int vehicleId); - } -} diff --git a/External/Interfaces/IServiceRecordDataAccess.cs b/External/Interfaces/IServiceRecordDataAccess.cs deleted file mode 100644 index c882c05..0000000 --- a/External/Interfaces/IServiceRecordDataAccess.cs +++ /dev/null @@ -1,13 +0,0 @@ -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Interfaces -{ - public interface IServiceRecordDataAccess - { - public List GetServiceRecordsByVehicleId(int vehicleId); - public ServiceRecord GetServiceRecordById(int serviceRecordId); - public bool DeleteServiceRecordById(int serviceRecordId); - public bool SaveServiceRecordToVehicle(ServiceRecord serviceRecord); - public bool DeleteAllServiceRecordsByVehicleId(int vehicleId); - } -} diff --git a/External/Interfaces/ISupplyRecordDataAccess.cs b/External/Interfaces/ISupplyRecordDataAccess.cs deleted file mode 100644 index 3fa471c..0000000 --- a/External/Interfaces/ISupplyRecordDataAccess.cs +++ /dev/null @@ -1,13 +0,0 @@ -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Interfaces -{ - public interface ISupplyRecordDataAccess - { - public List GetSupplyRecordsByVehicleId(int vehicleId); - public SupplyRecord GetSupplyRecordById(int supplyRecordId); - public bool DeleteSupplyRecordById(int supplyRecordId); - public bool SaveSupplyRecordToVehicle(SupplyRecord supplyRecord); - public bool DeleteAllSupplyRecordsByVehicleId(int vehicleId); - } -} diff --git a/External/Interfaces/ITaxRecordDataAccess.cs b/External/Interfaces/ITaxRecordDataAccess.cs deleted file mode 100644 index 471bc71..0000000 --- a/External/Interfaces/ITaxRecordDataAccess.cs +++ /dev/null @@ -1,13 +0,0 @@ -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Interfaces -{ - public interface ITaxRecordDataAccess - { - public List GetTaxRecordsByVehicleId(int vehicleId); - public TaxRecord GetTaxRecordById(int taxRecordId); - public bool DeleteTaxRecordById(int taxRecordId); - public bool SaveTaxRecordToVehicle(TaxRecord taxRecord); - public bool DeleteAllTaxRecordsByVehicleId(int vehicleId); - } -} diff --git a/External/Interfaces/ITokenRecordDataAccess.cs b/External/Interfaces/ITokenRecordDataAccess.cs deleted file mode 100644 index 630fccb..0000000 --- a/External/Interfaces/ITokenRecordDataAccess.cs +++ /dev/null @@ -1,13 +0,0 @@ -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Interfaces -{ - public interface ITokenRecordDataAccess - { - public List GetTokens(); - public Token GetTokenRecordByBody(string tokenBody); - public Token GetTokenRecordByEmailAddress(string emailAddress); - public bool CreateNewToken(Token token); - public bool DeleteToken(int tokenId); - } -} diff --git a/External/Interfaces/IUpgradeRecordDataAccess.cs b/External/Interfaces/IUpgradeRecordDataAccess.cs deleted file mode 100644 index 5e161dd..0000000 --- a/External/Interfaces/IUpgradeRecordDataAccess.cs +++ /dev/null @@ -1,13 +0,0 @@ -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Interfaces -{ - public interface IUpgradeRecordDataAccess - { - public List GetUpgradeRecordsByVehicleId(int vehicleId); - public UpgradeRecord GetUpgradeRecordById(int upgradeRecordId); - public bool DeleteUpgradeRecordById(int upgradeRecordId); - public bool SaveUpgradeRecordToVehicle(UpgradeRecord upgradeRecord); - public bool DeleteAllUpgradeRecordsByVehicleId(int vehicleId); - } -} diff --git a/External/Interfaces/IUserAccessDataAccess.cs b/External/Interfaces/IUserAccessDataAccess.cs deleted file mode 100644 index eda9694..0000000 --- a/External/Interfaces/IUserAccessDataAccess.cs +++ /dev/null @@ -1,15 +0,0 @@ -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Interfaces -{ - public interface IUserAccessDataAccess - { - List GetUserAccessByUserId(int userId); - UserAccess GetUserAccessByVehicleAndUserId(int userId, int vehicleId); - List GetUserAccessByVehicleId(int vehicleId); - bool SaveUserAccess(UserAccess userAccess); - bool DeleteUserAccess(int userId, int vehicleId); - bool DeleteAllAccessRecordsByVehicleId(int vehicleId); - bool DeleteAllAccessRecordsByUserId(int userId); - } -} diff --git a/External/Interfaces/IUserConfigDataAccess.cs b/External/Interfaces/IUserConfigDataAccess.cs deleted file mode 100644 index b2a0cd7..0000000 --- a/External/Interfaces/IUserConfigDataAccess.cs +++ /dev/null @@ -1,11 +0,0 @@ -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Interfaces -{ - public interface IUserConfigDataAccess - { - public UserConfigData GetUserConfig(int userId); - public bool SaveUserConfig(UserConfigData userConfigData); - public bool DeleteUserConfig(int userId); - } -} diff --git a/External/Interfaces/IUserRecordDataAccess.cs b/External/Interfaces/IUserRecordDataAccess.cs deleted file mode 100644 index 41ad7d4..0000000 --- a/External/Interfaces/IUserRecordDataAccess.cs +++ /dev/null @@ -1,14 +0,0 @@ -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Interfaces -{ - public interface IUserRecordDataAccess - { - public List GetUsers(); - public UserData GetUserRecordByUserName(string userName); - public UserData GetUserRecordByEmailAddress(string emailAddress); - public UserData GetUserRecordById(int userId); - public bool SaveUserRecord(UserData userRecord); - public bool DeleteUserRecord(int userId); - } -} \ No newline at end of file diff --git a/External/Interfaces/IVehicleDataAccess.cs b/External/Interfaces/IVehicleDataAccess.cs deleted file mode 100644 index ec0d87f..0000000 --- a/External/Interfaces/IVehicleDataAccess.cs +++ /dev/null @@ -1,12 +0,0 @@ -using MotoVaultPro.Models; - -namespace MotoVaultPro.External.Interfaces -{ - public interface IVehicleDataAccess - { - public bool SaveVehicle(Vehicle vehicle); - public bool DeleteVehicle(int vehicleId); - public List GetVehicles(); - public Vehicle GetVehicleById(int vehicleId); - } -} diff --git a/Filter/CollaboratorFilter.cs b/Filter/CollaboratorFilter.cs deleted file mode 100644 index ce3bf65..0000000 --- a/Filter/CollaboratorFilter.cs +++ /dev/null @@ -1,54 +0,0 @@ -using MotoVaultPro.Helper; -using MotoVaultPro.Logic; -using MotoVaultPro.Models; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Filters; -using System.Security.Claims; - -namespace MotoVaultPro.Filter -{ - public class CollaboratorFilter: ActionFilterAttribute - { - private readonly IUserLogic _userLogic; - private readonly IConfigHelper _config; - public CollaboratorFilter(IUserLogic userLogic, IConfigHelper config) { - _userLogic = userLogic; - _config = config; - } - public override void OnActionExecuting(ActionExecutingContext filterContext) - { - if (!filterContext.HttpContext.User.IsInRole(nameof(UserData.IsRootUser))) - { - if (filterContext.ActionArguments.ContainsKey("vehicleId")) - { - var vehicleId = int.Parse(filterContext.ActionArguments["vehicleId"].ToString()); - if (vehicleId != default) - { - var userId = int.Parse(filterContext.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier)); - if (!_userLogic.UserCanEditVehicle(userId, vehicleId)) - { - filterContext.Result = new RedirectResult("/Error/Unauthorized"); - } - } - else - { - var shopSupplyEndpoints = new List { "ImportToVehicleIdFromCsv", "GetSupplyRecordsByVehicleId", "ExportFromVehicleToCsv" }; - if (shopSupplyEndpoints.Contains(filterContext.RouteData.Values["action"].ToString()) && !_config.GetServerEnableShopSupplies()) - { - //user trying to access shop supplies but shop supplies is not enabled by root user. - filterContext.Result = new RedirectResult("/Error/Unauthorized"); - } - else if (!shopSupplyEndpoints.Contains(filterContext.RouteData.Values["action"].ToString())) - { - //user trying to access any other endpoints using 0 as vehicle id. - filterContext.Result = new RedirectResult("/Error/Unauthorized"); - } - } - } else - { - filterContext.Result = new RedirectResult("/Error/Unauthorized"); - } - } - } - } -} diff --git a/Helper/ConfigHelper.cs b/Helper/ConfigHelper.cs deleted file mode 100644 index ebaff68..0000000 --- a/Helper/ConfigHelper.cs +++ /dev/null @@ -1,391 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; -using Microsoft.Extensions.Caching.Memory; -using System.Security.Claims; -using System.Text.Json; - -namespace MotoVaultPro.Helper -{ - public interface IConfigHelper - { - OpenIDConfig GetOpenIDConfig(); - ReminderUrgencyConfig GetReminderUrgencyConfig(); - MailConfig GetMailConfig(); - UserConfig GetUserConfig(ClaimsPrincipal user); - bool SaveUserConfig(ClaimsPrincipal user, UserConfig configData); - bool SaveServerConfig(ServerConfig serverConfig); - bool AuthenticateRootUser(string username, string password); - bool AuthenticateRootUserOIDC(string email); - string GetWebHookUrl(); - bool GetCustomWidgetsEnabled(); - string GetMOTD(); - string GetLogoUrl(); - string GetSmallLogoUrl(); - string GetServerLanguage(); - bool GetServerDisabledRegistration(); - bool GetServerEnableShopSupplies(); - bool GetServerAuthEnabled(); - bool GetEnableRootUserOIDC(); - string GetServerPostgresConnection(); - string GetAllowedFileUploadExtensions(); - string GetServerDomain(); - bool DeleteUserConfig(int userId); - bool GetInvariantApi(); - bool GetServerOpenRegistration(); - string GetDefaultReminderEmail(); - } - public class ConfigHelper : IConfigHelper - { - private readonly IConfiguration _config; - private readonly IUserConfigDataAccess _userConfig; - private readonly ILogger _logger; - private IMemoryCache _cache; - public ConfigHelper(IConfiguration serverConfig, - IUserConfigDataAccess userConfig, - IMemoryCache memoryCache, - ILogger logger) - { - _config = serverConfig; - _userConfig = userConfig; - _cache = memoryCache; - _logger = logger; - } - public string GetWebHookUrl() - { - var webhook = CheckString("LUBELOGGER_WEBHOOK"); - return webhook; - } - public bool GetCustomWidgetsEnabled() - { - return CheckBool(CheckString("LUBELOGGER_CUSTOM_WIDGETS")); - } - public bool GetInvariantApi() - { - return CheckBool(CheckString("LUBELOGGER_INVARIANT_API")); - } - public string GetMOTD() - { - var motd = CheckString("LUBELOGGER_MOTD"); - return motd; - } - public string GetServerDomain() - { - var domain = CheckString("LUBELOGGER_DOMAIN"); - return domain; - } - public bool GetServerOpenRegistration() - { - return CheckBool(CheckString("LUBELOGGER_OPEN_REGISTRATION")); - } - public bool GetServerAuthEnabled() - { - return CheckBool(CheckString(nameof(UserConfig.EnableAuth))); - } - public OpenIDConfig GetOpenIDConfig() - { - OpenIDConfig openIdConfig = _config.GetSection("OpenIDConfig").Get() ?? new OpenIDConfig(); - return openIdConfig; - } - public ReminderUrgencyConfig GetReminderUrgencyConfig() - { - ReminderUrgencyConfig reminderUrgencyConfig = _config.GetSection("ReminderUrgencyConfig").Get() ?? new ReminderUrgencyConfig(); - return reminderUrgencyConfig; - } - public MailConfig GetMailConfig() - { - MailConfig mailConfig = _config.GetSection("MailConfig").Get() ?? new MailConfig(); - return mailConfig; - } - public string GetLogoUrl() - { - var logoUrl = CheckString("LUBELOGGER_LOGO_URL", StaticHelper.DefaultLogoPath); - return logoUrl; - } - public string GetSmallLogoUrl() - { - var logoUrl = CheckString("LUBELOGGER_LOGO_SMALL_URL", StaticHelper.DefaultSmallLogoPath); - return logoUrl; - } - public string GetDefaultReminderEmail() - { - var reminderEmail = CheckString(nameof(ServerConfig.DefaultReminderEmail)); - return reminderEmail; - } - public string GetAllowedFileUploadExtensions() - { - var allowedFileExtensions = CheckString("LUBELOGGER_ALLOWED_FILE_EXTENSIONS", StaticHelper.DefaultAllowedFileExtensions); - return allowedFileExtensions; - } - public bool AuthenticateRootUser(string username, string password) - { - var rootUsername = CheckString(nameof(UserConfig.UserNameHash)); - var rootPassword = CheckString(nameof(UserConfig.UserPasswordHash)); - if (string.IsNullOrWhiteSpace(rootUsername) || string.IsNullOrWhiteSpace(rootPassword)) - { - return false; - } - return username == rootUsername && password == rootPassword; - } - public bool AuthenticateRootUserOIDC(string email) - { - var rootEmail = CheckString(nameof(ServerConfig.DefaultReminderEmail)); - var rootUserOIDC = CheckBool(CheckString(nameof(ServerConfig.EnableRootUserOIDC))); - if (!rootUserOIDC || string.IsNullOrWhiteSpace(rootEmail)) - { - return false; - } - return email == rootEmail; - } - public bool GetEnableRootUserOIDC() - { - var rootUserOIDC = CheckBool(CheckString(nameof(ServerConfig.EnableRootUserOIDC))); - return rootUserOIDC; - } - public string GetServerLanguage() - { - var serverLanguage = CheckString(nameof(UserConfig.UserLanguage), "en_US"); - return serverLanguage; - } - public bool GetServerDisabledRegistration() - { - var registrationDisabled = CheckBool(CheckString(nameof(ServerConfig.DisableRegistration))); - return registrationDisabled; - } - public string GetServerPostgresConnection() - { - var postgresConnection = CheckString("POSTGRES_CONNECTION"); - return postgresConnection; - } - public bool GetServerEnableShopSupplies() - { - return CheckBool(CheckString(nameof(UserConfig.EnableShopSupplies))); - } - public bool SaveServerConfig(ServerConfig serverConfig) - { - //nullify default values - if (string.IsNullOrWhiteSpace(serverConfig.PostgresConnection)) - { - serverConfig.PostgresConnection = null; - } - if (serverConfig.AllowedFileExtensions == StaticHelper.DefaultAllowedFileExtensions || string.IsNullOrWhiteSpace(serverConfig.AllowedFileExtensions)) - { - serverConfig.AllowedFileExtensions = null; - } - if (serverConfig.CustomLogoURL == StaticHelper.DefaultLogoPath || string.IsNullOrWhiteSpace(serverConfig.CustomLogoURL)) - { - serverConfig.CustomLogoURL = null; - } - if (serverConfig.CustomSmallLogoURL == StaticHelper.DefaultSmallLogoPath || string.IsNullOrWhiteSpace(serverConfig.CustomSmallLogoURL)) - { - serverConfig.CustomSmallLogoURL = null; - } - if (string.IsNullOrWhiteSpace(serverConfig.MessageOfTheDay)) - { - serverConfig.MessageOfTheDay = null; - } - if (string.IsNullOrWhiteSpace(serverConfig.WebHookURL)) - { - serverConfig.WebHookURL = null; - } - if (string.IsNullOrWhiteSpace(serverConfig.ServerURL)) - { - serverConfig.ServerURL = null; - } - if (serverConfig.CustomWidgetsEnabled.HasValue && !serverConfig.CustomWidgetsEnabled.Value) - { - serverConfig.CustomWidgetsEnabled = null; - } - if (serverConfig.InvariantAPIEnabled.HasValue && !serverConfig.InvariantAPIEnabled.Value) - { - serverConfig.InvariantAPIEnabled = null; - } - if (string.IsNullOrWhiteSpace(serverConfig.SMTPConfig?.EmailServer ?? string.Empty)) - { - serverConfig.SMTPConfig = null; - } - if (string.IsNullOrWhiteSpace(serverConfig.OIDCConfig?.Name ?? string.Empty)) - { - serverConfig.OIDCConfig = null; - } - if (serverConfig.OpenRegistration.HasValue && !serverConfig.OpenRegistration.Value) - { - serverConfig.OpenRegistration = null; - } - if (serverConfig.DisableRegistration.HasValue && !serverConfig.DisableRegistration.Value) - { - serverConfig.DisableRegistration = null; - } - if (string.IsNullOrWhiteSpace(serverConfig.DefaultReminderEmail)) - { - serverConfig.DefaultReminderEmail = null; - } - if (serverConfig.EnableRootUserOIDC.HasValue && !serverConfig.EnableRootUserOIDC.Value) - { - serverConfig.EnableRootUserOIDC = null; - } - try - { - File.WriteAllText(StaticHelper.ServerConfigPath, JsonSerializer.Serialize(serverConfig)); - return true; - } catch (Exception ex) - { - _logger.LogWarning(ex.Message); - return false; - } - } - public bool SaveUserConfig(ClaimsPrincipal user, UserConfig configData) - { - var storedUserId = user.FindFirstValue(ClaimTypes.NameIdentifier); - int userId = 0; - if (storedUserId != null) - { - userId = int.Parse(storedUserId); - } - bool isRootUser = user.IsInRole(nameof(UserData.IsRootUser)) || userId == -1; - if (isRootUser) - { - try - { - if (!File.Exists(StaticHelper.UserConfigPath)) - { - //if file doesn't exist it might be because it's running on a mounted volume in docker. - File.WriteAllText(StaticHelper.UserConfigPath, JsonSerializer.Serialize(new UserConfig())); - } - var configFileContents = File.ReadAllText(StaticHelper.UserConfigPath); - configData.EnableAuth = bool.Parse(_config[nameof(UserConfig.EnableAuth)] ?? "false"); - configData.UserNameHash = _config[nameof(UserConfig.UserNameHash)] ?? string.Empty; - configData.UserPasswordHash = _config[nameof(UserConfig.UserPasswordHash)] ?? string.Empty; - File.WriteAllText(StaticHelper.UserConfigPath, JsonSerializer.Serialize(configData)); - _cache.Set($"userConfig_{userId}", configData); - return true; - } - catch (Exception ex) - { - _logger.LogWarning(ex.Message); - return false; - } - } else - { - var userConfig = new UserConfigData() - { - Id = userId, - UserConfig = configData - }; - var result = _userConfig.SaveUserConfig(userConfig); - _cache.Set($"userConfig_{userId}", configData); - return result; - } - } - public bool DeleteUserConfig(int userId) - { - _cache.Remove($"userConfig_{userId}"); - var result = _userConfig.DeleteUserConfig(userId); - return result; - } - private bool CheckBool(string value, bool defaultValue = false) - { - try - { - if (string.IsNullOrWhiteSpace(value)) - { - return defaultValue; - } - else if (bool.TryParse(value, out bool result)) - { - return result; - } - else - { - return defaultValue; - } - } catch (Exception ex) - { - _logger.LogWarning($"ConfigHelper Warning: You might be missing keys in appsettings.json, Message: ${ex.Message}"); - return defaultValue; - } - } - private string CheckString(string configName, string defaultValue = "") - { - try - { - var configValue = _config[configName] ?? defaultValue; - return configValue; - } catch(Exception ex) - { - _logger.LogWarning($"ConfigHelper Warning: You might be missing keys in appsettings.json, Message: ${ex.Message}"); - return defaultValue; - } - } - public UserConfig GetUserConfig(ClaimsPrincipal user) - { - var serverConfig = new UserConfig - { - EnableCsvImports = CheckBool(CheckString(nameof(UserConfig.EnableCsvImports)), true), - UseDarkMode = CheckBool(CheckString(nameof(UserConfig.UseDarkMode))), - UseSystemColorMode = CheckBool(CheckString(nameof(UserConfig.UseSystemColorMode)), true), - UseMPG = CheckBool(CheckString(nameof(UserConfig.UseMPG)), true), - UseDescending = CheckBool(CheckString(nameof(UserConfig.UseDescending))), - EnableAuth = CheckBool(CheckString(nameof(UserConfig.EnableAuth))), - HideZero = CheckBool(CheckString(nameof(UserConfig.HideZero))), - AutomaticDecimalFormat = CheckBool(CheckString(nameof(UserConfig.AutomaticDecimalFormat))), - UseUKMPG = CheckBool(CheckString(nameof(UserConfig.UseUKMPG))), - UseMarkDownOnSavedNotes = CheckBool(CheckString(nameof(UserConfig.UseMarkDownOnSavedNotes))), - UseThreeDecimalGasCost = CheckBool(CheckString(nameof(UserConfig.UseThreeDecimalGasCost)), true), - UseThreeDecimalGasConsumption = CheckBool(CheckString(nameof(UserConfig.UseThreeDecimalGasConsumption)), true), - EnableAutoReminderRefresh = CheckBool(CheckString(nameof(UserConfig.EnableAutoReminderRefresh))), - EnableAutoOdometerInsert = CheckBool(CheckString(nameof(UserConfig.EnableAutoOdometerInsert))), - PreferredGasMileageUnit = CheckString(nameof(UserConfig.PreferredGasMileageUnit)), - PreferredGasUnit = CheckString(nameof(UserConfig.PreferredGasUnit)), - UseUnitForFuelCost = CheckBool(CheckString(nameof(UserConfig.UseUnitForFuelCost))), - UseSimpleFuelEntry = CheckBool(CheckString(nameof(UserConfig.UseSimpleFuelEntry))), - UserLanguage = CheckString(nameof(UserConfig.UserLanguage), "en_US"), - HideSoldVehicles = CheckBool(CheckString(nameof(UserConfig.HideSoldVehicles))), - EnableShopSupplies = CheckBool(CheckString(nameof(UserConfig.EnableShopSupplies))), - ShowCalendar = CheckBool(CheckString(nameof(UserConfig.ShowCalendar))), - EnableExtraFieldColumns = CheckBool(CheckString(nameof(UserConfig.EnableExtraFieldColumns))), - VisibleTabs = _config.GetSection(nameof(UserConfig.VisibleTabs)).Get>() ?? new UserConfig().VisibleTabs, - TabOrder = _config.GetSection(nameof(UserConfig.TabOrder)).Get>() ?? new UserConfig().TabOrder, - UserColumnPreferences = _config.GetSection(nameof(UserConfig.UserColumnPreferences)).Get>() ?? new List(), - DefaultTab = (ImportMode)int.Parse(CheckString(nameof(UserConfig.DefaultTab), "8")), - ShowVehicleThumbnail = CheckBool(CheckString(nameof(UserConfig.ShowVehicleThumbnail))) - }; - int userId = 0; - if (user != null) - { - var storedUserId = user.FindFirstValue(ClaimTypes.NameIdentifier); - if (storedUserId != null) - { - userId = int.Parse(storedUserId); - } - } else - { - return serverConfig; - } - return _cache.GetOrCreate($"userConfig_{userId}", entry => - { - entry.SlidingExpiration = TimeSpan.FromHours(1); - if (!user.Identity.IsAuthenticated) - { - return serverConfig; - } - bool isRootUser = user.IsInRole(nameof(UserData.IsRootUser)) || userId == -1; - if (isRootUser) - { - return serverConfig; - } - else - { - var result = _userConfig.GetUserConfig(userId); - if (result == null) - { - return serverConfig; - } - else - { - return result.UserConfig; - } - } - }); - } - } -} diff --git a/Helper/FileHelper.cs b/Helper/FileHelper.cs deleted file mode 100644 index 09c3526..0000000 --- a/Helper/FileHelper.cs +++ /dev/null @@ -1,479 +0,0 @@ -using MotoVaultPro.Models; -using System.IO.Compression; - -namespace MotoVaultPro.Helper -{ - public interface IFileHelper - { - string GetFullFilePath(string currentFilePath, bool mustExist = true); - byte[] GetFileBytes(string fullFilePath, bool deleteFile = false); - string MoveFileFromTemp(string currentFilePath, string newFolder); - bool RenameFile(string currentFilePath, string newName); - bool DeleteFile(string currentFilePath); - string MakeBackup(); - bool RestoreBackup(string fileName, bool clearExisting = false); - string MakeAttachmentsExport(List exportData); - List GetLanguages(); - int ClearTempFolder(); - int ClearUnlinkedThumbnails(List linkedImages); - int ClearUnlinkedDocuments(List linkedDocuments); - string GetWidgets(); - bool WidgetsExist(); - bool SaveWidgets(string widgetsData); - bool DeleteWidgets(); - } - public class FileHelper : IFileHelper - { - private readonly IWebHostEnvironment _webEnv; - private readonly ILogger _logger; - private ILiteDBHelper _liteDB; - public FileHelper(IWebHostEnvironment webEnv, ILogger logger, ILiteDBHelper liteDB) - { - _webEnv = webEnv; - _logger = logger; - _liteDB = liteDB; - } - public List GetLanguages() - { - var languagePath = Path.Combine(_webEnv.ContentRootPath, "data", "translations"); - var defaultList = new List() { "en_US" }; - if (Directory.Exists(languagePath)) - { - var listOfLanguages = Directory.GetFiles(languagePath); - if (listOfLanguages.Any()) - { - defaultList.AddRange(listOfLanguages.Select(x => Path.GetFileNameWithoutExtension(x))); - } - } - return defaultList; - } - public bool RenameFile(string currentFilePath, string newName) - { - var fullFilePath = GetFullFilePath(currentFilePath); - if (!string.IsNullOrWhiteSpace(fullFilePath)) - { - try - { - var originalFileName = Path.GetFileNameWithoutExtension(fullFilePath); - var newFilePath = fullFilePath.Replace(originalFileName, newName); - File.Move(fullFilePath, newFilePath); - return true; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - return false; - } - public string GetFullFilePath(string currentFilePath, bool mustExist = true) - { - if (currentFilePath.StartsWith("/")) - { - currentFilePath = currentFilePath.Substring(1); - } - string oldFilePath = currentFilePath.StartsWith("defaults/") ? Path.Combine(_webEnv.WebRootPath, currentFilePath) : Path.Combine(_webEnv.ContentRootPath, "data", currentFilePath); - if (File.Exists(oldFilePath)) - { - return oldFilePath; - } - else if (!mustExist) - { - return oldFilePath; - } - { - return string.Empty; - } - } - public byte[] GetFileBytes(string fullFilePath, bool deleteFile = false) - { - if (File.Exists(fullFilePath)) - { - var fileBytes = File.ReadAllBytes(fullFilePath); - if (deleteFile) - { - File.Delete(fullFilePath); - } - return fileBytes; - } - return Array.Empty(); - } - public bool RestoreBackup(string fileName, bool clearExisting = false) - { - var fullFilePath = GetFullFilePath(fileName); - if (string.IsNullOrWhiteSpace(fullFilePath)) - { - return false; - } - try - { - var tempPath = Path.Combine(_webEnv.ContentRootPath, "data", $"temp/{Guid.NewGuid()}"); - if (!Directory.Exists(tempPath)) - Directory.CreateDirectory(tempPath); - //extract zip file - ZipFile.ExtractToDirectory(fullFilePath, tempPath); - //copy over images and documents. - var imagePath = Path.Combine(tempPath, "images"); - var documentPath = Path.Combine(tempPath, "documents"); - var translationPath = Path.Combine(tempPath, "translations"); - var dataPath = Path.Combine(tempPath, StaticHelper.DbName); - var widgetPath = Path.Combine(tempPath, StaticHelper.AdditionalWidgetsPath); - var configPath = Path.Combine(tempPath, StaticHelper.LegacyUserConfigPath); - var serverConfigPath = Path.Combine(tempPath, StaticHelper.LegacyServerConfigPath); - if (Directory.Exists(imagePath)) - { - var existingPath = Path.Combine(_webEnv.ContentRootPath, "data", "images"); - if (!Directory.Exists(existingPath)) - { - Directory.CreateDirectory(existingPath); - } - else if (clearExisting) - { - var filesToDelete = Directory.GetFiles(existingPath); - foreach (string file in filesToDelete) - { - File.Delete(file); - } - } - //copy each files from temp folder to newPath - var filesToUpload = Directory.GetFiles(imagePath); - foreach (string file in filesToUpload) - { - File.Copy(file, $"{existingPath}/{Path.GetFileName(file)}", true); - } - } - if (Directory.Exists(documentPath)) - { - var existingPath = Path.Combine(_webEnv.ContentRootPath, "data", "documents"); - if (!Directory.Exists(existingPath)) - { - Directory.CreateDirectory(existingPath); - } - else if (clearExisting) - { - var filesToDelete = Directory.GetFiles(existingPath); - foreach (string file in filesToDelete) - { - File.Delete(file); - } - } - //copy each files from temp folder to newPath - var filesToUpload = Directory.GetFiles(documentPath); - foreach (string file in filesToUpload) - { - File.Copy(file, $"{existingPath}/{Path.GetFileName(file)}", true); - } - } - if (Directory.Exists(translationPath)) - { - var existingPath = Path.Combine(_webEnv.ContentRootPath, "data", "translations"); - if (!Directory.Exists(existingPath)) - { - Directory.CreateDirectory(existingPath); - } - else if (clearExisting) - { - var filesToDelete = Directory.GetFiles(existingPath); - foreach (string file in filesToDelete) - { - File.Delete(file); - } - } - //copy each files from temp folder to newPath - var filesToUpload = Directory.GetFiles(translationPath); - foreach (string file in filesToUpload) - { - File.Copy(file, $"{existingPath}/{Path.GetFileName(file)}", true); - } - } - if (File.Exists(dataPath)) - { - //Relinquish current DB file lock - _liteDB.DisposeLiteDB(); - //data path will always exist as it is created on startup if not. - File.Move(dataPath, StaticHelper.DbName, true); - } - if (File.Exists(widgetPath)) - { - File.Move(widgetPath, StaticHelper.AdditionalWidgetsPath, true); - } - if (File.Exists(configPath)) - { - //check if config folder exists. - if (!Directory.Exists("data/config")) - { - Directory.CreateDirectory("data/config"); - } - File.Move(configPath, StaticHelper.UserConfigPath, true); - } - if (File.Exists(serverConfigPath)) - { - //check if config folder exists. - if (!Directory.Exists("data/config")) - { - Directory.CreateDirectory("data/config"); - } - File.Move(serverConfigPath, StaticHelper.ServerConfigPath, true); - } - return true; - } - catch (Exception ex) - { - _logger.LogError(ex, $"Error Restoring Database Backup: {ex.Message}"); - return false; - } - } - public string MakeAttachmentsExport(List exportData) - { - var folderName = Guid.NewGuid(); - var tempPath = Path.Combine(_webEnv.ContentRootPath, "data", $"temp/{folderName}"); - if (!Directory.Exists(tempPath)) - Directory.CreateDirectory(tempPath); - int fileIndex = 0; - foreach (GenericReportModel reportModel in exportData) - { - foreach (UploadedFiles file in reportModel.Files) - { - var fileToCopy = GetFullFilePath(file.Location); - var destFileName = $"{tempPath}/{fileIndex}_{reportModel.DataType}_{reportModel.Date.ToString("yyyy-MM-dd")}_{file.Name}{Path.GetExtension(file.Location)}"; - File.Copy(fileToCopy, destFileName); - fileIndex++; - } - } - var destFilePath = $"{tempPath}.zip"; - ZipFile.CreateFromDirectory(tempPath, destFilePath); - //delete temp directory - Directory.Delete(tempPath, true); - var zipFileName = $"/temp/{folderName}.zip"; - return zipFileName; - } - public string MakeBackup() - { - var folderName = $"db_backup_{DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss")}"; - var tempPath = Path.Combine(_webEnv.ContentRootPath, "data", $"temp/{folderName}"); - var imagePath = Path.Combine(_webEnv.ContentRootPath, "data", "images"); - var documentPath = Path.Combine(_webEnv.ContentRootPath, "data", "documents"); - var translationPath = Path.Combine(_webEnv.ContentRootPath, "data", "translations"); - var dataPath = StaticHelper.DbName; - var widgetPath = StaticHelper.AdditionalWidgetsPath; - var configPath = StaticHelper.UserConfigPath; - var serverConfigPath = StaticHelper.ServerConfigPath; - if (!Directory.Exists(tempPath)) - Directory.CreateDirectory(tempPath); - if (Directory.Exists(imagePath)) - { - var files = Directory.GetFiles(imagePath); - foreach (var file in files) - { - var newPath = Path.Combine(tempPath, "images"); - Directory.CreateDirectory(newPath); - File.Copy(file, $"{newPath}/{Path.GetFileName(file)}"); - } - } - if (Directory.Exists(documentPath)) - { - var files = Directory.GetFiles(documentPath); - foreach (var file in files) - { - var newPath = Path.Combine(tempPath, "documents"); - Directory.CreateDirectory(newPath); - File.Copy(file, $"{newPath}/{Path.GetFileName(file)}"); - } - } - if (Directory.Exists(translationPath)) - { - var files = Directory.GetFiles(translationPath); - foreach(var file in files) - { - var newPath = Path.Combine(tempPath, "translations"); - Directory.CreateDirectory(newPath); - File.Copy(file, $"{newPath}/{Path.GetFileName(file)}"); - } - } - if (File.Exists(dataPath)) - { - var newPath = Path.Combine(tempPath, "data"); - Directory.CreateDirectory(newPath); - File.Copy(dataPath, $"{newPath}/{Path.GetFileName(dataPath)}"); - } - if (File.Exists(widgetPath)) - { - var newPath = Path.Combine(tempPath, "data"); - Directory.CreateDirectory(newPath); - File.Copy(widgetPath, $"{newPath}/{Path.GetFileName(widgetPath)}"); - } - if (File.Exists(configPath)) - { - var newPath = Path.Combine(tempPath, "config"); - Directory.CreateDirectory(newPath); - File.Copy(configPath, $"{newPath}/{Path.GetFileName(configPath)}"); - } - if (File.Exists(serverConfigPath)) - { - var newPath = Path.Combine(tempPath, "config"); - Directory.CreateDirectory(newPath); - File.Copy(serverConfigPath, $"{newPath}/{Path.GetFileName(serverConfigPath)}"); - } - var destFilePath = $"{tempPath}.zip"; - ZipFile.CreateFromDirectory(tempPath, destFilePath); - //delete temp directory - Directory.Delete(tempPath, true); - return $"/temp/{folderName}.zip"; - } - public string MoveFileFromTemp(string currentFilePath, string newFolder) - { - string tempPath = "temp/"; - if (string.IsNullOrWhiteSpace(currentFilePath) || !currentFilePath.StartsWith("/temp/")) //file is not in temp directory. - { - return currentFilePath; - } - if (currentFilePath.StartsWith("/")) - { - currentFilePath = currentFilePath.Substring(1); - } - string uploadPath = Path.Combine(_webEnv.ContentRootPath, "data", newFolder); - string oldFilePath = Path.Combine(_webEnv.ContentRootPath, "data", currentFilePath); - if (!Directory.Exists(uploadPath)) - Directory.CreateDirectory(uploadPath); - string newFileUploadPath = oldFilePath.Replace(tempPath, newFolder); - if (File.Exists(oldFilePath)) - { - File.Move(oldFilePath, newFileUploadPath); - } - string newFilePathToReturn = "/" + currentFilePath.Replace(tempPath, newFolder); - return newFilePathToReturn; - } - public bool DeleteFile(string currentFilePath) - { - if (currentFilePath.StartsWith("/")) - { - currentFilePath = currentFilePath.Substring(1); - } - string filePath = Path.Combine(_webEnv.ContentRootPath, "data", currentFilePath); - if (File.Exists(filePath)) - { - File.Delete(filePath); - } - if (!File.Exists(filePath)) //verify file no longer exists. - { - return true; - } - else - { - return false; - } - } - public int ClearTempFolder() - { - int filesDeleted = 0; - var tempPath = GetFullFilePath("temp", false); - if (Directory.Exists(tempPath)) - { - //delete files - var files = Directory.GetFiles(tempPath); - foreach (var file in files) - { - File.Delete(file); - filesDeleted++; - } - //delete folders - var folders = Directory.GetDirectories(tempPath); - foreach(var folder in folders) - { - Directory.Delete(folder, true); - filesDeleted++; - } - } - return filesDeleted; - } - public int ClearUnlinkedThumbnails(List linkedImages) - { - int filesDeleted = 0; - var imagePath = GetFullFilePath("images", false); - if (Directory.Exists(imagePath)) - { - var files = Directory.GetFiles(imagePath); - foreach(var file in files) - { - if (!linkedImages.Contains(Path.GetFileName(file))) - { - File.Delete(file); - filesDeleted++; - } - } - } - return filesDeleted; - } - public int ClearUnlinkedDocuments(List linkedDocuments) - { - int filesDeleted = 0; - var documentPath = GetFullFilePath("documents", false); - if (Directory.Exists(documentPath)) - { - var files = Directory.GetFiles(documentPath); - foreach (var file in files) - { - if (!linkedDocuments.Contains(Path.GetFileName(file))) - { - File.Delete(file); - filesDeleted++; - } - } - } - return filesDeleted; - } - public string GetWidgets() - { - if (File.Exists(StaticHelper.AdditionalWidgetsPath)) - { - try - { - //read file - var widgets = File.ReadAllText(StaticHelper.AdditionalWidgetsPath); - return widgets; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return string.Empty; - } - } - return string.Empty; - } - public bool WidgetsExist() - { - return File.Exists(StaticHelper.AdditionalWidgetsPath); - } - public bool SaveWidgets(string widgetsData) - { - try - { - //Delete Widgets if exists - DeleteWidgets(); - File.WriteAllText(StaticHelper.AdditionalWidgetsPath, widgetsData); - return true; - } catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - public bool DeleteWidgets() - { - try - { - if (File.Exists(StaticHelper.AdditionalWidgetsPath)) - { - File.Delete(StaticHelper.AdditionalWidgetsPath); - } - return true; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - } -} diff --git a/Helper/GasHelper.cs b/Helper/GasHelper.cs deleted file mode 100644 index 8b63c11..0000000 --- a/Helper/GasHelper.cs +++ /dev/null @@ -1,146 +0,0 @@ -using MotoVaultPro.Models; - -namespace MotoVaultPro.Helper -{ - public interface IGasHelper - { - List GetGasRecordViewModels(List result, bool useMPG, bool useUKMPG); - string GetAverageGasMileage(List results, bool useMPG); - } - public class GasHelper : IGasHelper - { - public string GetAverageGasMileage(List results, bool useMPG) - { - var recordsToCalculate = results.Where(x => x.IncludeInAverage); - if (recordsToCalculate.Any()) - { - try - { - var totalMileage = recordsToCalculate.Sum(x => x.DeltaMileage); - var totalGallons = recordsToCalculate.Sum(x => x.Gallons); - var averageGasMileage = totalMileage / totalGallons; - if (!useMPG && averageGasMileage > 0) - { - averageGasMileage = 100 / averageGasMileage; - } - return averageGasMileage.ToString("F"); - } catch (Exception ex) - { - return "0"; - } - } - return "0"; - } - public List GetGasRecordViewModels(List result, bool useMPG, bool useUKMPG) - { - //need to order by to get correct results - result = result.OrderBy(x => x.Date).ThenBy(x => x.Mileage).ToList(); - var computedResults = new List(); - int previousMileage = 0; - decimal unFactoredConsumption = 0.00M; - int unFactoredMileage = 0; - //perform computation. - for (int i = 0; i < result.Count; i++) - { - var currentObject = result[i]; - decimal convertedConsumption; - if (useUKMPG && useMPG) - { - //if we're using UK MPG and the user wants imperial calculation insteace of l/100km - //if UK MPG is selected then the gas consumption are stored in liters but need to convert into UK gallons for computation. - convertedConsumption = currentObject.Gallons / 4.546M; - } - else - { - convertedConsumption = currentObject.Gallons; - } - if (i > 0) - { - var deltaMileage = currentObject.Mileage - previousMileage; - if (deltaMileage < 0) - { - deltaMileage = 0; - } - var gasRecordViewModel = new GasRecordViewModel() - { - Id = currentObject.Id, - VehicleId = currentObject.VehicleId, - MonthId = currentObject.Date.Month, - Date = currentObject.Date.ToShortDateString(), - Mileage = currentObject.Mileage, - Gallons = convertedConsumption, - Cost = currentObject.Cost, - DeltaMileage = deltaMileage, - CostPerGallon = convertedConsumption > 0.00M ? currentObject.Cost / convertedConsumption : 0, - IsFillToFull = currentObject.IsFillToFull, - MissedFuelUp = currentObject.MissedFuelUp, - Notes = currentObject.Notes, - Tags = currentObject.Tags, - ExtraFields = currentObject.ExtraFields, - Files = currentObject.Files - }; - if (currentObject.MissedFuelUp) - { - //if they missed a fuel up, we skip MPG calculation. - gasRecordViewModel.MilesPerGallon = 0; - //reset unFactored vars for missed fuel up because the numbers wont be reliable. - unFactoredConsumption = 0; - unFactoredMileage = 0; - } - else if (currentObject.IsFillToFull && currentObject.Mileage != default) - { - //if user filled to full and an odometer is provided, otherwise we will defer calculations - if (convertedConsumption > 0.00M && deltaMileage > 0) - { - try - { - gasRecordViewModel.MilesPerGallon = useMPG ? (unFactoredMileage + deltaMileage) / (unFactoredConsumption + convertedConsumption) : 100 / ((unFactoredMileage + deltaMileage) / (unFactoredConsumption + convertedConsumption)); - } - catch (Exception ex) - { - gasRecordViewModel.MilesPerGallon = 0; - } - } - //reset unFactored vars - unFactoredConsumption = 0; - unFactoredMileage = 0; - } - else - { - unFactoredConsumption += convertedConsumption; - unFactoredMileage += deltaMileage; - gasRecordViewModel.MilesPerGallon = 0; - } - computedResults.Add(gasRecordViewModel); - } - else - { - computedResults.Add(new GasRecordViewModel() - { - Id = currentObject.Id, - VehicleId = currentObject.VehicleId, - MonthId = currentObject.Date.Month, - Date = currentObject.Date.ToShortDateString(), - Mileage = currentObject.Mileage, - Gallons = convertedConsumption, - Cost = currentObject.Cost, - DeltaMileage = 0, - MilesPerGallon = 0, - CostPerGallon = convertedConsumption > 0.00M ? currentObject.Cost / convertedConsumption : 0, - IsFillToFull = currentObject.IsFillToFull, - MissedFuelUp = currentObject.MissedFuelUp, - Notes = currentObject.Notes, - Tags = currentObject.Tags, - ExtraFields = currentObject.ExtraFields, - Files = currentObject.Files - }); - } - if (currentObject.Mileage != default) - { - previousMileage = currentObject.Mileage; - } - } - return computedResults; - } - } -} diff --git a/Helper/LiteDBHelper.cs b/Helper/LiteDBHelper.cs deleted file mode 100644 index 4c41622..0000000 --- a/Helper/LiteDBHelper.cs +++ /dev/null @@ -1,36 +0,0 @@ -using LiteDB; - -namespace MotoVaultPro.Helper; - -public interface ILiteDBHelper -{ - LiteDatabase GetLiteDB(); - void DisposeLiteDB(); -} -public class LiteDBHelper: ILiteDBHelper -{ - public LiteDatabase db { get; set; } - public LiteDBHelper() - { - if (db == null) - { - db = new LiteDatabase(StaticHelper.DbName); - } - } - public LiteDatabase GetLiteDB() - { - if (db == null) - { - db = new LiteDatabase(StaticHelper.DbName); - } - return db; - } - public void DisposeLiteDB() - { - if (db != null) - { - db.Dispose(); - db = null; - } - } -} diff --git a/Helper/MailHelper.cs b/Helper/MailHelper.cs deleted file mode 100644 index 537f7e9..0000000 --- a/Helper/MailHelper.cs +++ /dev/null @@ -1,259 +0,0 @@ -using MotoVaultPro.Models; -using MimeKit; -using MailKit.Net.Smtp; -using MailKit.Security; - -namespace MotoVaultPro.Helper -{ - public interface IMailHelper - { - OperationResponse NotifyUserForRegistration(string emailAddress, string token); - OperationResponse NotifyUserForPasswordReset(string emailAddress, string token); - OperationResponse NotifyUserForAccountUpdate(string emailAddress, string token); - OperationResponse NotifyUserForReminders(Vehicle vehicle, List emailAddresses, List reminders); - OperationResponse SendTestEmail(string emailAddress, MailConfig testMailConfig); - } - public class MailHelper : IMailHelper - { - private readonly MailConfig mailConfig; - private readonly string serverLanguage; - private readonly string serverDomain; - private readonly IFileHelper _fileHelper; - private readonly ITranslationHelper _translator; - private readonly ILogger _logger; - public MailHelper( - IConfigHelper config, - IFileHelper fileHelper, - ITranslationHelper translationHelper, - ILogger logger - ) { - //load mailConfig from Configuration - mailConfig = config.GetMailConfig(); - serverLanguage = config.GetServerLanguage(); - serverDomain = config.GetServerDomain(); - _fileHelper = fileHelper; - _translator = translationHelper; - _logger = logger; - } - public OperationResponse NotifyUserForRegistration(string emailAddress, string token) - { - if (string.IsNullOrWhiteSpace(mailConfig.EmailServer)) - { - return OperationResponse.Failed("SMTP Server Not Setup"); - } - if (string.IsNullOrWhiteSpace(emailAddress) || string.IsNullOrWhiteSpace(token)) { - return OperationResponse.Failed("Email Address or Token is invalid"); - } - string emailSubject = _translator.Translate(serverLanguage, "Your Registration Token for MotoVaultPro"); - string tokenHtml = token; - if (!string.IsNullOrWhiteSpace(serverDomain)) - { - string cleanedURL = serverDomain.EndsWith('/') ? serverDomain.TrimEnd('/') : serverDomain; - //construct registration URL. - tokenHtml = $"{token}"; - } - string emailBody = $"{_translator.Translate(serverLanguage, "A token has been generated on your behalf, please complete your registration for MotoVaultPro using the token")}: {tokenHtml}"; - var result = SendEmail(new List { emailAddress }, emailSubject, emailBody); - if (result) - { - return OperationResponse.Succeed("Email Sent!"); - } else - { - return OperationResponse.Failed(); - } - } - public OperationResponse NotifyUserForPasswordReset(string emailAddress, string token) - { - if (string.IsNullOrWhiteSpace(mailConfig.EmailServer)) - { - return OperationResponse.Failed("SMTP Server Not Setup"); - } - if (string.IsNullOrWhiteSpace(emailAddress) || string.IsNullOrWhiteSpace(token)) - { - return OperationResponse.Failed("Email Address or Token is invalid"); - } - string emailSubject = _translator.Translate(serverLanguage, "Your Password Reset Token for MotoVaultPro"); - string tokenHtml = token; - if (!string.IsNullOrWhiteSpace(serverDomain)) - { - string cleanedURL = serverDomain.EndsWith('/') ? serverDomain.TrimEnd('/') : serverDomain; - //construct registration URL. - tokenHtml = $"{token}"; - } - string emailBody = $"{_translator.Translate(serverLanguage, "A token has been generated on your behalf, please reset your password for MotoVaultPro using the token")}: {tokenHtml}"; - var result = SendEmail(new List { emailAddress }, emailSubject, emailBody); - if (result) - { - return OperationResponse.Succeed("Email Sent!"); - } - else - { - return OperationResponse.Failed(); - } - } - public OperationResponse SendTestEmail(string emailAddress, MailConfig testMailConfig) - { - if (string.IsNullOrWhiteSpace(testMailConfig.EmailServer)) - { - return OperationResponse.Failed("SMTP Server Not Setup"); - } - if (string.IsNullOrWhiteSpace(emailAddress)) - { - return OperationResponse.Failed("Email Address or Token is invalid"); - } - string emailSubject = _translator.Translate(serverLanguage, "Test Email from MotoVaultPro"); - string emailBody = _translator.Translate(serverLanguage, "If you are seeing this email it means your SMTP configuration is functioning correctly"); - var result = SendEmail(testMailConfig, new List { emailAddress }, emailSubject, emailBody); - if (result) - { - return OperationResponse.Succeed("Email Sent!"); - } - else - { - return OperationResponse.Failed(); - } - } - public OperationResponse NotifyUserForAccountUpdate(string emailAddress, string token) - { - if (string.IsNullOrWhiteSpace(mailConfig.EmailServer)) - { - return OperationResponse.Failed("SMTP Server Not Setup"); - } - if (string.IsNullOrWhiteSpace(emailAddress) || string.IsNullOrWhiteSpace(token)) - { - return OperationResponse.Failed("Email Address or Token is invalid"); - } - string emailSubject = _translator.Translate(serverLanguage, "Your User Account Update Token for MotoVaultPro"); - string emailBody = $"{_translator.Translate(serverLanguage, "A token has been generated on your behalf, please update your account for MotoVaultPro using the token")}: {token}"; - var result = SendEmail(new List { emailAddress}, emailSubject, emailBody); - if (result) - { - return OperationResponse.Succeed("Email Sent!"); - } - else - { - return OperationResponse.Failed(); - } - } - public OperationResponse NotifyUserForReminders(Vehicle vehicle, List emailAddresses, List reminders) - { - if (string.IsNullOrWhiteSpace(mailConfig.EmailServer)) - { - return OperationResponse.Failed("SMTP Server Not Setup"); - } - if (!emailAddresses.Any()) - { - return OperationResponse.Failed("No recipients could be found"); - } - if (!reminders.Any()) - { - return OperationResponse.Failed("No reminders could be found"); - } - //get email template, this file has to exist since it's a static file. - var emailTemplatePath = _fileHelper.GetFullFilePath(StaticHelper.ReminderEmailTemplate); - string emailSubject = $"{_translator.Translate(serverLanguage, "Vehicle Reminders From MotoVaultPro")} - {DateTime.Now.ToShortDateString()}"; - //construct html table. - string emailBody = File.ReadAllText(emailTemplatePath); - emailBody = emailBody.Replace("{VehicleInformation}", $"{vehicle.Year} {vehicle.Make} {vehicle.Model} #{StaticHelper.GetVehicleIdentifier(vehicle)}"); - string tableHeader = $"{_translator.Translate(serverLanguage, "Urgency")}{_translator.Translate(serverLanguage, "Description")}{_translator.Translate(serverLanguage, "Due")}"; - string tableBody = ""; - foreach(ReminderRecordViewModel reminder in reminders) - { - var dueOn = reminder.Metric == ReminderMetric.Both ? $"{reminder.Date.ToShortDateString()} or {reminder.Mileage}" : reminder.Metric == ReminderMetric.Date ? $"{reminder.Date.ToShortDateString()}" : $"{reminder.Mileage}"; - tableBody += $"{_translator.Translate(serverLanguage, StaticHelper.GetTitleCaseReminderUrgency(reminder.Urgency))}{reminder.Description}{dueOn}"; - } - emailBody = emailBody.Replace("{TableHeader}", tableHeader).Replace("{TableBody}", tableBody); - try - { - var result = SendEmail(emailAddresses, emailSubject, emailBody); - if (result) - { - return OperationResponse.Succeed("Email Sent!"); - } else - { - return OperationResponse.Failed(); - } - } catch (Exception ex) - { - return OperationResponse.Failed(ex.Message); - } - } - private bool SendEmail(List emailTo, string emailSubject, string emailBody) { - string from = mailConfig.EmailFrom; - var server = mailConfig.EmailServer; - var message = new MimeMessage(); - message.From.Add(new MailboxAddress(from, from)); - foreach(string emailRecipient in emailTo) - { - message.To.Add(new MailboxAddress(emailRecipient, emailRecipient)); - } - message.Subject = emailSubject; - - var builder = new BodyBuilder(); - - builder.HtmlBody = emailBody; - - message.Body = builder.ToMessageBody(); - - using (var client = new SmtpClient()) - { - client.Connect(server, mailConfig.Port, SecureSocketOptions.Auto); - //perform authentication if either username or password is provided. - //do not perform authentication if neither are provided. - if (!string.IsNullOrWhiteSpace(mailConfig.Username) || !string.IsNullOrWhiteSpace(mailConfig.Password)) { - client.Authenticate(mailConfig.Username, mailConfig.Password); - } - try - { - client.Send(message); - client.Disconnect(true); - return true; - } catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - } - private bool SendEmail(MailConfig testMailConfig, List emailTo, string emailSubject, string emailBody) - { - string from = testMailConfig.EmailFrom; - var server = testMailConfig.EmailServer; - var message = new MimeMessage(); - message.From.Add(new MailboxAddress(from, from)); - foreach (string emailRecipient in emailTo) - { - message.To.Add(new MailboxAddress(emailRecipient, emailRecipient)); - } - message.Subject = emailSubject; - - var builder = new BodyBuilder(); - - builder.HtmlBody = emailBody; - - message.Body = builder.ToMessageBody(); - - using (var client = new SmtpClient()) - { - client.Connect(server, testMailConfig.Port, SecureSocketOptions.Auto); - //perform authentication if either username or password is provided. - //do not perform authentication if neither are provided. - if (!string.IsNullOrWhiteSpace(testMailConfig.Username) || !string.IsNullOrWhiteSpace(testMailConfig.Password)) - { - client.Authenticate(testMailConfig.Username, testMailConfig.Password); - } - try - { - client.Send(message); - client.Disconnect(true); - return true; - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return false; - } - } - } - } -} diff --git a/Helper/ReminderHelper.cs b/Helper/ReminderHelper.cs deleted file mode 100644 index ee46023..0000000 --- a/Helper/ReminderHelper.cs +++ /dev/null @@ -1,175 +0,0 @@ -using MotoVaultPro.Models; - -namespace MotoVaultPro.Helper -{ - public interface IReminderHelper - { - ReminderRecord GetUpdatedRecurringReminderRecord(ReminderRecord existingReminder, DateTime? currentDate, int? currentMileage); - List GetReminderRecordViewModels(List reminders, int currentMileage, DateTime dateCompare); - } - public class ReminderHelper: IReminderHelper - { - private readonly IConfigHelper _config; - public ReminderHelper(IConfigHelper config) - { - _config = config; - } - public ReminderRecord GetUpdatedRecurringReminderRecord(ReminderRecord existingReminder, DateTime? currentDate, int? currentMileage) - { - var newDate = currentDate ?? existingReminder.Date; - var newMileage = currentMileage ?? existingReminder.Mileage; - if (existingReminder.Metric == ReminderMetric.Both) - { - if (existingReminder.ReminderMonthInterval != ReminderMonthInterval.Other) - { - existingReminder.Date = newDate.AddMonths((int)existingReminder.ReminderMonthInterval); - } else - { - if (existingReminder.CustomMonthIntervalUnit == ReminderIntervalUnit.Months) - { - existingReminder.Date = newDate.Date.AddMonths(existingReminder.CustomMonthInterval); - } - else if (existingReminder.CustomMonthIntervalUnit == ReminderIntervalUnit.Days) - { - existingReminder.Date = newDate.Date.AddDays(existingReminder.CustomMonthInterval); - } - } - - if (existingReminder.ReminderMileageInterval != ReminderMileageInterval.Other) - { - existingReminder.Mileage = newMileage + (int)existingReminder.ReminderMileageInterval; - } - else - { - existingReminder.Mileage = newMileage + existingReminder.CustomMileageInterval; - } - } - else if (existingReminder.Metric == ReminderMetric.Odometer) - { - if (existingReminder.ReminderMileageInterval != ReminderMileageInterval.Other) - { - existingReminder.Mileage = newMileage + (int)existingReminder.ReminderMileageInterval; - } else - { - existingReminder.Mileage = newMileage + existingReminder.CustomMileageInterval; - } - } - else if (existingReminder.Metric == ReminderMetric.Date) - { - if (existingReminder.ReminderMonthInterval != ReminderMonthInterval.Other) - { - existingReminder.Date = newDate.AddMonths((int)existingReminder.ReminderMonthInterval); - } - else - { - if (existingReminder.CustomMonthIntervalUnit == ReminderIntervalUnit.Months) - { - existingReminder.Date = newDate.AddMonths(existingReminder.CustomMonthInterval); - } - else if (existingReminder.CustomMonthIntervalUnit == ReminderIntervalUnit.Days) - { - existingReminder.Date = newDate.AddDays(existingReminder.CustomMonthInterval); - } - } - } - return existingReminder; - } - public List GetReminderRecordViewModels(List reminders, int currentMileage, DateTime dateCompare) - { - List reminderViewModels = new List(); - var reminderUrgencyConfig = _config.GetReminderUrgencyConfig(); - foreach (var reminder in reminders) - { - if (reminder.UseCustomThresholds) - { - reminderUrgencyConfig = reminder.CustomThresholds; - } - var reminderViewModel = new ReminderRecordViewModel() - { - Id = reminder.Id, - VehicleId = reminder.VehicleId, - Date = reminder.Date, - Mileage = reminder.Mileage, - Description = reminder.Description, - Notes = reminder.Notes, - Metric = reminder.Metric, - UserMetric = reminder.Metric, - IsRecurring = reminder.IsRecurring, - Tags = reminder.Tags - }; - if (reminder.Metric == ReminderMetric.Both) - { - if (reminder.Date < dateCompare) - { - reminderViewModel.Urgency = ReminderUrgency.PastDue; - reminderViewModel.Metric = ReminderMetric.Date; - } - else if (reminder.Mileage < currentMileage) - { - reminderViewModel.Urgency = ReminderUrgency.PastDue; - reminderViewModel.Metric = ReminderMetric.Odometer; - } - else if (reminder.Date < dateCompare.AddDays(reminderUrgencyConfig.VeryUrgentDays)) - { - //if less than a week from today or less than 50 miles from current mileage then very urgent. - reminderViewModel.Urgency = ReminderUrgency.VeryUrgent; - //have to specify by which metric this reminder is urgent. - reminderViewModel.Metric = ReminderMetric.Date; - } - else if (reminder.Mileage < currentMileage + reminderUrgencyConfig.VeryUrgentDistance) - { - reminderViewModel.Urgency = ReminderUrgency.VeryUrgent; - reminderViewModel.Metric = ReminderMetric.Odometer; - } - else if (reminder.Date < dateCompare.AddDays(reminderUrgencyConfig.UrgentDays)) - { - reminderViewModel.Urgency = ReminderUrgency.Urgent; - reminderViewModel.Metric = ReminderMetric.Date; - } - else if (reminder.Mileage < currentMileage + reminderUrgencyConfig.UrgentDistance) - { - reminderViewModel.Urgency = ReminderUrgency.Urgent; - reminderViewModel.Metric = ReminderMetric.Odometer; - } - reminderViewModel.DueDays = (reminder.Date - dateCompare).Days; - reminderViewModel.DueMileage = reminder.Mileage - currentMileage; - } - else if (reminder.Metric == ReminderMetric.Date) - { - if (reminder.Date < dateCompare) - { - reminderViewModel.Urgency = ReminderUrgency.PastDue; - } - else if (reminder.Date < dateCompare.AddDays(reminderUrgencyConfig.VeryUrgentDays)) - { - reminderViewModel.Urgency = ReminderUrgency.VeryUrgent; - } - else if (reminder.Date < dateCompare.AddDays(reminderUrgencyConfig.UrgentDays)) - { - reminderViewModel.Urgency = ReminderUrgency.Urgent; - } - reminderViewModel.DueDays = (reminder.Date - dateCompare).Days; - } - else if (reminder.Metric == ReminderMetric.Odometer) - { - if (reminder.Mileage < currentMileage) - { - reminderViewModel.Urgency = ReminderUrgency.PastDue; - reminderViewModel.Metric = ReminderMetric.Odometer; - } - else if (reminder.Mileage < currentMileage + reminderUrgencyConfig.VeryUrgentDistance) - { - reminderViewModel.Urgency = ReminderUrgency.VeryUrgent; - } - else if (reminder.Mileage < currentMileage + reminderUrgencyConfig.UrgentDistance) - { - reminderViewModel.Urgency = ReminderUrgency.Urgent; - } - reminderViewModel.DueMileage = reminder.Mileage - currentMileage; - } - reminderViewModels.Add(reminderViewModel); - } - return reminderViewModels; - } - } -} diff --git a/Helper/ReportHelper.cs b/Helper/ReportHelper.cs deleted file mode 100644 index 8abbda3..0000000 --- a/Helper/ReportHelper.cs +++ /dev/null @@ -1,144 +0,0 @@ -using MotoVaultPro.Models; -using System.Globalization; - -namespace MotoVaultPro.Helper -{ - public interface IReportHelper - { - IEnumerable GetOdometerRecordSum(List odometerRecords, int year = 0, bool sortIntoYear = false); - IEnumerable GetServiceRecordSum(List serviceRecords, 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); - } - public class ReportHelper: IReportHelper - { - public IEnumerable GetOdometerRecordSum(List odometerRecords, int year = 0, bool sortIntoYear = false) - { - if (year != default) - { - odometerRecords.RemoveAll(x => x.Date.Year != year); - } - if (sortIntoYear) - { - return odometerRecords.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 = 0, - DistanceTraveled = x.Sum(y => y.DistanceTraveled) - }); - } else - { - return odometerRecords.GroupBy(x => x.Date.Month).OrderBy(x => x.Key).Select(x => new CostForVehicleByMonth - { - MonthId = x.Key, - MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(x.Key), - Cost = 0, - DistanceTraveled = x.Sum(y => y.DistanceTraveled) - }); - } - } - public IEnumerable GetServiceRecordSum(List serviceRecords, int year = 0, bool sortIntoYear = false) - { - if (year != default) - { - serviceRecords.RemoveAll(x => x.Date.Year != year); - } - if (sortIntoYear) - { - return serviceRecords.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 serviceRecords.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) - { - upgradeRecords.RemoveAll(x => x.Date.Year != year); - } - if (sortIntoYear) - { - return upgradeRecords.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 upgradeRecords.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 GetGasRecordSum(List gasRecords, int year = 0, bool sortIntoYear = false) - { - if (year != default) - { - gasRecords.RemoveAll(x => x.Date.Year != year); - } - if (sortIntoYear) - { - return gasRecords.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 gasRecords.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 GetTaxRecordSum(List taxRecords, int year = 0, bool sortIntoYear = false) - { - if (year != default) - { - taxRecords.RemoveAll(x => x.Date.Year != year); - } - if (sortIntoYear) - { - return taxRecords.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 taxRecords.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) - }); - } - } - } -} diff --git a/Helper/StaticHelper.cs b/Helper/StaticHelper.cs deleted file mode 100644 index 469a103..0000000 --- a/Helper/StaticHelper.cs +++ /dev/null @@ -1,855 +0,0 @@ -using MotoVaultPro.Models; -using CsvHelper; -using System.Globalization; -using System.Security.Cryptography; -using System.Text; -using System.Text.Json; - -namespace MotoVaultPro.Helper -{ - /// - /// helper method for static vars - /// - public static class StaticHelper - { - public const string VersionNumber = "1.0.0"; - public const string DbName = "data/cartracker.db"; - public const string UserConfigPath = "data/config/userConfig.json"; - public const string ServerConfigPath = "data/config/serverConfig.json"; - public const string LegacyUserConfigPath = "config/userConfig.json"; - public const string LegacyServerConfigPath = "config/serverConfig.json"; - public const string AdditionalWidgetsPath = "data/widgets.html"; - public const string DefaultLogoPath = "/defaults/motovaultpro_logo.png"; - public const string DefaultSmallLogoPath = "/defaults/motovaultpro_logo_small.png"; - public const string GenericErrorMessage = "An error occurred, please try again later"; - public const string ReminderEmailTemplate = "defaults/reminderemailtemplate.txt"; - public const string DefaultAllowedFileExtensions = ".png,.jpg,.jpeg,.pdf,.xls,.xlsx,.docx"; - public const string SponsorsPath = "https://ericgullickson.github.io/ericgullickson/sponsors.json"; - public const string TranslationPath = "https://ericgullickson.github.io/motovaultpro_translations"; - public const string ReleasePath = "https://api.github.com/repos/ericgullickson/motovaultpro/releases/latest"; - public const string TranslationDirectoryPath = $"{TranslationPath}/directory.json"; - public const string ReportNote = "Report generated by MotoVaultPro, a Free and Open Source Vehicle Maintenance Tracker - MotoVaultPro.com"; - public static string GetTitleCaseReminderUrgency(ReminderUrgency input) - { - switch (input) - { - case ReminderUrgency.NotUrgent: - return "Not Urgent"; - case ReminderUrgency.VeryUrgent: - return "Very Urgent"; - case ReminderUrgency.PastDue: - return "Past Due"; - default: - return input.ToString(); - } - } - public static string GetTitleCaseReminderUrgency(string input) - { - switch (input) - { - case "NotUrgent": - return "Not Urgent"; - case "VeryUrgent": - return "Very Urgent"; - case "PastDue": - return "Past Due"; - default: - return input; - } - } - public static string GetReminderUrgencyColor(ReminderUrgency input) - { - switch (input) - { - case ReminderUrgency.NotUrgent: - return "text-bg-success"; - case ReminderUrgency.VeryUrgent: - return "text-bg-danger"; - case ReminderUrgency.PastDue: - return "text-bg-secondary"; - default: - return "text-bg-warning"; - } - } - - public static string GetPlanRecordColor(PlanPriority input) - { - switch (input) - { - case PlanPriority.Critical: - return "text-bg-danger"; - case PlanPriority.Normal: - return "text-bg-primary"; - case PlanPriority.Low: - return "text-bg-info"; - default: - return "text-bg-primary"; - } - } - - public static string GetPlanRecordProgress(PlanProgress input) - { - switch (input) - { - case PlanProgress.Backlog: - return "Planned"; - case PlanProgress.InProgress: - return "Doing"; - case PlanProgress.Testing: - return "Testing"; - case PlanProgress.Done: - return "Done"; - default: - return input.ToString(); - } - } - - public static string TruncateStrings(string input, int maxLength = 25) - { - if (string.IsNullOrWhiteSpace(input)) - { - return string.Empty; - } - if (input.Length > maxLength) - { - return (input.Substring(0, maxLength) + "..."); - } - else - { - return input; - } - } - public static string DefaultActiveTab(UserConfig userConfig, ImportMode tab) - { - var defaultTab = userConfig.DefaultTab; - var visibleTabs = userConfig.VisibleTabs; - if (visibleTabs.Contains(tab) && tab == defaultTab) - { - return "active"; - } - else if (!visibleTabs.Contains(tab)) - { - return "d-none"; - } - return ""; - } - public static string DefaultActiveTabContent(UserConfig userConfig, ImportMode tab) - { - var defaultTab = userConfig.DefaultTab; - if (tab == defaultTab) - { - return "show active"; - } - return ""; - } - public static string DefaultTabSelected(UserConfig userConfig, ImportMode tab) - { - var defaultTab = userConfig.DefaultTab; - var visibleTabs = userConfig.VisibleTabs; - if (!visibleTabs.Contains(tab)) - { - return "disabled"; - } - else if (tab == defaultTab) - { - return "selected"; - } - return ""; - } - public static List GetBaseLineCosts() - { - return new List() - { - new CostForVehicleByMonth {MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(1), MonthId = 1, Cost = 0M}, - new CostForVehicleByMonth {MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(2), MonthId = 2, Cost = 0M}, - new CostForVehicleByMonth {MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(3), MonthId = 3, Cost = 0M}, - new CostForVehicleByMonth {MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(4), MonthId = 4, Cost = 0M}, - new CostForVehicleByMonth {MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(5), MonthId = 5, Cost = 0M}, - new CostForVehicleByMonth {MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(6), MonthId = 6, Cost = 0M}, - new CostForVehicleByMonth {MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(7), MonthId = 7, Cost = 0M}, - new CostForVehicleByMonth {MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(8), MonthId = 8, Cost = 0M}, - new CostForVehicleByMonth {MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(9), MonthId = 9, Cost = 0M}, - new CostForVehicleByMonth {MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(10), MonthId = 10, Cost = 0M}, - new CostForVehicleByMonth {MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(11), MonthId = 11, Cost = 0M}, - new CostForVehicleByMonth {MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(12), MonthId = 12, Cost = 0M} - }; - } - public static List GetBaseLineCostsNoMonthName() - { - return new List() - { - new CostForVehicleByMonth { MonthId = 1, Cost = 0M}, - new CostForVehicleByMonth {MonthId = 2, Cost = 0M}, - new CostForVehicleByMonth {MonthId = 3, Cost = 0M}, - new CostForVehicleByMonth {MonthId = 4, Cost = 0M}, - new CostForVehicleByMonth {MonthId = 5, Cost = 0M}, - new CostForVehicleByMonth {MonthId = 6, Cost = 0M}, - new CostForVehicleByMonth {MonthId = 7, Cost = 0M}, - new CostForVehicleByMonth {MonthId = 8, Cost = 0M}, - new CostForVehicleByMonth {MonthId = 9, Cost = 0M}, - new CostForVehicleByMonth { MonthId = 10, Cost = 0M}, - new CostForVehicleByMonth { MonthId = 11, Cost = 0M}, - new CostForVehicleByMonth { MonthId = 12, Cost = 0M} - }; - } - public static List GetBarChartColors() - { - return new List { "#00876c", "#43956e", "#67a371", "#89b177", "#a9be80", "#c8cb8b", "#e6d79b", "#e4c281", "#e3ab6b", "#e2925b", "#e07952", "#db5d4f" }; - } - - public static ServiceRecord GenericToServiceRecord(GenericRecord input) - { - return new ServiceRecord - { - 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 - { - 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 List AddExtraFields(List recordExtraFields, List templateExtraFields) - { - if (!templateExtraFields.Any()) - { - return new List(); - } - if (!recordExtraFields.Any()) - { - return templateExtraFields; - } - var fieldNames = templateExtraFields.Select(x => x.Name); - //remove fields that are no longer present in template. - recordExtraFields.RemoveAll(x => !fieldNames.Contains(x.Name)); - if (!recordExtraFields.Any()) - { - return templateExtraFields; - } - var recordFieldNames = recordExtraFields.Select(x => x.Name); - //update isrequired setting - foreach (ExtraField extraField in recordExtraFields) - { - var firstMatchingField = templateExtraFields.First(x => x.Name == extraField.Name); - extraField.IsRequired = firstMatchingField.IsRequired; - extraField.FieldType = firstMatchingField.FieldType; - } - //append extra fields - foreach (ExtraField extraField in templateExtraFields) - { - if (!recordFieldNames.Contains(extraField.Name)) - { - recordExtraFields.Add(extraField); - } - } - //re-order extra fields - recordExtraFields = recordExtraFields.OrderBy(x => templateExtraFields.FindIndex(y => y.Name == x.Name)).ToList(); - return recordExtraFields; - } - - public static string GetFuelEconomyUnit(bool useKwh, bool useHours, bool useMPG, bool useUKMPG) - { - string fuelEconomyUnit; - if (useKwh) - { - var distanceUnit = useHours ? "h" : (useMPG ? "mi." : "km"); - fuelEconomyUnit = useMPG ? $"{distanceUnit}/kWh" : $"kWh/100{distanceUnit}"; - } - else if (useMPG && useUKMPG) - { - fuelEconomyUnit = useHours ? "h/g" : "mpg"; - } - else if (useUKMPG) - { - fuelEconomyUnit = useHours ? "l/100h" : "l/100mi."; - } - else - { - fuelEconomyUnit = useHours ? (useMPG ? "h/g" : "l/100h") : (useMPG ? "mpg" : "l/100km"); - } - return fuelEconomyUnit; - } - public static long GetEpochFromDateTime(DateTime date) - { - return new DateTimeOffset(date).ToUnixTimeMilliseconds(); - } - public static void InitMessage(IConfiguration config) - { - Console.WriteLine($"MotoVaultPro {VersionNumber}"); - Console.WriteLine("Website: https://motovaultpro.com"); - Console.WriteLine("Documentation: https://docs.motovaultpro.com"); - Console.WriteLine("GitHub: https://github.com/ericgullickson/motovaultpro"); - var mailConfig = config.GetSection("MailConfig").Get(); - if (mailConfig != null && !string.IsNullOrWhiteSpace(mailConfig.EmailServer)) - { - Console.WriteLine($"SMTP Configured for {mailConfig.EmailServer}"); - } - else - { - Console.WriteLine("SMTP Not Configured"); - } - var motd = config["LUBELOGGER_MOTD"] ?? "Not Configured"; - Console.WriteLine($"Message Of The Day: {motd}"); - if (string.IsNullOrWhiteSpace(CultureInfo.CurrentCulture.Name)) - { - Console.WriteLine("WARNING: No Locale or Culture Configured for MotoVaultPro, Check Environment Variables"); - } - //Create folders if they don't exist. - if (!Directory.Exists("data")) - { - Directory.CreateDirectory("data"); - Console.WriteLine("Created data directory"); - } - if (!Directory.Exists("data/images")) - { - Console.WriteLine("Created images directory"); - Directory.CreateDirectory("data/images"); - } - if (!Directory.Exists("data/documents")) - { - Directory.CreateDirectory("data/documents"); - Console.WriteLine("Created documents directory"); - } - if (!Directory.Exists("data/translations")) - { - Directory.CreateDirectory("data/translations"); - Console.WriteLine("Created translations directory"); - } - if (!Directory.Exists("data/temp")) - { - Directory.CreateDirectory("data/temp"); - Console.WriteLine("Created translations directory"); - } - if (!Directory.Exists("data/config")) - { - Directory.CreateDirectory("data/config"); - Console.WriteLine("Created config directory"); - } - } - public static void CheckMigration(string webRootPath, string webContentPath) - { - //check if current working directory differs from content root. - if (Directory.GetCurrentDirectory() != webContentPath) - { - Console.WriteLine("WARNING: The Working Directory differs from the Web Content Path"); - Console.WriteLine($"Working Directory: {Directory.GetCurrentDirectory()}"); - Console.WriteLine($"Web Content Path: {webContentPath}"); - } - //migrates all user-uploaded files from webroot to new data folder - //images - var imagePath = Path.Combine(webRootPath, "images"); - var docsPath = Path.Combine(webRootPath, "documents"); - var translationPath = Path.Combine(webRootPath, "translations"); - var tempPath = Path.Combine(webRootPath, "temp"); - if (File.Exists(LegacyUserConfigPath)) - { - File.Move(LegacyUserConfigPath, UserConfigPath, true); - } - if (Directory.Exists(imagePath)) - { - foreach (string fileToMove in Directory.GetFiles(imagePath)) - { - var newFilePath = $"data/images/{Path.GetFileName(fileToMove)}"; - File.Move(fileToMove, newFilePath, true); - Console.WriteLine($"Migrated Image: {Path.GetFileName(fileToMove)}"); - } - } - if (Directory.Exists(docsPath)) - { - foreach (string fileToMove in Directory.GetFiles(docsPath)) - { - var newFilePath = $"data/documents/{Path.GetFileName(fileToMove)}"; - File.Move(fileToMove, newFilePath, true); - Console.WriteLine($"Migrated Document: {Path.GetFileName(fileToMove)}"); - } - } - if (Directory.Exists(translationPath)) - { - foreach (string fileToMove in Directory.GetFiles(translationPath)) - { - var newFilePath = $"data/translations/{Path.GetFileName(fileToMove)}"; - File.Move(fileToMove, newFilePath, true); - Console.WriteLine($"Migrated Translation: {Path.GetFileName(fileToMove)}"); - } - } - if (Directory.Exists(tempPath)) - { - foreach (string fileToMove in Directory.GetFiles(tempPath)) - { - var newFilePath = $"data/temp/{Path.GetFileName(fileToMove)}"; - File.Move(fileToMove, newFilePath, true); - Console.WriteLine($"Migrated Temp File: {Path.GetFileName(fileToMove)}"); - } - } - } - public static async void NotifyAsync(string webhookURL, WebHookPayload webHookPayload) - { - if (string.IsNullOrWhiteSpace(webhookURL)) - { - return; - } - var httpClient = new HttpClient(); - if (webhookURL.StartsWith("discord://")) - { - webhookURL = webhookURL.Replace("discord://", "https://"); //cleanurl - //format to discord - httpClient.PostAsJsonAsync(webhookURL, DiscordWebHook.FromWebHookPayload(webHookPayload)); - } - else - { - httpClient.PostAsJsonAsync(webhookURL, webHookPayload); - } - } - public static string GetImportModeIcon(ImportMode importMode) - { - switch (importMode) - { - case ImportMode.ServiceRecord: - return "bi-card-checklist"; - case ImportMode.UpgradeRecord: - return "bi-wrench-adjustable"; - case ImportMode.TaxRecord: - return "bi-currency-dollar"; - case ImportMode.SupplyRecord: - return "bi-shop"; - case ImportMode.PlanRecord: - return "bi-bar-chart-steps"; - case ImportMode.OdometerRecord: - return "bi-speedometer"; - case ImportMode.GasRecord: - return "bi-fuel-pump"; - case ImportMode.NoteRecord: - return "bi-journal-bookmark"; - case ImportMode.ReminderRecord: - return "bi-bell"; - default: - return "bi-file-bar-graph"; - } - } - public static string GetVehicleIdentifier(Vehicle vehicle) - { - if (vehicle.VehicleIdentifier == "LicensePlate") - { - return vehicle.LicensePlate; - } - else - { - if (vehicle.ExtraFields.Any(x => x.Name == vehicle.VehicleIdentifier)) - { - return vehicle.ExtraFields?.FirstOrDefault(x => x.Name == vehicle.VehicleIdentifier)?.Value; - } - else - { - return "N/A"; - } - } - } - public static string GetVehicleIdentifier(VehicleViewModel vehicle) - { - if (vehicle.VehicleIdentifier == "LicensePlate") - { - return vehicle.LicensePlate; - } - else - { - if (vehicle.ExtraFields.Any(x => x.Name == vehicle.VehicleIdentifier)) - { - return vehicle.ExtraFields?.FirstOrDefault(x => x.Name == vehicle.VehicleIdentifier)?.Value; - } - else - { - return "N/A"; - } - } - } - //Translations - public static string GetTranslationDownloadPath(string continent, string name) - { - if (string.IsNullOrWhiteSpace(continent) || string.IsNullOrWhiteSpace(name)) - { - return string.Empty; - } - else - { - switch (continent) - { - case "NorthAmerica": - continent = "North America"; - break; - case "SouthAmerica": - continent = "South America"; - break; - } - return $"{TranslationPath}/{continent}/{name}.json"; - } - } - public static string GetTranslationName(string name) - { - if (string.IsNullOrWhiteSpace(name)) - { - return string.Empty; - } - else - { - try - { - string cleanedName = name.Contains("_") ? name.Replace("_", "-") : name; - string displayName = CultureInfo.GetCultureInfo(cleanedName).DisplayName; - if (string.IsNullOrWhiteSpace(displayName)) - { - return name; - } - else - { - return displayName; - } - } - catch (Exception ex) - { - return name; - } - } - } - //CSV Write Methods - public static void WriteGenericRecordExportModel(CsvWriter _csv, IEnumerable genericRecords) - { - var extraHeaders = genericRecords.SelectMany(x => x.ExtraFields).Select(y => y.Name).Distinct(); - //write headers - _csv.WriteField(nameof(GenericRecordExportModel.Date)); - _csv.WriteField(nameof(GenericRecordExportModel.Description)); - _csv.WriteField(nameof(GenericRecordExportModel.Cost)); - _csv.WriteField(nameof(GenericRecordExportModel.Notes)); - _csv.WriteField(nameof(GenericRecordExportModel.Odometer)); - _csv.WriteField(nameof(GenericRecordExportModel.Tags)); - foreach (string extraHeader in extraHeaders) - { - _csv.WriteField($"extrafield_{extraHeader}"); - } - _csv.NextRecord(); - foreach (GenericRecordExportModel genericRecord in genericRecords) - { - _csv.WriteField(genericRecord.Date); - _csv.WriteField(genericRecord.Description); - _csv.WriteField(genericRecord.Cost); - _csv.WriteField(genericRecord.Notes); - _csv.WriteField(genericRecord.Odometer); - _csv.WriteField(genericRecord.Tags); - foreach (string extraHeader in extraHeaders) - { - var extraField = genericRecord.ExtraFields.Where(x => x.Name == extraHeader).FirstOrDefault(); - _csv.WriteField(extraField != null ? extraField.Value : string.Empty); - } - _csv.NextRecord(); - } - } - public static void WriteOdometerRecordExportModel(CsvWriter _csv, IEnumerable genericRecords) - { - var extraHeaders = genericRecords.SelectMany(x => x.ExtraFields).Select(y => y.Name).Distinct(); - //write headers - _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 (OdometerRecordExportModel genericRecord in genericRecords) - { - _csv.WriteField(genericRecord.Date); - _csv.WriteField(genericRecord.InitialOdometer); - _csv.WriteField(genericRecord.Odometer); - _csv.WriteField(genericRecord.Notes); - _csv.WriteField(genericRecord.Tags); - foreach (string extraHeader in extraHeaders) - { - var extraField = genericRecord.ExtraFields.Where(x => x.Name == extraHeader).FirstOrDefault(); - _csv.WriteField(extraField != null ? extraField.Value : string.Empty); - } - _csv.NextRecord(); - } - } - public static void WriteTaxRecordExportModel(CsvWriter _csv, IEnumerable genericRecords) - { - var extraHeaders = genericRecords.SelectMany(x => x.ExtraFields).Select(y => y.Name).Distinct(); - //write headers - _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 (TaxRecordExportModel genericRecord in genericRecords) - { - _csv.WriteField(genericRecord.Date); - _csv.WriteField(genericRecord.Description); - _csv.WriteField(genericRecord.Cost); - _csv.WriteField(genericRecord.Notes); - _csv.WriteField(genericRecord.Tags); - foreach (string extraHeader in extraHeaders) - { - var extraField = genericRecord.ExtraFields.Where(x => x.Name == extraHeader).FirstOrDefault(); - _csv.WriteField(extraField != null ? extraField.Value : string.Empty); - } - _csv.NextRecord(); - } - } - public static void WriteSupplyRecordExportModel(CsvWriter _csv, IEnumerable genericRecords) - { - var extraHeaders = genericRecords.SelectMany(x => x.ExtraFields).Select(y => y.Name).Distinct(); - //write headers - _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 (SupplyRecordExportModel genericRecord in genericRecords) - { - _csv.WriteField(genericRecord.Date); - _csv.WriteField(genericRecord.PartNumber); - _csv.WriteField(genericRecord.PartSupplier); - _csv.WriteField(genericRecord.PartQuantity); - _csv.WriteField(genericRecord.Description); - _csv.WriteField(genericRecord.Notes); - _csv.WriteField(genericRecord.Cost); - _csv.WriteField(genericRecord.Tags); - foreach (string extraHeader in extraHeaders) - { - var extraField = genericRecord.ExtraFields.Where(x => x.Name == extraHeader).FirstOrDefault(); - _csv.WriteField(extraField != null ? extraField.Value : string.Empty); - } - _csv.NextRecord(); - } - } - public static void WritePlanRecordExportModel(CsvWriter _csv, IEnumerable genericRecords) - { - var extraHeaders = genericRecords.SelectMany(x => x.ExtraFields).Select(y => y.Name).Distinct(); - //write headers - _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 (PlanRecordExportModel genericRecord in genericRecords) - { - _csv.WriteField(genericRecord.DateCreated); - _csv.WriteField(genericRecord.DateModified); - _csv.WriteField(genericRecord.Description); - _csv.WriteField(genericRecord.Notes); - _csv.WriteField(genericRecord.Type); - _csv.WriteField(genericRecord.Priority); - _csv.WriteField(genericRecord.Progress); - _csv.WriteField(genericRecord.Cost); - foreach (string extraHeader in extraHeaders) - { - var extraField = genericRecord.ExtraFields.Where(x => x.Name == extraHeader).FirstOrDefault(); - _csv.WriteField(extraField != null ? extraField.Value : string.Empty); - } - _csv.NextRecord(); - } - } - public static string HideZeroCost(string input, bool hideZero, string decorations = "") - { - if (input == 0M.ToString("C2") && hideZero) - { - return "---"; - } - else - { - return string.IsNullOrWhiteSpace(decorations) ? input : $"{input}{decorations}"; - } - } - public static string HideZeroCost(decimal input, bool hideZero, string decorations = "") - { - if (input == default && hideZero) - { - return "---"; - } - else - { - return string.IsNullOrWhiteSpace(decorations) ? input.ToString("C2") : $"{input.ToString("C2")}{decorations}"; - } - } - public static string GetIconByFileExtension(string fileLocation) - { - var fileExt = Path.GetExtension(fileLocation); - if (!fileLocation.StartsWith("/documents") && !fileLocation.StartsWith("documents") && !fileLocation.StartsWith("/temp") && !fileLocation.StartsWith("temp")) - { - return "bi-link-45deg"; - } - switch (fileExt) - { - case ".pdf": - return "bi-file-earmark-pdf"; - case ".zip": - case ".7z": - case ".rar": - return "bi-file-earmark-zip"; - case ".png": - case ".jpg": - case ".jpeg": - return "bi-file-earmark-image"; - case ".xls": - case ".xlsx": - case ".xlsm": - case ".ods": - case ".csv": - return "bi-file-earmark-spreadsheet"; - case ".docx": - case ".odt": - case ".rtf": - return "bi-file-earmark-richtext"; - default: - return "bi-file-earmark"; - } - } - public static JsonSerializerOptions GetInvariantOption() - { - var serializerOption = new JsonSerializerOptions(); - serializerOption.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; - serializerOption.Converters.Add(new InvariantConverter()); - return serializerOption; - } - public static void WriteGasRecordExportModel(CsvWriter _csv, IEnumerable genericRecords) - { - var extraHeaders = genericRecords.SelectMany(x => x.ExtraFields).Select(y => y.Name).Distinct(); - //write headers - _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 (GasRecordExportModel genericRecord in genericRecords) - { - _csv.WriteField(genericRecord.Date); - _csv.WriteField(genericRecord.Odometer); - _csv.WriteField(genericRecord.FuelConsumed); - _csv.WriteField(genericRecord.Cost); - _csv.WriteField(genericRecord.FuelEconomy); - _csv.WriteField(genericRecord.IsFillToFull); - _csv.WriteField(genericRecord.MissedFuelUp); - _csv.WriteField(genericRecord.Notes); - _csv.WriteField(genericRecord.Tags); - foreach (string extraHeader in extraHeaders) - { - var extraField = genericRecord.ExtraFields.Where(x => x.Name == extraHeader).FirstOrDefault(); - _csv.WriteField(extraField != null ? extraField.Value : string.Empty); - } - _csv.NextRecord(); - } - } - public static byte[] RemindersToCalendar(List reminders) - { - //converts reminders to iCal file - StringBuilder sb = new StringBuilder(); - //start the calendar item - sb.AppendLine("BEGIN:VCALENDAR"); - sb.AppendLine("VERSION:2.0"); - sb.AppendLine("PRODID:motovaultpro.com"); - sb.AppendLine("CALSCALE:GREGORIAN"); - sb.AppendLine("METHOD:PUBLISH"); - - //create events. - foreach(ReminderRecordViewModel reminder in reminders) - { - var dtStart = reminder.Date.Date.ToString("yyyyMMddTHHmm00"); - var dtEnd = reminder.Date.Date.AddDays(1).AddMilliseconds(-1).ToString("yyyyMMddTHHmm00"); - var calendarUID = new Guid(MD5.HashData(Encoding.UTF8.GetBytes($"{dtStart}_{reminder.Description}"))); - sb.AppendLine("BEGIN:VEVENT"); - sb.AppendLine("DTSTAMP:" + DateTime.Now.ToString("yyyyMMddTHHmm00")); - sb.AppendLine("UID:" + calendarUID); - sb.AppendLine("DTSTART:" + dtStart); - sb.AppendLine("DTEND:" + dtEnd); - sb.AppendLine($"SUMMARY:{reminder.Description}"); - sb.AppendLine($"DESCRIPTION:{reminder.Description}"); - switch (reminder.Urgency) - { - case ReminderUrgency.NotUrgent: - sb.AppendLine("PRIORITY:3"); - break; - case ReminderUrgency.Urgent: - sb.AppendLine("PRIORITY:2"); - break; - case ReminderUrgency.VeryUrgent: - sb.AppendLine("PRIORITY:1"); - break; - case ReminderUrgency.PastDue: - sb.AppendLine("PRIORITY:1"); - break; - } - sb.AppendLine("END:VEVENT"); - } - - //end calendar item - sb.AppendLine("END:VCALENDAR"); - string calendarContent = sb.ToString(); - return Encoding.UTF8.GetBytes(calendarContent); - } - public static decimal CalculateNiceStepSize(decimal min, decimal max, int desiredTicks) - { - double range = Convert.ToDouble(max - min); - double roughStep = range / desiredTicks; - double exponent = Math.Floor(Math.Log10(roughStep)); - double stepPower = Math.Pow(10, exponent); - double normalizedStep = roughStep / stepPower; - - // Choose the closest nice interval (1, 2, or 5) - double[] niceSteps = { 1, 2, 5 }; - double goodNormalizedStep = niceSteps.OrderBy(s => Math.Abs(s - normalizedStep)).First(); - - return Convert.ToDecimal(goodNormalizedStep * stepPower); - } - } -} diff --git a/Helper/TranslationHelper.cs b/Helper/TranslationHelper.cs deleted file mode 100644 index d03c369..0000000 --- a/Helper/TranslationHelper.cs +++ /dev/null @@ -1,197 +0,0 @@ -using MotoVaultPro.Models; -using Microsoft.Extensions.Caching.Memory; -using System.Text.Json; - -namespace MotoVaultPro.Helper -{ - public interface ITranslationHelper - { - string Translate(string userLanguage, string text); - Dictionary GetTranslations(string userLanguage); - OperationResponse SaveTranslation(string userLanguage, Dictionary translations); - string ExportTranslation(Dictionary translations); - } - public class TranslationHelper : ITranslationHelper - { - private readonly IFileHelper _fileHelper; - private readonly IConfiguration _config; - private readonly ILogger _logger; - private IMemoryCache _cache; - public TranslationHelper(IFileHelper fileHelper, IConfiguration config, IMemoryCache memoryCache, ILogger logger) - { - _fileHelper = fileHelper; - _config = config; - _cache = memoryCache; - _logger = logger; - } - public string Translate(string userLanguage, string text) - { - bool create = bool.Parse(_config["LUBELOGGER_TRANSLATOR"] ?? "false"); - //transform input text into key. - string translationKey = text.Replace(" ", "_"); - var translationFilePath = userLanguage == "en_US" ? _fileHelper.GetFullFilePath($"/defaults/en_US.json") : _fileHelper.GetFullFilePath($"/translations/{userLanguage}.json", false); - var dictionary = _cache.GetOrCreate>($"lang_{userLanguage}", entry => - { - entry.SlidingExpiration = TimeSpan.FromHours(1); - if (File.Exists(translationFilePath)) - { - try - { - var translationFile = File.ReadAllText(translationFilePath); - var translationDictionary = JsonSerializer.Deserialize>(translationFile); - return translationDictionary ?? new Dictionary(); - } catch (Exception ex) - { - _logger.LogError(ex.Message); - return new Dictionary(); - } - } - else - { - _logger.LogError($"Could not find translation file for {userLanguage}"); - return new Dictionary(); - } - }); - if (dictionary != null && dictionary.ContainsKey(translationKey)) - { - return dictionary[translationKey]; - } - else if (create && File.Exists(translationFilePath)) - { - //create entry - dictionary.Add(translationKey, text); - _logger.LogInformation($"Translation key added to {userLanguage} for {translationKey} with value {text}"); - File.WriteAllText(translationFilePath, JsonSerializer.Serialize(dictionary)); - return text; - } - return text; - } - private Dictionary GetDefaultTranslation() - { - //this method always returns en_US translation. - var translationFilePath = _fileHelper.GetFullFilePath($"/defaults/en_US.json"); - if (!string.IsNullOrWhiteSpace(translationFilePath)) - { - //file exists. - try - { - var translationFile = File.ReadAllText(translationFilePath); - var translationDictionary = JsonSerializer.Deserialize>(translationFile); - return translationDictionary ?? new Dictionary(); - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new Dictionary(); - } - } - _logger.LogError($"Could not find translation file for en_US"); - return new Dictionary(); - } - public Dictionary GetTranslations(string userLanguage) - { - var defaultTranslation = GetDefaultTranslation(); - if (userLanguage == "en_US") - { - return defaultTranslation; - } - var translationFilePath = _fileHelper.GetFullFilePath($"/translations/{userLanguage}.json"); - if (!string.IsNullOrWhiteSpace(translationFilePath)) - { - //file exists. - try - { - var translationFile = File.ReadAllText(translationFilePath); - var translationDictionary = JsonSerializer.Deserialize>(translationFile); - if (translationDictionary != null) - { - foreach(var translation in translationDictionary) - { - if (defaultTranslation.ContainsKey(translation.Key)) - { - defaultTranslation[translation.Key] = translation.Value; - } - } - } - return defaultTranslation ?? new Dictionary(); - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return new Dictionary(); - } - } - _logger.LogError($"Could not find translation file for {userLanguage}"); - return new Dictionary(); - } - public OperationResponse SaveTranslation(string userLanguage, Dictionary translations) - { - bool create = bool.Parse(_config["LUBELOGGER_TRANSLATOR"] ?? "false"); - bool isDefaultLanguage = userLanguage == "en_US"; - if (isDefaultLanguage && !create) - { - return OperationResponse.Failed("The translation file name en_US is reserved."); - } - if (string.IsNullOrWhiteSpace(userLanguage)) - { - return OperationResponse.Failed("File name is not provided."); - } - if (!translations.Any()) - { - return OperationResponse.Failed("Translation has no data."); - } - var translationFilePath = isDefaultLanguage ? _fileHelper.GetFullFilePath($"/defaults/en_US.json") : _fileHelper.GetFullFilePath($"/translations/{userLanguage}.json", false); - try - { - if (File.Exists(translationFilePath)) - { - //write to file - File.WriteAllText(translationFilePath, JsonSerializer.Serialize(translations)); - _cache.Remove($"lang_{userLanguage}"); //clear out cache, force a reload from file. - } else - { - //check if directory exists first. - var translationDirectory = _fileHelper.GetFullFilePath("translations/", false); - if (!Directory.Exists(translationDirectory)) - { - Directory.CreateDirectory(translationDirectory); - } - //write to file - File.WriteAllText(translationFilePath, JsonSerializer.Serialize(translations)); - } - return OperationResponse.Succeed("Translation Updated"); - } - catch (Exception ex) - { - _logger.LogError(ex.Message); - return OperationResponse.Failed(); - } - } - public string ExportTranslation(Dictionary translations) - { - try - { - var tempFileName = $"/temp/{Guid.NewGuid()}.json"; - string uploadDirectory = _fileHelper.GetFullFilePath("temp/", false); - if (!Directory.Exists(uploadDirectory)) - { - Directory.CreateDirectory(uploadDirectory); - } - var saveFilePath = _fileHelper.GetFullFilePath(tempFileName, false); - //standardize translation format for export only. - Dictionary sortedTranslations = new Dictionary(); - foreach (var translation in translations.OrderBy(x => x.Key)) - { - sortedTranslations.Add(translation.Key, translation.Value); - }; - File.WriteAllText(saveFilePath, JsonSerializer.Serialize(sortedTranslations, new JsonSerializerOptions { WriteIndented = true })); - return tempFileName; - } - catch(Exception ex) - { - _logger.LogError(ex.Message); - return string.Empty; - } - } - } -} diff --git a/LICENSE b/LICENSE deleted file mode 100644 index c36ff84..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 Hargata Softworks - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/Logic/LoginLogic.cs b/Logic/LoginLogic.cs deleted file mode 100644 index 99ecc06..0000000 --- a/Logic/LoginLogic.cs +++ /dev/null @@ -1,510 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Helper; -using MotoVaultPro.Models; -using Microsoft.Extensions.Caching.Memory; -using Microsoft.IdentityModel.Tokens; -using System.Security.Cryptography; -using System.Text; -using System.Text.Json; - -namespace MotoVaultPro.Logic -{ - public interface ILoginLogic - { - bool MakeUserAdmin(int userId, bool isAdmin); - OperationResponse GenerateUserToken(string emailAddress, bool autoNotify); - bool DeleteUserToken(int tokenId); - bool DeleteUser(int userId); - OperationResponse RegisterOpenIdUser(LoginModel credentials); - OperationResponse UpdateUserDetails(int userId, LoginModel credentials); - OperationResponse RegisterNewUser(LoginModel credentials); - OperationResponse RequestResetPassword(LoginModel credentials); - OperationResponse ResetPasswordByUser(LoginModel credentials); - OperationResponse ResetUserPassword(LoginModel credentials); - OperationResponse SendRegistrationToken(LoginModel credentials); - UserData ValidateUserCredentials(LoginModel credentials); - UserData ValidateOpenIDUser(LoginModel credentials); - bool CheckIfUserIsValid(int userId); - bool CreateRootUserCredentials(LoginModel credentials); - bool DeleteRootUserCredentials(); - bool GenerateTokenForEmailAddress(string emailAddress, bool isPasswordReset); - List GetAllUsers(); - List GetAllTokens(); - KeyValuePair GetPKCEChallengeCode(); - } - public class LoginLogic : ILoginLogic - { - private readonly IUserRecordDataAccess _userData; - private readonly ITokenRecordDataAccess _tokenData; - private readonly IMailHelper _mailHelper; - private readonly IConfigHelper _configHelper; - private IMemoryCache _cache; - public LoginLogic(IUserRecordDataAccess userData, - ITokenRecordDataAccess tokenData, - IMailHelper mailHelper, - IConfigHelper configHelper, - IMemoryCache memoryCache) - { - _userData = userData; - _tokenData = tokenData; - _mailHelper = mailHelper; - _configHelper = configHelper; - _cache = memoryCache; - } - public bool CheckIfUserIsValid(int userId) - { - if (userId == -1) - { - return true; - } - var result = _userData.GetUserRecordById(userId); - if (result == null) - { - return false; - } else - { - return result.Id != 0; - } - } - public OperationResponse UpdateUserDetails(int userId, LoginModel credentials) - { - //get current user details - var existingUser = _userData.GetUserRecordById(userId); - if (existingUser.Id == default) - { - return OperationResponse.Failed("Invalid user"); - } - //validate user token - var existingToken = _tokenData.GetTokenRecordByBody(credentials.Token); - if (existingToken.Id == default || existingToken.EmailAddress != existingUser.EmailAddress) - { - return OperationResponse.Failed("Invalid Token"); - } - if (!string.IsNullOrWhiteSpace(credentials.UserName) && existingUser.UserName != credentials.UserName) - { - //check if new username is already taken. - var existingUserWithUserName = _userData.GetUserRecordByUserName(credentials.UserName); - if (existingUserWithUserName.Id != default) - { - return OperationResponse.Failed("Username already taken"); - } - existingUser.UserName = credentials.UserName; - } - if (!string.IsNullOrWhiteSpace(credentials.EmailAddress) && existingUser.EmailAddress != credentials.EmailAddress) - { - //check if email address already exists - var existingUserWithEmailAddress = _userData.GetUserRecordByEmailAddress(credentials.EmailAddress); - if (existingUserWithEmailAddress.Id != default) - { - return OperationResponse.Failed("A user with that email already exists"); - } - existingUser.EmailAddress = credentials.EmailAddress; - } - if (!string.IsNullOrWhiteSpace(credentials.Password)) - { - //update password - existingUser.Password = GetHash(credentials.Password); - } - //delete token - _tokenData.DeleteToken(existingToken.Id); - var result = _userData.SaveUserRecord(existingUser); - return OperationResponse.Conditional(result, "User Updated", string.Empty); - } - public OperationResponse RegisterOpenIdUser(LoginModel credentials) - { - //validate their token. - var existingToken = _tokenData.GetTokenRecordByBody(credentials.Token); - if (existingToken.Id == default || existingToken.EmailAddress != credentials.EmailAddress) - { - return OperationResponse.Failed("Invalid Token"); - } - if (string.IsNullOrWhiteSpace(credentials.EmailAddress) || string.IsNullOrWhiteSpace(credentials.UserName)) - { - return OperationResponse.Failed("Username cannot be blank"); - } - var existingUser = _userData.GetUserRecordByUserName(credentials.UserName); - if (existingUser.Id != default) - { - return OperationResponse.Failed("Username already taken"); - } - var existingUserWithEmail = _userData.GetUserRecordByEmailAddress(credentials.EmailAddress); - if (existingUserWithEmail.Id != default) - { - return OperationResponse.Failed("A user with that email already exists"); - } - _tokenData.DeleteToken(existingToken.Id); - var newUser = new UserData() - { - UserName = credentials.UserName, - Password = GetHash(NewToken()), //generate a password for OpenID User - EmailAddress = credentials.EmailAddress - }; - var result = _userData.SaveUserRecord(newUser); - if (result) - { - return OperationResponse.Succeed("You will be logged in briefly."); - } - else - { - return OperationResponse.Failed("Something went wrong, please try again later."); - } - } - //handles user registration - public OperationResponse RegisterNewUser(LoginModel credentials) - { - //validate their token. - var existingToken = _tokenData.GetTokenRecordByBody(credentials.Token); - if (existingToken.Id == default || existingToken.EmailAddress != credentials.EmailAddress) - { - return OperationResponse.Failed("Invalid Token"); - } - //token is valid, check if username and password is acceptable and that username is unique. - if (string.IsNullOrWhiteSpace(credentials.EmailAddress) || string.IsNullOrWhiteSpace(credentials.UserName) || string.IsNullOrWhiteSpace(credentials.Password)) - { - return OperationResponse.Failed("Neither username nor password can be blank"); - } - var existingUser = _userData.GetUserRecordByUserName(credentials.UserName); - if (existingUser.Id != default) - { - return OperationResponse.Failed("Username already taken"); - } - var existingUserWithEmail = _userData.GetUserRecordByEmailAddress(credentials.EmailAddress); - if (existingUserWithEmail.Id != default) - { - return OperationResponse.Failed("A user with that email already exists"); - } - //username is unique then we delete the token and create the user. - _tokenData.DeleteToken(existingToken.Id); - var newUser = new UserData() - { - UserName = credentials.UserName, - Password = GetHash(credentials.Password), - EmailAddress = credentials.EmailAddress - }; - var result = _userData.SaveUserRecord(newUser); - if (result) - { - return OperationResponse.Succeed("You will be redirected to the login page briefly."); - } - else - { - return OperationResponse.Failed(); - } - } - public OperationResponse SendRegistrationToken(LoginModel credentials) - { - if (_configHelper.GetServerOpenRegistration()) - { - return GenerateUserToken(credentials.EmailAddress, true); - } else - { - return OperationResponse.Failed("Open Registration Disabled"); - } - } - /// - /// Generates a token and notifies user via email so they can reset their password. - /// - /// - /// - public OperationResponse RequestResetPassword(LoginModel credentials) - { - var existingUser = _userData.GetUserRecordByUserName(credentials.UserName); - if (existingUser.Id != default) - { - //user exists, generate a token and send email. - GenerateTokenForEmailAddress(existingUser.EmailAddress, true); - } - //for security purposes we want to always return true for this method. - //otherwise someone can spam the reset password method to sniff out users. - return OperationResponse.Succeed("If your user exists in the system you should receive an email shortly with instructions on how to proceed."); - } - public OperationResponse ResetPasswordByUser(LoginModel credentials) - { - var existingToken = _tokenData.GetTokenRecordByBody(credentials.Token); - if (existingToken.Id == default || existingToken.EmailAddress != credentials.EmailAddress) - { - return OperationResponse.Failed("Invalid Token"); - } - if (string.IsNullOrWhiteSpace(credentials.Password)) - { - return OperationResponse.Failed("New Password cannot be blank"); - } - //if token is valid. - var existingUser = _userData.GetUserRecordByEmailAddress(credentials.EmailAddress); - if (existingUser.Id == default) - { - return OperationResponse.Failed("Unable to locate user"); - } - existingUser.Password = GetHash(credentials.Password); - var result = _userData.SaveUserRecord(existingUser); - //delete token - _tokenData.DeleteToken(existingToken.Id); - if (result) - { - return OperationResponse.Succeed("Password resetted, you will be redirected to login page shortly."); - } else - { - return OperationResponse.Failed(); - } - } - /// - /// Returns an empty user if can't auth against neither root nor db user. - /// - /// credentials from login page - /// - public UserData ValidateUserCredentials(LoginModel credentials) - { - if (UserIsRoot(credentials)) - { - return GetRootUserData(credentials.UserName); - } - else - { - //authenticate via DB. - var result = _userData.GetUserRecordByUserName(credentials.UserName); - if (GetHash(credentials.Password) == result.Password) - { - result.Password = string.Empty; - return result; - } - else - { - return new UserData(); - } - } - } - public UserData ValidateOpenIDUser(LoginModel credentials) - { - //validate for root user - var isRootUser = _configHelper.AuthenticateRootUserOIDC(credentials.EmailAddress); - if (isRootUser) - { - return GetRootUserData(credentials.EmailAddress); - } - - var result = _userData.GetUserRecordByEmailAddress(credentials.EmailAddress); - if (result.Id != default) - { - result.Password = string.Empty; - return result; - } - else - { - return new UserData(); - } - } - #region "Admin Functions" - public bool MakeUserAdmin(int userId, bool isAdmin) - { - var user = _userData.GetUserRecordById(userId); - if (user == default) - { - return false; - } - user.IsAdmin = isAdmin; - var result = _userData.SaveUserRecord(user); - return result; - } - public List GetAllUsers() - { - var result = _userData.GetUsers(); - return result; - } - public List GetAllTokens() - { - var result = _tokenData.GetTokens(); - return result; - } - public OperationResponse GenerateUserToken(string emailAddress, bool autoNotify) - { - //check if email address already has a token attached to it. - var existingToken = _tokenData.GetTokenRecordByEmailAddress(emailAddress); - if (existingToken.Id != default) - { - if (autoNotify) //re-send email - { - var notificationResult = _mailHelper.NotifyUserForRegistration(emailAddress, existingToken.Body); - if (notificationResult.Success) - { - return OperationResponse.Failed($"There is an existing token tied to {emailAddress}, a new email has been sent out"); - } else - { - return notificationResult; - } - } - return OperationResponse.Failed($"There is an existing token tied to {emailAddress}"); - } - var token = new Token() - { - Body = NewToken(), - EmailAddress = emailAddress - }; - var result = _tokenData.CreateNewToken(token); - if (result && autoNotify) - { - result = _mailHelper.NotifyUserForRegistration(emailAddress, token.Body).Success; - if (!result) - { - return OperationResponse.Failed("Token Generated, but Email failed to send, please check your SMTP settings."); - } - } - if (result) - { - return OperationResponse.Succeed("Token Generated!"); - } - else - { - return OperationResponse.Failed(); - } - } - public bool DeleteUserToken(int tokenId) - { - var result = _tokenData.DeleteToken(tokenId); - return result; - } - public bool DeleteUser(int userId) - { - var result = _userData.DeleteUserRecord(userId); - return result; - } - public OperationResponse ResetUserPassword(LoginModel credentials) - { - //user might have forgotten their password. - var existingUser = _userData.GetUserRecordByUserName(credentials.UserName); - if (existingUser.Id == default) - { - return OperationResponse.Failed("Unable to find user"); - } - var newPassword = Guid.NewGuid().ToString().Substring(0, 8); - existingUser.Password = GetHash(newPassword); - var result = _userData.SaveUserRecord(existingUser); - if (result) - { - return OperationResponse.Succeed(newPassword); - } - else - { - return OperationResponse.Failed(); - } - } - #endregion - #region "Root User" - public bool CreateRootUserCredentials(LoginModel credentials) - { - //check if file exists - if (File.Exists(StaticHelper.UserConfigPath)) - { - var configFileContents = File.ReadAllText(StaticHelper.UserConfigPath); - var existingUserConfig = JsonSerializer.Deserialize(configFileContents); - if (existingUserConfig is not null) - { - //create hashes of the login credentials. - var hashedUserName = GetHash(credentials.UserName); - var hashedPassword = GetHash(credentials.Password); - //copy over settings that are off limits on the settings page. - existingUserConfig.EnableAuth = true; - existingUserConfig.UserNameHash = hashedUserName; - existingUserConfig.UserPasswordHash = hashedPassword; - } - File.WriteAllText(StaticHelper.UserConfigPath, JsonSerializer.Serialize(existingUserConfig)); - } else - { - var newUserConfig = new UserConfig() - { - EnableAuth = true, - UserNameHash = GetHash(credentials.UserName), - UserPasswordHash = GetHash(credentials.Password) - }; - File.WriteAllText(StaticHelper.UserConfigPath, JsonSerializer.Serialize(newUserConfig)); - } - _cache.Remove("userConfig_-1"); - return true; - } - public bool DeleteRootUserCredentials() - { - var configFileContents = File.ReadAllText(StaticHelper.UserConfigPath); - var existingUserConfig = JsonSerializer.Deserialize(configFileContents); - if (existingUserConfig is not null) - { - //copy over settings that are off limits on the settings page. - existingUserConfig.EnableAuth = false; - existingUserConfig.UserNameHash = string.Empty; - existingUserConfig.UserPasswordHash = string.Empty; - } - //clear out the cached config for the root user. - _cache.Remove("userConfig_-1"); - File.WriteAllText(StaticHelper.UserConfigPath, JsonSerializer.Serialize(existingUserConfig)); - return true; - } - private bool UserIsRoot(LoginModel credentials) - { - var hashedUserName = GetHash(credentials.UserName); - var hashedPassword = GetHash(credentials.Password); - return _configHelper.AuthenticateRootUser(hashedUserName, hashedPassword); - } - private UserData GetRootUserData(string username) - { - return new UserData() - { - Id = -1, - UserName = username, - IsAdmin = true, - IsRootUser = true, - EmailAddress = string.Empty - }; - } - #endregion - private static string GetHash(string value) - { - StringBuilder Sb = new StringBuilder(); - - using (var hash = SHA256.Create()) - { - Encoding enc = Encoding.UTF8; - byte[] result = hash.ComputeHash(enc.GetBytes(value)); - - foreach (byte b in result) - Sb.Append(b.ToString("x2")); - } - - return Sb.ToString(); - } - private string NewToken() - { - return Guid.NewGuid().ToString().Substring(0, 8); - } - public KeyValuePair GetPKCEChallengeCode() - { - var verifierCode = Base64UrlEncoder.Encode(Guid.NewGuid().ToString().Replace("-", "")); - var verifierBytes = Encoding.UTF8.GetBytes(verifierCode); - var hashedCode = SHA256.Create().ComputeHash(verifierBytes); - var encodedChallengeCode = Base64UrlEncoder.Encode(hashedCode); - return new KeyValuePair(verifierCode, encodedChallengeCode); - } - public bool GenerateTokenForEmailAddress(string emailAddress, bool isPasswordReset) - { - bool result = false; - //check if there is already a token tied to this email address. - var existingToken = _tokenData.GetTokenRecordByEmailAddress(emailAddress); - if (existingToken.Id == default) - { - //no token, generate one and send. - var token = new Token() - { - Body = NewToken(), - EmailAddress = emailAddress - }; - result = _tokenData.CreateNewToken(token); - if (result) - { - result = isPasswordReset ? _mailHelper.NotifyUserForPasswordReset(emailAddress, token.Body).Success : _mailHelper.NotifyUserForAccountUpdate(emailAddress, token.Body).Success; - } - } else - { - //token exists, send it again. - result = isPasswordReset ? _mailHelper.NotifyUserForPasswordReset(emailAddress, existingToken.Body).Success : _mailHelper.NotifyUserForAccountUpdate(emailAddress, existingToken.Body).Success; - } - return result; - } - } -} diff --git a/Logic/OdometerLogic.cs b/Logic/OdometerLogic.cs deleted file mode 100644 index e51929c..0000000 --- a/Logic/OdometerLogic.cs +++ /dev/null @@ -1,71 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Models; - -namespace MotoVaultPro.Logic -{ - public interface IOdometerLogic - { - int GetLastOdometerRecordMileage(int vehicleId, List odometerRecords); - bool AutoInsertOdometerRecord(OdometerRecord odometer); - List AutoConvertOdometerRecord(List odometerRecords); - } - public class OdometerLogic: IOdometerLogic - { - private readonly IOdometerRecordDataAccess _odometerRecordDataAccess; - private readonly ILogger _logger; - public OdometerLogic(IOdometerRecordDataAccess odometerRecordDataAccess, ILogger logger) - { - _odometerRecordDataAccess = odometerRecordDataAccess; - _logger = logger; - } - public int GetLastOdometerRecordMileage(int vehicleId, List odometerRecords) - { - if (!odometerRecords.Any()) - { - odometerRecords = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId); - } - if (!odometerRecords.Any()) - { - //no existing odometer records for this vehicle. - return 0; - } - return odometerRecords.Max(x => x.Mileage); - } - public bool AutoInsertOdometerRecord(OdometerRecord odometer) - { - if (odometer.Mileage == default) - { - return false; - } - var lastReportedMileage = GetLastOdometerRecordMileage(odometer.VehicleId, new List()); - odometer.InitialMileage = lastReportedMileage != default ? lastReportedMileage : odometer.Mileage; - - var result = _odometerRecordDataAccess.SaveOdometerRecordToVehicle(odometer); - return result; - } - public List AutoConvertOdometerRecord(List odometerRecords) - { - //perform ordering - odometerRecords = odometerRecords.OrderBy(x => x.Date).ThenBy(x => x.Mileage).ToList(); - int previousMileage = 0; - for (int i = 0; i < odometerRecords.Count; i++) - { - var currentObject = odometerRecords[i]; - if (previousMileage == default) - { - //first record - currentObject.InitialMileage = currentObject.Mileage; - } - else - { - //subsequent records - currentObject.InitialMileage = previousMileage; - } - //save to db. - _odometerRecordDataAccess.SaveOdometerRecordToVehicle(currentObject); - previousMileage = currentObject.Mileage; - } - return odometerRecords; - } - } -} diff --git a/Logic/UserLogic.cs b/Logic/UserLogic.cs deleted file mode 100644 index 094da0d..0000000 --- a/Logic/UserLogic.cs +++ /dev/null @@ -1,123 +0,0 @@ -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Helper; -using MotoVaultPro.Models; - -namespace MotoVaultPro.Logic -{ - public interface IUserLogic - { - List GetCollaboratorsForVehicle(int vehicleId); - bool AddUserAccessToVehicle(int userId, int vehicleId); - bool DeleteCollaboratorFromVehicle(int userId, int vehicleId); - OperationResponse AddCollaboratorToVehicle(int vehicleId, string username); - List FilterUserVehicles(List results, int userId); - bool UserCanEditVehicle(int userId, int vehicleId); - bool DeleteAllAccessToVehicle(int vehicleId); - bool DeleteAllAccessToUser(int userId); - } - public class UserLogic: IUserLogic - { - private readonly IUserAccessDataAccess _userAccess; - private readonly IUserRecordDataAccess _userData; - public UserLogic(IUserAccessDataAccess userAccess, - IUserRecordDataAccess userData) { - _userAccess = userAccess; - _userData = userData; - } - public List GetCollaboratorsForVehicle(int vehicleId) - { - var result = _userAccess.GetUserAccessByVehicleId(vehicleId); - var convertedResult = new List(); - //convert useraccess to usercollaborator - foreach(UserAccess userAccess in result) - { - var userCollaborator = new UserCollaborator - { - UserName = _userData.GetUserRecordById(userAccess.Id.UserId).UserName, - UserVehicle = userAccess.Id - }; - convertedResult.Add(userCollaborator); - } - return convertedResult; - } - public OperationResponse AddCollaboratorToVehicle(int vehicleId, string username) - { - //try to find existing user. - var existingUser = _userData.GetUserRecordByUserName(username); - if (existingUser.Id != default) - { - //user exists. - //check if user is already a collaborator - var userAccess = _userAccess.GetUserAccessByVehicleAndUserId(existingUser.Id, vehicleId); - if (userAccess != null) - { - return OperationResponse.Failed("User is already a collaborator"); - } - var result = AddUserAccessToVehicle(existingUser.Id, vehicleId); - if (result) - { - return OperationResponse.Succeed("Collaborator Added"); - } - return OperationResponse.Failed(); - } - return OperationResponse.Failed($"Unable to find user {username} in the system"); - } - public bool DeleteCollaboratorFromVehicle(int userId, int vehicleId) - { - var result = _userAccess.DeleteUserAccess(userId, vehicleId); - return result; - } - public bool AddUserAccessToVehicle(int userId, int vehicleId) - { - if (userId == -1) - { - return true; - } - var userVehicle = new UserVehicle { UserId = userId, VehicleId = vehicleId }; - var userAccess = new UserAccess { Id = userVehicle }; - var result = _userAccess.SaveUserAccess(userAccess); - return result; - } - public List FilterUserVehicles(List results, int userId) - { - //user is root user. - if (userId == -1) - { - return results; - } - var accessibleVehicles = _userAccess.GetUserAccessByUserId(userId); - if (accessibleVehicles.Any()) - { - var vehicleIds = accessibleVehicles.Select(x => x.Id.VehicleId); - return results.Where(x => vehicleIds.Contains(x.Id)).ToList(); - } - else - { - return new List(); - } - } - public bool UserCanEditVehicle(int userId, int vehicleId) - { - if (userId == -1) - { - return true; - } - var userAccess = _userAccess.GetUserAccessByVehicleAndUserId(userId, vehicleId); - if (userAccess != null) - { - return true; - } - return false; - } - public bool DeleteAllAccessToVehicle(int vehicleId) - { - var result = _userAccess.DeleteAllAccessRecordsByVehicleId(vehicleId); - return result; - } - public bool DeleteAllAccessToUser(int userId) - { - var result = _userAccess.DeleteAllAccessRecordsByUserId(userId); - return result; - } - } -} diff --git a/Logic/VehicleLogic.cs b/Logic/VehicleLogic.cs deleted file mode 100644 index e1cada0..0000000 --- a/Logic/VehicleLogic.cs +++ /dev/null @@ -1,421 +0,0 @@ -using MotoVaultPro.Controllers; -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Helper; -using MotoVaultPro.Models; - -namespace MotoVaultPro.Logic -{ - public interface IVehicleLogic - { - VehicleRecords GetVehicleRecords(int vehicleId); - decimal GetVehicleTotalCost(VehicleRecords vehicleRecords); - int GetMaxMileage(int vehicleId); - int GetMaxMileage(VehicleRecords vehicleRecords); - int GetMinMileage(int vehicleId); - int GetMinMileage(VehicleRecords vehicleRecords); - 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); - List GetPlans(List vehicles, bool excludeDone); - bool UpdateRecurringTaxes(int vehicleId); - void RestoreSupplyRecordsByUsage(List supplyUsage, string usageDescription); - } - public class VehicleLogic: IVehicleLogic - { - private readonly IServiceRecordDataAccess _serviceRecordDataAccess; - private readonly IGasRecordDataAccess _gasRecordDataAccess; - private readonly IUpgradeRecordDataAccess _upgradeRecordDataAccess; - private readonly ITaxRecordDataAccess _taxRecordDataAccess; - private readonly IOdometerRecordDataAccess _odometerRecordDataAccess; - private readonly IReminderRecordDataAccess _reminderRecordDataAccess; - private readonly IPlanRecordDataAccess _planRecordDataAccess; - private readonly IReminderHelper _reminderHelper; - private readonly IVehicleDataAccess _dataAccess; - private readonly ISupplyRecordDataAccess _supplyRecordDataAccess; - private readonly ILogger _logger; - - public VehicleLogic( - IServiceRecordDataAccess serviceRecordDataAccess, - IGasRecordDataAccess gasRecordDataAccess, - IUpgradeRecordDataAccess upgradeRecordDataAccess, - ITaxRecordDataAccess taxRecordDataAccess, - IOdometerRecordDataAccess odometerRecordDataAccess, - IReminderRecordDataAccess reminderRecordDataAccess, - IPlanRecordDataAccess planRecordDataAccess, - IReminderHelper reminderHelper, - IVehicleDataAccess dataAccess, - ISupplyRecordDataAccess supplyRecordDataAccess, - ILogger logger - ) { - _serviceRecordDataAccess = serviceRecordDataAccess; - _gasRecordDataAccess = gasRecordDataAccess; - _upgradeRecordDataAccess = upgradeRecordDataAccess; - _taxRecordDataAccess = taxRecordDataAccess; - _odometerRecordDataAccess = odometerRecordDataAccess; - _planRecordDataAccess = planRecordDataAccess; - _reminderRecordDataAccess = reminderRecordDataAccess; - _reminderHelper = reminderHelper; - _dataAccess = dataAccess; - _supplyRecordDataAccess = supplyRecordDataAccess; - _logger = logger; - } - public VehicleRecords GetVehicleRecords(int vehicleId) - { - return new VehicleRecords - { - ServiceRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicleId), - GasRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicleId), - TaxRecords = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId), - UpgradeRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicleId), - OdometerRecords = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId), - }; - } - public decimal GetVehicleTotalCost(VehicleRecords vehicleRecords) - { - var serviceRecordSum = vehicleRecords.ServiceRecords.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 + upgradeRecordSum + taxRecordSum + gasRecordSum; - } - public int GetMaxMileage(int vehicleId) - { - var numbersArray = new List(); - var serviceRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicleId); - if (serviceRecords.Any()) - { - numbersArray.Add(serviceRecords.Max(x => x.Mileage)); - } - var gasRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicleId); - if (gasRecords.Any()) - { - numbersArray.Add(gasRecords.Max(x => x.Mileage)); - } - var upgradeRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicleId); - if (upgradeRecords.Any()) - { - numbersArray.Add(upgradeRecords.Max(x => x.Mileage)); - } - var odometerRecords = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId); - if (odometerRecords.Any()) - { - numbersArray.Add(odometerRecords.Max(x => x.Mileage)); - } - return numbersArray.Any() ? numbersArray.Max() : 0; - } - public int GetMaxMileage(VehicleRecords vehicleRecords) - { - var numbersArray = new List(); - if (vehicleRecords.ServiceRecords.Any()) - { - numbersArray.Add(vehicleRecords.ServiceRecords.Max(x => x.Mileage)); - } - if (vehicleRecords.GasRecords.Any()) - { - numbersArray.Add(vehicleRecords.GasRecords.Max(x => x.Mileage)); - } - if (vehicleRecords.UpgradeRecords.Any()) - { - numbersArray.Add(vehicleRecords.UpgradeRecords.Max(x => x.Mileage)); - } - if (vehicleRecords.OdometerRecords.Any()) - { - numbersArray.Add(vehicleRecords.OdometerRecords.Max(x => x.Mileage)); - } - return numbersArray.Any() ? numbersArray.Max() : 0; - } - public int GetMinMileage(int vehicleId) - { - var numbersArray = new List(); - var serviceRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicleId).Where(x => x.Mileage != default); - if (serviceRecords.Any()) - { - numbersArray.Add(serviceRecords.Min(x => x.Mileage)); - } - var gasRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicleId).Where(x => x.Mileage != default); - if (gasRecords.Any()) - { - numbersArray.Add(gasRecords.Min(x => x.Mileage)); - } - var upgradeRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicleId).Where(x => x.Mileage != default); - if (upgradeRecords.Any()) - { - numbersArray.Add(upgradeRecords.Min(x => x.Mileage)); - } - var odometerRecords = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId).Where(x => x.Mileage != default); - if (odometerRecords.Any()) - { - numbersArray.Add(odometerRecords.Min(x => x.Mileage)); - } - return numbersArray.Any() ? numbersArray.Min() : 0; - } - public int GetMinMileage(VehicleRecords vehicleRecords) - { - var numbersArray = new List(); - var _serviceRecords = vehicleRecords.ServiceRecords.Where(x => x.Mileage != default).ToList(); - if (_serviceRecords.Any()) - { - numbersArray.Add(_serviceRecords.Min(x => x.Mileage)); - } - var _gasRecords = vehicleRecords.GasRecords.Where(x => x.Mileage != default).ToList(); - if (_gasRecords.Any()) - { - numbersArray.Add(_gasRecords.Min(x => x.Mileage)); - } - var _upgradeRecords = vehicleRecords.UpgradeRecords.Where(x => x.Mileage != default).ToList(); - if (_upgradeRecords.Any()) - { - numbersArray.Add(_upgradeRecords.Min(x => x.Mileage)); - } - var _odometerRecords = vehicleRecords.OdometerRecords.Where(x => x.Mileage != default).ToList(); - if (_odometerRecords.Any()) - { - numbersArray.Add(_odometerRecords.Min(x => x.Mileage)); - } - return numbersArray.Any() ? numbersArray.Min() : 0; - } - 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; - bool usePurchaseDate = false; - bool useSoldDate = false; - if (!string.IsNullOrWhiteSpace(soldDate) && DateTime.TryParse(soldDate, out DateTime vehicleSoldDate)) - { - if (year == default || year >= vehicleSoldDate.Year) //All Time is selected or the selected year is greater or equal to the year the vehicle is sold - { - endDate = vehicleSoldDate; //cap end date to vehicle sold date. - useSoldDate = true; - } - } - if (!string.IsNullOrWhiteSpace(purchaseDate) && DateTime.TryParse(purchaseDate, out DateTime vehiclePurchaseDate)) - { - if (year == default || year <= vehiclePurchaseDate.Year) //All Time is selected or the selected year is less or equal to the year the vehicle is purchased - { - startDate = vehiclePurchaseDate; //cap start date to vehicle purchase date - usePurchaseDate = true; - } - } - if (year != default) - { - var calendarYearStart = new DateTime(year, 1, 1); - var calendarYearEnd = new DateTime(year + 1, 1, 1); - if (!useSoldDate) - { - endDate = endDate > calendarYearEnd ? calendarYearEnd : endDate; - } - if (!usePurchaseDate) - { - startDate = startDate > calendarYearStart ? calendarYearStart : startDate; - } - var timeElapsed = (int)Math.Floor((endDate - startDate).TotalDays); - return timeElapsed; - } - var dateArray = new List() { startDate }; - dateArray.AddRange(serviceRecords.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)); - dateArray.AddRange(taxRecords.Select(x => x.Date)); - if (dateArray.Any()) - { - startDate = dateArray.Min(); - var timeElapsed = (int)Math.Floor((endDate - startDate).TotalDays); - return timeElapsed; - } else - { - return 1; - } - } - public bool GetVehicleHasUrgentOrPastDueReminders(int vehicleId, int currentMileage) - { - var reminders = _reminderRecordDataAccess.GetReminderRecordsByVehicleId(vehicleId); - var results = _reminderHelper.GetReminderRecordViewModels(reminders, currentMileage, DateTime.Now); - return results.Any(x => x.Urgency == ReminderUrgency.VeryUrgent || x.Urgency == ReminderUrgency.PastDue); - } - - public List GetVehicleInfo(List vehicles) - { - List apiResult = new List(); - - foreach (Vehicle vehicle in vehicles) - { - var currentMileage = GetMaxMileage(vehicle.Id); - var reminders = _reminderRecordDataAccess.GetReminderRecordsByVehicleId(vehicle.Id); - var results = _reminderHelper.GetReminderRecordViewModels(reminders, currentMileage, DateTime.Now); - - var serviceRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicle.Id); - var upgradeRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicle.Id); - var gasRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicle.Id); - var taxRecords = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicle.Id); - var planRecords = _planRecordDataAccess.GetPlanRecordsByVehicleId(vehicle.Id); - - var resultToAdd = new VehicleInfo() - { - VehicleData = vehicle, - LastReportedOdometer = currentMileage, - ServiceRecordCount = serviceRecords.Count(), - ServiceRecordCost = serviceRecords.Sum(x => x.Cost), - UpgradeRecordCount = upgradeRecords.Count(), - UpgradeRecordCost = upgradeRecords.Sum(x => x.Cost), - GasRecordCount = gasRecords.Count(), - GasRecordCost = gasRecords.Sum(x => x.Cost), - TaxRecordCount = taxRecords.Count(), - TaxRecordCost = taxRecords.Sum(x => x.Cost), - VeryUrgentReminderCount = results.Count(x => x.Urgency == ReminderUrgency.VeryUrgent), - PastDueReminderCount = results.Count(x => x.Urgency == ReminderUrgency.PastDue), - UrgentReminderCount = results.Count(x => x.Urgency == ReminderUrgency.Urgent), - NotUrgentReminderCount = results.Count(x => x.Urgency == ReminderUrgency.NotUrgent), - PlanRecordBackLogCount = planRecords.Count(x => x.Progress == PlanProgress.Backlog), - PlanRecordInProgressCount = planRecords.Count(x => x.Progress == PlanProgress.InProgress), - PlanRecordTestingCount = planRecords.Count(x => x.Progress == PlanProgress.Testing), - PlanRecordDoneCount = planRecords.Count(x => x.Progress == PlanProgress.Done) - }; - //set next reminder - if (results.Any(x => (x.Metric == ReminderMetric.Date || x.Metric == ReminderMetric.Both) && x.Date >= DateTime.Now.Date)) - { - resultToAdd.NextReminder = results.Where(x => x.Date >= DateTime.Now.Date).OrderBy(x => x.Date).Select(x => new ReminderAPIExportModel { Id = x.Id.ToString(), Description = x.Description, Urgency = x.Urgency.ToString(), Metric = x.Metric.ToString(), UserMetric = x.UserMetric.ToString(), Notes = x.Notes, DueDate = x.Date.ToShortDateString(), DueOdometer = x.Mileage.ToString(), DueDays = x.DueDays.ToString(), DueDistance = x.DueMileage.ToString(), Tags = string.Join(' ', x.Tags) }).First(); - } - else if (results.Any(x => (x.Metric == ReminderMetric.Odometer || x.Metric == ReminderMetric.Both) && x.Mileage >= currentMileage)) - { - resultToAdd.NextReminder = results.Where(x => x.Mileage >= currentMileage).OrderBy(x => x.Mileage).Select(x => new ReminderAPIExportModel { Id = x.Id.ToString(), Description = x.Description, Urgency = x.Urgency.ToString(), Metric = x.Metric.ToString(), UserMetric = x.UserMetric.ToString(), Notes = x.Notes, DueDate = x.Date.ToShortDateString(), DueOdometer = x.Mileage.ToString(), DueDays = x.DueDays.ToString(), DueDistance = x.DueMileage.ToString(), Tags = string.Join(' ', x.Tags) }).First(); - } - apiResult.Add(resultToAdd); - } - return apiResult; - } - public List GetReminders(List vehicles, bool isCalendar) - { - List reminders = new List(); - foreach (Vehicle vehicle in vehicles) - { - var vehicleReminders = _reminderRecordDataAccess.GetReminderRecordsByVehicleId(vehicle.Id); - if (isCalendar) - { - vehicleReminders.RemoveAll(x => x.Metric == ReminderMetric.Odometer); - //we don't care about mileages so we can basically fake the current vehicle mileage. - } - if (vehicleReminders.Any()) - { - var vehicleMileage = isCalendar ? 0 : GetMaxMileage(vehicle.Id); - var reminderUrgency = _reminderHelper.GetReminderRecordViewModels(vehicleReminders, vehicleMileage, DateTime.Now); - reminderUrgency = reminderUrgency.Select(x => new ReminderRecordViewModel { Id = x.Id, Metric = x.Metric, Date = x.Date, Notes = x.Notes, Mileage = x.Mileage, Urgency = x.Urgency, Description = $"{vehicle.Year} {vehicle.Make} {vehicle.Model} #{StaticHelper.GetVehicleIdentifier(vehicle)} - {x.Description}" }).ToList(); - reminders.AddRange(reminderUrgency); - } - } - return reminders.OrderByDescending(x=>x.Urgency).ToList(); - } - public List GetPlans(List vehicles, bool excludeDone) - { - List plans = new List(); - foreach (Vehicle vehicle in vehicles) - { - var vehiclePlans = _planRecordDataAccess.GetPlanRecordsByVehicleId(vehicle.Id); - if (excludeDone) - { - vehiclePlans.RemoveAll(x => x.Progress == PlanProgress.Done); - } - if (vehiclePlans.Any()) - { - var convertedPlans = vehiclePlans.Select(x => new PlanRecord { ImportMode = x.ImportMode, Priority = x.Priority, Progress = x.Progress, Notes = x.Notes, RequisitionHistory = x.RequisitionHistory, Description = $"{vehicle.Year} {vehicle.Make} {vehicle.Model} #{StaticHelper.GetVehicleIdentifier(vehicle)} - {x.Description}" }); - plans.AddRange(convertedPlans); - } - } - return plans.OrderBy(x => x.Priority).ThenBy(x=>x.Progress).ToList(); - } - public bool UpdateRecurringTaxes(int vehicleId) - { - var vehicleData = _dataAccess.GetVehicleById(vehicleId); - if (!string.IsNullOrWhiteSpace(vehicleData.SoldDate)) - { - return false; - } - bool RecurringTaxIsOutdated(TaxRecord taxRecord) - { - var monthInterval = taxRecord.RecurringInterval != ReminderMonthInterval.Other ? (int)taxRecord.RecurringInterval : taxRecord.CustomMonthInterval; - bool addDays = taxRecord.RecurringInterval == ReminderMonthInterval.Other && taxRecord.CustomMonthIntervalUnit == ReminderIntervalUnit.Days; - return addDays ? DateTime.Now > taxRecord.Date.AddDays(monthInterval) : DateTime.Now > taxRecord.Date.AddMonths(monthInterval); - } - var result = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId); - var outdatedRecurringFees = result.Where(x => x.IsRecurring && RecurringTaxIsOutdated(x)); - if (outdatedRecurringFees.Any()) - { - var success = false; - foreach (TaxRecord recurringFee in outdatedRecurringFees) - { - var monthInterval = recurringFee.RecurringInterval != ReminderMonthInterval.Other ? (int)recurringFee.RecurringInterval : recurringFee.CustomMonthInterval; - bool isOutdated = true; - bool addDays = recurringFee.RecurringInterval == ReminderMonthInterval.Other && recurringFee.CustomMonthIntervalUnit == ReminderIntervalUnit.Days; - //update the original outdated tax record - recurringFee.IsRecurring = false; - _taxRecordDataAccess.SaveTaxRecordToVehicle(recurringFee); - //month multiplier for severely outdated monthly tax records. - int monthMultiplier = 1; - var originalDate = recurringFee.Date; - while (isOutdated) - { - try - { - var nextDate = addDays ? originalDate.AddDays(monthInterval * monthMultiplier) : originalDate.AddMonths(monthInterval * monthMultiplier); - monthMultiplier++; - var nextnextDate = addDays ? originalDate.AddDays(monthInterval * monthMultiplier) : originalDate.AddMonths(monthInterval * monthMultiplier); - recurringFee.Date = nextDate; - recurringFee.Id = default; //new record - recurringFee.IsRecurring = DateTime.Now <= nextnextDate; - _taxRecordDataAccess.SaveTaxRecordToVehicle(recurringFee); - isOutdated = !recurringFee.IsRecurring; - success = true; - } - catch (Exception) - { - isOutdated = false; //break out of loop if something broke. - success = false; - } - } - } - return success; - } - return false; //no outdated recurring tax records. - } - public void RestoreSupplyRecordsByUsage(List supplyUsage, string usageDescription) - { - foreach (SupplyUsageHistory supply in supplyUsage) - { - try - { - if (supply.Id == default) - { - continue; //no id, skip current supply. - } - var result = _supplyRecordDataAccess.GetSupplyRecordById(supply.Id); - if (result != null && result.Id != default) - { - //supply exists, re-add the quantity and cost - result.Quantity += supply.Quantity; - result.Cost += supply.Cost; - var requisitionRecord = new SupplyUsageHistory - { - Id = supply.Id, - Date = DateTime.Now.Date, - Description = $"Restored from {usageDescription}", - Quantity = supply.Quantity, - Cost = supply.Cost - }; - result.RequisitionHistory.Add(requisitionRecord); - //save - _supplyRecordDataAccess.SaveSupplyRecordToVehicle(result); - } - else - { - _logger.LogError($"Unable to find supply with id {supply.Id}"); - } - } - catch (Exception ex) - { - _logger.LogError($"Error restoring supply with id {supply.Id} : {ex.Message}"); - } - } - } - } -} diff --git a/MOTOVAULTPRO.md b/MOTOVAULTPRO.md deleted file mode 100644 index b4fc5b6..0000000 --- a/MOTOVAULTPRO.md +++ /dev/null @@ -1,138 +0,0 @@ -Technology Stack - -Frontend: React 18 with TypeScript -Backend: Node.js 20 + Express + TypeScript -Database: PostgreSQL 15 -Cache: Redis 7 -File Storage: MinIO (S3-compatible) -Authentication: Auth0 -Container Runtime: Docker -Orchestration: Kubernetes (Nutanix NKP) -GitOps: FluxCD + Kustomize -APIs: NHTSA vPIC (free), Google Maps Platform - -Project Structure -motovaultpro/ -├── docker-compose.yml # Local development environment -├── .env.example # Environment variables template -├── README.md # Project documentation -├── Makefile # Common commands -│ -├── backend/ -│ ├── package.json -│ ├── tsconfig.json -│ ├── Dockerfile -│ ├── src/ -│ │ ├── index.ts # Express server entry point -│ │ ├── app.ts # Express app configuration -│ │ ├── config/ -│ │ │ ├── database.ts # PostgreSQL connection -│ │ │ ├── redis.ts # Redis connection -│ │ │ ├── auth0.ts # Auth0 middleware -│ │ │ └── minio.ts # MinIO client setup -│ │ ├── routes/ -│ │ │ ├── index.ts # Route aggregator -│ │ │ ├── auth.routes.ts # Authentication endpoints -│ │ │ ├── vehicles.routes.ts # Vehicle CRUD + VIN decode -│ │ │ ├── fuel.routes.ts # Fuel log endpoints -│ │ │ ├── maintenance.routes.ts -│ │ │ └── stations.routes.ts # Google Maps integration -│ │ ├── controllers/ -│ │ │ ├── vehicles.controller.ts -│ │ │ ├── fuel.controller.ts -│ │ │ ├── maintenance.controller.ts -│ │ │ └── stations.controller.ts -│ │ ├── services/ -│ │ │ ├── vpic.service.ts # NHTSA vPIC integration -│ │ │ ├── googlemaps.service.ts -│ │ │ ├── cache.service.ts # Redis caching logic -│ │ │ └── storage.service.ts # MinIO operations -│ │ ├── models/ -│ │ │ ├── user.model.ts -│ │ │ ├── vehicle.model.ts -│ │ │ ├── fuel-log.model.ts -│ │ │ └── maintenance-log.model.ts -│ │ ├── middleware/ -│ │ │ ├── auth.middleware.ts -│ │ │ ├── validation.middleware.ts -│ │ │ └── error.middleware.ts -│ │ ├── utils/ -│ │ │ ├── logger.ts # Structured logging -│ │ │ └── validators.ts # Input validation schemas -│ │ └── migrations/ -│ │ ├── 001_initial_schema.sql -│ │ ├── 002_vin_cache.sql -│ │ └── 003_stored_procedures.sql -│ -├── frontend/ -│ ├── package.json -│ ├── tsconfig.json -│ ├── Dockerfile -│ ├── vite.config.ts -│ ├── index.html -│ ├── src/ -│ │ ├── main.tsx -│ │ ├── App.tsx -│ │ ├── api/ -│ │ │ ├── client.ts # Axios instance -│ │ │ ├── vehicles.api.ts -│ │ │ ├── fuel.api.ts -│ │ │ └── stations.api.ts -│ │ ├── components/ -│ │ │ ├── Layout/ -│ │ │ ├── VehicleForm/ -│ │ │ ├── VINDecoder/ -│ │ │ ├── FuelLogForm/ -│ │ │ ├── StationPicker/ # Google Maps component -│ │ │ └── common/ -│ │ ├── pages/ -│ │ │ ├── Dashboard.tsx -│ │ │ ├── Vehicles.tsx -│ │ │ ├── FuelLogs.tsx -│ │ │ └── Maintenance.tsx -│ │ ├── hooks/ -│ │ │ ├── useAuth.ts -│ │ │ ├── useVehicles.ts -│ │ │ └── useGoogleMaps.ts -│ │ ├── store/ -│ │ │ └── index.ts # Zustand or Redux -│ │ └── types/ -│ │ └── index.ts -│ -├── k8s/ # GitOps configurations -│ ├── base/ -│ │ ├── namespace.yaml -│ │ ├── backend/ -│ │ │ ├── deployment.yaml -│ │ │ ├── service.yaml -│ │ │ └── configmap.yaml -│ │ ├── frontend/ -│ │ │ ├── deployment.yaml -│ │ │ └── service.yaml -│ │ ├── postgres/ -│ │ │ ├── statefulset.yaml -│ │ │ ├── service.yaml -│ │ │ ├── pvc.yaml -│ │ │ └── init-scripts.yaml -│ │ ├── redis/ -│ │ │ ├── statefulset.yaml -│ │ │ └── service.yaml -│ │ ├── minio/ -│ │ │ ├── statefulset.yaml -│ │ │ ├── service.yaml -│ │ │ └── pvc.yaml -│ │ └── ingress.yaml -│ │ -│ └── overlays/ -│ ├── development/ -│ │ ├── kustomization.yaml -│ │ └── patches/ -│ └── production/ -│ ├── kustomization.yaml -│ ├── sealed-secrets/ -│ └── patches/ -│ -└── .github/ - └── workflows/ - ├── ci.yml # Test and build - └── cd.yml # Deploy via GitOps \ No newline at end of file diff --git a/MapProfile/ImportMappers.cs b/MapProfile/ImportMappers.cs deleted file mode 100644 index bf20217..0000000 --- a/MapProfile/ImportMappers.cs +++ /dev/null @@ -1,47 +0,0 @@ -using MotoVaultPro.Models; -using CsvHelper.Configuration; - -namespace MotoVaultPro.MapProfile -{ - public class ImportMapper: ClassMap - { - public ImportMapper() - { - Map(m => m.Date).Name(["date", "fuelup_date"]); - Map(m => m.Day).Name(["day"]); - Map(m => m.Month).Name(["month"]); - Map(m => m.Year).Name(["year"]); - Map(m => m.DateCreated).Name(["datecreated"]); - Map(m => m.DateModified).Name(["datemodified"]); - Map(m => m.InitialOdometer).Name(["initialodometer"]); - Map(m => m.Odometer).Name(["odometer", "odo"]); - Map(m => m.FuelConsumed).Name(["gallons", "liters", "litres", "consumption", "quantity", "fuelconsumed", "qty"]); - Map(m => m.Cost).Name(["cost", "total cost", "totalcost", "total price"]); - Map(m => m.Notes).Name("notes", "note"); - Map(m => m.Price).Name(["price"]); - Map(m => m.PartialFuelUp).Name(["partial_fuelup", "partial tank", "partial_fill"]); - Map(m => m.IsFillToFull).Name(["isfilltofull", "filled up"]); - Map(m => m.Description).Name(["description"]); - Map(m => m.MissedFuelUp).Name(["missed_fuelup", "missedfuelup", "missed fill up", "missed_fill"]); - Map(m => m.PartSupplier).Name(["partsupplier"]); - Map(m => m.PartQuantity).Name(["partquantity"]); - Map(m => m.PartNumber).Name(["partnumber"]); - Map(m => m.Progress).Name(["progress"]); - Map(m => m.Type).Name(["type"]); - Map(m => m.Priority).Name(["priority"]); - Map(m => m.Tags).Name(["tags"]); - Map(m => m.ExtraFields).Convert(row => - { - var attributes = new Dictionary(); - foreach (var header in row.Row.HeaderRecord) - { - if (header.ToLower().StartsWith("extrafield_")) - { - attributes.Add(header.Substring(11), row.Row.GetField(header)); - } - } - return attributes; - }); - } - } -} diff --git a/Middleware/Authen.cs b/Middleware/Authen.cs deleted file mode 100644 index 447d9cb..0000000 --- a/Middleware/Authen.cs +++ /dev/null @@ -1,186 +0,0 @@ -using MotoVaultPro.Logic; -using MotoVaultPro.Models; -using Microsoft.AspNetCore.Authentication; -using Microsoft.AspNetCore.DataProtection; -using Microsoft.Extensions.Options; -using System.Security.Claims; -using System.Text; -using System.Text.Encodings.Web; -using System.Text.Json; - -namespace MotoVaultPro.Middleware -{ - public class Authen : AuthenticationHandler - { - private IHttpContextAccessor _httpContext; - private IDataProtector _dataProtector; - private ILoginLogic _loginLogic; - private bool enableAuth; - public Authen( - IOptionsMonitor options, - UrlEncoder encoder, - ILoggerFactory logger, - IConfiguration configuration, - ILoginLogic loginLogic, - IDataProtectionProvider securityProvider, - IHttpContextAccessor httpContext) : base(options, logger, encoder) - { - _httpContext = httpContext; - _dataProtector = securityProvider.CreateProtector("login"); - _loginLogic = loginLogic; - enableAuth = bool.Parse(configuration["EnableAuth"] ?? "false"); - } - protected override async Task HandleAuthenticateAsync() - { - if (!enableAuth) - { - //generate a fake user ticket to go with it lol. - var appIdentity = new ClaimsIdentity("Custom"); - var userIdentity = new List - { - new(ClaimTypes.Name, "admin"), - new(ClaimTypes.NameIdentifier, "-1"), - new(ClaimTypes.Role, nameof(UserData.IsRootUser)) - }; - appIdentity.AddClaims(userIdentity); - AuthenticationTicket ticket = new AuthenticationTicket(new ClaimsPrincipal(appIdentity), Scheme.Name); - return AuthenticateResult.Success(ticket); - } - else - { - //auth is enabled by user, we will have to authenticate the user via a ticket retrieved from the auth cookie. - var access_token = _httpContext.HttpContext.Request.Cookies["ACCESS_TOKEN"]; - //auth using Basic Auth for API. - var request_header = _httpContext.HttpContext.Request.Headers["Authorization"]; - if (string.IsNullOrWhiteSpace(access_token) && string.IsNullOrWhiteSpace(request_header)) - { - return AuthenticateResult.Fail("Cookie is invalid or does not exist."); - } - else if (!string.IsNullOrWhiteSpace(request_header)) - { - var cleanedHeader = request_header.ToString().Replace("Basic ", "").Trim(); - byte[] data = Convert.FromBase64String(cleanedHeader); - string decodedString = Encoding.UTF8.GetString(data); - var splitString = decodedString.Split(":"); - if (splitString.Count() != 2) - { - return AuthenticateResult.Fail("Invalid credentials"); - } - else - { - var userData = _loginLogic.ValidateUserCredentials(new LoginModel { UserName = splitString[0], Password = splitString[1] }); - if (userData.Id != default) - { - var appIdentity = new ClaimsIdentity("Custom"); - var userIdentity = new List - { - new(ClaimTypes.Name, splitString[0]), - new(ClaimTypes.NameIdentifier, userData.Id.ToString()), - new(ClaimTypes.Email, userData.EmailAddress), - new(ClaimTypes.Role, "APIAuth") - }; - if (userData.IsAdmin) - { - userIdentity.Add(new(ClaimTypes.Role, nameof(UserData.IsAdmin))); - } - if (userData.IsRootUser) - { - userIdentity.Add(new(ClaimTypes.Role, nameof(UserData.IsRootUser))); - } - appIdentity.AddClaims(userIdentity); - AuthenticationTicket ticket = new AuthenticationTicket(new ClaimsPrincipal(appIdentity), Scheme.Name); - return AuthenticateResult.Success(ticket); - } - } - } - else if (!string.IsNullOrWhiteSpace(access_token)) - { - try - { - //decrypt the access token. - var decryptedCookie = _dataProtector.Unprotect(access_token); - AuthCookie authCookie = JsonSerializer.Deserialize(decryptedCookie); - if (authCookie != null) - { - //validate auth cookie - if (authCookie.ExpiresOn < DateTime.Now) - { - //if cookie is expired - return AuthenticateResult.Fail("Expired credentials"); - } - else if (authCookie.UserData is null || authCookie.UserData.Id == default || string.IsNullOrWhiteSpace(authCookie.UserData.UserName)) - { - return AuthenticateResult.Fail("Corrupted credentials"); - } - else - { - if (!_loginLogic.CheckIfUserIsValid(authCookie.UserData.Id)) - { - return AuthenticateResult.Fail("Cookie points to non-existant user."); - } - //validate if user is still valid - var appIdentity = new ClaimsIdentity("Custom"); - var userIdentity = new List - { - new(ClaimTypes.Name, authCookie.UserData.UserName), - new(ClaimTypes.NameIdentifier, authCookie.UserData.Id.ToString()), - new(ClaimTypes.Email, authCookie.UserData.EmailAddress), - new(ClaimTypes.Role, "CookieAuth") - }; - if (authCookie.UserData.IsAdmin) - { - userIdentity.Add(new(ClaimTypes.Role, nameof(UserData.IsAdmin))); - } - if (authCookie.UserData.IsRootUser) - { - userIdentity.Add(new(ClaimTypes.Role, nameof(UserData.IsRootUser))); - } - appIdentity.AddClaims(userIdentity); - AuthenticationTicket ticket = new AuthenticationTicket(new ClaimsPrincipal(appIdentity), Scheme.Name); - return AuthenticateResult.Success(ticket); - } - } - } - catch (Exception ex) - { - return AuthenticateResult.Fail("Corrupted credentials"); - } - } - return AuthenticateResult.Fail("Invalid credentials"); - } - } - protected override Task HandleChallengeAsync(AuthenticationProperties properties) - { - if (Request.RouteValues.TryGetValue("controller", out object value)) - { - if (value.ToString().ToLower() == "api") - { - Response.StatusCode = 401; - Response.Headers.Append("WWW-Authenticate", "Basic"); - return Task.CompletedTask; - } - } - if (Request.Path.Value == "/Vehicle/Index" && Request.QueryString.HasValue) - { - Response.Redirect($"/Login/Index?redirectURL={Request.Path.Value}{Request.QueryString.Value}"); - } else - { - Response.Redirect("/Login/Index"); - } - return Task.CompletedTask; - } - protected override Task HandleForbiddenAsync(AuthenticationProperties properties) - { - if (Request.RouteValues.TryGetValue("controller", out object value)) - { - if (value.ToString().ToLower() == "api") - { - Response.StatusCode = 403; - return Task.CompletedTask; - } - } - Response.Redirect("/Error/Unauthorized"); - return Task.CompletedTask; - } - } -} diff --git a/Models/API/MethodParameter.cs b/Models/API/MethodParameter.cs deleted file mode 100644 index 1440f5c..0000000 --- a/Models/API/MethodParameter.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Text.Json.Serialization; - -namespace MotoVaultPro.Models -{ - public class MethodParameter - { - public int Id { get; set; } - [JsonConverter(typeof(FromDateOptional))] - public string StartDate { get; set; } - [JsonConverter(typeof(FromDateOptional))] - public string EndDate { get; set; } - public string Tags { get; set; } - public bool UseMPG { get; set; } - public bool UseUKMPG { get; set; } - } -} diff --git a/Models/API/ReleaseVersion.cs b/Models/API/ReleaseVersion.cs deleted file mode 100644 index 9e3ba90..0000000 --- a/Models/API/ReleaseVersion.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace MotoVaultPro.Models -{ - /// - /// For deserializing GitHub response for latest version - /// - public class ReleaseResponse - { - public string tag_name { get; set; } - } - /// - /// For returning the version numbers via API. - /// - public class ReleaseVersion - { - public string CurrentVersion { get; set; } - public string LatestVersion { get; set; } - } -} diff --git a/Models/API/TypeConverter.cs b/Models/API/TypeConverter.cs deleted file mode 100644 index 03d9229..0000000 --- a/Models/API/TypeConverter.cs +++ /dev/null @@ -1,138 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace MotoVaultPro.Models -{ - public class DummyType - { - - } - class InvariantConverter : JsonConverter - { - public override void Write(Utf8JsonWriter writer, DummyType value, JsonSerializerOptions options) - { - throw new NotImplementedException(); - } - public override DummyType? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - throw new NotImplementedException(); - } - } - class FromDateOptional: JsonConverter - { - public override string? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - var tokenType = reader.TokenType; - if (tokenType == JsonTokenType.String) - { - return reader.GetString(); - } - else if (tokenType == JsonTokenType.Number) - { - if (reader.TryGetInt64(out long intInput)) - { - return DateTimeOffset.FromUnixTimeSeconds(intInput).Date.ToShortDateString(); - } - } - return reader.GetString(); - } - public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options) - { - if (options.Converters.Any(x => x.Type == typeof(DummyType))) - { - writer.WriteStringValue(DateTime.Parse(value).ToString("yyyy-MM-dd")); - } - else - { - writer.WriteStringValue(value); - } - } - } - class FromDecimalOptional : JsonConverter - { - public override string? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - var tokenType = reader.TokenType; - if (tokenType == JsonTokenType.String) - { - return reader.GetString(); - } - else if (tokenType == JsonTokenType.Number) { - if (reader.TryGetDecimal(out decimal decimalInput)) - { - return decimalInput.ToString(); - } - } - return reader.GetString(); - } - public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options) - { - if (options.Converters.Any(x=>x.Type == typeof(DummyType))) - { - writer.WriteNumberValue(decimal.Parse(value)); - } else - { - writer.WriteStringValue(value); - } - } - } - class FromIntOptional : JsonConverter - { - public override string? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - var tokenType = reader.TokenType; - if (tokenType == JsonTokenType.String) - { - return reader.GetString(); - } - else if (tokenType == JsonTokenType.Number) - { - if (reader.TryGetInt32(out int intInput)) - { - return intInput.ToString(); - } - } - return reader.GetString(); - } - public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options) - { - if (options.Converters.Any(x => x.Type == typeof(DummyType))) - { - writer.WriteNumberValue(int.Parse(value)); - } - else - { - writer.WriteStringValue(value); - } - } - } - class FromBoolOptional : JsonConverter - { - public override string? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - var tokenType = reader.TokenType; - switch (tokenType) - { - case JsonTokenType.String: - return reader.GetString(); - case JsonTokenType.True: - return "True"; - case JsonTokenType.False: - return "False"; - default: - return reader.GetString(); - } - } - public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options) - { - if (options.Converters.Any(x => x.Type == typeof(DummyType))) - { - writer.WriteBooleanValue(bool.Parse(value)); - } - else - { - writer.WriteStringValue(value); - } - } - } -} diff --git a/Models/API/VehicleInfo.cs b/Models/API/VehicleInfo.cs deleted file mode 100644 index 5e5f56d..0000000 --- a/Models/API/VehicleInfo.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class VehicleInfo - { - public Vehicle VehicleData { get; set; } = new Vehicle(); - public int VeryUrgentReminderCount { get; set; } - public int UrgentReminderCount { get; set;} - public int NotUrgentReminderCount { get; set; } - public int PastDueReminderCount { get; set; } - public ReminderAPIExportModel NextReminder { get; set; } - public int ServiceRecordCount { get; set; } - public decimal ServiceRecordCost { get; set; } - public int UpgradeRecordCount { get; set; } - public decimal UpgradeRecordCost { get; set; } - public int TaxRecordCount { get; set; } - public decimal TaxRecordCost { get; set; } - public int GasRecordCount { get; set; } - public decimal GasRecordCost { get; set; } - public int LastReportedOdometer { get; set; } - public int PlanRecordBackLogCount { get; set; } - public int PlanRecordInProgressCount { get; set; } - public int PlanRecordTestingCount { get; set; } - public int PlanRecordDoneCount { get; set; } - } -} diff --git a/Models/Admin/AdminViewModel.cs b/Models/Admin/AdminViewModel.cs deleted file mode 100644 index 87edb19..0000000 --- a/Models/Admin/AdminViewModel.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class AdminViewModel - { - public List Users { get; set; } - public List Tokens { get; set; } - } -} diff --git a/Models/Configuration/MailConfig.cs b/Models/Configuration/MailConfig.cs deleted file mode 100644 index 4f8c261..0000000 --- a/Models/Configuration/MailConfig.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class MailConfig - { - public string EmailServer { get; set; } - public string EmailFrom { get; set; } - public int Port { get; set; } - public string Username { get; set; } - public string Password { get; set; } - } -} diff --git a/Models/ErrorViewModel.cs b/Models/ErrorViewModel.cs deleted file mode 100644 index 2a8bf0c..0000000 --- a/Models/ErrorViewModel.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class ErrorViewModel - { - public string? RequestId { get; set; } - - public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); - } -} diff --git a/Models/GasRecord/GasRecord.cs b/Models/GasRecord/GasRecord.cs deleted file mode 100644 index d01556c..0000000 --- a/Models/GasRecord/GasRecord.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class GasRecord - { - public int Id { get; set; } - public int VehicleId { get; set; } - public DateTime Date { get; set; } - /// - /// American moment - /// - public int Mileage { get; set; } - /// - /// Wtf is a kilometer? - /// - public decimal Gallons { get; set; } - public decimal Cost { get; set; } - public bool IsFillToFull { get; set; } = true; - public bool MissedFuelUp { get; set; } = false; - public string Notes { get; set; } - public List Files { get; set; } = new List(); - public List Tags { get; set; } = new List(); - public List ExtraFields { get; set; } = new List(); - } -} diff --git a/Models/GasRecord/GasRecordEditModel.cs b/Models/GasRecord/GasRecordEditModel.cs deleted file mode 100644 index 7086e19..0000000 --- a/Models/GasRecord/GasRecordEditModel.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class GasRecordEditModel - { - public List RecordIds { get; set; } = new List(); - public GasRecord EditRecord { get; set; } = new GasRecord(); - } -} diff --git a/Models/GasRecord/GasRecordInput.cs b/Models/GasRecord/GasRecordInput.cs deleted file mode 100644 index aeae52a..0000000 --- a/Models/GasRecord/GasRecordInput.cs +++ /dev/null @@ -1,38 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class GasRecordInput - { - public int Id { get; set; } - public int VehicleId { get; set; } - public string Date { get; set; } = DateTime.Now.ToShortDateString(); - /// - /// American moment - /// - public int Mileage { get; set; } - /// - /// Wtf is a kilometer? - /// - public decimal Gallons { get; set; } - public decimal Cost { get; set; } - public bool IsFillToFull { get; set; } = true; - public bool MissedFuelUp { get; set; } = false; - public string Notes { get; set; } - public List Files { get; set; } = new List(); - public List Tags { get; set; } = new List(); - public List ExtraFields { get; set; } = new List(); - public GasRecord ToGasRecord() { return new GasRecord { - Id = Id, - Cost = Cost, - Date = DateTime.Parse(Date), - Gallons = Gallons, - Mileage = Mileage, - VehicleId = VehicleId, - Files = Files, - IsFillToFull = IsFillToFull, - MissedFuelUp = MissedFuelUp, - Notes = Notes, - Tags = Tags, - ExtraFields = ExtraFields - }; } - } -} diff --git a/Models/GasRecord/GasRecordInputContainer.cs b/Models/GasRecord/GasRecordInputContainer.cs deleted file mode 100644 index 3092bbc..0000000 --- a/Models/GasRecord/GasRecordInputContainer.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class GasRecordInputContainer - { - public bool UseKwh { get; set; } - public bool UseHours { get; set; } - public GasRecordInput GasRecord { get; set; } - } -} diff --git a/Models/GasRecord/GasRecordViewModel.cs b/Models/GasRecord/GasRecordViewModel.cs deleted file mode 100644 index ccd5802..0000000 --- a/Models/GasRecord/GasRecordViewModel.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class GasRecordViewModel - { - public int Id { get; set; } - public int VehicleId { get; set; } - public int MonthId { get; set; } - public string Date { get; set; } - /// - /// American moment - /// - public int Mileage { get; set; } - /// - /// Wtf is a kilometer? - /// - public decimal Gallons { get; set; } - public decimal Cost { get; set; } - public int DeltaMileage { get; set; } - public decimal MilesPerGallon { get; set; } - public decimal CostPerGallon { get; set; } - public bool IsFillToFull { get; set; } - public bool MissedFuelUp { get; set; } - public string Notes { get; set; } - public List Tags { get; set; } = new List(); - public List ExtraFields { get; set; } = new List(); - public List Files { get; set; } = new List(); - public bool IncludeInAverage { get { return MilesPerGallon > 0 || (!IsFillToFull && !MissedFuelUp) || (Mileage == default && !MissedFuelUp); } } - } -} diff --git a/Models/GasRecord/GasRecordViewModelContainer.cs b/Models/GasRecord/GasRecordViewModelContainer.cs deleted file mode 100644 index cbed9a8..0000000 --- a/Models/GasRecord/GasRecordViewModelContainer.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class GasRecordViewModelContainer - { - public bool UseKwh { get; set; } - public bool UseHours { get; set; } - public List GasRecords { get; set; } = new List(); - } -} diff --git a/Models/GenericRecordEditModel.cs b/Models/GenericRecordEditModel.cs deleted file mode 100644 index a33c5d6..0000000 --- a/Models/GenericRecordEditModel.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class GenericRecordEditModel - { - public ImportMode DataType { get; set; } - public List RecordIds { get; set; } = new List(); - public GenericRecord EditRecord { get; set; } = new GenericRecord(); - } -} diff --git a/Models/Kiosk/KioskViewModel.cs b/Models/Kiosk/KioskViewModel.cs deleted file mode 100644 index e15cd01..0000000 --- a/Models/Kiosk/KioskViewModel.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class KioskViewModel - { - /// - /// List of vehicle ids to exclude from Kiosk Dashboard - /// - public List Exclusions { get; set; } = new List(); - /// - /// Whether to retrieve data for vehicle, plans, or reminder view. - /// - public KioskMode KioskMode { get; set; } = KioskMode.Vehicle; - } -} diff --git a/Models/Login/AuthCookie.cs b/Models/Login/AuthCookie.cs deleted file mode 100644 index 5cb318f..0000000 --- a/Models/Login/AuthCookie.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class AuthCookie - { - public UserData UserData { get; set; } - public DateTime ExpiresOn { get; set; } - } -} diff --git a/Models/Login/LoginModel.cs b/Models/Login/LoginModel.cs deleted file mode 100644 index 37110df..0000000 --- a/Models/Login/LoginModel.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class LoginModel - { - public string UserName { get; set; } - public string Password { get; set; } - public string EmailAddress { get; set; } - public string Token { get; set; } - public bool IsPersistent { get; set; } = false; - } -} diff --git a/Models/Login/Token.cs b/Models/Login/Token.cs deleted file mode 100644 index cef8779..0000000 --- a/Models/Login/Token.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class Token - { - public int Id { get; set; } - public string Body { get; set; } - public string EmailAddress { get; set; } - } -} diff --git a/Models/Note/Note.cs b/Models/Note/Note.cs deleted file mode 100644 index 3d1d10a..0000000 --- a/Models/Note/Note.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class Note - { - public int Id { get; set; } - public int VehicleId { get; set; } - public string Description { get; set; } - public string NoteText { get; set; } - public bool Pinned { get; set; } - public List Tags { get; set; } = new List(); - public List Files { get; set; } = new List(); - public List ExtraFields { get; set; } = new List(); - } -} diff --git a/Models/OIDC/OpenIDConfig.cs b/Models/OIDC/OpenIDConfig.cs deleted file mode 100644 index 7520715..0000000 --- a/Models/OIDC/OpenIDConfig.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class OpenIDConfig - { - public string Name { get; set; } - public string ClientId { get; set; } - public string ClientSecret { get; set; } - public string AuthURL { get; set; } - public string TokenURL { get; set; } - public string RedirectURL { get; set; } - public string Scope { get; set; } = "openid email"; - public string State { get; set; } - public string CodeChallenge { get; set; } - public bool ValidateState { get; set; } = false; - public bool DisableRegularLogin { get; set; } = false; - public bool UsePKCE { get; set; } = false; - public string LogOutURL { get; set; } = ""; - public string UserInfoURL { get; set; } = ""; - public string RemoteAuthURL { get { - var redirectUrl = $"{AuthURL}?client_id={ClientId}&response_type=code&redirect_uri={RedirectURL}&scope={Scope}&state={State}"; - if (UsePKCE) - { - redirectUrl += $"&code_challenge={CodeChallenge}&code_challenge_method=S256"; - } - return redirectUrl; - } } - } -} diff --git a/Models/OIDC/OpenIDResult.cs b/Models/OIDC/OpenIDResult.cs deleted file mode 100644 index 9f662d8..0000000 --- a/Models/OIDC/OpenIDResult.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class OpenIDResult - { - public string id_token { get; set; } - public string access_token { get; set; } - } -} diff --git a/Models/OIDC/OpenIDUserInfo.cs b/Models/OIDC/OpenIDUserInfo.cs deleted file mode 100644 index 0f95e0f..0000000 --- a/Models/OIDC/OpenIDUserInfo.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class OpenIDUserInfo - { - public string email { get; set; } = ""; - } -} diff --git a/Models/OdometerRecord/OdometerRecord.cs b/Models/OdometerRecord/OdometerRecord.cs deleted file mode 100644 index 5376b78..0000000 --- a/Models/OdometerRecord/OdometerRecord.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class OdometerRecord - { - public int Id { get; set; } - public int VehicleId { get; set; } - public DateTime Date { get; set; } - public int InitialMileage { get; set; } - public int Mileage { get; set; } - public int DistanceTraveled { get { return Mileage - InitialMileage; } } - public string Notes { get; set; } - public List Tags { get; set; } = new List(); - public List Files { get; set; } = new List(); - public List ExtraFields { get; set; } = new List(); - } -} diff --git a/Models/OdometerRecord/OdometerRecordEditModel.cs b/Models/OdometerRecord/OdometerRecordEditModel.cs deleted file mode 100644 index 89fe0f6..0000000 --- a/Models/OdometerRecord/OdometerRecordEditModel.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class OdometerRecordEditModel - { - public List RecordIds { get; set; } = new List(); - public OdometerRecord EditRecord { get; set; } = new OdometerRecord(); - } -} diff --git a/Models/OdometerRecord/OdometerRecordInput.cs b/Models/OdometerRecord/OdometerRecordInput.cs deleted file mode 100644 index 250789a..0000000 --- a/Models/OdometerRecord/OdometerRecordInput.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class OdometerRecordInput - { - public int Id { get; set; } - public int VehicleId { get; set; } - public string Date { get; set; } = DateTime.Now.ToShortDateString(); - public int InitialMileage { get; set; } - public int Mileage { get; set; } - public string Notes { get; set; } - public List Files { get; set; } = new List(); - public List Tags { get; set; } = new List(); - public List ExtraFields { get; set; } = new List(); - public OdometerRecord ToOdometerRecord() { return new OdometerRecord { Id = Id, VehicleId = VehicleId, Date = DateTime.Parse(Date), Mileage = Mileage, Notes = Notes, Files = Files, Tags = Tags, ExtraFields = ExtraFields, InitialMileage = InitialMileage }; } - } -} diff --git a/Models/OperationResponse.cs b/Models/OperationResponse.cs deleted file mode 100644 index 33c4001..0000000 --- a/Models/OperationResponse.cs +++ /dev/null @@ -1,33 +0,0 @@ -using MotoVaultPro.Helper; - -namespace MotoVaultPro.Models -{ - public class OperationResponseBase - { - public bool Success { get; set; } - public string Message { get; set; } - } - public class OperationResponse: OperationResponseBase - { - public static OperationResponse Succeed(string message = "") - { - return new OperationResponse { Success = true, Message = message }; - } - public static OperationResponse Failed(string message = "") - { - if (string.IsNullOrWhiteSpace(message)) - { - message = StaticHelper.GenericErrorMessage; - } - return new OperationResponse { Success = false, Message = message}; - } - public static OperationResponse Conditional(bool result, string successMessage = "", string errorMessage = "") - { - if (string.IsNullOrWhiteSpace(errorMessage)) - { - errorMessage = StaticHelper.GenericErrorMessage; - } - return new OperationResponse { Success = result, Message = result ? successMessage : errorMessage }; - } - } -} diff --git a/Models/PlanRecord/PlanRecord.cs b/Models/PlanRecord/PlanRecord.cs deleted file mode 100644 index 198aa0e..0000000 --- a/Models/PlanRecord/PlanRecord.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class PlanRecord - { - public int Id { get; set; } - public int VehicleId { get; set; } - public int ReminderRecordId { get; set; } - public DateTime DateCreated { get; set; } - public DateTime DateModified { get; set; } - public string Description { get; set; } - public string Notes { get; set; } - public List Files { get; set; } = new List(); - public ImportMode ImportMode { get; set; } - public PlanPriority Priority { get; set; } - public PlanProgress Progress { get; set; } - public decimal Cost { get; set; } - public List ExtraFields { get; set; } = new List(); - public List RequisitionHistory { get; set; } = new List(); - } -} diff --git a/Models/PlanRecord/PlanRecordInput.cs b/Models/PlanRecord/PlanRecordInput.cs deleted file mode 100644 index 143d8e5..0000000 --- a/Models/PlanRecord/PlanRecordInput.cs +++ /dev/null @@ -1,43 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class PlanRecordInput - { - public int Id { get; set; } - public int VehicleId { get; set; } - public int ReminderRecordId { get; set; } - public string DateCreated { get; set; } = DateTime.Now.ToShortDateString(); - public string DateModified { get; set; } = DateTime.Now.ToShortDateString(); - public string Description { get; set; } - public string Notes { get; set; } - public List Files { get; set; } = new List(); - public List Supplies { get; set; } = new List(); - public ImportMode ImportMode { get; set; } - public PlanPriority Priority { get; set; } - public PlanProgress Progress { get; set; } - public decimal Cost { get; set; } - 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 PlanRecord ToPlanRecord() { return new PlanRecord { - Id = Id, - VehicleId = VehicleId, - ReminderRecordId = ReminderRecordId, - DateCreated = DateTime.Parse(DateCreated), - DateModified = DateTime.Parse(DateModified), - Description = Description, - Notes = Notes, - Files = Files, - ImportMode = ImportMode, - Cost = Cost, - Priority = Priority, - Progress = Progress, - ExtraFields = ExtraFields, - RequisitionHistory = RequisitionHistory - }; } - /// - /// only used to hide view template button on plan create modal. - /// - public bool CreatedFromReminder { get; set; } - } -} diff --git a/Models/Reminder/ReminderConfig.cs b/Models/Reminder/ReminderConfig.cs deleted file mode 100644 index 4830e57..0000000 --- a/Models/Reminder/ReminderConfig.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class ReminderUrgencyConfig - { - public int UrgentDays { get; set; } = 30; - public int VeryUrgentDays { get; set; } = 7; - public int UrgentDistance { get; set; } = 100; - public int VeryUrgentDistance { get; set; } = 50; - } -} diff --git a/Models/Reminder/ReminderRecord.cs b/Models/Reminder/ReminderRecord.cs deleted file mode 100644 index a7d0ef4..0000000 --- a/Models/Reminder/ReminderRecord.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class ReminderRecord - { - public int Id { get; set; } - public int VehicleId { get; set; } - public DateTime Date { get; set; } - public int Mileage { get; set; } - public string Description { get; set; } - public string Notes { get; set; } - public bool IsRecurring { get; set; } = false; - public bool UseCustomThresholds { get; set; } = false; - public ReminderUrgencyConfig CustomThresholds { get; set; } = new ReminderUrgencyConfig(); - public int CustomMileageInterval { get; set; } = 0; - public int CustomMonthInterval { get; set; } = 0; - public ReminderIntervalUnit CustomMonthIntervalUnit { get; set; } = ReminderIntervalUnit.Months; - public ReminderMileageInterval ReminderMileageInterval { get; set; } = ReminderMileageInterval.FiveThousandMiles; - public ReminderMonthInterval ReminderMonthInterval { get; set; } = ReminderMonthInterval.OneYear; - public ReminderMetric Metric { get; set; } = ReminderMetric.Date; - public List Tags { get; set; } = new List(); - } -} diff --git a/Models/Reminder/ReminderRecordInput.cs b/Models/Reminder/ReminderRecordInput.cs deleted file mode 100644 index 29f46ee..0000000 --- a/Models/Reminder/ReminderRecordInput.cs +++ /dev/null @@ -1,44 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class ReminderRecordInput - { - public int Id { get; set; } - public int VehicleId { get; set; } - public string Date { get; set; } = DateTime.Now.AddDays(1).ToShortDateString(); - public int Mileage { get; set; } - public string Description { get; set; } - public string Notes { get; set; } - public bool IsRecurring { get; set; } = false; - public bool UseCustomThresholds { get; set; } = false; - public ReminderUrgencyConfig CustomThresholds { get; set; } = new ReminderUrgencyConfig(); - public int CustomMileageInterval { get; set; } = 0; - public int CustomMonthInterval { get; set; } = 0; - public ReminderIntervalUnit CustomMonthIntervalUnit { get; set; } = ReminderIntervalUnit.Months; - public ReminderMileageInterval ReminderMileageInterval { get; set; } = ReminderMileageInterval.FiveThousandMiles; - public ReminderMonthInterval ReminderMonthInterval { get; set; } = ReminderMonthInterval.OneYear; - public ReminderMetric Metric { get; set; } = ReminderMetric.Date; - public List Tags { get; set; } = new List(); - public ReminderRecord ToReminderRecord() - { - return new ReminderRecord - { - Id = Id, - VehicleId = VehicleId, - Date = DateTime.Parse(string.IsNullOrWhiteSpace(Date) ? DateTime.Now.AddDays(1).ToShortDateString() : Date), - Mileage = Mileage, - Description = Description, - Metric = Metric, - IsRecurring = IsRecurring, - UseCustomThresholds = UseCustomThresholds, - CustomThresholds = CustomThresholds, - ReminderMileageInterval = ReminderMileageInterval, - ReminderMonthInterval = ReminderMonthInterval, - CustomMileageInterval = CustomMileageInterval, - CustomMonthInterval = CustomMonthInterval, - CustomMonthIntervalUnit = CustomMonthIntervalUnit, - Notes = Notes, - Tags = Tags - }; - } - } -} diff --git a/Models/Reminder/ReminderRecordViewModel.cs b/Models/Reminder/ReminderRecordViewModel.cs deleted file mode 100644 index 050a38d..0000000 --- a/Models/Reminder/ReminderRecordViewModel.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class ReminderRecordViewModel - { - public int Id { get; set; } - public int VehicleId { get; set; } - public DateTime Date { get; set; } - public int Mileage { get; set; } - public int DueDays { get; set; } - public int DueMileage { get; set; } - public string Description { get; set; } - public string Notes { get; set; } - /// - /// The metric the user selected to calculate the urgency of this reminder. - /// - public ReminderMetric UserMetric { get; set; } = ReminderMetric.Date; - /// - /// Reason why this reminder is urgent - /// - public ReminderMetric Metric { get; set; } = ReminderMetric.Date; - public ReminderUrgency Urgency { get; set; } = ReminderUrgency.NotUrgent; - /// - /// Recurring Reminders - /// - public bool IsRecurring { get; set; } = false; - public List Tags { get; set; } = new List(); - } -} diff --git a/Models/Report/CostDistanceTableForVehicle.cs b/Models/Report/CostDistanceTableForVehicle.cs deleted file mode 100644 index ffe3e31..0000000 --- a/Models/Report/CostDistanceTableForVehicle.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class CostDistanceTableForVehicle - { - public string DistanceUnit { get; set; } = "mi."; - public List CostData { get; set; } = new List(); - } -} diff --git a/Models/Report/CostForVehicleByMonth.cs b/Models/Report/CostForVehicleByMonth.cs deleted file mode 100644 index 67abdb2..0000000 --- a/Models/Report/CostForVehicleByMonth.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class CostForVehicleByMonth - { - public int Year { get; set; } - public int MonthId { get; set; } - public string MonthName { get; set; } - public decimal Cost { get; set; } - public int DistanceTraveled { get; set; } - public decimal CostPerDistanceTraveled { get { if (DistanceTraveled > 0) { return Cost / DistanceTraveled; } else { return 0M; } } } - } -} diff --git a/Models/Report/CostMakeUpForVehicle.cs b/Models/Report/CostMakeUpForVehicle.cs deleted file mode 100644 index 54cc994..0000000 --- a/Models/Report/CostMakeUpForVehicle.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class CostMakeUpForVehicle - { - public decimal ServiceRecordSum { get; set; } - public decimal GasRecordSum { get; set; } - public decimal TaxRecordSum { get; set; } - public decimal UpgradeRecordSum { get; set; } - } -} diff --git a/Models/Report/CostTableForVehicle.cs b/Models/Report/CostTableForVehicle.cs deleted file mode 100644 index 4f2b412..0000000 --- a/Models/Report/CostTableForVehicle.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class CostTableForVehicle - { - public string DistanceUnit { get; set; } = "Cost Per Mile"; - public int TotalDistance { get; set; } - public int NumberOfDays { get; set; } - public decimal ServiceRecordSum { get; set; } - public decimal GasRecordSum { get; set; } - public decimal TaxRecordSum { 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 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 UpgradeRecordPerDay { get { return NumberOfDays != default ? UpgradeRecordSum / NumberOfDays : 0; } } - public decimal TaxRecordPerDay { get { return NumberOfDays != default ? TaxRecordSum / NumberOfDays : 0; } } - 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/Report/GenericReportModel.cs b/Models/Report/GenericReportModel.cs deleted file mode 100644 index 15521b9..0000000 --- a/Models/Report/GenericReportModel.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace MotoVaultPro.Models -{ - /// - /// Generic Model used for vehicle history report. - /// - public class GenericReportModel - { - public ImportMode DataType { get; set; } - public DateTime Date { get; set; } - public int Odometer { get; set; } - public string Description { get; set; } - public string Notes { get; set; } - public decimal Cost { get; set; } - public List Files { get; set; } = new List(); - public List ExtraFields { get; set; } = new List(); - public List RequisitionHistory { get; set; } = new List(); - } -} diff --git a/Models/Report/MPGForVehicleByMonth.cs b/Models/Report/MPGForVehicleByMonth.cs deleted file mode 100644 index 066e740..0000000 --- a/Models/Report/MPGForVehicleByMonth.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class MPGForVehicleByMonth - { - public List CostData { get; set; } = new List(); - public List SortedCostData { get; set; } = new List(); - public string Unit { get; set; } - } -} diff --git a/Models/Report/ReminderMakeUpForVehicle.cs b/Models/Report/ReminderMakeUpForVehicle.cs deleted file mode 100644 index 7264082..0000000 --- a/Models/Report/ReminderMakeUpForVehicle.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class ReminderMakeUpForVehicle - { - public int NotUrgentCount { get; set; } - public int UrgentCount { get; set; } - public int VeryUrgentCount { get; set; } - public int PastDueCount { get; set; } - } -} diff --git a/Models/Report/ReportHeader.cs b/Models/Report/ReportHeader.cs deleted file mode 100644 index e4c98c8..0000000 --- a/Models/Report/ReportHeader.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class ReportHeader - { - public int MaxOdometer { get; set; } - public int DistanceTraveled { get; set; } - public decimal TotalCost { get; set; } - public string AverageMPG { get; set; } - } -} diff --git a/Models/Report/ReportParameter.cs b/Models/Report/ReportParameter.cs deleted file mode 100644 index 96cdcd6..0000000 --- a/Models/Report/ReportParameter.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class ReportParameter - { - public List VisibleColumns { get; set; } = new List(); - public List ExtraFields { get; set; } = new List(); - public TagFilter TagFilter { get; set; } = TagFilter.Exclude; - public List Tags { get; set; } = new List(); - public bool FilterByDateRange { get; set; } = false; - public string StartDate { get; set; } = ""; - public string EndDate { get; set; } = ""; - public bool PrintIndividualRecords { get; set; } = false; - } -} diff --git a/Models/Report/ReportViewModel.cs b/Models/Report/ReportViewModel.cs deleted file mode 100644 index 82c075f..0000000 --- a/Models/Report/ReportViewModel.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class ReportViewModel - { - public ReportHeader ReportHeaderForVehicle { get; set; } = new ReportHeader(); - public List CostForVehicleByMonth { get; set; } = new List(); - public MPGForVehicleByMonth FuelMileageForVehicleByMonth { get; set; } = new MPGForVehicleByMonth(); - public CostMakeUpForVehicle CostMakeUpForVehicle { get; set; } = new CostMakeUpForVehicle(); - public ReminderMakeUpForVehicle ReminderMakeUpForVehicle { get; set; } = new ReminderMakeUpForVehicle(); - public List Years { get; set; } = new List(); - public List Collaborators { get; set; } = new List(); - public bool CustomWidgetsConfigured { get; set; } = false; - public List AvailableMetrics { get; set; } = new List(); - } -} diff --git a/Models/Report/VehicleHistoryViewModel.cs b/Models/Report/VehicleHistoryViewModel.cs deleted file mode 100644 index 097e6ed..0000000 --- a/Models/Report/VehicleHistoryViewModel.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class VehicleHistoryViewModel - { - public Vehicle VehicleData { get; set; } - public List VehicleHistory { get; set; } - public ReportParameter ReportParameters { get; set; } - public string Odometer { get; set; } - public string MPG { get; set; } - public decimal TotalCost { get; set; } - public decimal TotalGasCost { get; set; } - public string DaysOwned { get; set; } - public string DistanceTraveled { get; set; } - public decimal TotalCostPerMile { get; set; } - public decimal TotalGasCostPerMile { get; set; } - public string DistanceUnit { get; set; } - public decimal TotalDepreciation { get; set; } - public decimal DepreciationPerDay { get; set; } - public decimal DepreciationPerMile { get; set; } - public string StartDate { get; set; } - public string EndDate { get; set; } - } -} diff --git a/Models/SearchResult.cs b/Models/SearchResult.cs deleted file mode 100644 index a53483d..0000000 --- a/Models/SearchResult.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class SearchResult - { - public int Id { get; set; } - public ImportMode RecordType { get; set; } - public string Description { get; set; } - } -} diff --git a/Models/ServerConfig.cs b/Models/ServerConfig.cs deleted file mode 100644 index 28fd81a..0000000 --- a/Models/ServerConfig.cs +++ /dev/null @@ -1,71 +0,0 @@ -using System.Text.Json.Serialization; - -namespace MotoVaultPro.Models -{ - public class ServerConfig - { - [JsonPropertyName("POSTGRES_CONNECTION")] - [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public string? PostgresConnection { get; set; } - - [JsonPropertyName("LUBELOGGER_ALLOWED_FILE_EXTENSIONS")] - [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public string? AllowedFileExtensions { get; set; } - - [JsonPropertyName("LUBELOGGER_LOGO_URL")] - [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public string? CustomLogoURL { get; set; } - - [JsonPropertyName("LUBELOGGER_LOGO_SMALL_URL")] - [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public string? CustomSmallLogoURL { get; set; } - - [JsonPropertyName("LUBELOGGER_MOTD")] - [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public string? MessageOfTheDay { get; set; } - - [JsonPropertyName("LUBELOGGER_WEBHOOK")] - [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public string? WebHookURL { get; set; } - - [JsonPropertyName("LUBELOGGER_DOMAIN")] - [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public string? ServerURL { get; set; } - - [JsonPropertyName("LUBELOGGER_CUSTOM_WIDGETS")] - [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public bool? CustomWidgetsEnabled { get; set; } - - [JsonPropertyName("LUBELOGGER_INVARIANT_API")] - [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public bool? InvariantAPIEnabled { get; set; } - - [JsonPropertyName("MailConfig")] - [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public MailConfig? SMTPConfig { get; set; } - - [JsonPropertyName("OpenIDConfig")] - [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public OpenIDConfig? OIDCConfig { get; set; } - - [JsonPropertyName("ReminderUrgencyConfig")] - [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public ReminderUrgencyConfig? ReminderUrgencyConfig { get; set; } - - [JsonPropertyName("LUBELOGGER_OPEN_REGISTRATION")] - [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public bool? OpenRegistration { get; set; } - - [JsonPropertyName("DisableRegistration")] - [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public bool? DisableRegistration { get; set; } - - [JsonPropertyName("DefaultReminderEmail")] - [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public string? DefaultReminderEmail { get; set; } = string.Empty; - - [JsonPropertyName("EnableRootUserOIDC")] - [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public bool? EnableRootUserOIDC { get; set; } - } -} \ No newline at end of file diff --git a/Models/ServiceRecord/ServiceRecord.cs b/Models/ServiceRecord/ServiceRecord.cs deleted file mode 100644 index 5afdbbe..0000000 --- a/Models/ServiceRecord/ServiceRecord.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class ServiceRecord: GenericRecord - { - } -} diff --git a/Models/ServiceRecord/ServiceRecordInput.cs b/Models/ServiceRecord/ServiceRecordInput.cs deleted file mode 100644 index 71abb9a..0000000 --- a/Models/ServiceRecord/ServiceRecordInput.cs +++ /dev/null @@ -1,35 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class ServiceRecordInput - { - 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 ServiceRecord ToServiceRecord() { return new ServiceRecord { - 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/Settings/ServerSettingsViewModel.cs b/Models/Settings/ServerSettingsViewModel.cs deleted file mode 100644 index 1bcf3fe..0000000 --- a/Models/Settings/ServerSettingsViewModel.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class ServerSettingsViewModel - { - public string LocaleInfo { get; set; } - public string PostgresConnection { get; set; } - public string AllowedFileExtensions { get; set; } - public string CustomLogoURL { get; set; } - public string CustomSmallLogoURL { get; set; } - public string MessageOfTheDay { get; set; } - public string WebHookURL { get; set; } - public string Domain { get; set; } - public bool CustomWidgetsEnabled { get; set; } - public bool InvariantAPIEnabled { get; set; } - public MailConfig SMTPConfig { get; set; } = new MailConfig(); - public OpenIDConfig OIDCConfig { get; set; } = new OpenIDConfig(); - public bool OpenRegistration { get; set; } - public bool DisableRegistration { get; set; } - public ReminderUrgencyConfig ReminderUrgencyConfig { get; set; } = new ReminderUrgencyConfig(); - public string DefaultReminderEmail { get; set; } = string.Empty; - public bool EnableRootUserOIDC { get; set; } - public bool EnableAuth { get; set; } - } -} diff --git a/Models/Settings/SettingsViewModel.cs b/Models/Settings/SettingsViewModel.cs deleted file mode 100644 index c200214..0000000 --- a/Models/Settings/SettingsViewModel.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class SettingsViewModel - { - public UserConfig UserConfig { get; set; } - public List UILanguages { get; set; } - } -} diff --git a/Models/Shared/ExtraField.cs b/Models/Shared/ExtraField.cs deleted file mode 100644 index 8aec514..0000000 --- a/Models/Shared/ExtraField.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class ExtraField - { - public string Name { get; set; } - public string Value { get; set; } - public bool IsRequired { get; set; } - public ExtraFieldType FieldType { get; set; } = ExtraFieldType.Text; - } -} diff --git a/Models/Shared/GenericRecord.cs b/Models/Shared/GenericRecord.cs deleted file mode 100644 index 93b1091..0000000 --- a/Models/Shared/GenericRecord.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class GenericRecord - { - public int Id { get; set; } - public int VehicleId { get; set; } - public DateTime Date { get; set; } - 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 Tags { get; set;} = new List(); - public List ExtraFields { get; set; } = new List(); - public List RequisitionHistory { get; set; } = new List(); - } -} diff --git a/Models/Shared/ImportModel.cs b/Models/Shared/ImportModel.cs deleted file mode 100644 index 488b13e..0000000 --- a/Models/Shared/ImportModel.cs +++ /dev/null @@ -1,179 +0,0 @@ -using System.Text.Json.Serialization; - -namespace MotoVaultPro.Models -{ - /// - /// Import model used for importing records via CSV. - /// - public class ImportModel - { - public string Date { get; set; } - public string Day { get; set; } - public string Month { get; set; } - public string Year { get; set; } - public string DateCreated { get; set; } - public string DateModified { get; set; } - public string Type { get; set; } - public string Priority { get; set; } - public string Progress { get; set; } - public string InitialOdometer { get; set; } - public string Odometer { get; set; } - public string Description { get; set; } - public string Notes { get; set; } - public string FuelConsumed { get; set; } - public string Cost { get; set; } - public string Price { get; set; } - public string PartialFuelUp { get; set; } - public string IsFillToFull { get; set; } - public string MissedFuelUp { get; set; } - public string PartNumber { get; set; } - public string PartSupplier { get; set; } - public string PartQuantity { get; set; } - public string Tags { get; set; } - public Dictionary ExtraFields {get;set;} - } - - public class SupplyRecordExportModel - { - public string Date { get; set; } - public string PartNumber { get; set; } - public string PartSupplier { get; set; } - public string PartQuantity { get; set; } - public string Description { get; set; } - public string Cost { get; set; } - public string Notes { get; set; } - public string Tags { get; set; } - public List ExtraFields { get; set; } = new List(); - } - public class GenericRecordExportModel - { - [JsonConverter(typeof(FromIntOptional))] - public string Id { get; set; } - [JsonConverter(typeof(FromDateOptional))] - public string Date { get; set; } - [JsonConverter(typeof(FromIntOptional))] - public string Odometer { get; set; } - public string Description { get; set; } - public string Notes { get; set; } - [JsonConverter(typeof(FromDecimalOptional))] - public string Cost { get; set; } - public string Tags { get; set; } - public List ExtraFields { get; set; } = new List(); - public List Files { get; set; } = new List(); - } - public class OdometerRecordExportModel - { - [JsonConverter(typeof(FromIntOptional))] - public string Id { get; set; } - [JsonConverter(typeof(FromDateOptional))] - public string Date { get; set; } - [JsonConverter(typeof(FromIntOptional))] - public string InitialOdometer { get; set; } - [JsonConverter(typeof(FromIntOptional))] - public string Odometer { get; set; } - public string Notes { get; set; } - public string Tags { get; set; } - public List ExtraFields { get; set; } = new List(); - public List Files { get; set; } = new List(); - } - public class TaxRecordExportModel - { - [JsonConverter(typeof(FromIntOptional))] - public string Id { get; set; } - [JsonConverter(typeof(FromDateOptional))] - public string Date { get; set; } - public string Description { get; set; } - public string Notes { get; set; } - [JsonConverter(typeof(FromDecimalOptional))] - public string Cost { get; set; } - public string Tags { get; set; } - public List ExtraFields { get; set; } = new List(); - public List Files { get; set; } = new List(); - } - public class GasRecordExportModel - { - [JsonConverter(typeof(FromIntOptional))] - public string Id { get; set; } - [JsonConverter(typeof(FromDateOptional))] - public string Date { get; set; } - [JsonConverter(typeof(FromIntOptional))] - public string Odometer { get; set; } - [JsonConverter(typeof(FromDecimalOptional))] - public string FuelConsumed { get; set; } - [JsonConverter(typeof(FromDecimalOptional))] - public string Cost { get; set; } - [JsonConverter(typeof(FromDecimalOptional))] - public string FuelEconomy { get; set; } - [JsonConverter(typeof(FromBoolOptional))] - public string IsFillToFull { get; set; } - [JsonConverter(typeof(FromBoolOptional))] - public string MissedFuelUp { get; set; } - public string Notes { get; set; } - public string Tags { get; set; } - public List ExtraFields { get; set; } = new List(); - public List Files { get; set; } = new List(); - } - public class ReminderExportModel - { - [JsonConverter(typeof(FromIntOptional))] - public string Id { get; set; } - public string Description { get; set; } - public string Urgency { get; set; } - public string Metric { get; set; } - public string Notes { get; set; } - [JsonConverter(typeof(FromDateOptional))] - public string DueDate { get; set; } - [JsonConverter(typeof(FromIntOptional))] - public string DueOdometer { get; set; } - public string Tags { get; set; } - } - /// - /// Only used for the API GET Method - /// - public class ReminderAPIExportModel - { - [JsonConverter(typeof(FromIntOptional))] - public string Id { get; set; } - public string Description { get; set; } - public string Urgency { get; set; } - public string Metric { get; set; } - public string UserMetric { get; set; } - public string Notes { get; set; } - [JsonConverter(typeof(FromDateOptional))] - public string DueDate { get; set; } - [JsonConverter(typeof(FromIntOptional))] - public string DueOdometer { get; set; } - [JsonConverter(typeof(FromIntOptional))] - public string DueDays { get; set; } - [JsonConverter(typeof(FromIntOptional))] - public string DueDistance { get; set; } - public string Tags { get; set; } - } - public class PlanRecordExportModel - { - [JsonConverter(typeof(FromIntOptional))] - public string Id { get; set; } - [JsonConverter(typeof(FromDateOptional))] - public string DateCreated { get; set; } - [JsonConverter(typeof(FromDateOptional))] - public string DateModified { get; set; } - public string Description { get; set; } - public string Notes { get; set; } - public string Type { get; set; } - public string Priority { get; set; } - public string Progress { get; set; } - [JsonConverter(typeof(FromDecimalOptional))] - public string Cost { get; set; } - public List ExtraFields { get; set; } = new List(); - public List Files { get; set; } = new List(); - } - public class UserExportModel - { - public string Username { get; set; } - public string EmailAddress { get; set; } - [JsonConverter(typeof(FromBoolOptional))] - public string IsAdmin { get; set; } - [JsonConverter(typeof(FromBoolOptional))] - public string IsRoot { get; set; } - } -} diff --git a/Models/Shared/RecordExtraField.cs b/Models/Shared/RecordExtraField.cs deleted file mode 100644 index 1ef085c..0000000 --- a/Models/Shared/RecordExtraField.cs +++ /dev/null @@ -1,14 +0,0 @@ -using LiteDB; - -namespace MotoVaultPro.Models -{ - public class RecordExtraField - { - /// - /// Corresponds to int value of ImportMode enum - /// - [BsonId(false)] - public int Id { get; set; } - public List ExtraFields { get; set; } = new List(); - } -} diff --git a/Models/Shared/StickerViewModel.cs b/Models/Shared/StickerViewModel.cs deleted file mode 100644 index 97542d0..0000000 --- a/Models/Shared/StickerViewModel.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class StickerViewModel - { - public ImportMode RecordType { get; set; } - public Vehicle VehicleData { get; set; } = new Vehicle(); - public List ReminderRecords { get; set; } = new List(); - public List GenericRecords { get; set; } = new List(); - public List SupplyRecords { get; set; } = new List(); - } -} diff --git a/Models/Shared/UploadedFiles.cs b/Models/Shared/UploadedFiles.cs deleted file mode 100644 index e75ffde..0000000 --- a/Models/Shared/UploadedFiles.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class UploadedFiles - { - public string Name { get; set; } - public string Location { get; set; } - public bool IsPending { get; set; } - } -} diff --git a/Models/Shared/VehicleRecords.cs b/Models/Shared/VehicleRecords.cs deleted file mode 100644 index 12d26fb..0000000 --- a/Models/Shared/VehicleRecords.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class VehicleRecords - { - public List ServiceRecords { 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(); - public List OdometerRecords { get; set; } = new List(); - } -} diff --git a/Models/Shared/WebHookPayload.cs b/Models/Shared/WebHookPayload.cs deleted file mode 100644 index d2ebad9..0000000 --- a/Models/Shared/WebHookPayload.cs +++ /dev/null @@ -1,253 +0,0 @@ -using System.Text.Json.Serialization; - -namespace MotoVaultPro.Models -{ - /// - /// WebHookPayload Object - /// - public class WebHookPayloadBase - { - public string Type { get; set; } = ""; - public string Timestamp - { - get { return DateTime.UtcNow.ToString("O"); } - } - public Dictionary Data { get; set; } = new Dictionary(); - /// - /// Legacy attributes below - /// - public string VehicleId { get; set; } = ""; - public string Username { get; set; } = ""; - public string Action { get; set; } = ""; - } - public class DiscordWebHook - { - public string Username { get { return "MotoVaultPro"; } } - [JsonPropertyName("avatar_url")] - public string AvatarUrl { get { return "https://github.com/ericgullickson/motovaultpro_logo_small.png"; } } - public string Content { get; set; } = ""; - public static DiscordWebHook FromWebHookPayload(WebHookPayload webHookPayload) - { - return new DiscordWebHook - { - Content = webHookPayload.Action, - }; - } - } - public class WebHookPayload: WebHookPayloadBase - { - private static string GetFriendlyActionType(string actionType) - { - var actionTypeParts = actionType.Split('.'); - if (actionTypeParts.Length == 2) - { - var recordType = actionTypeParts[0]; - var recordAction = actionTypeParts[1]; - switch (recordAction) - { - case "add": - recordAction = "Added"; - break; - case "update": - recordAction = "Updated"; - break; - case "delete": - recordAction = "Deleted"; - break; - } - if (recordType.ToLower().Contains("record")) - { - var cleanedRecordType = recordType.ToLower().Replace("record", ""); - cleanedRecordType = $"{char.ToUpper(cleanedRecordType[0])}{cleanedRecordType.Substring(1)} Record"; - recordType = cleanedRecordType; - } else - { - recordType = $"{char.ToUpper(recordType[0])}{recordType.Substring(1)}"; - } - return $"{recordAction} {recordType}"; - } else if (actionTypeParts.Length == 3) - { - var recordType = actionTypeParts[0]; - var recordAction = actionTypeParts[1]; - var thirdPart = actionTypeParts[2]; - switch (recordAction) - { - case "add": - recordAction = "Added"; - break; - case "update": - recordAction = "Updated"; - break; - case "delete": - recordAction = "Deleted"; - break; - } - if (recordType.ToLower().Contains("record")) - { - var cleanedRecordType = recordType.ToLower().Replace("record", ""); - cleanedRecordType = $"{char.ToUpper(cleanedRecordType[0])}{cleanedRecordType.Substring(1)} Record"; - recordType = cleanedRecordType; - } - else - { - recordType = $"{char.ToUpper(recordType[0])}{recordType.Substring(1)}"; - } - if (thirdPart == "api") - { - return $"{recordAction} {recordType} via API"; - } else - { - return $"{recordAction} {recordType}"; - } - } - return actionType; - } - public static WebHookPayload FromGenericRecord(GenericRecord genericRecord, string actionType, string userName) - { - Dictionary payloadDictionary = new Dictionary(); - payloadDictionary.Add("user", userName); - payloadDictionary.Add("description", genericRecord.Description); - payloadDictionary.Add("odometer", genericRecord.Mileage.ToString()); - payloadDictionary.Add("vehicleId", genericRecord.VehicleId.ToString()); - payloadDictionary.Add("cost", genericRecord.Cost.ToString("F2")); - return new WebHookPayload - { - Type = actionType, - Data = payloadDictionary, - VehicleId = genericRecord.VehicleId.ToString(), - Username = userName, - Action = $"{userName} {GetFriendlyActionType(actionType)} Description: {genericRecord.Description}" - }; - } - public static WebHookPayload FromGasRecord(GasRecord gasRecord, string actionType, string userName) - { - Dictionary payloadDictionary = new Dictionary(); - payloadDictionary.Add("user", userName); - payloadDictionary.Add("odometer", gasRecord.Mileage.ToString()); - payloadDictionary.Add("fuelconsumed", gasRecord.Gallons.ToString()); - payloadDictionary.Add("vehicleId", gasRecord.VehicleId.ToString()); - payloadDictionary.Add("cost", gasRecord.Cost.ToString("F2")); - return new WebHookPayload - { - Type = actionType, - Data = payloadDictionary, - VehicleId = gasRecord.VehicleId.ToString(), - Username = userName, - Action = $"{userName} {GetFriendlyActionType(actionType)} Odometer: {gasRecord.Mileage}" - }; - } - public static WebHookPayload FromOdometerRecord(OdometerRecord odometerRecord, string actionType, string userName) - { - Dictionary payloadDictionary = new Dictionary(); - payloadDictionary.Add("user", userName); - payloadDictionary.Add("initialodometer", odometerRecord.InitialMileage.ToString()); - payloadDictionary.Add("odometer", odometerRecord.Mileage.ToString()); - payloadDictionary.Add("vehicleId", odometerRecord.VehicleId.ToString()); - return new WebHookPayload - { - Type = actionType, - Data = payloadDictionary, - VehicleId = odometerRecord.VehicleId.ToString(), - Username = userName, - Action = $"{userName} {GetFriendlyActionType(actionType)} Odometer: {odometerRecord.Mileage}" - }; - } - public static WebHookPayload FromTaxRecord(TaxRecord taxRecord, string actionType, string userName) - { - Dictionary payloadDictionary = new Dictionary(); - payloadDictionary.Add("user", userName); - payloadDictionary.Add("description", taxRecord.Description); - payloadDictionary.Add("vehicleId", taxRecord.VehicleId.ToString()); - payloadDictionary.Add("cost", taxRecord.Cost.ToString("F2")); - return new WebHookPayload - { - Type = actionType, - Data = payloadDictionary, - VehicleId = taxRecord.VehicleId.ToString(), - Username = userName, - Action = $"{userName} {GetFriendlyActionType(actionType)} Description: {taxRecord.Description}" - }; - } - public static WebHookPayload FromPlanRecord(PlanRecord planRecord, string actionType, string userName) - { - Dictionary payloadDictionary = new Dictionary(); - payloadDictionary.Add("user", userName); - payloadDictionary.Add("description", planRecord.Description); - payloadDictionary.Add("vehicleId", planRecord.VehicleId.ToString()); - payloadDictionary.Add("cost", planRecord.Cost.ToString("F2")); - return new WebHookPayload - { - Type = actionType, - Data = payloadDictionary, - VehicleId = planRecord.VehicleId.ToString(), - Username = userName, - Action = $"{userName} {GetFriendlyActionType(actionType)} Description: {planRecord.Description}" - }; - } - public static WebHookPayload FromReminderRecord(ReminderRecord reminderRecord, string actionType, string userName) - { - Dictionary payloadDictionary = new Dictionary(); - payloadDictionary.Add("user", userName); - payloadDictionary.Add("description", reminderRecord.Description); - payloadDictionary.Add("vehicleId", reminderRecord.VehicleId.ToString()); - payloadDictionary.Add("metric", reminderRecord.Metric.ToString()); - return new WebHookPayload - { - Type = actionType, - Data = payloadDictionary, - VehicleId = reminderRecord.VehicleId.ToString(), - Username = userName, - Action = $"{userName} {GetFriendlyActionType(actionType)} Description: {reminderRecord.Description}" - }; - } - public static WebHookPayload FromSupplyRecord(SupplyRecord supplyRecord, string actionType, string userName) - { - Dictionary payloadDictionary = new Dictionary(); - payloadDictionary.Add("user", userName); - payloadDictionary.Add("description", supplyRecord.Description); - payloadDictionary.Add("vehicleId", supplyRecord.VehicleId.ToString()); - payloadDictionary.Add("cost", supplyRecord.Cost.ToString("F2")); - payloadDictionary.Add("quantity", supplyRecord.Quantity.ToString("F2")); - return new WebHookPayload - { - Type = actionType, - Data = payloadDictionary, - VehicleId = supplyRecord.VehicleId.ToString(), - Username = userName, - Action = $"{userName} {GetFriendlyActionType(actionType)} Description: {supplyRecord.Description}" - }; - } - public static WebHookPayload FromNoteRecord(Note noteRecord, string actionType, string userName) - { - Dictionary payloadDictionary = new Dictionary(); - payloadDictionary.Add("user", userName); - payloadDictionary.Add("description", noteRecord.Description); - payloadDictionary.Add("vehicleId", noteRecord.VehicleId.ToString()); - return new WebHookPayload - { - Type = actionType, - Data = payloadDictionary, - VehicleId = noteRecord.VehicleId.ToString(), - Username = userName, - Action = $"{userName} {GetFriendlyActionType(actionType)} Description: {noteRecord.Description}" - }; - } - public static WebHookPayload Generic(string payload, string actionType, string userName, string vehicleId) - { - Dictionary payloadDictionary = new Dictionary(); - payloadDictionary.Add("user", userName); - if (!string.IsNullOrWhiteSpace(payload)) - { - payloadDictionary.Add("description", payload); - } - return new WebHookPayload - { - Type = actionType, - Data = payloadDictionary, - VehicleId = string.IsNullOrWhiteSpace(vehicleId) ? "N/A" : vehicleId, - Username = userName, - Action = string.IsNullOrWhiteSpace(payload) ? $"{userName} {GetFriendlyActionType(actionType)}" : $"{userName} {payload}" - }; - } - } -} diff --git a/Models/Sponsors.cs b/Models/Sponsors.cs deleted file mode 100644 index b202bbd..0000000 --- a/Models/Sponsors.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class Sponsors - { - public List LifeTime { get; set; } = new List(); - public List Bronze { get; set; } = new List(); - public List Silver { get; set; } = new List(); - public List Gold { get; set; } = new List(); - } -} diff --git a/Models/Supply/SupplyAvailability.cs b/Models/Supply/SupplyAvailability.cs deleted file mode 100644 index 509ead6..0000000 --- a/Models/Supply/SupplyAvailability.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class SupplyAvailability - { - public bool Missing { get; set; } - public string Description { get; set; } = string.Empty; - public decimal Required { get; set; } - public decimal InStock { get; set; } - public bool Insufficient { get { return Required > InStock; } } - } -} diff --git a/Models/Supply/SupplyRecord.cs b/Models/Supply/SupplyRecord.cs deleted file mode 100644 index ce0eaa3..0000000 --- a/Models/Supply/SupplyRecord.cs +++ /dev/null @@ -1,40 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class SupplyRecord - { - public int Id { get; set; } - public int VehicleId { get; set; } - /// - /// When the part or supplies were purchased. - /// - public DateTime Date { get; set; } - /// - /// Part number can be alphanumeric. - /// - public string PartNumber { get; set; } - /// - /// Where the part/supplies were purchased from. - /// - public string PartSupplier { get; set; } - /// - /// Amount purchased, can be partial quantities such as fluids. - /// - public decimal Quantity { get; set; } - /// - /// Description of the part/supplies purchased. - /// - public string Description { get; set; } - /// - /// How much it costs - /// - public decimal Cost { get; set; } - /// - /// Additional notes. - /// - public string Notes { get; set; } - public List Files { 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(); - } -} diff --git a/Models/Supply/SupplyRecordInput.cs b/Models/Supply/SupplyRecordInput.cs deleted file mode 100644 index f72a42b..0000000 --- a/Models/Supply/SupplyRecordInput.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class SupplyRecordInput - { - public int Id { get; set; } - public int VehicleId { get; set; } - public string Date { get; set; } = DateTime.Now.ToShortDateString(); - public string PartNumber { get; set; } - public string PartSupplier { get; set; } - public decimal Quantity { 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 Tags { get; set; } = new List(); - public List ExtraFields { get; set; } = new List(); - public List RequisitionHistory { get; set; } = new List(); - public SupplyRecord ToSupplyRecord() { return new SupplyRecord { - Id = Id, - VehicleId = VehicleId, - Date = DateTime.Parse(Date), - Cost = Cost, - PartNumber = PartNumber, - PartSupplier = PartSupplier, - Quantity = Quantity, - Description = Description, - Notes = Notes, - Files = Files, - Tags = Tags, - ExtraFields = ExtraFields, - RequisitionHistory = RequisitionHistory - }; } - } -} diff --git a/Models/Supply/SupplyRequisitionHistory.cs b/Models/Supply/SupplyRequisitionHistory.cs deleted file mode 100644 index 6cbd59d..0000000 --- a/Models/Supply/SupplyRequisitionHistory.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class SupplyRequisitionHistory - { - public string CostInputId { get; set; } - public List RequisitionHistory { get; set; } = new List(); - } -} diff --git a/Models/Supply/SupplyStore.cs b/Models/Supply/SupplyStore.cs deleted file mode 100644 index e0b461c..0000000 --- a/Models/Supply/SupplyStore.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class SupplyStore - { - public string Tab { get; set; } - public bool AdditionalSupplies { get; set; } - } -} diff --git a/Models/Supply/SupplyUsage.cs b/Models/Supply/SupplyUsage.cs deleted file mode 100644 index 9f73cee..0000000 --- a/Models/Supply/SupplyUsage.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class SupplyUsage { - public int SupplyId { get; set; } - public decimal Quantity { get; set; } - } -} diff --git a/Models/Supply/SupplyUsageHistory.cs b/Models/Supply/SupplyUsageHistory.cs deleted file mode 100644 index 60171c0..0000000 --- a/Models/Supply/SupplyUsageHistory.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class SupplyUsageHistory { - public int Id { get; set; } - public DateTime Date { get; set; } - public string PartNumber { get; set; } - public string Description { get; set; } - public decimal Quantity { get; set; } - public decimal Cost { get; set; } - } -} diff --git a/Models/Supply/SupplyUsageViewModel.cs b/Models/Supply/SupplyUsageViewModel.cs deleted file mode 100644 index e920840..0000000 --- a/Models/Supply/SupplyUsageViewModel.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class SupplyUsageViewModel - { - public List Supplies { get; set; } = new List(); - public List Usage { get; set; } = new List(); - } -} diff --git a/Models/TaxRecord/TaxRecord.cs b/Models/TaxRecord/TaxRecord.cs deleted file mode 100644 index cd3d9ba..0000000 --- a/Models/TaxRecord/TaxRecord.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class TaxRecord - { - public int Id { get; set; } - public int VehicleId { get; set; } - public DateTime Date { get; set; } - public string Description { get; set; } - public decimal Cost { get; set; } - public string Notes { get; set; } - public bool IsRecurring { get; set; } = false; - public ReminderMonthInterval RecurringInterval { get; set; } = ReminderMonthInterval.OneYear; - public int CustomMonthInterval { get; set; } = 0; - public ReminderIntervalUnit CustomMonthIntervalUnit { get; set; } = ReminderIntervalUnit.Months; - public List Files { get; set; } = new List(); - public List Tags { get; set; } = new List(); - public List ExtraFields { get; set; } = new List(); - } -} diff --git a/Models/TaxRecord/TaxRecordInput.cs b/Models/TaxRecord/TaxRecordInput.cs deleted file mode 100644 index 5fcefb7..0000000 --- a/Models/TaxRecord/TaxRecordInput.cs +++ /dev/null @@ -1,35 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class TaxRecordInput - { - 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 string Description { get; set; } - public decimal Cost { get; set; } - public string Notes { get; set; } - public bool IsRecurring { get; set; } = false; - public ReminderMonthInterval RecurringInterval { get; set; } = ReminderMonthInterval.ThreeMonths; - public int CustomMonthInterval { get; set; } = 0; - public ReminderIntervalUnit CustomMonthIntervalUnit { get; set; } = ReminderIntervalUnit.Months; - public List Files { get; set; } = new List(); - public List Tags { get; set; } = new List(); - public List ExtraFields { get; set; } = new List(); - public TaxRecord ToTaxRecord() { return new TaxRecord { - Id = Id, - VehicleId = VehicleId, - Date = DateTime.Parse(Date), - Cost = Cost, - Description = Description, - Notes = Notes, - IsRecurring = IsRecurring, - RecurringInterval = RecurringInterval, - CustomMonthInterval = CustomMonthInterval, - CustomMonthIntervalUnit = CustomMonthIntervalUnit, - Files = Files, - Tags = Tags, - ExtraFields = ExtraFields - }; } - } -} diff --git a/Models/Translations.cs b/Models/Translations.cs deleted file mode 100644 index 7025b97..0000000 --- a/Models/Translations.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class Translations - { - public List Africa { get; set; } = new List(); - public List Asia { get; set; } = new List(); - public List Europe { get; set; } = new List(); - public List NorthAmerica { get; set; } = new List(); - public List SouthAmerica { get; set; } = new List(); - public List Oceania { get; set; } = new List(); - } -} diff --git a/Models/UpgradeRecord/UpgradeRecord.cs b/Models/UpgradeRecord/UpgradeRecord.cs deleted file mode 100644 index 6eac340..0000000 --- a/Models/UpgradeRecord/UpgradeRecord.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class UpgradeRecord: GenericRecord - { - } -} diff --git a/Models/UpgradeRecord/UpgradeReportInput.cs b/Models/UpgradeRecord/UpgradeReportInput.cs deleted file mode 100644 index 23d9b54..0000000 --- a/Models/UpgradeRecord/UpgradeReportInput.cs +++ /dev/null @@ -1,35 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class UpgradeRecordInput - { - 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 UpgradeRecord ToUpgradeRecord() { return new UpgradeRecord { - 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/User/UserAccess.cs b/Models/User/UserAccess.cs deleted file mode 100644 index 02bfa9c..0000000 --- a/Models/User/UserAccess.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class UserVehicle - { - public int UserId { get; set; } - public int VehicleId { get; set; } - } - public class UserAccess - { - public UserVehicle Id { get; set; } - } -} diff --git a/Models/User/UserCollaborator.cs b/Models/User/UserCollaborator.cs deleted file mode 100644 index 46fa65f..0000000 --- a/Models/User/UserCollaborator.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class UserCollaborator - { - public string UserName { get; set; } - public UserVehicle UserVehicle { get; set; } - } -} diff --git a/Models/User/UserColumnPreference.cs b/Models/User/UserColumnPreference.cs deleted file mode 100644 index a8c337d..0000000 --- a/Models/User/UserColumnPreference.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class UserColumnPreference - { - public ImportMode Tab { get; set; } - public List VisibleColumns { get; set; } = new List(); - public List ColumnOrder { get; set; } = new List(); - } -} \ No newline at end of file diff --git a/Models/User/UserConfigData.cs b/Models/User/UserConfigData.cs deleted file mode 100644 index ce6ee96..0000000 --- a/Models/User/UserConfigData.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class UserConfigData - { - /// - /// User ID - /// - public int Id { get; set; } - public UserConfig UserConfig { get; set; } - } -} diff --git a/Models/User/UserData.cs b/Models/User/UserData.cs deleted file mode 100644 index 77f718b..0000000 --- a/Models/User/UserData.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class UserData - { - public int Id { get; set; } - public string UserName { get; set; } - public string EmailAddress { get; set; } - public string Password { get; set; } - public bool IsAdmin { get; set; } - public bool IsRootUser { get; set; } = false; - } -} \ No newline at end of file diff --git a/Models/UserConfig.cs b/Models/UserConfig.cs deleted file mode 100644 index 2ceb4dc..0000000 --- a/Models/UserConfig.cs +++ /dev/null @@ -1,55 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class UserConfig - { - public bool UseDarkMode { get; set; } - public bool UseSystemColorMode { get; set; } - public bool EnableCsvImports { get; set; } - public bool UseMPG { get; set; } - public bool UseDescending { get; set; } - public bool EnableAuth { get; set; } - public bool HideZero { get; set; } - public bool UseUKMPG {get;set;} - public bool UseThreeDecimalGasCost { get; set; } - public bool UseThreeDecimalGasConsumption { get; set; } - public bool UseMarkDownOnSavedNotes { get; set; } - public bool EnableAutoReminderRefresh { get; set; } - public bool EnableAutoOdometerInsert { get; set; } - public bool EnableShopSupplies { get; set; } - public bool EnableExtraFieldColumns { get; set; } - public bool HideSoldVehicles { get; set; } - public bool AutomaticDecimalFormat { get; set; } - public string PreferredGasUnit { get; set; } = string.Empty; - public string PreferredGasMileageUnit { get; set; } = string.Empty; - public bool UseUnitForFuelCost { get; set; } - public bool UseSimpleFuelEntry { get; set; } - public bool ShowCalendar { get; set; } - public bool ShowVehicleThumbnail { get; set; } - public List UserColumnPreferences { get; set; } = new List(); - public string UserNameHash { get; set; } - public string UserPasswordHash { get; set;} - public string UserLanguage { get; set; } = "en_US"; - public List VisibleTabs { get; set; } = new List() { - ImportMode.Dashboard, - ImportMode.ServiceRecord, - ImportMode.GasRecord, - ImportMode.UpgradeRecord, - ImportMode.TaxRecord, - ImportMode.ReminderRecord, - ImportMode.NoteRecord - }; - public ImportMode DefaultTab { get; set; } = ImportMode.Dashboard; - public List TabOrder { get; set; } = new List() { - ImportMode.Dashboard, - ImportMode.PlanRecord, - ImportMode.OdometerRecord, - ImportMode.ServiceRecord, - ImportMode.UpgradeRecord, - ImportMode.GasRecord, - ImportMode.SupplyRecord, - ImportMode.TaxRecord, - ImportMode.NoteRecord, - ImportMode.ReminderRecord - }; - } -} \ No newline at end of file diff --git a/Models/Vehicle.cs b/Models/Vehicle.cs deleted file mode 100644 index a647d4b..0000000 --- a/Models/Vehicle.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System.Text.Json.Serialization; - -namespace MotoVaultPro.Models -{ - public class Vehicle - { - public int Id { get; set; } - public string ImageLocation { get; set; } = "/defaults/noimage.png"; - public int Year { get; set; } - public string Make { get; set; } - public string Model { get; set; } - public string LicensePlate { get; set; } - public string VinNumber { get; set; } - [JsonConverter(typeof(FromDateOptional))] - public string PurchaseDate { get; set; } - [JsonConverter(typeof(FromDateOptional))] - public string SoldDate { get; set; } - public decimal PurchasePrice { get; set; } - public decimal SoldPrice { get; set; } - public bool IsElectric { get; set; } = false; - public bool IsDiesel { get; set; } = false; - public bool UseHours { get; set; } = false; - public bool OdometerOptional { get; set; } = false; - public List ExtraFields { get; set; } = new List(); - public List Tags { get; set; } = new List(); - public bool HasOdometerAdjustment { get; set; } = false; - /// - /// Primarily used for vehicles with odometer units different from user's settings. - /// - [JsonConverter(typeof(FromDecimalOptional))] - public string OdometerMultiplier { get; set; } = "1"; - /// - /// Primarily used for vehicles where the odometer does not reflect actual mileage. - /// - [JsonConverter(typeof(FromIntOptional))] - public string OdometerDifference { get; set; } = "0"; - public List DashboardMetrics { get; set; } = new List(); - /// - /// Determines what is displayed in place of the license plate. - /// - public string VehicleIdentifier { get; set; } = "LicensePlate"; - } -} diff --git a/Models/VehicleViewModel.cs b/Models/VehicleViewModel.cs deleted file mode 100644 index 13b2a39..0000000 --- a/Models/VehicleViewModel.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace MotoVaultPro.Models -{ - public class VehicleViewModel - { - public int Id { get; set; } - public string ImageLocation { get; set; } = "/defaults/noimage.png"; - public int Year { get; set; } - public string Make { get; set; } - public string Model { get; set; } - public string LicensePlate { get; set; } - public string VinNumber { get; set; } - public string SoldDate { get; set; } - public bool IsElectric { get; set; } = false; - public bool IsDiesel { get; set; } = false; - public bool UseHours { get; set; } = false; - public bool OdometerOptional { get; set; } = false; - public List ExtraFields { get; set; } = new List(); - public List Tags { get; set; } = new List(); - public string VehicleIdentifier { get; set; } = "LicensePlate"; - //Dashboard Metric Attributes - public List DashboardMetrics { get; set; } = new List(); - public int LastReportedMileage { get; set; } - public bool HasReminders { get; set; } = false; - public decimal CostPerMile { get; set; } - public decimal TotalCost { get; set; } - public string DistanceUnit { get; set; } - } -} diff --git a/MotoVaultPro.csproj b/MotoVaultPro.csproj deleted file mode 100644 index 3aae8aa..0000000 --- a/MotoVaultPro.csproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - net8.0 - enable - enable - - - - - - - - - - - - - - - diff --git a/MotoVaultPro.sln b/MotoVaultPro.sln deleted file mode 100644 index 693e6d1..0000000 --- a/MotoVaultPro.sln +++ /dev/null @@ -1,25 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.8.34330.188 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MotoVaultPro", "MotoVaultPro.csproj", "{0DB85611-6555-4127-A66E-DADD25A16526}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {0DB85611-6555-4127-A66E-DADD25A16526}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0DB85611-6555-4127-A66E-DADD25A16526}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0DB85611-6555-4127-A66E-DADD25A16526}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0DB85611-6555-4127-A66E-DADD25A16526}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {E1B446D5-E91D-47E5-819B-1902378770D7} - EndGlobalSection -EndGlobal diff --git a/Program.cs b/Program.cs deleted file mode 100644 index 2fd5422..0000000 --- a/Program.cs +++ /dev/null @@ -1,175 +0,0 @@ -using MotoVaultPro.External.Implementations; -using MotoVaultPro.External.Interfaces; -using MotoVaultPro.Helper; -using MotoVaultPro.Logic; -using MotoVaultPro.Middleware; -using Microsoft.AspNetCore.Authentication; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Http.Features; -using Microsoft.AspNetCore.Server.Kestrel.Core; -using Microsoft.Extensions.FileProviders; - -var builder = WebApplication.CreateBuilder(args); - -//Additional JsonFile -builder.Configuration.AddJsonFile(StaticHelper.UserConfigPath, optional: true, reloadOnChange: true); -builder.Configuration.AddJsonFile(StaticHelper.ServerConfigPath, optional: true, reloadOnChange: true); - -//Print Messages -StaticHelper.InitMessage(builder.Configuration); -//Check Migration -StaticHelper.CheckMigration(builder.Environment.WebRootPath, builder.Environment.ContentRootPath); - -// Add services to the container. -builder.Services.AddControllersWithViews(); - -//LiteDB is always injected even if user uses Postgres. -builder.Services.AddSingleton(); - -//data access method -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(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); -} -else -{ - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); -} - -//configure helpers -builder.Services.AddSingleton(); -builder.Services.AddSingleton(); -builder.Services.AddSingleton(); -builder.Services.AddSingleton(); -builder.Services.AddSingleton(); -builder.Services.AddSingleton(); -builder.Services.AddSingleton(); - -//configure logic -builder.Services.AddSingleton(); -builder.Services.AddSingleton(); -builder.Services.AddSingleton(); -builder.Services.AddSingleton(); - -//Configure Auth -builder.Services.AddDataProtection(); -builder.Services.AddHttpContextAccessor(); -builder.Services.AddAuthentication("AuthN").AddScheme("AuthN", opts => { }); -builder.Services.AddAuthorization(options => -{ - options.DefaultPolicy = new AuthorizationPolicyBuilder().AddAuthenticationSchemes("AuthN").RequireAuthenticatedUser().Build(); -}); -//Configure max file upload size -builder.Services.Configure(options => -{ - options.Limits.MaxRequestBodySize = int.MaxValue; // if don't set default value is: 30 MB -}); -builder.Services.Configure(options => -{ - options.ValueLengthLimit = int.MaxValue; - options.MultipartBodyLengthLimit = int.MaxValue; // if don't set default value is: 128 MB - options.MultipartHeadersLengthLimit = int.MaxValue; -}); - -var app = builder.Build(); - -// Configure the HTTP request pipeline. -app.UseExceptionHandler("/Home/Error"); - -app.UseStaticFiles(); -app.UseStaticFiles(new StaticFileOptions -{ - FileProvider = new PhysicalFileProvider( - Path.Combine(builder.Environment.ContentRootPath, "data", "images")), - RequestPath = "/images", - OnPrepareResponse = ctx => - { - if (ctx.Context.Request.Path.StartsWithSegments("/images")) - { - ctx.Context.Response.Headers.Append("Cache-Control", "no-store"); - if (!ctx.Context.User.Identity.IsAuthenticated) - { - ctx.Context.Response.Redirect("/Login"); - } - } - } -}); -app.UseStaticFiles(new StaticFileOptions -{ - FileProvider = new PhysicalFileProvider( - Path.Combine(builder.Environment.ContentRootPath, "data", "documents")), - RequestPath = "/documents", - OnPrepareResponse = ctx => - { - if (ctx.Context.Request.Path.StartsWithSegments("/documents")) - { - ctx.Context.Response.Headers.Append("Cache-Control", "no-store"); - if (!ctx.Context.User.Identity.IsAuthenticated) - { - ctx.Context.Response.Redirect("/Login"); - } - } - } -}); -app.UseStaticFiles(new StaticFileOptions -{ - FileProvider = new PhysicalFileProvider( - Path.Combine(builder.Environment.ContentRootPath, "data", "translations")), - RequestPath = "/translations" -}); -app.UseStaticFiles(new StaticFileOptions -{ - FileProvider = new PhysicalFileProvider( - Path.Combine(builder.Environment.ContentRootPath, "data", "temp")), - RequestPath = "/temp", - OnPrepareResponse = ctx => - { - if (ctx.Context.Request.Path.StartsWithSegments("/temp")) - { - ctx.Context.Response.Headers.Append("Cache-Control", "no-store"); - if (!ctx.Context.User.Identity.IsAuthenticated) - { - ctx.Context.Response.Redirect("/Login"); - } - } - } -}); - -app.UseRouting(); - -app.UseAuthorization(); - -app.MapControllerRoute( - name: "default", - pattern: "{controller=Home}/{action=Index}/{id?}"); - -app.Run(); diff --git a/README.md b/README.md deleted file mode 100644 index 8a65d33..0000000 --- a/README.md +++ /dev/null @@ -1,25 +0,0 @@ -## Why -Because manually tracking vehicle maintenace can be challenging. The purpose is to maket his as easy as possible while allowing manual entry as well. - -## Showcase -[Promotional Brochure](https://motovaultpro.com/brochure.pdf) - -[Screenshots](/docs/screenshots.md) - -## Dependencies -- [Bootstrap](https://github.com/twbs/bootstrap) -- [LiteDB](https://github.com/mbdavid/litedb) -- [Npgsql](https://github.com/npgsql/npgsql) -- [Bootstrap-DatePicker](https://github.com/uxsolutions/bootstrap-datepicker) -- [SweetAlert2](https://github.com/sweetalert2/sweetalert2) -- [CsvHelper](https://github.com/JoshClose/CsvHelper) -- [Chart.js](https://github.com/chartjs/Chart.js) -- [Drawdown](https://github.com/adamvleggett/drawdown) -- [MailKit](https://github.com/jstedfast/MailKit) -- [Masonry](https://github.com/desandro/masonry) - -## License -MIT - -## Support -Support this project coming soon \ No newline at end of file diff --git a/Views/API/Index.cshtml b/Views/API/Index.cshtml deleted file mode 100644 index fd7a0f8..0000000 --- a/Views/API/Index.cshtml +++ /dev/null @@ -1,842 +0,0 @@ -@using MotoVaultPro.Helper -@{ - ViewData["Title"] = "API"; -} -@inject IConfigHelper config -@section Nav { -
-
-
-
- -
- API - If authentication is enabled, use the credentials of the user for Basic Auth(RFC2617) -
-
-
-
-} -
-
-
-
Method
-
-
-
Endpoint
-
-
-
Description
-
-
-
Parameters
-
-
-
-
- GET -
-
- /api/whoami -
-
- Returns information for current user -
-
- No Params -
-
-
-
- GET -
-
- /api/version -
-
- Returns current version of MotoVaultPro and checks for updates -
-
- CheckForUpdate(bool) - checks for update(optional) -
-
-
-
- GET -
-
- /api/vehicles -
-
- Returns a list of vehicles -
-
- No Params -
-
-
-
- GET -
-
- /api/vehicle/info -
-
- Returns details for list of vehicles or specific vehicle -
-
- VehicleId - Id of Vehicle(optional) -
-
-
-
- GET -
-
- /api/vehicle/adjustedodometer -
-
- Returns odometer reading with adjustments applied -
-
- vehicleId - Id of Vehicle -
- odometer - Unadjusted odometer -
-
-
-
- GET -
-
- /api/vehicle/odometerrecords -
-
- Returns a list of odometer records for the vehicle -
-
- vehicleId - Id of Vehicle -
-
-
-
- GET -
-
- /api/vehicle/odometerrecords/latest -
-
- Returns last reported odometer for the vehicle -
-
- vehicleId - Id of Vehicle -
-
-
-
- POST -
-
- /api/vehicle/odometerrecords/add -
-
- Adds Odometer Record to the vehicle -
-
- vehicleId - Id of Vehicle -
- Body(form-data): {
- date - Date to be entered
- initialOdometer - Initial Odometer reading(optional)
- odometer - Odometer reading
- notes - notes(optional)
- tags - tags separated by space(optional)
- extrafields - extrafields(optional)
- files - attachments(optional)
- } -
-
-
-
- PUT -
-
- /api/vehicle/odometerrecords/update -
-
- Updates Odometer Record -
-
- Body(form-data): {
- Id - Id of Odometer Record
- date - Date to be entered
- initialOdometer - Initial Odometer reading
- odometer - Odometer reading
- notes - notes(optional)
- tags - tags separated by space(optional)
- extrafields - extrafields(optional)
- files - attachments(optional)
- } -
-
-
-
- DELETE -
-
- /api/vehicle/odometerrecords/delete -
-
- Deletes Odometer Record -
-
- Id - Id of Odometer Record -
-
-
-
- GET -
-
- /api/vehicle/planrecords -
-
- Returns a list of plan records for the vehicle -
-
- vehicleId - Id of Vehicle -
-
-
-
- POST -
-
- /api/vehicle/planrecords/add -
-
- Adds Plan Record to the vehicle -
-
- vehicleId - Id of Vehicle -
- Body(form-data): {
- description - Description
- cost - Cost
- priority - Low/Normal/Critical
- progress - Backlog/InProgress/Testing
- notes - notes(optional)
- extrafields - extrafields(optional)
- files - attachments(optional)
- } -
-
-
-
- PUT -
-
- /api/vehicle/planrecords/update -
-
- Updates Plan Record -
-
- Body(form-data): {
- Id - Id of Plan Record
- description - Description
- cost - Cost
- priority - Low/Normal/Critical
- progress - Backlog/InProgress/Testing
- notes - notes(optional)
- extrafields - extrafields(optional)
- files - attachments(optional)
- } -
-
-
-
- DELETE -
-
- /api/vehicle/planrecords/delete -
-
- Deletes Plan Record -
-
- Id - Id of Plan Record -
-
-
-
- GET -
-
- /api/vehicle/servicerecords -
-
- Returns a list of service records for the vehicle -
-
- vehicleId - Id of Vehicle -
-
-
-
- POST -
-
- /api/vehicle/servicerecords/add -
-
- Adds Service Record to the vehicle -
-
- vehicleId - Id of Vehicle -
- Body(form-data): {
- date - Date to be entered
- odometer - Odometer reading
- description - Description
- cost - Cost
- notes - notes(optional)
- tags - tags separated by space(optional)
- extrafields - extrafields(optional)
- files - attachments(optional)
- } -
-
-
-
- PUT -
-
- /api/vehicle/servicerecords/update -
-
- Updates Service Record -
-
- Body(form-data): {
- Id - Id of Service Record
- date - Date to be entered
- odometer - Odometer reading
- description - Description
- cost - Cost
- notes - notes(optional)
- tags - tags separated by space(optional)
- extrafields - extrafields(optional)
- files - attachments(optional)
- } -
-
-
-
- DELETE -
-
- /api/vehicle/servicerecords/delete -
-
- Deletes Service Record -
-
- Id - Id of Service Record -
-
-
-
- GET -
-
-
-
-
-
- vehicleId - Id of Vehicle -
-
-
-
- POST -
-
-
-
-
-
- vehicleId - Id of Vehicle -
- Body(form-data): {
- date - Date to be entered
- odometer - Odometer reading
- description - Description
- cost - Cost
- notes - notes(optional)
- tags - tags separated by space(optional)
- extrafields - extrafields(optional)
- files - attachments(optional)
- } -
-
-
-
- PUT -
-
-
-
-
-
- Body(form-data): {
- date - Date to be entered
- odometer - Odometer reading
- description - Description
- cost - Cost
- notes - notes(optional)
- tags - tags separated by space(optional)
- extrafields - extrafields(optional)
- files - attachments(optional)
- } -
-
-
-
- DELETE -
-
-
-
-
-
-
-
-
-
- GET -
-
- /api/vehicle/upgraderecords -
-
- Returns a list of upgrade records for the vehicle -
-
- vehicleId - Id of Vehicle -
-
-
-
- POST -
-
- /api/vehicle/upgraderecords/add -
-
- Adds Upgrade Record to the vehicle -
-
- vehicleId - Id of Vehicle -
- Body(form-data): {
- date - Date to be entered
- odometer - Odometer reading
- description - Description
- cost - Cost
- notes - notes(optional)
- tags - tags separated by space(optional)
- extrafields - extrafields(optional)
- files - attachments(optional)
- } -
-
-
-
- PUT -
-
- /api/vehicle/upgraderecords/update -
-
- Updates Upgrade Record -
-
- Body(form-data): {
- Id - Id of Upgrade Record
- date - Date to be entered
- odometer - Odometer reading
- description - Description
- cost - Cost
- notes - notes(optional)
- tags - tags separated by space(optional)
- extrafields - extrafields(optional)
- files - attachments(optional)
- } -
-
-
-
- DELETE -
-
- /api/vehicle/upgraderecords/delete -
-
- Deletes Upgrade Record -
-
- Id - Id of Upgrade Record -
-
-
-
- GET -
-
- /api/vehicle/taxrecords -
-
- Returns a list of tax records for the vehicle -
-
- vehicleId - Id of Vehicle -
-
-
-
- GET -
-
- /api/vehicle/taxrecords/check -
-
- Updates Outdated Recurring Tax Records -
-
- No Params -
-
-
-
- POST -
-
- /api/vehicle/taxrecords/add -
-
- Adds Tax Record to the vehicle -
-
- vehicleId - Id of Vehicle -
- Body(form-data): {
- date - Date to be entered
- description - Description
- cost - Cost
- notes - notes(optional)
- tags - tags separated by space(optional)
- extrafields - extrafields(optional)
- files - attachments(optional)
- } -
-
-
-
- PUT -
-
- /api/vehicle/taxrecords/update -
-
- Updates Tax Record -
-
- Body(form-data): {
- Id - Id of Tax Record
- date - Date to be entered
- description - Description
- cost - Cost
- notes - notes(optional)
- tags - tags separated by space(optional)
- extrafields - extrafields(optional)
- files - attachments(optional)
- } -
-
-
-
- DELETE -
-
- /api/vehicle/taxrecords/delete -
-
- Deletes Tax Record -
-
- Id - Id of Tax Record -
-
-
-
- GET -
-
- /api/vehicle/gasrecords -
-
- Returns a list of gas records for the vehicle -
-
- vehicleId - Id of Vehicle -
- useMPG(bool) - Use Imperial Units and Calculation -
- useUKMPG(bool) - Use UK Imperial Calculation -
-
-
-
- POST -
-
- /api/vehicle/gasrecords/add -
-
- Adds Gas Record to the vehicle -
-
- vehicleId - Id of Vehicle -
- Body(form-data): {
- date - Date to be entered
- odometer - Odometer reading
- fuelConsumed - Fuel Consumed
- cost - Cost
- isFillToFull(bool) - Filled To Full
- missedFuelUp(bool) - Missed Fuel Up
- notes - notes(optional)
- tags - tags separated by space(optional)
- extrafields - extrafields(optional)
- files - attachments(optional)
- } -
-
-
-
- PUT -
-
- /api/vehicle/gasrecords/update -
-
- Updates Gas Record -
-
- Body(form-data): {
- Id - Id of Gas Record
- date - Date to be entered
- odometer - Odometer reading
- fuelConsumed - Fuel Consumed
- cost - Cost
- isFillToFull(bool) - Filled To Full
- missedFuelUp(bool) - Missed Fuel Up
- notes - notes(optional)
- tags - tags separated by space(optional)
- extrafields - extrafields(optional)
- files - attachments(optional)
- } -
-
-
-
- DELETE -
-
- /api/vehicle/gasrecords/delete -
-
- Deletes Gas Record -
-
- Id - Id of Gas Record -
-
-
-
- GET -
-
- /api/vehicle/reminders -
-
- Returns a list of reminders for the vehicle -
-
- vehicleId - Id of Vehicle -
-
-
-
- POST -
-
- /api/vehicle/reminders/add -
-
- Adds Reminder Record to the vehicle -
-
- vehicleId - Id of Vehicle -
- Body(form-data): {
- description - Description
- dueDate - Due Date
- dueOdometer - Due Odometer reading
- metric - Date/Odometer/Both
- notes - notes(optional)
- tags - tags separated by space(optional)
- } -
-
-
-
- PUT -
-
- /api/vehicle/reminders/update -
-
- Updates Reminder Record -
-
- Body(form-data): {
- Id - Id of Reminder Record
- description - Description
- dueDate - Due Date
- dueOdometer - Due Odometer reading
- metric - Date/Odometer/Both
- notes - notes(optional)
- tags - tags separated by space(optional)
- } -
-
-
-
- DELETE -
-
- /api/vehicle/reminders/delete -
-
- Deletes Reminder Record -
-
- Id - Id of Reminder Record -
-
-
-
- GET -
-
- /api/calendar -
-
- Returns reminder calendar in ICS format -
-
- No Params -
-
-
-
- POST -
-
- /api/documents/upload -
-
- Upload Documents -
-
- Body(form-data): {
- documents[] - Files to Upload
- } -
-
-@if (User.IsInRole(nameof(UserData.IsRootUser))) -{ -
-
- GET -
-
- /api/vehicle/reminders/send -
-
- Send reminder emails out to collaborators based on specified urgency. -
-
- (must be root user)
- urgencies[]=[NotUrgent,Urgent,VeryUrgent,PastDue](optional) -
-
-
-
- GET -
-
- /api/makebackup -
-
- Creates a snapshot/backup of the DB at the time and returns a URL to download it. -
-
- No Params(must be root user) -
-
-
-
- GET -
-
- /api/cleanup -
-
- Clears out temp files. Deep clean will also delete unlinked thumbnails and documents. Returns number of deleted files. -
-
- (must be root user)
- deepClean(bool) - Perform deep clean(optional) -
-
-} -
- \ No newline at end of file diff --git a/Views/Admin/Index.cshtml b/Views/Admin/Index.cshtml deleted file mode 100644 index 1aebfac..0000000 --- a/Views/Admin/Index.cshtml +++ /dev/null @@ -1,189 +0,0 @@ -@using MotoVaultPro.Helper -@{ - ViewData["Title"] = "Admin Panel"; -} -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - bool emailServerIsSetup = true; - var mailConfig = config.GetMailConfig(); - var userLanguage = config.GetServerLanguage(); - if (mailConfig is null || string.IsNullOrWhiteSpace(mailConfig.EmailServer)) - { - emailServerIsSetup = false; - } -} -@section Nav { -
-
-
-
- -
- @translator.Translate(userLanguage, "Admin Panel") -
-
-
-
-} -@model AdminViewModel -
-
-
-
-
- @translator.Translate(userLanguage, "Users") -
-
- -
-
-
- - - - - - - - - - - @await Html.PartialAsync("_Users", Model.Users) - -
@translator.Translate(userLanguage, "Username")@translator.Translate(userLanguage, "Email")@translator.Translate(userLanguage, "Is Admin")@translator.Translate(userLanguage, "Delete")
-
-
- -
- \ No newline at end of file diff --git a/Views/Admin/_Tokens.cshtml b/Views/Admin/_Tokens.cshtml deleted file mode 100644 index 844cf34..0000000 --- a/Views/Admin/_Tokens.cshtml +++ /dev/null @@ -1,12 +0,0 @@ -@using MotoVaultPro.Helper -@model List -@foreach (Token token in Model) -{ - - @token.Body - @StaticHelper.TruncateStrings(token.EmailAddress) - - - - -} \ No newline at end of file diff --git a/Views/Admin/_Users.cshtml b/Views/Admin/_Users.cshtml deleted file mode 100644 index c6d5860..0000000 --- a/Views/Admin/_Users.cshtml +++ /dev/null @@ -1,11 +0,0 @@ -@using MotoVaultPro.Helper -@model List -@foreach (UserData userData in Model) -{ - - @StaticHelper.TruncateStrings(userData.UserName) - @StaticHelper.TruncateStrings(userData.EmailAddress) - - - -} \ No newline at end of file diff --git a/Views/Home/Index.cshtml b/Views/Home/Index.cshtml deleted file mode 100644 index 0219051..0000000 --- a/Views/Home/Index.cshtml +++ /dev/null @@ -1,172 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@model string -@{ - ViewData["Title"] = "Garage"; -} -@section Scripts { - - - - -} -@section Nav { -
-
-
-
- - -
- -
- -
-
-
-
-
-} -
- -
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
- - - - -
-
- \ No newline at end of file diff --git a/Views/Home/Kiosk.cshtml b/Views/Home/Kiosk.cshtml deleted file mode 100644 index cefc5e7..0000000 --- a/Views/Home/Kiosk.cshtml +++ /dev/null @@ -1,157 +0,0 @@ -@{ - ViewData["Title"] = "Kiosk"; -} -@model KioskViewModel -@section Scripts { - - -} -
-
-
-
-
-
-
- \ No newline at end of file diff --git a/Views/Home/Setup.cshtml b/Views/Home/Setup.cshtml deleted file mode 100644 index 8f69b90..0000000 --- a/Views/Home/Setup.cshtml +++ /dev/null @@ -1,276 +0,0 @@ -@using MotoVaultPro.Helper -@{ - ViewData["Title"] = "Server Settings"; -} -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - bool emailServerIsSetup = true; - var mailConfig = config.GetMailConfig(); - var userLanguage = config.GetServerLanguage(); - if (mailConfig is null || string.IsNullOrWhiteSpace(mailConfig.EmailServer)) - { - emailServerIsSetup = false; - } -} -@section Scripts { - -} -@section Nav { -
-
-
-
- -
- @translator.Translate(userLanguage, "Server Settings Configurator") -
-
-
-
-} -@model ServerSettingsViewModel -
-
-
-
@translator.Translate(userLanguage, "Server Settings Configurator")
-
@translator.Translate(userLanguage, "By proceeding, you acknowledge that you are solely responsible for all consequences from utilizing the Server Settings Configurator")
- -
-
- - - - - - -
\ No newline at end of file diff --git a/Views/Home/_AccountModal.cshtml b/Views/Home/_AccountModal.cshtml deleted file mode 100644 index 56b7ec0..0000000 --- a/Views/Home/_AccountModal.cshtml +++ /dev/null @@ -1,40 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model UserData -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} - - - \ No newline at end of file diff --git a/Views/Home/_Calendar.cshtml b/Views/Home/_Calendar.cshtml deleted file mode 100644 index fec038b..0000000 --- a/Views/Home/_Calendar.cshtml +++ /dev/null @@ -1,25 +0,0 @@ -@using MotoVaultPro.Helper -@model List - -
-
-
-
-
-
- - \ No newline at end of file diff --git a/Views/Home/_ExtraFields.cshtml b/Views/Home/_ExtraFields.cshtml deleted file mode 100644 index c4c6f0e..0000000 --- a/Views/Home/_ExtraFields.cshtml +++ /dev/null @@ -1,142 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@model RecordExtraField - - - - - \ No newline at end of file diff --git a/Views/Home/_GarageDisplay.cshtml b/Views/Home/_GarageDisplay.cshtml deleted file mode 100644 index 17a33eb..0000000 --- a/Views/Home/_GarageDisplay.cshtml +++ /dev/null @@ -1,89 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model List -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; - var recordTags = Model.SelectMany(x => x.Tags).Distinct(); -} -@if (recordTags.Any()) -{ -
-
- @foreach (string recordTag in recordTags) - { - @recordTag - } - - @foreach (string recordTag in recordTags) - { - - } - -
-
-} -
- @foreach (VehicleViewModel vehicle in Model) - { - @if (!(userConfig.HideSoldVehicles && !string.IsNullOrWhiteSpace(vehicle.SoldDate))) - { -
-
- - @if (!string.IsNullOrWhiteSpace(vehicle.SoldDate)) - { -

@translator.Translate(userLanguage, "SOLD")

- } else if (vehicle.DashboardMetrics.Any()) - { -
- @if (vehicle.DashboardMetrics.Contains(DashboardMetric.Default) && vehicle.LastReportedMileage != default) - { - -
-
- @vehicle.LastReportedMileage.ToString("N0") -
- @if (vehicle.HasReminders) - { -
- -
- } -
- } - @if (vehicle.DashboardMetrics.Contains(DashboardMetric.CostPerMile) && vehicle.CostPerMile != default) - { -
-
- @($"{vehicle.CostPerMile.ToString("C2")}/{vehicle.DistanceUnit}") -
-
- } - @if (vehicle.DashboardMetrics.Contains(DashboardMetric.TotalCost) && vehicle.TotalCost != default) - { -
-
- @($"{vehicle.TotalCost.ToString("C2")}") -
-
- } -
- } -
-
@($"{vehicle.Year}")
-
@($"{vehicle.Make}")
-
@($"{vehicle.Model}")
-

@StaticHelper.GetVehicleIdentifier(vehicle)

-
-
-
- } - } -
-
- -
-
-
\ No newline at end of file diff --git a/Views/Home/_Kiosk.cshtml b/Views/Home/_Kiosk.cshtml deleted file mode 100644 index d792583..0000000 --- a/Views/Home/_Kiosk.cshtml +++ /dev/null @@ -1,124 +0,0 @@ -@using MotoVaultPro.Helper -@model List -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@if (Model.Any()) -{ -
- @foreach (VehicleInfo vehicle in Model) - { -
-
-
-
@($"{vehicle.VehicleData.Year} {vehicle.VehicleData.Make} {vehicle.VehicleData.Model} ({StaticHelper.GetVehicleIdentifier(vehicle.VehicleData)})")
-
-
-

@vehicle.ServiceRecordCount

-

@translator.Translate(userLanguage, "Service")

-

@vehicle.ServiceRecordCost.ToString("C0")

-
-
-

@translator.Translate(userLanguage, "Repairs")

-
-
-

@vehicle.UpgradeRecordCount

-

@translator.Translate(userLanguage, "Upgrades")

-

@vehicle.UpgradeRecordCost.ToString("C0")

-
-
-

@vehicle.GasRecordCount

-

@translator.Translate(userLanguage, "Fuel")

-

@vehicle.GasRecordCost.ToString("C0")

-
-
-
- @if (vehicle.PastDueReminderCount + vehicle.VeryUrgentReminderCount + vehicle.UrgentReminderCount + vehicle.NotUrgentReminderCount > 0) - { -
-
-
@translator.Translate(userLanguage, "Reminders")
-
-
-

@vehicle.PastDueReminderCount

-

@translator.Translate(userLanguage, "Past Due")

-
-
-

@vehicle.VeryUrgentReminderCount

-

@translator.Translate(userLanguage, "Very Urgent")

-
-
-

@vehicle.UrgentReminderCount

-

@translator.Translate(userLanguage, "Urgent")

-
-
-

@vehicle.NotUrgentReminderCount

-

@translator.Translate(userLanguage, "Not Urgent")

-
-
-
- } - @if (vehicle.NextReminder != null) - { -
-
-
@translator.Translate(userLanguage, "Upcoming Reminder")
-
-
-

@vehicle.NextReminder.Description

-

@translator.Translate(userLanguage, StaticHelper.GetTitleCaseReminderUrgency(vehicle.NextReminder.Urgency))

-
- @if (vehicle.NextReminder.Metric == "Date" || vehicle.NextReminder.Metric == "Both") - { -
@vehicle.NextReminder.DueDate
- } - @if (vehicle.NextReminder.Metric == "Odometer" || vehicle.NextReminder.Metric == "Both") - { -
@vehicle.NextReminder.DueOdometer
- } -
-
-
-
- } - @if (vehicle.PlanRecordBackLogCount + vehicle.PlanRecordInProgressCount + vehicle.PlanRecordTestingCount + vehicle.PlanRecordBackLogCount > 0) - { -
-
-
@translator.Translate(userLanguage, "Plans")
-
-
-

@vehicle.PlanRecordBackLogCount

-

@translator.Translate(userLanguage, "Planned")

-
-
-

@vehicle.PlanRecordInProgressCount

-

@translator.Translate(userLanguage, "Doing")

-
-
-

@vehicle.PlanRecordTestingCount

-

@translator.Translate(userLanguage, "Testing")

-
-
-

@vehicle.PlanRecordDoneCount

-

@translator.Translate(userLanguage, "Done")

-
-
-
- } -
-
- } -
-} -else -{ -
-
- @translator.Translate(userLanguage, "No records available to display") -
-
-} diff --git a/Views/Home/_KioskPlan.cshtml b/Views/Home/_KioskPlan.cshtml deleted file mode 100644 index c6bed03..0000000 --- a/Views/Home/_KioskPlan.cshtml +++ /dev/null @@ -1,85 +0,0 @@ -@using MotoVaultPro.Helper -@model List -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@if (Model.Any()) -{ -
- @foreach (PlanRecord plan in Model) - { -
-
-
-
@plan.Description
-
-
-

@plan.Notes

-

@translator.Translate(userLanguage, StaticHelper.GetPlanRecordProgress(plan.Progress))

-
-
- @if (plan.ImportMode == ImportMode.ServiceRecord) - { - @translator.Translate(userLanguage, "Service") - } - else if (plan.ImportMode == ImportMode.UpgradeRecord) - { - @translator.Translate(userLanguage, "Repairs") - } - { - @translator.Translate(userLanguage, "Upgrades") - } -
-
-
-
-
- @if (plan.RequisitionHistory.Any()) - { -
    -
  • -
    -
    - @translator.Translate(userLanguage, "Part Number") -
    -
    - @translator.Translate(userLanguage, "Description") -
    -
    - @translator.Translate(userLanguage, "Quantity") -
    -
    -
  • - @foreach (SupplyUsageHistory supply in plan.RequisitionHistory) - { -
  • -
    -
    - @supply.PartNumber -
    -
    - @supply.Description -
    -
    - @supply.Quantity -
    -
    -
  • - } -
- } -
-
- } -
-} else -{ -
-
- @translator.Translate(userLanguage, "No records available to display") -
-
-} \ No newline at end of file diff --git a/Views/Home/_KioskReminder.cshtml b/Views/Home/_KioskReminder.cshtml deleted file mode 100644 index 1c6c7fb..0000000 --- a/Views/Home/_KioskReminder.cshtml +++ /dev/null @@ -1,47 +0,0 @@ -@using MotoVaultPro.Helper -@model List -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@if (Model.Any()) -{ -
- @foreach (ReminderRecordViewModel reminder in Model) - { -
-
-
-
@reminder.Description
-
-
-

@reminder.Notes

-

@translator.Translate(userLanguage, StaticHelper.GetTitleCaseReminderUrgency(reminder.Urgency))

-
- @if (reminder.Metric == ReminderMetric.Date || reminder.Metric == ReminderMetric.Both) - { -
@reminder.Date.ToShortDateString()
- } - @if (reminder.Metric == ReminderMetric.Odometer || reminder.Metric == ReminderMetric.Both) - { -
@reminder.Mileage
- } -
-
-
-
-
-
- } -
-} -else -{ -
-
- @translator.Translate(userLanguage, "No records available to display") -
-
-} \ No newline at end of file diff --git a/Views/Home/_ReminderRecordCalendarModal.cshtml b/Views/Home/_ReminderRecordCalendarModal.cshtml deleted file mode 100644 index aa86e75..0000000 --- a/Views/Home/_ReminderRecordCalendarModal.cshtml +++ /dev/null @@ -1,39 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model ReminderRecordViewModel -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} - - - \ No newline at end of file diff --git a/Views/Home/_RootAccountModal.cshtml b/Views/Home/_RootAccountModal.cshtml deleted file mode 100644 index 152a93f..0000000 --- a/Views/Home/_RootAccountModal.cshtml +++ /dev/null @@ -1,31 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model UserData -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} - - - \ No newline at end of file diff --git a/Views/Home/_Settings.cshtml b/Views/Home/_Settings.cshtml deleted file mode 100644 index 102f80b..0000000 --- a/Views/Home/_Settings.cshtml +++ /dev/null @@ -1,421 +0,0 @@ -@using MotoVaultPro.Helper -@model SettingsViewModel -@inject ITranslationHelper translator -@{ - var userLanguage = Model.UserConfig.UserLanguage; -} - -
-
-
@translator.Translate(userLanguage, "Settings")
-
-
-
- - -
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
- - -
-
-
- - -
-
- - -
-
-
- - -
-
- - -
-
-
- - -
-
-
- - -
-
- -
-
-
-
- - -
-
- - -
-
- - -
-
- @if (User.IsInRole(nameof(UserData.IsRootUser))) - { -
-
- - -
- } -
-
-
-
-
-
- @translator.Translate(userLanguage, "Visible Tabs") -
-
- -
-
-
-
-
    -
  • - - -
  • -
  • - - -
  • -
  • -
  • -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
-
-
-
    -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
-
-
-
-
- @translator.Translate(userLanguage, "Default Tab") - -
-
- @translator.Translate(userLanguage, "Language") - @if (User.IsInRole(nameof(UserData.IsRootUser))) - { -
- -
- -
-
- } else - { - - } -
-
- @if (User.IsInRole(nameof(UserData.IsRootUser))) - { -
-
- @translator.Translate(userLanguage, "Backups") -
-
- -
-
- - -
-
-
-
- @translator.Translate(userLanguage, "Manage Languages") -
-
- -
- - - -
- -
-
- -
-
-
-
-
-
-
-
- @translator.Translate(userLanguage, "Server-wide Settings") -
-
-
-
- -
- -
-
-
- } -
-
-
-
-
@translator.Translate(userLanguage, "About")
-
-
-
-
- -
-
- @($"{translator.Translate(userLanguage, "Version")} {StaticHelper.VersionNumber}") -
-

- Developed in Madison, Wisconsin by FB Technologies LLC. -

-

- If you enjoyed using this app, please consider posting and building the community.
-

-

- This was forked from https://github.com/hargata/lubelog/
-

-
-
-
-
Open Source Dependencies
-
-

- MotoVaultPro utilizes open-source dependencies to serve you the best possible user experience, those dependencies are: -

-
    -
  • Bootstrap
  • -
  • Bootstrap-DatePicker
  • -
  • LiteDB
  • -
  • Npgsql
  • -
  • SweetAlert2
  • -
  • CsvHelper
  • -
  • Chart.js
  • -
  • Drawdown
  • -
  • MailKit
  • -
  • Masonry
  • -
-
-
-
- - - - - - \ No newline at end of file diff --git a/Views/Home/_Sponsors.cshtml b/Views/Home/_Sponsors.cshtml deleted file mode 100644 index ddab2b2..0000000 --- a/Views/Home/_Sponsors.cshtml +++ /dev/null @@ -1,70 +0,0 @@ -@using MotoVaultPro.Helper -@model Sponsors -@inject ITranslationHelper translator -@inject IConfigHelper config -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -
-
@translator.Translate(userLanguage, "Sponsors")
-
-
- - @if (Model.LifeTime.Any()) - { -
-
-
Lifetime
-
-
-

- @string.Join(", ", Model.LifeTime) -

-
-
- } - @if (Model.Gold.Any()) - { -
-
-
Gold
-
-
-

- @string.Join(", ", Model.Gold) -

-
-
- } - @if (Model.Silver.Any()) - { -
-
-
Silver
-
-
-

- @string.Join(", ", Model.Silver) -

-
-
- } - @if (Model.Bronze.Any()) - { -
-
-
Bronze
-
-
-

- @string.Join(", ", Model.Bronze) -

-
-
- } - diff --git a/Views/Home/_TranslationEditor.cshtml b/Views/Home/_TranslationEditor.cshtml deleted file mode 100644 index 12fb86d..0000000 --- a/Views/Home/_TranslationEditor.cshtml +++ /dev/null @@ -1,48 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@inject IConfiguration serverConfig; -@model Dictionary -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; - bool showDelete = bool.Parse(serverConfig["MOTOVAULTPRO_TRANSLATOR"] ?? "false"); -} - - - \ No newline at end of file diff --git a/Views/Home/_Translations.cshtml b/Views/Home/_Translations.cshtml deleted file mode 100644 index 155209f..0000000 --- a/Views/Home/_Translations.cshtml +++ /dev/null @@ -1,76 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model Translations -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} - - - \ No newline at end of file diff --git a/Views/Home/_VehicleExtraFields.cshtml b/Views/Home/_VehicleExtraFields.cshtml deleted file mode 100644 index d27fe87..0000000 --- a/Views/Home/_VehicleExtraFields.cshtml +++ /dev/null @@ -1,10 +0,0 @@ -@model List -@if (Model.Any()) -{ -
    - @foreach (ExtraField field in Model) - { -
  • @field.Name : @field.Value
  • - } -
-} \ No newline at end of file diff --git a/Views/Home/_VehicleSelector.cshtml b/Views/Home/_VehicleSelector.cshtml deleted file mode 100644 index 5098c4d..0000000 --- a/Views/Home/_VehicleSelector.cshtml +++ /dev/null @@ -1,26 +0,0 @@ -@inject IConfigHelper config -@inject ITranslationHelper translator -@using MotoVaultPro.Helper -@model List - -@{ - var userLanguage = config.GetUserConfig(User).UserLanguage; -} - -@if (Model.Any()) -{ -
-
    - @foreach (Vehicle vehicle in Model) - { -
  • - - -
  • - } -
-
-} else -{ -
@translator.Translate(userLanguage, "No Vehicles Available")
-} \ No newline at end of file diff --git a/Views/Home/_WidgetEditor.cshtml b/Views/Home/_WidgetEditor.cshtml deleted file mode 100644 index 2a2e281..0000000 --- a/Views/Home/_WidgetEditor.cshtml +++ /dev/null @@ -1,28 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model string -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} - - - \ No newline at end of file diff --git a/Views/Login/ForgotPassword.cshtml b/Views/Login/ForgotPassword.cshtml deleted file mode 100644 index f4fb17a..0000000 --- a/Views/Login/ForgotPassword.cshtml +++ /dev/null @@ -1,32 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userLanguage = config.GetServerLanguage(); -} -@{ - ViewData["Title"] = "Forgot Password"; -} -@section Scripts { - -} -
-
-
- -
- - -
-
- -
- - -
-
-
\ No newline at end of file diff --git a/Views/Login/Index.cshtml b/Views/Login/Index.cshtml deleted file mode 100644 index 7108f75..0000000 --- a/Views/Login/Index.cshtml +++ /dev/null @@ -1,67 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model string -@{ - var userLanguage = config.GetServerLanguage(); - var registrationDisabled = config.GetServerDisabledRegistration(); - var openIdConfigName = config.GetOpenIDConfig().Name; -} -@{ - ViewData["Title"] = "Login"; -} -@section Scripts { - -} -
-
-
- -
- - -
-
- -
- -
- -
-
-
-
- - -
-
- -
- @if (!string.IsNullOrWhiteSpace(openIdConfigName)) - { -
- -
- } -
-
- @config.GetMOTD() -
-
- - @if (!registrationDisabled) - { - - } -
-
-
- \ No newline at end of file diff --git a/Views/Login/OpenIDRegistration.cshtml b/Views/Login/OpenIDRegistration.cshtml deleted file mode 100644 index f0653ae..0000000 --- a/Views/Login/OpenIDRegistration.cshtml +++ /dev/null @@ -1,72 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userLanguage = config.GetServerLanguage(); - var openRegistrationEnabled = config.GetServerOpenRegistration(); -} -@model string -@{ - ViewData["Title"] = "Register"; -} -@section Scripts { - -} -
-
-
- -
- - @if (openRegistrationEnabled) - { -
- -
- -
-
- } - else - { - - } -
-
- - -
-
- -
- -
-
-
- \ No newline at end of file diff --git a/Views/Login/Registration.cshtml b/Views/Login/Registration.cshtml deleted file mode 100644 index 1e112ef..0000000 --- a/Views/Login/Registration.cshtml +++ /dev/null @@ -1,57 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userLanguage = config.GetServerLanguage(); - var openRegistrationEnabled = config.GetServerOpenRegistration(); -} -@model LoginModel -@{ - ViewData["Title"] = "Register"; -} -@section Scripts { - -} -
-
-
- -
- - @if (openRegistrationEnabled) { -
- -
- -
-
- } else { - - } -
-
- - -
-
- - -
-
- -
- -
- -
-
-
-
- -
- -
-
-
\ No newline at end of file diff --git a/Views/Login/RemoteAuthDebug.cshtml b/Views/Login/RemoteAuthDebug.cshtml deleted file mode 100644 index f695ce4..0000000 --- a/Views/Login/RemoteAuthDebug.cshtml +++ /dev/null @@ -1,20 +0,0 @@ -@model List -@{ - ViewData["Title"] = "Remote Auth Debug"; -} -
-
- @foreach (OperationResponse result in Model) - { -
-
- -
-
- } -
-
- - \ No newline at end of file diff --git a/Views/Login/ResetPassword.cshtml b/Views/Login/ResetPassword.cshtml deleted file mode 100644 index e89cc33..0000000 --- a/Views/Login/ResetPassword.cshtml +++ /dev/null @@ -1,43 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userLanguage = config.GetServerLanguage(); -} -@model LoginModel -@{ - ViewData["Title"] = "Reset Password"; -} -@section Scripts { - -} -
-
-
- -
- - -
-
- - -
-
- -
- -
- -
-
-
-
- -
- -
-
-
\ No newline at end of file diff --git a/Views/Migration/Index.cshtml b/Views/Migration/Index.cshtml deleted file mode 100644 index 749b00b..0000000 --- a/Views/Migration/Index.cshtml +++ /dev/null @@ -1,92 +0,0 @@ -@{ - ViewData["Title"] = "Database Migration"; -} -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userLanguage = config.GetServerLanguage(); -} -@using MotoVaultPro.Helper -@section Nav { -
-
-
-
- -
- @translator.Translate(userLanguage, "Database Migration") -
-
-
-
-} -@model AdminViewModel -
-
-
-
    -
  • @translator.Translate(userLanguage, "Instructions")
  • -
  • @translator.Translate(userLanguage, "Use this tool to migrate data between LiteDB and Postgres")
  • -
  • @translator.Translate(userLanguage, "Note that it is recommended that the Postgres DB is empty when importing from LiteDB to prevent primary key errors.")
  • -
-
-
-
-
-
-
- - -
-
- -
-
-
-
- \ No newline at end of file diff --git a/Views/Shared/401.cshtml b/Views/Shared/401.cshtml deleted file mode 100644 index 8b70feb..0000000 --- a/Views/Shared/401.cshtml +++ /dev/null @@ -1,8 +0,0 @@ -
-
- -
-
-

Access Denied

-
-
\ No newline at end of file diff --git a/Views/Shared/Error.cshtml b/Views/Shared/Error.cshtml deleted file mode 100644 index a1e0478..0000000 --- a/Views/Shared/Error.cshtml +++ /dev/null @@ -1,25 +0,0 @@ -@model ErrorViewModel -@{ - ViewData["Title"] = "Error"; -} - -

Error.

-

An error occurred while processing your request.

- -@if (Model.ShowRequestId) -{ -

- Request ID: @Model.RequestId -

-} - -

Development Mode

-

- Swapping to Development environment will display more detailed information about the error that occurred. -

-

- The Development environment shouldn't be enabled for deployed applications. - It can result in displaying sensitive information from exceptions to end users. - For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development - and restarting the app. -

diff --git a/Views/Shared/_Layout.cshtml b/Views/Shared/_Layout.cshtml deleted file mode 100644 index 93fd487..0000000 --- a/Views/Shared/_Layout.cshtml +++ /dev/null @@ -1,190 +0,0 @@ -@using MotoVaultPro.Helper -@using System.Globalization - -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var useDarkMode = userConfig.UseDarkMode; - var useSystemColorMode = userConfig.UseSystemColorMode; - var enableCsvImports = userConfig.EnableCsvImports; - var useMPG = userConfig.UseMPG; - var useMarkDown = userConfig.UseMarkDownOnSavedNotes; - var useThreeDecimals = userConfig.UseThreeDecimalGasCost; - var automaticDecimalFormat = userConfig.AutomaticDecimalFormat; - var shortDatePattern = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern; - var firstDayOfWeek = (int)CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek; - var numberFormat = CultureInfo.CurrentCulture.NumberFormat; - var userLanguage = userConfig.UserLanguage; - shortDatePattern = shortDatePattern.ToLower(); - if (!shortDatePattern.Contains("dd")) - { - shortDatePattern = shortDatePattern.Replace("d", "dd"); - } - if (!shortDatePattern.Contains("mm")) - { - shortDatePattern = shortDatePattern.Replace("m", "mm"); - } -} - - - - - - - - - - @ViewData["Title"] - MotoVaultPro - - - - - - - - - - - - - - - - - - - - - - - @await RenderSectionAsync("Scripts", required: false) - - - @await RenderSectionAsync("Nav", required: false) -
-
- @RenderBody() -
-
- @await RenderSectionAsync("Footer", required: false) - - -@if (useSystemColorMode) -{ - -} \ No newline at end of file diff --git a/Views/Shared/_Layout.cshtml.css b/Views/Shared/_Layout.cshtml.css deleted file mode 100644 index c187c02..0000000 --- a/Views/Shared/_Layout.cshtml.css +++ /dev/null @@ -1,48 +0,0 @@ -/* Please see documentation at https://learn.microsoft.com/aspnet/core/client-side/bundling-and-minification -for details on configuring this project to bundle and minify static web assets. */ - -a.navbar-brand { - white-space: normal; - text-align: center; - word-break: break-all; -} - -a { - color: #0077cc; -} - -.btn-primary { - color: #fff; - background-color: #1b6ec2; - border-color: #1861ac; -} - -.nav-pills .nav-link.active, .nav-pills .show > .nav-link { - color: #fff; - background-color: #1b6ec2; - border-color: #1861ac; -} - -.border-top { - border-top: 1px solid #e5e5e5; -} -.border-bottom { - border-bottom: 1px solid #e5e5e5; -} - -.box-shadow { - box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05); -} - -button.accept-policy { - font-size: 1rem; - line-height: inherit; -} - -.footer { - position: absolute; - bottom: 0; - width: 100%; - white-space: nowrap; - line-height: 60px; -} diff --git a/Views/Shared/_ValidationScriptsPartial.cshtml b/Views/Shared/_ValidationScriptsPartial.cshtml deleted file mode 100644 index 5a16d80..0000000 --- a/Views/Shared/_ValidationScriptsPartial.cshtml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Views/Vehicle/Gas/_Gas.cshtml b/Views/Vehicle/Gas/_Gas.cshtml deleted file mode 100644 index 3dd8c91..0000000 --- a/Views/Vehicle/Gas/_Gas.cshtml +++ /dev/null @@ -1,292 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject IGasHelper gasHelper -@inject ITranslationHelper translator -@model GasRecordViewModelContainer -@{ - var userConfig = config.GetUserConfig(User); - var enableCsvImports = userConfig.EnableCsvImports; - var useMPG = userConfig.UseMPG; - var useUKMPG = userConfig.UseUKMPG; - var hideZero = userConfig.HideZero; - var useThreeDecimals = userConfig.UseThreeDecimalGasCost; - var useThreeDecimalsConsumption = userConfig.UseThreeDecimalGasConsumption; - var gasCostFormat = useThreeDecimals ? "C3" : "C2"; - var gasConsumptionFormat = useThreeDecimalsConsumption ? "F3" : "F2"; - var userLanguage = userConfig.UserLanguage; - var useKwh = Model.UseKwh; - var useHours = Model.UseHours; - var recordTags = Model.GasRecords.SelectMany(x => x.Tags).Distinct(); - string preferredFuelEconomyUnit = userConfig.PreferredGasMileageUnit; - string preferredGasUnit = userConfig.PreferredGasUnit; - string consumptionUnit; - string fuelEconomyUnit; - string distanceUnit = useHours ? "h" : (useMPG ? "mi." : "km"); - if (useKwh) - { - consumptionUnit = "kWh"; - fuelEconomyUnit = useMPG ? $"{distanceUnit}/kWh" : $"kWh/100{distanceUnit}"; - } - else if (useMPG && useUKMPG) - { - consumptionUnit = "imp gal"; - fuelEconomyUnit = useHours ? "h/g" : "mpg"; - } - else if (useUKMPG) - { - fuelEconomyUnit = useHours ? "l/100h" : "l/100mi."; - consumptionUnit = "l"; - distanceUnit = useHours ? "h" : "mi."; - } - else - { - consumptionUnit = useMPG ? "US gal" : "l"; - fuelEconomyUnit = useHours ? (useMPG ? "h/g" : "l/100h") : (useMPG ? "mpg" : "l/100km"); - } - var extraFields = new List(); - if (userConfig.EnableExtraFieldColumns) - { - extraFields = Model.GasRecords.SelectMany(x => x.ExtraFields).Select(y => y.Name).Distinct().ToList(); - } - var userColumnPreferences = userConfig.UserColumnPreferences.Where(x => x.Tab == ImportMode.GasRecord); -} -
-
-
- @($"{translator.Translate(userLanguage, "# of Gas Records")}: {Model.GasRecords.Count()}") - @if (Model.GasRecords.Where(x => x.MilesPerGallon > 0).Any()) - { - @($"{translator.Translate(userLanguage, "Average Fuel Economy")}: {gasHelper.GetAverageGasMileage(Model.GasRecords, useMPG)}") - if (useMPG) - { - @($"{translator.Translate(userLanguage, "Min Fuel Economy")}: {Model.GasRecords.Where(y => y.MilesPerGallon > 0)?.Min(x => x.MilesPerGallon).ToString("F") ?? "0"}") - @($"{translator.Translate(userLanguage, "Max Fuel Economy")}: {Model.GasRecords.Max(x => x.MilesPerGallon).ToString("F") ?? "0"}") - } - else - { - @($"{translator.Translate(userLanguage, "Min Fuel Economy")}: {Model.GasRecords.Max(x => x.MilesPerGallon).ToString("F") ?? "0"}") - @($"{translator.Translate(userLanguage, "Max Fuel Economy")}: {Model.GasRecords.Where(y => y.MilesPerGallon > 0)?.Min(x => x.MilesPerGallon).ToString("F") ?? "0"}") - } - @($"{translator.Translate(userLanguage, "Total Distance")}: {Model.GasRecords.Sum(x => x.DeltaMileage).ToString() ?? "0"} {distanceUnit}") - } - @($"{translator.Translate(userLanguage, "Total Fuel Consumed")}: {Model.GasRecords.Sum(x => x.Gallons).ToString("F")}") - @($"{translator.Translate(userLanguage, "Total Cost")}: {Model.GasRecords.Sum(x => x.Cost).ToString(gasCostFormat)}") - @foreach (string recordTag in recordTags) - { - @recordTag - } - - @foreach (string recordTag in recordTags) - { - - } - -
- @if (enableCsvImports) - { -
- - - -
- } - else - { - - } -
-
-
-
-
-
- -
-
- - - - - - - - - - - - - @foreach (string extraFieldColumn in extraFields) - { - - } - - - - @foreach (GasRecordViewModel gasRecord in Model.GasRecords) - { - - - - - - - - - - - @foreach (string extraFieldColumn in extraFields) - { - - } - - } - - - - - - -
@translator.Translate(userLanguage, "Date Refueled")@($"{translator.Translate(userLanguage, "Odometer")}({distanceUnit})")@($"Δ({distanceUnit})")@($"{translator.Translate(userLanguage, "Consumption")}({consumptionUnit})")@($"{@translator.Translate(userLanguage, "Fuel Economy")}({fuelEconomyUnit})")@translator.Translate(userLanguage, "Cost")@translator.Translate(userLanguage, "Unit Cost")
@gasRecord.Date@(gasRecord.Mileage == default ? "---" : gasRecord.Mileage.ToString())@(gasRecord.DeltaMileage == default ? "---" : gasRecord.DeltaMileage)@gasRecord.Gallons.ToString(gasConsumptionFormat)@(gasRecord.MilesPerGallon == 0 ? "---" : gasRecord.MilesPerGallon.ToString("F"))@((hideZero && gasRecord.Cost == default) ? "---" : gasRecord.Cost.ToString(gasCostFormat))@((hideZero && gasRecord.CostPerGallon == default) ? "---" : gasRecord.CostPerGallon.ToString(gasCostFormat))
- @StaticHelper.ReportNote -
-
-
- - - - - -@if (userColumnPreferences.Any()) -{ - @await Html.PartialAsync("_UserColumnPreferences", userColumnPreferences) -} - \ No newline at end of file diff --git a/Views/Vehicle/Gas/_GasModal.cshtml b/Views/Vehicle/Gas/_GasModal.cshtml deleted file mode 100644 index d45e6a8..0000000 --- a/Views/Vehicle/Gas/_GasModal.cshtml +++ /dev/null @@ -1,171 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model GasRecordInputContainer -@{ - var userConfig = config.GetUserConfig(User); - var useMPG = userConfig.UseMPG; - var useUKMPG = userConfig.UseUKMPG; - var userLanguage = userConfig.UserLanguage; - var useThreeDecimals = userConfig.UseThreeDecimalGasCost; - var useThreeDecimalsConsumption = userConfig.UseThreeDecimalGasConsumption; - var useKwh = Model.UseKwh; - var useHours = Model.UseHours; - var isNew = Model.GasRecord.Id == 0; - var useUnitFuelCost = userConfig.UseUnitForFuelCost; - var useSimpleFuelEntry = userConfig.UseSimpleFuelEntry; - string consumptionUnit; - string distanceUnit; - if (useKwh) - { - consumptionUnit = "kWh"; - } else if (useUKMPG) - { - consumptionUnit = @translator.Translate(userLanguage, "liters"); - } - else - { - consumptionUnit = useMPG ? @translator.Translate(userLanguage, "gallons") : @translator.Translate(userLanguage, "liters"); - } - if (useHours) - { - distanceUnit = @translator.Translate(userLanguage, "hours"); - } - else if (useUKMPG) - { - distanceUnit = @translator.Translate(userLanguage, "miles"); - } - else - { - distanceUnit = useMPG ? @translator.Translate(userLanguage, "miles") : @translator.Translate(userLanguage, "kilometers"); - } -} - - - - \ No newline at end of file diff --git a/Views/Vehicle/Gas/_GasRecordsModal.cshtml b/Views/Vehicle/Gas/_GasRecordsModal.cshtml deleted file mode 100644 index a415343..0000000 --- a/Views/Vehicle/Gas/_GasRecordsModal.cshtml +++ /dev/null @@ -1,53 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model GasRecordEditModel -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; - var useThreeDecimals = userConfig.UseThreeDecimalGasCost; - var useThreeDecimalsConsumption = userConfig.UseThreeDecimalGasConsumption; -} - - - - \ No newline at end of file diff --git a/Views/Vehicle/Index.cshtml b/Views/Vehicle/Index.cshtml deleted file mode 100644 index f359f78..0000000 --- a/Views/Vehicle/Index.cshtml +++ /dev/null @@ -1,213 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@model Vehicle -@{ - ViewData["Title"] = $"{Model.Year} {Model.Make} {Model.Model} ({StaticHelper.GetVehicleIdentifier(Model)})"; -} -@section Scripts { - - - - - - - - - - - - - -} -@section Nav{ -
-
-
-
- @if(userConfig.ShowVehicleThumbnail) { - - } else { - - } -
- - @($"{Model.Year} {Model.Make} {Model.Model}")@($"(#{StaticHelper.GetVehicleIdentifier(Model)})") -
- -
-
-
-
-
-} -
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - - - - -
-
- \ No newline at end of file diff --git a/Views/Vehicle/Note/_NoteModal.cshtml b/Views/Vehicle/Note/_NoteModal.cshtml deleted file mode 100644 index 3a01503..0000000 --- a/Views/Vehicle/Note/_NoteModal.cshtml +++ /dev/null @@ -1,71 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model Note -@{ - var isNew = Model.Id == 0; - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} - - - - diff --git a/Views/Vehicle/Note/_Notes.cshtml b/Views/Vehicle/Note/_Notes.cshtml deleted file mode 100644 index de33932..0000000 --- a/Views/Vehicle/Note/_Notes.cshtml +++ /dev/null @@ -1,178 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model List -@{ - var recordTags = Model.SelectMany(x => x.Tags).Distinct(); - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; - var enableCsvImports = userConfig.EnableCsvImports; - 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.NoteRecord); -} -
-
-
- @($"{translator.Translate(userLanguage,"# of Notes")}: {Model.Count()}") - @foreach (string recordTag in recordTags) - { - @recordTag - } - - @foreach (string recordTag in recordTags) - { - - } - -
-
- @if (enableCsvImports) - { -
- - - -
- } - else - { - - } -
-
-
-
-
-
-
- -
-
- - - - - - - @foreach (string extraFieldColumn in extraFields) - { - - } - - - - @foreach (Note note in Model) - { - - @if (note.Pinned) - { - - } else - { - - } - - - @foreach (string extraFieldColumn in extraFields) - { - - } - - } - - - - - - -
@translator.Translate(userLanguage, "Description")@translator.Translate(userLanguage, "Note")
@note.Description@note.Description@StaticHelper.TruncateStrings(note.NoteText, 100)
- @StaticHelper.ReportNote -
-
-
- - - - - -@if (userColumnPreferences.Any()) -{ - @await Html.PartialAsync("_UserColumnPreferences", userColumnPreferences) -} \ No newline at end of file diff --git a/Views/Vehicle/Odometer/_OdometerRecordModal.cshtml b/Views/Vehicle/Odometer/_OdometerRecordModal.cshtml deleted file mode 100644 index e6b909a..0000000 --- a/Views/Vehicle/Odometer/_OdometerRecordModal.cshtml +++ /dev/null @@ -1,121 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model OdometerRecordInput -@{ - var isNew = Model.Id == 0; - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} - - - - - - \ No newline at end of file diff --git a/Views/Vehicle/Odometer/_OdometerRecords.cshtml b/Views/Vehicle/Odometer/_OdometerRecords.cshtml deleted file mode 100644 index 7a2dfec..0000000 --- a/Views/Vehicle/Odometer/_OdometerRecords.cshtml +++ /dev/null @@ -1,202 +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.OdometerRecord); -} -@model List -
-
-
- @($"{translator.Translate(userLanguage, "# of Odometer Records")}: {Model.Count()}") - @($"{translator.Translate(userLanguage, "Total Distance")}: {Model.Sum(x => x.DistanceTraveled)}") - @foreach (string recordTag in recordTags) - { - @recordTag - } - - @foreach (string recordTag in recordTags) - { - - } - -
-
- @if (enableCsvImports) - { -
- - - -
- } - else - { - - } -
-
-
-
-
-
-
- -
-
- - - - - - - - - - @foreach (string extraFieldColumn in extraFields) - { - - } - - - - @foreach (OdometerRecord odometerRecord in Model) - { - - - - - - - - @foreach (string extraFieldColumn in extraFields) - { - - } - - } - - - - - - -
@translator.Translate(userLanguage, "Date")@translator.Translate(userLanguage, "Initial Odometer")@translator.Translate(userLanguage, "Odometer")@translator.Translate(userLanguage, "Distance")@translator.Translate(userLanguage, "Notes")
@odometerRecord.Date.ToShortDateString()@odometerRecord.InitialMileage@odometerRecord.Mileage@(odometerRecord.DistanceTraveled == default ? "---" : odometerRecord.DistanceTraveled)@StaticHelper.TruncateStrings(odometerRecord.Notes, 75)
- @StaticHelper.ReportNote -
-
-
- - - - - -@if (userColumnPreferences.Any()) -{ - @await Html.PartialAsync("_UserColumnPreferences", userColumnPreferences) -} \ No newline at end of file diff --git a/Views/Vehicle/Odometer/_OdometerRecordsModal.cshtml b/Views/Vehicle/Odometer/_OdometerRecordsModal.cshtml deleted file mode 100644 index 7031a2c..0000000 --- a/Views/Vehicle/Odometer/_OdometerRecordsModal.cshtml +++ /dev/null @@ -1,49 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model OdometerRecordEditModel -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} - - - - \ No newline at end of file diff --git a/Views/Vehicle/Plan/_PlanOrderSupplies.cshtml b/Views/Vehicle/Plan/_PlanOrderSupplies.cshtml deleted file mode 100644 index 75520d8..0000000 --- a/Views/Vehicle/Plan/_PlanOrderSupplies.cshtml +++ /dev/null @@ -1,46 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model List -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} - - - \ No newline at end of file diff --git a/Views/Vehicle/Plan/_PlanRecordItem.cshtml b/Views/Vehicle/Plan/_PlanRecordItem.cshtml deleted file mode 100644 index 71e3ff9..0000000 --- a/Views/Vehicle/Plan/_PlanRecordItem.cshtml +++ /dev/null @@ -1,54 +0,0 @@ -@model PlanRecord -
-
-
-
- @if (Model.Progress == PlanProgress.Done) - { - @Model.Description - } else - { - @Model.Description - } -
-
- @Model.Cost.ToString("C2") -
-
-
- @if (Model.ReminderRecordId != default) - { -
- -
- } -
- @if (Model.ImportMode == ImportMode.ServiceRecord) - { - - } - else if (Model.ImportMode == ImportMode.UpgradeRecord) - { - - } - { - - } -
-
- @if (Model.Priority == PlanPriority.Critical) - { - - } - else if (Model.Priority == PlanPriority.Normal) - { - - } - else if (Model.Priority == PlanPriority.Low) - { - - } -
-
-
-
\ No newline at end of file diff --git a/Views/Vehicle/Plan/_PlanRecordModal.cshtml b/Views/Vehicle/Plan/_PlanRecordModal.cshtml deleted file mode 100644 index 5f079e4..0000000 --- a/Views/Vehicle/Plan/_PlanRecordModal.cshtml +++ /dev/null @@ -1,102 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model PlanRecordInput -@{ - var isNew = Model.Id == 0; - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} - - - -@await Html.PartialAsync("Supply/_SupplyRequisitionHistory", new SupplyRequisitionHistory { RequisitionHistory = Model.RequisitionHistory, CostInputId = "planRecordCost" }) - \ No newline at end of file diff --git a/Views/Vehicle/Plan/_PlanRecordTemplateEditModal.cshtml b/Views/Vehicle/Plan/_PlanRecordTemplateEditModal.cshtml deleted file mode 100644 index dce95bf..0000000 --- a/Views/Vehicle/Plan/_PlanRecordTemplateEditModal.cshtml +++ /dev/null @@ -1,89 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model PlanRecordInput -@{ - var isNew = Model.Id == 0; - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} - - - -@await Html.PartialAsync("Supply/_SupplyRequisitionHistory", new SupplyRequisitionHistory { RequisitionHistory = Model.RequisitionHistory, CostInputId = "planRecordCost" }) - \ No newline at end of file diff --git a/Views/Vehicle/Plan/_PlanRecordTemplateModal.cshtml b/Views/Vehicle/Plan/_PlanRecordTemplateModal.cshtml deleted file mode 100644 index d1c6a5e..0000000 --- a/Views/Vehicle/Plan/_PlanRecordTemplateModal.cshtml +++ /dev/null @@ -1,90 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@model List - - - \ No newline at end of file diff --git a/Views/Vehicle/Plan/_PlanRecords.cshtml b/Views/Vehicle/Plan/_PlanRecords.cshtml deleted file mode 100644 index 5e968a2..0000000 --- a/Views/Vehicle/Plan/_PlanRecords.cshtml +++ /dev/null @@ -1,134 +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 userLanguage = userConfig.UserLanguage; - var backLogItems = Model.Where(x => x.Progress == PlanProgress.Backlog).OrderBy(x=>x.Priority); - var inProgressItems = Model.Where(x => x.Progress == PlanProgress.InProgress).OrderBy(x => x.Priority); - var testingItems = Model.Where(x => x.Progress == PlanProgress.Testing).OrderBy(x => x.Priority); - var doneItems = Model.Where(x => x.Progress == PlanProgress.Done).OrderBy(x => x.Priority); -} -@model List -
-
-
- @($"{translator.Translate(userLanguage,"# of Plan Records")}: {Model.Count()}") -
-
- @if (enableCsvImports) - { - - } - else - { - - } -
-
-
-
-
-
-
- -
-
-
-
-
-
- @translator.Translate(userLanguage,"Planned") -
-
- @foreach (PlanRecord planRecord in backLogItems) - { - @await Html.PartialAsync("Plan/_PlanRecordItem", planRecord) - } -
-
-
-
- @translator.Translate(userLanguage,"Doing") -
-
- @foreach (PlanRecord planRecord in inProgressItems) - { - @await Html.PartialAsync("Plan/_PlanRecordItem", planRecord) - } -
-
-
-
- @translator.Translate(userLanguage,"Testing") -
-
- @foreach (PlanRecord planRecord in testingItems) - { - @await Html.PartialAsync("Plan/_PlanRecordItem", planRecord) - } -
-
-
-
- @translator.Translate(userLanguage,"Done") -
-
- @foreach (PlanRecord planRecord in doneItems) - { - @await Html.PartialAsync("Plan/_PlanRecordItem", planRecord) - } -
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/Views/Vehicle/Reminder/_ReminderRecordModal.cshtml b/Views/Vehicle/Reminder/_ReminderRecordModal.cshtml deleted file mode 100644 index b1ac694..0000000 --- a/Views/Vehicle/Reminder/_ReminderRecordModal.cshtml +++ /dev/null @@ -1,143 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model ReminderRecordInput -@{ - var isNew = Model.Id == 0; - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} - - - - \ No newline at end of file diff --git a/Views/Vehicle/Reminder/_ReminderRecords.cshtml b/Views/Vehicle/Reminder/_ReminderRecords.cshtml deleted file mode 100644 index 4b05a2b..0000000 --- a/Views/Vehicle/Reminder/_ReminderRecords.cshtml +++ /dev/null @@ -1,246 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model List -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; - var hasRefresh = Model.Where(x => (x.Urgency == ReminderUrgency.VeryUrgent || x.Urgency == ReminderUrgency.PastDue) && x.IsRecurring).Any(); - var recordTags = Model.SelectMany(x => x.Tags).Distinct(); - var enableCsvImports = userConfig.EnableCsvImports; - var userColumnPreferences = userConfig.UserColumnPreferences.Where(x => x.Tab == ImportMode.ReminderRecord); -} -
-
-
- @($"{translator.Translate(userLanguage, "# of Reminders")}: {Model.Count()}") - @($"{translator.Translate(userLanguage, "Past Due")}: {Model.Where(x => x.Urgency == ReminderUrgency.PastDue).Count()}") - @($"{translator.Translate(userLanguage, "Very Urgent")}: {Model.Where(x => x.Urgency == ReminderUrgency.VeryUrgent).Count()}") - @($"{translator.Translate(userLanguage, "Urgent")}: {Model.Where(x => x.Urgency == ReminderUrgency.Urgent).Count()}") - @($"{translator.Translate(userLanguage, "Not Urgent")}: {Model.Where(x => x.Urgency == ReminderUrgency.NotUrgent).Count()}") - @foreach (string recordTag in recordTags) - { - @recordTag - } - - @foreach (string recordTag in recordTags) - { - - } - -
-
- @if (enableCsvImports) - { -
- - - -
- } - else - { - - } -
-
-
-
-
-
-
- -
-
- - - - - - - - - - - - @if (hasRefresh) - { - - } - - - - - @foreach (ReminderRecordViewModel reminderRecord in Model) - { - - - - - - - - - - @if (hasRefresh) - { - - } - - - } - - - - - - -
@translator.Translate(userLanguage, "Urgency")@translator.Translate(userLanguage, "Metric")@translator.Translate(userLanguage, "Description")@translator.Translate(userLanguage, "Notes")@translator.Translate(userLanguage, "Done")@translator.Translate(userLanguage, "Delete")
- @if (reminderRecord.Urgency == ReminderUrgency.VeryUrgent) - { - @translator.Translate(userLanguage, "Very Urgent") - } - else if (reminderRecord.Urgency == ReminderUrgency.Urgent) - { - @translator.Translate(userLanguage, "Urgent") - } - else if (reminderRecord.Urgency == ReminderUrgency.PastDue) - { - @translator.Translate(userLanguage, "Past Due") - } - else - { - @translator.Translate(userLanguage, "Not Urgent") - } - - @if (reminderRecord.Metric == ReminderMetric.Date) - { - @reminderRecord.Date.ToShortDateString() - } - else if (reminderRecord.Metric == ReminderMetric.Odometer) - { - @reminderRecord.Mileage - } - else - { - @reminderRecord.Metric - } - @reminderRecord.Description@StaticHelper.TruncateStrings(reminderRecord.Notes) - @if((reminderRecord.Urgency == ReminderUrgency.VeryUrgent || reminderRecord.Urgency == ReminderUrgency.PastDue) && reminderRecord.IsRecurring) - { - - } - - -
- @StaticHelper.ReportNote -
-
-
- - - - -@if (userColumnPreferences.Any()) -{ - @await Html.PartialAsync("_UserColumnPreferences", userColumnPreferences) -} \ No newline at end of file diff --git a/Views/Vehicle/Service/_ServiceRecordModal.cshtml b/Views/Vehicle/Service/_ServiceRecordModal.cshtml deleted file mode 100644 index 1f7f20e..0000000 --- a/Views/Vehicle/Service/_ServiceRecordModal.cshtml +++ /dev/null @@ -1,115 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model ServiceRecordInput -@{ - var isNew = Model.Id == 0; - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} - - - -@await Html.PartialAsync("Supply/_SupplyRequisitionHistory", new SupplyRequisitionHistory { RequisitionHistory = Model.RequisitionHistory, CostInputId = "serviceRecordCost" }) - \ No newline at end of file diff --git a/Views/Vehicle/Service/_ServiceRecords.cshtml b/Views/Vehicle/Service/_ServiceRecords.cshtml deleted file mode 100644 index 0e56410..0000000 --- a/Views/Vehicle/Service/_ServiceRecords.cshtml +++ /dev/null @@ -1,204 +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 userLanguage = userConfig.UserLanguage; - var recordTags = Model.SelectMany(x => x.Tags).Distinct(); - 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.ServiceRecord); -} -@model List -
-
-
- @($"{translator.Translate(userLanguage, "# of Service 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 (ServiceRecord serviceRecord 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")
@serviceRecord.Date.ToShortDateString()@(serviceRecord.Mileage == default ? "---" : serviceRecord.Mileage.ToString())@serviceRecord.Description@(StaticHelper.HideZeroCost(serviceRecord.Cost, hideZero))@StaticHelper.TruncateStrings(serviceRecord.Notes)
- @StaticHelper.ReportNote -
-
-
- - - - - -@if (userColumnPreferences.Any()) -{ - @await Html.PartialAsync("_UserColumnPreferences", userColumnPreferences) -} \ No newline at end of file diff --git a/Views/Vehicle/Supply/_SupplyRecordModal.cshtml b/Views/Vehicle/Supply/_SupplyRecordModal.cshtml deleted file mode 100644 index 1c2a586..0000000 --- a/Views/Vehicle/Supply/_SupplyRecordModal.cshtml +++ /dev/null @@ -1,92 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model SupplyRecordInput -@{ - var isNew = Model.Id == 0; - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} - - - -@await Html.PartialAsync("Supply/_SupplyRequisitionHistory", new SupplyRequisitionHistory { RequisitionHistory = Model.RequisitionHistory, CostInputId = "" }) - \ No newline at end of file diff --git a/Views/Vehicle/Supply/_SupplyRecords.cshtml b/Views/Vehicle/Supply/_SupplyRecords.cshtml deleted file mode 100644 index b92b589..0000000 --- a/Views/Vehicle/Supply/_SupplyRecords.cshtml +++ /dev/null @@ -1,213 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; - var enableCsvImports = userConfig.EnableCsvImports; - var hideZero = userConfig.HideZero; - var recordTags = Model.SelectMany(x => x.Tags).Distinct(); - 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.SupplyRecord); -} -@model List -
-
-
- @($"{translator.Translate(userLanguage, "# of Supply 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 (SupplyRecord supplyRecord in Model) - { - - - - - - - - - - @foreach (string extraFieldColumn in extraFields) - { - - } - - } - - - - - - -
@translator.Translate(userLanguage, "Date")@translator.Translate(userLanguage, "Part #")@translator.Translate(userLanguage, "Supplier")@translator.Translate(userLanguage, "Description")@translator.Translate(userLanguage, "Quantity")@translator.Translate(userLanguage, "Cost")@translator.Translate(userLanguage, "Notes")
@supplyRecord.Date.ToShortDateString()@supplyRecord.PartNumber@supplyRecord.PartSupplier@supplyRecord.Description@supplyRecord.Quantity@(StaticHelper.HideZeroCost(supplyRecord.Cost, hideZero))@StaticHelper.TruncateStrings(supplyRecord.Notes)
- @StaticHelper.ReportNote -
-
-
- - - - - -@if (userColumnPreferences.Any()) -{ - @await Html.PartialAsync("_UserColumnPreferences", userColumnPreferences) -} \ No newline at end of file diff --git a/Views/Vehicle/Supply/_SupplyRequisitionHistory.cshtml b/Views/Vehicle/Supply/_SupplyRequisitionHistory.cshtml deleted file mode 100644 index 0449f05..0000000 --- a/Views/Vehicle/Supply/_SupplyRequisitionHistory.cshtml +++ /dev/null @@ -1,106 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model SupplyRequisitionHistory -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; - var showDelete = Model.RequisitionHistory.All(x => x.Id != default); - var showPartNumber = Model.RequisitionHistory.Any(x => !string.IsNullOrWhiteSpace(x.PartNumber)); -} - -
- - -
\ No newline at end of file diff --git a/Views/Vehicle/Supply/_SupplyStore.cshtml b/Views/Vehicle/Supply/_SupplyStore.cshtml deleted file mode 100644 index 7a812ea..0000000 --- a/Views/Vehicle/Supply/_SupplyStore.cshtml +++ /dev/null @@ -1,127 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@model SupplyStore - - \ No newline at end of file diff --git a/Views/Vehicle/Supply/_SupplyUsage.cshtml b/Views/Vehicle/Supply/_SupplyUsage.cshtml deleted file mode 100644 index 014eccc..0000000 --- a/Views/Vehicle/Supply/_SupplyUsage.cshtml +++ /dev/null @@ -1,147 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; - var recordTags = Model.Supplies.SelectMany(x => x.Tags).Distinct(); -} -@model SupplyUsageViewModel - - - - \ No newline at end of file diff --git a/Views/Vehicle/Tax/_TaxRecordModal.cshtml b/Views/Vehicle/Tax/_TaxRecordModal.cshtml deleted file mode 100644 index 691218b..0000000 --- a/Views/Vehicle/Tax/_TaxRecordModal.cshtml +++ /dev/null @@ -1,105 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model TaxRecordInput -@{ - var isNew = Model.Id == 0; - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} - - - - \ No newline at end of file diff --git a/Views/Vehicle/Tax/_TaxRecords.cshtml b/Views/Vehicle/Tax/_TaxRecords.cshtml deleted file mode 100644 index 39f800f..0000000 --- a/Views/Vehicle/Tax/_TaxRecords.cshtml +++ /dev/null @@ -1,189 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; - var enableCsvImports = userConfig.EnableCsvImports; - var hideZero = userConfig.HideZero; - var recordTags = Model.SelectMany(x => x.Tags).Distinct(); - 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.TaxRecord); -} -@model List -
-
-
- @($"{translator.Translate(userLanguage,"# of Tax 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 (TaxRecord taxRecord in Model) - { - - - - - - - @foreach (string extraFieldColumn in extraFields) - { - - } - - } - - - - - - -
@translator.Translate(userLanguage, "Date")@translator.Translate(userLanguage, "Description")@translator.Translate(userLanguage, "Cost")@translator.Translate(userLanguage, "Notes")
@taxRecord.Date.ToShortDateString()@taxRecord.Description@(StaticHelper.HideZeroCost(taxRecord.Cost, hideZero))@StaticHelper.TruncateStrings(taxRecord.Notes)
- @StaticHelper.ReportNote -
-
-
- - - - - -@if (userColumnPreferences.Any()) -{ - @await Html.PartialAsync("_UserColumnPreferences", userColumnPreferences) -} \ No newline at end of file diff --git a/Views/Vehicle/Upgrade/_UpgradeRecordModal.cshtml b/Views/Vehicle/Upgrade/_UpgradeRecordModal.cshtml deleted file mode 100644 index e5a1ab8..0000000 --- a/Views/Vehicle/Upgrade/_UpgradeRecordModal.cshtml +++ /dev/null @@ -1,115 +0,0 @@ -@inject IConfigHelper config -@inject ITranslationHelper translator -@using MotoVaultPro.Helper -@model UpgradeRecordInput -@{ - var isNew = Model.Id == 0; - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} - - - -@await Html.PartialAsync("Supply/_SupplyRequisitionHistory", new SupplyRequisitionHistory { RequisitionHistory = Model.RequisitionHistory, CostInputId = "upgradeRecordCost" }) - \ No newline at end of file diff --git a/Views/Vehicle/Upgrade/_UpgradeRecords.cshtml b/Views/Vehicle/Upgrade/_UpgradeRecords.cshtml deleted file mode 100644 index 85bff62..0000000 --- a/Views/Vehicle/Upgrade/_UpgradeRecords.cshtml +++ /dev/null @@ -1,205 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; - var enableCsvImports = userConfig.EnableCsvImports; - var hideZero = userConfig.HideZero; - var recordTags = Model.SelectMany(x => x.Tags).Distinct(); - 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.UpgradeRecord); -} -@model List -
-
-
- @($"{translator.Translate(userLanguage,"# of Upgrade 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 (UpgradeRecord upgradeRecord 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")
@upgradeRecord.Date.ToShortDateString()@(upgradeRecord.Mileage == default ? "---" : upgradeRecord.Mileage.ToString())@upgradeRecord.Description@(StaticHelper.HideZeroCost(upgradeRecord.Cost, hideZero))@StaticHelper.TruncateStrings(upgradeRecord.Notes)
- @StaticHelper.ReportNote -
-
-
- - - - -@if (userColumnPreferences.Any()) -{ - @await Html.PartialAsync("_UserColumnPreferences", userColumnPreferences) -} \ No newline at end of file diff --git a/Views/Vehicle/_AttachmentColumn.cshtml b/Views/Vehicle/_AttachmentColumn.cshtml deleted file mode 100644 index aff8b6c..0000000 --- a/Views/Vehicle/_AttachmentColumn.cshtml +++ /dev/null @@ -1,9 +0,0 @@ -@model List -@if (Model.Any()){ - - - - @Model.Count() - - -} \ No newline at end of file diff --git a/Views/Vehicle/_BulkDataImporter.cshtml b/Views/Vehicle/_BulkDataImporter.cshtml deleted file mode 100644 index 4680037..0000000 --- a/Views/Vehicle/_BulkDataImporter.cshtml +++ /dev/null @@ -1,71 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@model ImportMode - - - - \ No newline at end of file diff --git a/Views/Vehicle/_Collaborators.cshtml b/Views/Vehicle/_Collaborators.cshtml deleted file mode 100644 index 53a2acc..0000000 --- a/Views/Vehicle/_Collaborators.cshtml +++ /dev/null @@ -1,81 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@model List -
-
- @translator.Translate(userLanguage, "Collaborators") -
-
- -
-
-
- - - - - - - - - @foreach (UserCollaborator user in Model) - { - - - - - } - -
@translator.Translate(userLanguage, "Username")@translator.Translate(userLanguage, "Delete")
@user.UserName - @if(User.Identity.Name != user.UserName) - { - - } -
-
- \ No newline at end of file diff --git a/Views/Vehicle/_CostDistanceTableReport.cshtml b/Views/Vehicle/_CostDistanceTableReport.cshtml deleted file mode 100644 index 5ffc617..0000000 --- a/Views/Vehicle/_CostDistanceTableReport.cshtml +++ /dev/null @@ -1,96 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model CostDistanceTableForVehicle -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; - var hideZero = userConfig.HideZero; - var years = Model.CostData.Select(x => x.Year).OrderByDescending(x => x).Distinct(); - var months = Model.CostData.OrderBy(x => x.MonthId).Select(x => x.MonthName).Distinct(); -} -@if (Model.CostData.Any()) -{ -
- - -
-} -else -{ -
-

@translator.Translate(userLanguage, "No data found or all records have zero sums, insert records with non-zero sums to see visualizations here.")

-
-} diff --git a/Views/Vehicle/_CostMakeUpReport.cshtml b/Views/Vehicle/_CostMakeUpReport.cshtml deleted file mode 100644 index dbbd989..0000000 --- a/Views/Vehicle/_CostMakeUpReport.cshtml +++ /dev/null @@ -1,88 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@model CostMakeUpForVehicle -{ - - -} -else -{ -
-

@translator.Translate(userLanguage, "No data found or all records have zero sums, insert records with non-zero sums to see visualizations here.")

-
-} diff --git a/Views/Vehicle/_CostTableReport.cshtml b/Views/Vehicle/_CostTableReport.cshtml deleted file mode 100644 index 6f9b354..0000000 --- a/Views/Vehicle/_CostTableReport.cshtml +++ /dev/null @@ -1,76 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; - var hideZero = userConfig.HideZero; -} -@model CostTableForVehicle -{ -
- - -
-} -else -{ -
-

@translator.Translate(userLanguage, "No data found or all records have zero sums, insert records with non-zero sums to see visualizations here.")

-
-} diff --git a/Views/Vehicle/_ExtraField.cshtml b/Views/Vehicle/_ExtraField.cshtml deleted file mode 100644 index f87e0c1..0000000 --- a/Views/Vehicle/_ExtraField.cshtml +++ /dev/null @@ -1,42 +0,0 @@ -@model List -@if (Model.Any()){ - @foreach (ExtraField field in Model) - { - var elementId = Guid.NewGuid(); -
- - @switch(field.FieldType){ - case (ExtraFieldType.Text): - - break; - case (ExtraFieldType.Number): - - break; - case (ExtraFieldType.Decimal): - - break; - case (ExtraFieldType.Date): -
- - -
- - break; - case (ExtraFieldType.Time): - - break; - case (ExtraFieldType.Location): -
- -
- -
-
- break; - default: - - break; - } -
- } -} \ No newline at end of file diff --git a/Views/Vehicle/_ExtraFieldMultiple.cshtml b/Views/Vehicle/_ExtraFieldMultiple.cshtml deleted file mode 100644 index 821fcbe..0000000 --- a/Views/Vehicle/_ExtraFieldMultiple.cshtml +++ /dev/null @@ -1,49 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@model List -@if (Model.Any()){ - @foreach (ExtraField field in Model) - { - var elementId = Guid.NewGuid(); -
- - @switch(field.FieldType){ - case (ExtraFieldType.Text): - - break; - case (ExtraFieldType.Number): - - break; - case (ExtraFieldType.Decimal): - - break; - case (ExtraFieldType.Date): -
- - -
- - break; - case (ExtraFieldType.Time): - - break; - case (ExtraFieldType.Location): -
- -
- -
-
- break; - default: - - break; - } -
- } -} \ No newline at end of file diff --git a/Views/Vehicle/_FileUploader.cshtml b/Views/Vehicle/_FileUploader.cshtml deleted file mode 100644 index f460692..0000000 --- a/Views/Vehicle/_FileUploader.cshtml +++ /dev/null @@ -1,20 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; - var uploaderId = Guid.NewGuid(); -} -@model bool - - -
- -
@translator.Translate(userLanguage, "Max File Size: 28.6MB")
-
- \ No newline at end of file diff --git a/Views/Vehicle/_FilesToUpload.cshtml b/Views/Vehicle/_FilesToUpload.cshtml deleted file mode 100644 index ce0bb84..0000000 --- a/Views/Vehicle/_FilesToUpload.cshtml +++ /dev/null @@ -1,25 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@model List - - \ No newline at end of file diff --git a/Views/Vehicle/_GasCostByMonthReport.cshtml b/Views/Vehicle/_GasCostByMonthReport.cshtml deleted file mode 100644 index 1969d93..0000000 --- a/Views/Vehicle/_GasCostByMonthReport.cshtml +++ /dev/null @@ -1,103 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model List -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; - var barGraphColors = StaticHelper.GetBarChartColors(); - var sortedByMPG = Model.OrderBy(x => x.Cost).ToList(); -} -@if (Model.Any(x=>x.Cost > 0) || Model.Any(x=>x.DistanceTraveled > 0)) -{ - - -} else -{ -
-

@translator.Translate(userLanguage,"No data found, insert/select some data to see visualizations here.")

-
-} \ No newline at end of file diff --git a/Views/Vehicle/_GenericRecordModal.cshtml b/Views/Vehicle/_GenericRecordModal.cshtml deleted file mode 100644 index 355d723..0000000 --- a/Views/Vehicle/_GenericRecordModal.cshtml +++ /dev/null @@ -1,56 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model GenericRecordEditModel -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} - - - - \ No newline at end of file diff --git a/Views/Vehicle/_GlobalSearchResult.cshtml b/Views/Vehicle/_GlobalSearchResult.cshtml deleted file mode 100644 index 9bff194..0000000 --- a/Views/Vehicle/_GlobalSearchResult.cshtml +++ /dev/null @@ -1,34 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model List -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -
- @if (Model.Any()) - { - @foreach (SearchResult result in Model) - { -
-
- -
-
- @result.Description -
-
- } - } else - { -
-
- -
-
- @translator.Translate(userLanguage, "No Data Found") -
-
- } -
diff --git a/Views/Vehicle/_MPGByMonthReport.cshtml b/Views/Vehicle/_MPGByMonthReport.cshtml deleted file mode 100644 index f7451be..0000000 --- a/Views/Vehicle/_MPGByMonthReport.cshtml +++ /dev/null @@ -1,101 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model MPGForVehicleByMonth -@{ - var barGraphColors = StaticHelper.GetBarChartColors(); - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@if (Model.CostData.Any(x => x.Cost > 0)) -{ - var chartMax = Math.Ceiling(Model.CostData.Max(x => x.Cost)); - var graphGrace = Decimal.ToInt32(Model.CostData.Max(x => x.Cost) - Model.CostData.Min(x => x.Cost)); - var chartMin = Math.Floor(Model.CostData.Min(x => x.Cost) - graphGrace); - if (graphGrace < 0 || chartMin < 0) - { - graphGrace = 0; - chartMin = 0; - } - var stepSize = StaticHelper.CalculateNiceStepSize(chartMin, chartMax, 8); - var remMin = stepSize > 0 ? chartMin % stepSize : 0; - var cleanedMin = chartMin - remMin; - if (remMin >= (stepSize / 2)) - { - cleanedMin += stepSize; - } - var remMax = stepSize > 0 ? chartMax % stepSize : 0; - var cleanedMax = chartMax - remMax; - if (remMax >= (stepSize / 2)) - { - cleanedMax += stepSize; - } - - -} -else -{ -
-

@translator.Translate(userLanguage,"No data found, insert/select some data to see visualizations here.")

-
-} \ No newline at end of file diff --git a/Views/Vehicle/_RecurringReminderSelector.cshtml b/Views/Vehicle/_RecurringReminderSelector.cshtml deleted file mode 100644 index 870b053..0000000 --- a/Views/Vehicle/_RecurringReminderSelector.cshtml +++ /dev/null @@ -1,69 +0,0 @@ -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@using MotoVaultPro.Helper -@model List -@if (Model.Count() > 1) -{ -
- - -
-} - - \ No newline at end of file diff --git a/Views/Vehicle/_ReminderMakeUpReport.cshtml b/Views/Vehicle/_ReminderMakeUpReport.cshtml deleted file mode 100644 index 162db9d..0000000 --- a/Views/Vehicle/_ReminderMakeUpReport.cshtml +++ /dev/null @@ -1,62 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@model ReminderMakeUpForVehicle -@if (Model.UrgentCount + Model.VeryUrgentCount + Model.NotUrgentCount + Model.PastDueCount > 0) -{ - - -} -else -{ -
-

@translator.Translate(userLanguage,"No data found, create reminders to see visualizations here.")

-
-} diff --git a/Views/Vehicle/_Report.cshtml b/Views/Vehicle/_Report.cshtml deleted file mode 100644 index 66042b3..0000000 --- a/Views/Vehicle/_Report.cshtml +++ /dev/null @@ -1,167 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@model ReportViewModel - -
-
- @await Html.PartialAsync("_ReportHeader", Model.ReportHeaderForVehicle) -
-
-
-
-
-
- -
-
-
-
- @await Html.PartialAsync("_CostMakeUpReport", Model.CostMakeUpForVehicle) -
-
-
-
-
-
-
- -
-
-
-
-
- @await Html.PartialAsync("_GasCostByMonthReport", Model.CostForVehicleByMonth) -
-
-
-
-
-
- -
-
-
-
- @await Html.PartialAsync("_ReminderMakeUpReport", Model.ReminderMakeUpForVehicle) -
-
-
-
-
-
-
- @await Html.PartialAsync("_Collaborators", Model.Collaborators) -
-
-
- @await Html.PartialAsync("_MPGByMonthReport", Model.FuelMileageForVehicleByMonth) -
-
-
-
- -
-
- -
-
- -
- @if (Model.CustomWidgetsConfigured) - { -
- -
- } -
-
-
- -@if (Model.CustomWidgetsConfigured) -{ - -} - - \ No newline at end of file diff --git a/Views/Vehicle/_ReportHeader.cshtml b/Views/Vehicle/_ReportHeader.cshtml deleted file mode 100644 index 0ca2d13..0000000 --- a/Views/Vehicle/_ReportHeader.cshtml +++ /dev/null @@ -1,24 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@model ReportHeader -
- @Model.MaxOdometer.ToString("N0")
- @translator.Translate(userLanguage, "Last Reported Odometer Reading") -
-
- @Model.DistanceTraveled.ToString("N0")
- @translator.Translate(userLanguage, "Distance Traveled") -
-
- @StaticHelper.HideZeroCost(Model.TotalCost.ToString("C2"), true)
- @translator.Translate(userLanguage, "Total Cost") -
-
- @Model.AverageMPG
- @translator.Translate(userLanguage, "Average Fuel Economy") -
\ No newline at end of file diff --git a/Views/Vehicle/_ReportParameters.cshtml b/Views/Vehicle/_ReportParameters.cshtml deleted file mode 100644 index fc6f226..0000000 --- a/Views/Vehicle/_ReportParameters.cshtml +++ /dev/null @@ -1,63 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@model ReportParameter -

@translator.Translate(userLanguage, "Select Columns")

-
-
    - @foreach (string column in Model.VisibleColumns) - { -
  • - - -
  • - } - @foreach (string extraField in Model.ExtraFields) - { -
  • - - -
  • - } -
-
-
-
    -
  • - - -
  • -
-
-
-
    -
  • - @translator.Translate(userLanguage, "Advanced Filters") -
  • -
-
-

@translator.Translate(userLanguage, "Filter by Tags")

-
- - -
-

@translator.Translate(userLanguage, "Filter by Date Range")

-
-
- - -
-
- @translator.Translate(userLanguage, "From") - - @translator.Translate(userLanguage, "To") - -
-
\ No newline at end of file diff --git a/Views/Vehicle/_ReportWidgets.cshtml b/Views/Vehicle/_ReportWidgets.cshtml deleted file mode 100644 index 63f4797..0000000 --- a/Views/Vehicle/_ReportWidgets.cshtml +++ /dev/null @@ -1,2 +0,0 @@ -@model string -@Html.Raw(Model) \ No newline at end of file diff --git a/Views/Vehicle/_Stickers.cshtml b/Views/Vehicle/_Stickers.cshtml deleted file mode 100644 index 3810dcb..0000000 --- a/Views/Vehicle/_Stickers.cshtml +++ /dev/null @@ -1,276 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model StickerViewModel -@{ - var userConfig = config.GetUserConfig(User); - var hideZero = userConfig.HideZero; - var userLanguage = userConfig.UserLanguage; -} -@if( Model.ReminderRecords.Any()){ - @foreach(ReminderRecord reminder in Model.ReminderRecords){ -
-
- -
-
-
-

@($"{Model.VehicleData.Year} {Model.VehicleData.Make} {Model.VehicleData.Model}")

-
-
-
-
-

@($"{StaticHelper.GetVehicleIdentifier(Model.VehicleData)}")

-
-
-
-
-

@($"{reminder.Description}")

-
-
- @if (reminder.Metric == ReminderMetric.Odometer || reminder.Metric == ReminderMetric.Both) - { -
-
-

@($"{translator.Translate(userLanguage, "Odometer")}")

-
-
-
-
-

@($"{reminder.Mileage}")

-
-
- } - @if (reminder.Metric == ReminderMetric.Date || reminder.Metric == ReminderMetric.Both) - { -
-
-

@($"{translator.Translate(userLanguage, "Date")}")

-
-
-
-
-

@($"{reminder.Date.ToShortDateString()}")

-
-
- } - @if (reminder.Metric == ReminderMetric.Both) - { -
-
-

@($"{translator.Translate(userLanguage, "Whichever comes first")}")

-
-
- } -
- } -} else if (Model.GenericRecords.Any()){ - @foreach(GenericRecord genericRecord in Model.GenericRecords){ -
-
- -
-
-
-
-
    -
  • - @($"{Model.VehicleData.Year} {Model.VehicleData.Make} {Model.VehicleData.Model}") -
  • -
  • - @($"{StaticHelper.GetVehicleIdentifier(Model.VehicleData)}") -
  • - @foreach (ExtraField extraField in Model.VehicleData.ExtraFields) - { - if (!string.IsNullOrWhiteSpace(extraField.Value)) - { -
  • - @($"{extraField.Name}: {extraField.Value}") -
  • - } - } -
-
-
-
    - @if(!string.IsNullOrWhiteSpace(genericRecord.Description)){ -
  • - @($"{translator.Translate(userLanguage, "Description")}: {genericRecord.Description}") -
  • - } - @switch(Model.RecordType){ - case ImportMode.ServiceRecord: - case ImportMode.UpgradeRecord: - case ImportMode.GasRecord: -
  • - @($"{translator.Translate(userLanguage, "Date")}: {genericRecord.Date.ToShortDateString()}") -
  • -
  • - @($"{translator.Translate(userLanguage, "Odometer")}: {genericRecord.Mileage}") -
  • -
  • - @($"{translator.Translate(userLanguage, "Cost")}: {genericRecord.Cost.ToString("C")}") -
  • - break; - case ImportMode.TaxRecord: - case ImportMode.PlanRecord: -
  • - @($"{translator.Translate(userLanguage, "Date")}: {genericRecord.Date.ToShortDateString()}") -
  • -
  • - @($"{translator.Translate(userLanguage, "Cost")}: {genericRecord.Cost.ToString("C")}") -
  • - break; - case ImportMode.OdometerRecord: -
  • - @($"{translator.Translate(userLanguage, "Date")}: {genericRecord.Date.ToShortDateString()}") -
  • -
  • - @($"{translator.Translate(userLanguage, "Odometer")}: {genericRecord.Mileage}") -
  • - break; - } - @foreach(ExtraField extraField in genericRecord.ExtraFields){ -
  • - @($"{extraField.Name}: {extraField.Value}") -
  • - } -
-
-
-
- @if(genericRecord.RequisitionHistory.Any()){ -
-
- - - - - - - - - - - @foreach (SupplyUsageHistory usageHistory in genericRecord.RequisitionHistory) - { - - - - - - - } - -
@translator.Translate(userLanguage, "Part Number")@translator.Translate(userLanguage, "Description")@translator.Translate(userLanguage, "Quantity")@translator.Translate(userLanguage, "Cost")
@usageHistory.PartNumber@usageHistory.Description@usageHistory.Quantity.ToString("F")@usageHistory.Cost.ToString("C2")
-
-
-
- } -
-
-
- @(genericRecord.Notes) -
-
-
-
- } - -} else if (Model.SupplyRecords.Any()){ - @foreach (SupplyRecord supplyRecord in Model.SupplyRecords) - { -
-
- -
-
-
- @if(Model.VehicleData.Id != default){ -
-
    -
  • - @($"{Model.VehicleData.Year} {Model.VehicleData.Make} {Model.VehicleData.Model}") -
  • -
  • - @($"{StaticHelper.GetVehicleIdentifier(Model.VehicleData)}") -
  • - @foreach (ExtraField extraField in Model.VehicleData.ExtraFields) - { - if (!string.IsNullOrWhiteSpace(extraField.Value)) - { -
  • - @($"{extraField.Name}: {extraField.Value}") -
  • - } - } -
-
-
-
    -
  • - @($"{translator.Translate(userLanguage, "Description")}: {supplyRecord.Description}") -
  • - @if(!string.IsNullOrWhiteSpace(supplyRecord.PartNumber)){ -
  • - @($"{translator.Translate(userLanguage, "Part Number")}: {supplyRecord.PartNumber}") -
  • - } -
  • - @($"{translator.Translate(userLanguage, "Supplier/Vendor")}: {supplyRecord.PartSupplier}") -
  • -
  • - @($"{translator.Translate(userLanguage, "Cost")}: {supplyRecord.Cost.ToString("C")}") -
  • - @foreach (ExtraField extraField in supplyRecord.ExtraFields) - { -
  • - @($"{extraField.Name}: {extraField.Value}") -
  • - } -
-
- } else { -
-
    -
  • - @($"{translator.Translate(userLanguage, "Description")}: {supplyRecord.Description}") -
  • - @if (!string.IsNullOrWhiteSpace(supplyRecord.PartNumber)) - { -
  • - @($"{translator.Translate(userLanguage, "Part Number")}: {supplyRecord.PartNumber}") -
  • - } -
  • - @($"{translator.Translate(userLanguage, "Supplier/Vendor")}: {supplyRecord.PartSupplier}") -
  • -
  • - @($"{translator.Translate(userLanguage, "Cost")}: {supplyRecord.Cost.ToString("C")}") -
  • -
-
-
-
    - @foreach (ExtraField extraField in supplyRecord.ExtraFields) - { -
  • - @($"{extraField.Name}: {extraField.Value}") -
  • - } -
-
- } -
-
-
-
-
- @(supplyRecord.Notes) -
-
-
-
- } - -} diff --git a/Views/Vehicle/_UploadedFiles.cshtml b/Views/Vehicle/_UploadedFiles.cshtml deleted file mode 100644 index beb33c5..0000000 --- a/Views/Vehicle/_UploadedFiles.cshtml +++ /dev/null @@ -1,35 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; -} -@model List -@if (Model.Any()) -{ - - -} - \ No newline at end of file diff --git a/Views/Vehicle/_UserColumnPreferences.cshtml b/Views/Vehicle/_UserColumnPreferences.cshtml deleted file mode 100644 index 0fb59fd..0000000 --- a/Views/Vehicle/_UserColumnPreferences.cshtml +++ /dev/null @@ -1,13 +0,0 @@ -@model IEnumerable - \ No newline at end of file diff --git a/Views/Vehicle/_VehicleHistory.cshtml b/Views/Vehicle/_VehicleHistory.cshtml deleted file mode 100644 index eb0f0ef..0000000 --- a/Views/Vehicle/_VehicleHistory.cshtml +++ /dev/null @@ -1,286 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model VehicleHistoryViewModel -@{ - var userConfig = config.GetUserConfig(User); - var hideZero = userConfig.HideZero; - var userLanguage = userConfig.UserLanguage; - var extraFields = Model.ReportParameters.ExtraFields; -} -
-
-
- -
- - @translator.Translate(userLanguage, "Vehicle Maintenance Report") - - @if (!string.IsNullOrWhiteSpace(Model.StartDate) && !string.IsNullOrWhiteSpace(Model.EndDate)) - { -
- - @($"{@translator.Translate(userLanguage, "From")} {Model.StartDate} {@translator.Translate(userLanguage, "To")} {Model.EndDate}") - - } -
-
-
-
-
-
-
    -
  • - @($"{Model.VehicleData.Year} {Model.VehicleData.Make} {Model.VehicleData.Model}") -
  • - @if (!string.IsNullOrWhiteSpace(Model.VehicleData.LicensePlate)) - { -
  • - @Model.VehicleData.LicensePlate -
  • - } - @foreach(ExtraField extraField in Model.VehicleData.ExtraFields) - { - if (!string.IsNullOrWhiteSpace(extraField.Value)) - { -
  • - @($"{extraField.Name}: {extraField.Value}") -
  • - } - } -
  • -
    -
    - @if (Model.VehicleData.IsElectric) - { - @translator.Translate(userLanguage, "Electric") - } - else if (Model.VehicleData.IsDiesel) - { - @translator.Translate(userLanguage, "Diesel") - } - else - { - @translator.Translate(userLanguage, "Gasoline") - } -
    - @if (!string.IsNullOrWhiteSpace(Model.DaysOwned)) - { -
    - @($"{Model.DaysOwned} {translator.Translate(userLanguage, "Days")}") -
    - } - @if (Model.DistanceTraveled != default) - { -
    - @($"{Model.DistanceTraveled} {Model.DistanceUnit}") -
    - } -
    -
  • -
-
-
-
    -
  • @($"{translator.Translate(userLanguage, "Last Reported Odometer Reading")}: {Model.Odometer}")
  • -
  • @($"{translator.Translate(userLanguage, "Average Fuel Economy")}: {Model.MPG}")
  • -
  • @($"{translator.Translate(userLanguage, "Total Spent(excl. fuel)")}: {Model.TotalCost.ToString("C")} ({Model.TotalCostPerMile.ToString("C")}/{Model.DistanceUnit})")
  • -
  • @($"{translator.Translate(userLanguage, "Total Spent on Fuel")}: {Model.TotalGasCost.ToString("C")} ({Model.TotalGasCostPerMile.ToString("C")}/{Model.DistanceUnit})")
  • -
-
-
-
- @if (Model.TotalDepreciation != default) - { -
-
- @(Model.TotalDepreciation > 0 ? translator.Translate(userLanguage, "Depreciation") : translator.Translate(userLanguage, "Appreciation")) -
-
- @Math.Abs(Model.TotalDepreciation).ToString("C") -
- @if (Model.DepreciationPerDay != default) - { -
- @($"{Model.DepreciationPerDay.ToString("C")}/{translator.Translate(userLanguage, "day")}") -
- } - @if (Model.DepreciationPerMile != default) - { -
- @($"{Model.DepreciationPerMile.ToString("C")}/{Model.DistanceUnit}") -
- } -
-
- } -
-
- - - - - - - - - - @foreach(string extraField in extraFields) - { - - } - - - - @foreach (GenericReportModel reportData in Model.VehicleHistory) - { - - - - - - - - @foreach(string extraField in extraFields) - { - - } - - } - - - - - - -
@translator.Translate(userLanguage, "Type")@translator.Translate(userLanguage, "Date")@translator.Translate(userLanguage, "Odometer")@translator.Translate(userLanguage, "Description")@translator.Translate(userLanguage, "Cost")@translator.Translate(userLanguage, "Notes")@extraField
- @if (reportData.DataType == ImportMode.ServiceRecord) - { - @translator.Translate(userLanguage, "Service") - } - { - @translator.Translate(userLanguage, "Repair") - } - else if (reportData.DataType == ImportMode.UpgradeRecord) - { - @translator.Translate(userLanguage, "Upgrade") - } - else if (reportData.DataType == ImportMode.TaxRecord) - { - @translator.Translate(userLanguage, "Tax") - } - @reportData.Date.ToShortDateString()@(reportData.Odometer == default ? "---" : reportData.Odometer.ToString("N0"))@reportData.Description@(StaticHelper.HideZeroCost(reportData.Cost, hideZero))@StaticHelper.TruncateStrings(reportData.Notes, 100)@(reportData.ExtraFields.Where(x => x.Name == extraField)?.FirstOrDefault()?.Value ?? "")
- @StaticHelper.ReportNote -
-
-
-
-@if (Model.ReportParameters.PrintIndividualRecords){ - @foreach (GenericReportModel genericRecord in Model.VehicleHistory) - { -
-
- -
-
-
-
-
    -
  • - @($"{Model.VehicleData.Year} {Model.VehicleData.Make} {Model.VehicleData.Model}") -
  • -
  • - @($"{StaticHelper.GetVehicleIdentifier(Model.VehicleData)}") -
  • - @foreach (ExtraField extraField in Model.VehicleData.ExtraFields) - { - if (!string.IsNullOrWhiteSpace(extraField.Value)) - { -
  • - @($"{extraField.Name}: {extraField.Value}") -
  • - } - } -
-
-
-
    - @if (!string.IsNullOrWhiteSpace(genericRecord.Description)) - { -
  • - @($"{translator.Translate(userLanguage, "Description")}: {genericRecord.Description}") -
  • - } - @switch (genericRecord.DataType) - { - case ImportMode.ServiceRecord: - case ImportMode.UpgradeRecord: -
  • - @($"{translator.Translate(userLanguage, "Date")}: {genericRecord.Date.ToShortDateString()}") -
  • -
  • - @($"{translator.Translate(userLanguage, "Odometer")}: {genericRecord.Odometer}") -
  • -
  • - @($"{translator.Translate(userLanguage, "Cost")}: {genericRecord.Cost.ToString("C")}") -
  • - break; - case ImportMode.TaxRecord: -
  • - @($"{translator.Translate(userLanguage, "Date")}: {genericRecord.Date.ToShortDateString()}") -
  • -
  • - @($"{translator.Translate(userLanguage, "Cost")}: {genericRecord.Cost.ToString("C")}") -
  • - break; - } - @foreach (ExtraField extraField in genericRecord.ExtraFields) - { -
  • - @($"{extraField.Name}: {extraField.Value}") -
  • - } -
-
-
-
- @if (genericRecord.RequisitionHistory.Any()) - { -
-
- - - - - - - - - - - @foreach (SupplyUsageHistory usageHistory in genericRecord.RequisitionHistory) - { - - - - - - - } - -
@translator.Translate(userLanguage, "Part Number")@translator.Translate(userLanguage, "Description")@translator.Translate(userLanguage, "Quantity")@translator.Translate(userLanguage, "Cost")
@usageHistory.PartNumber@usageHistory.Description@usageHistory.Quantity.ToString("F")@usageHistory.Cost.ToString("C2")
-
-
-
- } -
-
-
- @(genericRecord.Notes) -
-
-
-
- } - -} \ No newline at end of file diff --git a/Views/Vehicle/_VehicleModal.cshtml b/Views/Vehicle/_VehicleModal.cshtml deleted file mode 100644 index b2d5b1e..0000000 --- a/Views/Vehicle/_VehicleModal.cshtml +++ /dev/null @@ -1,165 +0,0 @@ -@using MotoVaultPro.Helper -@inject IConfigHelper config -@inject ITranslationHelper translator -@model Vehicle -@{ - var userConfig = config.GetUserConfig(User); - var userLanguage = userConfig.UserLanguage; - var isNew = Model.Id == 0; - if (Model.ImageLocation == "/defaults/noimage.png") - { - Model.ImageLocation = ""; - } -} - - - - \ No newline at end of file diff --git a/Views/_ViewImports.cshtml b/Views/_ViewImports.cshtml deleted file mode 100644 index 73decb7..0000000 --- a/Views/_ViewImports.cshtml +++ /dev/null @@ -1,4 +0,0 @@ -@using MotoVaultPro -@using MotoVaultPro.Models -@using Microsoft.Extensions.Options -@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/Views/_ViewStart.cshtml b/Views/_ViewStart.cshtml deleted file mode 100644 index a5f1004..0000000 --- a/Views/_ViewStart.cshtml +++ /dev/null @@ -1,3 +0,0 @@ -@{ - Layout = "_Layout"; -} diff --git a/appsettings.Development.json b/appsettings.Development.json deleted file mode 100644 index 0c208ae..0000000 --- a/appsettings.Development.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - } -} diff --git a/appsettings.json b/appsettings.json deleted file mode 100644 index 0b66d54..0000000 --- a/appsettings.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - }, - "AllowedHosts": "*", - "UseDarkMode": true, - "UseSystemColorMode": false, - "EnableCsvImports": true, - "UseMPG": true, - "UseDescending": false, - "EnableAuth": false, - "DisableRegistration": false, - "EnableRootUserOIDC": false, - "HideZero": false, - "AutomaticDecimalFormat": false, - "EnableAutoReminderRefresh": false, - "EnableAutoOdometerInsert": false, - "EnableShopSupplies": false, - "ShowCalendar": true, - "ShowVehicleThumbnail": true, - "EnableExtraFieldColumns": false, - "UseUKMPG": false, - "UseThreeDecimalGasCost": true, - "UseThreeDecimalGasConsumption": true, - "UseMarkDownOnSavedNotes": false, - "HideSoldVehicles": false, - "PreferredGasMileageUnit": "", - "UserColumnPreferences": [], - "UseUnitForFuelCost": false, - "PreferredGasUnit": "", - "UserLanguage": "en_US", - "VisibleTabs": [ 0, 1, 4, 2, 3, 6, 5, 8 ], - "TabOrder": [ 8, 9, 10, 0, 1, 4, 2, 7, 3, 6, 5 ], - "DefaultTab": 8, - "UserNameHash": "", - "UserPasswordHash": "", - "DefaultReminderEmail": "" -} diff --git a/docker-compose.postgresql.yml b/docker-compose.postgresql.yml deleted file mode 100644 index e9cef0f..0000000 --- a/docker-compose.postgresql.yml +++ /dev/null @@ -1,34 +0,0 @@ ---- -version: "3.4" - -services: - app: - image: ghcr.io/ericgullickson/motovaultpro:latest - build: . - restart: unless-stopped - # volumes used to keep data persistent - volumes: - - data:/App/data - - keys:/root/.aspnet/DataProtection-Keys - # expose port and/or use serving via traefik - ports: - - 8080:8080 - env_file: - - .env - - postgres: - image: postgres:14 - restart: unless-stopped - environment: - POSTGRES_USER: "motovaultpro" - POSTGRES_PASSWORD: "motovaultpass" - POSTGRES_DB: "motovaultpro" - volumes: - - ./init.sql:/docker-entrypoint-initdb.d/init.sql - - postgres:/var/lib/postgresql/data - - /etc/localtime:/etc/localtime:ro - -volumes: - data: - keys: - postgres: diff --git a/docker-compose.traefik.yml b/docker-compose.traefik.yml deleted file mode 100644 index 28729a9..0000000 --- a/docker-compose.traefik.yml +++ /dev/null @@ -1,42 +0,0 @@ ---- -version: "3.4" - -services: - app: - image: ghcr.io/ericgullickson/motovaultpro:latest - build: . - restart: unless-stopped - # volumes used to keep data persistent - volumes: - - data:/App/data - - keys:/root/.aspnet/DataProtection-Keys - # expose port and/or use serving via traefik - ports: - - 8080:8080 - env_file: - - .env - # traefik configurations, including networks can be commented out if not needed - networks: - - traefik-ingress - labels: - ## Traefik General - # We set 'enable by default' to false, so this tells Traefik we want it to connect here - traefik.enable: true - # define network for traefik<>app communication - traefik.docker.network: traefik-ingress - ## HTTP Routers - traefik.http.routers.whoami.entrypoints: https - traefik.http.routers.whoami.rule: Host(`motovaultpro.mydomain.tld`) - ## Middlewares - #traefik.http.routers.whoami.middlewares: authentik@docker - # none - ## HTTP Services - traefik.http.services.whoami.loadbalancer.server.port: 5000 - -volumes: - data: - keys: - -networks: - traefik-ingress: - external: true diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index ac948a6..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,21 +0,0 @@ ---- -version: "3.4" - -services: - app: - image: ghcr.io/ericgullickson/motovaultpro:latest - build: . - restart: unless-stopped - # volumes used to keep data persistent - volumes: - - data:/App/data - - keys:/root/.aspnet/DataProtection-Keys - # expose port and/or use serving via traefik - ports: - - 8080:8080 - env_file: - - .env - -volumes: - data: - keys: diff --git a/docs/K8S-OVERVIEW.md b/docs/K8S-OVERVIEW.md deleted file mode 100644 index d43840c..0000000 --- a/docs/K8S-OVERVIEW.md +++ /dev/null @@ -1,308 +0,0 @@ -# Kubernetes Modernization Plan for MotoVaultPro - -## Executive Summary - -This document provides an overview of the comprehensive plan to modernize MotoVaultPro from a traditional self-hosted application to a cloud-native, highly available system running on Kubernetes. The modernization focuses on transforming the current monolithic ASP.NET Core application into a resilient, scalable platform capable of handling enterprise-level workloads while maintaining the existing feature set and user experience. - -### Key Objectives -- **High Availability**: Eliminate single points of failure through distributed architecture -- **Scalability**: Enable horizontal scaling to handle increased user loads -- **Resilience**: Implement fault tolerance and automatic recovery mechanisms -- **Cloud-Native**: Adopt Kubernetes-native patterns and best practices -- **Operational Excellence**: Improve monitoring, logging, and maintenance capabilities - -### Strategic Benefits -- **Reduced Downtime**: Multi-replica deployments with automatic failover -- **Improved Performance**: Distributed caching and optimized data access patterns -- **Enhanced Security**: Pod-level isolation and secret management -- **Cost Optimization**: Efficient resource utilization through auto-scaling -- **Future-Ready**: Foundation for microservices and advanced cloud features - -## Current Architecture Analysis - -### Existing System Overview -MotoVaultPro is currently deployed as a monolithic ASP.NET Core 8.0 application with the following characteristics: - -#### Application Architecture -- **Monolithic Design**: Single deployable unit containing all functionality -- **MVC Pattern**: Traditional Model-View-Controller architecture -- **Dual Database Support**: LiteDB (embedded) and PostgreSQL (external) -- **File Storage**: Local filesystem for document attachments -- **Session Management**: In-memory or cookie-based sessions -- **Configuration**: File-based configuration with environment variables - -#### Identified Limitations for Kubernetes -1. **State Dependencies**: LiteDB and local file storage prevent stateless operation -2. **Configuration Management**: File-based configuration not suitable for container orchestration -3. **Health Monitoring**: Lacks Kubernetes-compatible health check endpoints -4. **Logging**: Basic logging not optimized for centralized log aggregation -5. **Resource Management**: No resource constraints or auto-scaling capabilities -6. **Secret Management**: Sensitive configuration stored in plain text files - -## Target Architecture - -### Cloud-Native Design Principles -The modernized architecture will embrace the following cloud-native principles: - -#### Stateless Application Design -- **External State Storage**: All state moved to external, highly available services -- **Horizontal Scalability**: Multiple application replicas with load balancing -- **Configuration as Code**: All configuration externalized to ConfigMaps and Secrets -- **Ephemeral Containers**: Pods can be created, destroyed, and recreated without data loss - -#### Distributed Data Architecture -- **PostgreSQL Cluster**: Primary/replica configuration with automatic failover -- **MinIO High Availability**: Distributed object storage for file attachments -- **Redis Cluster**: Distributed caching and session storage -- **Backup Strategy**: Automated backups with point-in-time recovery - -#### Observability and Operations -- **Structured Logging**: JSON logging with correlation IDs for distributed tracing -- **Metrics Collection**: Prometheus-compatible metrics for monitoring -- **Health Checks**: Kubernetes-native readiness and liveness probes -- **Distributed Tracing**: OpenTelemetry integration for request flow analysis - -### High-Level Architecture Diagram -``` -┌─────────────────────────────────────────────────────────────────┐ -│ Kubernetes Cluster │ -├─────────────────────────────────────────────────────────────────┤ -│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ -│ │ MotoVault │ │ MotoVault │ │ MotoVault │ │ -│ │ Pod (1) │ │ Pod (2) │ │ Pod (3) │ │ -│ │ │ │ │ │ │ │ -│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ -│ │ │ │ │ -│ ┌─────────────────────────────────────────────────────────────┐ │ -│ │ Load Balancer Service │ │ -│ └─────────────────────────────────────────────────────────────┘ │ -│ │ │ │ │ -├───────────┼─────────────────────┼─────────────────────┼──────────┤ -│ ┌────────▼──────┐ ┌─────────▼──────┐ ┌─────────▼──────┐ │ -│ │ PostgreSQL │ │ Redis Cluster │ │ MinIO Cluster │ │ -│ │ Primary │ │ (3 nodes) │ │ (4+ nodes) │ │ -│ │ + 2 Replicas │ │ │ │ Erasure Coded │ │ -│ └───────────────┘ └────────────────┘ └────────────────┘ │ -└─────────────────────────────────────────────────────────────────┘ -``` - -## Implementation Phases Overview - -The modernization is structured in four distinct phases, each building upon the previous phase to ensure a smooth and risk-managed transition: - -### [Phase 1: Core Kubernetes Readiness](K8S-PHASE-1.md) (Weeks 1-4) - -**Objective**: Make the application compatible with Kubernetes deployment patterns. - -**Key Deliverables**: -- Configuration externalization to ConfigMaps and Secrets -- Removal of LiteDB dependencies -- PostgreSQL connection pooling optimization -- Kubernetes health check endpoints -- Structured logging implementation - -**Success Criteria**: -- Application starts using only environment variables -- Health checks return appropriate status codes -- Database migrations work seamlessly -- Structured JSON logging operational - -### [Phase 2: High Availability Infrastructure](K8S-PHASE-2.md) (Weeks 5-8) - -**Objective**: Deploy highly available supporting infrastructure. - -**Key Deliverables**: -- MinIO distributed object storage cluster -- File storage abstraction layer -- PostgreSQL HA cluster with automated failover -- Redis cluster for distributed sessions and caching -- Comprehensive monitoring setup - -**Success Criteria**: -- MinIO cluster operational with erasure coding -- PostgreSQL cluster with automatic failover -- Redis cluster providing distributed sessions -- All file operations using object storage -- Infrastructure monitoring and alerting active - -### [Phase 3: Production Deployment](K8S-PHASE-3.md) (Weeks 9-12) - -**Objective**: Deploy to production with security, monitoring, and backup strategies. - -**Key Deliverables**: -- Production Kubernetes manifests with HPA -- Secure ingress with automated TLS certificates -- Comprehensive application and infrastructure monitoring -- Automated backup and disaster recovery procedures -- Migration tools and procedures - -**Success Criteria**: -- Production deployment with 99.9% availability target -- Secure external access with TLS -- Monitoring dashboards and alerting operational -- Backup and recovery procedures validated -- Migration dry runs successful - -### [Phase 4: Advanced Features and Optimization](K8S-PHASE-4.md) (Weeks 13-16) - -**Objective**: Implement advanced features and optimize for scale and performance. - -**Key Deliverables**: -- Multi-layer caching (Memory, Redis, CDN) -- Advanced performance optimizations -- Enhanced security features and compliance -- Production migration execution -- Operational excellence and automation - -**Success Criteria**: -- Multi-layer caching reducing database load by 70% -- 95th percentile response time under 500ms -- Zero-downtime production migration completed -- Advanced security policies implemented -- Team trained on new operational procedures - -## Migration Strategy - -### Pre-Migration Assessment -1. **Data Inventory**: Catalog all existing data, configurations, and file attachments -2. **Dependency Mapping**: Identify all external dependencies and integrations -3. **Performance Baseline**: Establish current performance metrics for comparison -4. **User Impact Assessment**: Analyze potential downtime and user experience changes - -### Migration Execution Plan - -#### Blue-Green Deployment Strategy -- Parallel environment setup to minimize risk -- Gradual traffic migration with automated rollback -- Comprehensive validation at each step -- Minimal downtime through DNS cutover - -#### Data Migration Approach -- Initial bulk data migration during low-usage periods -- Incremental synchronization during cutover -- Automated validation and integrity checks -- Point-in-time recovery capabilities - -## Risk Assessment and Mitigation - -### High Impact Risks - -**Data Loss or Corruption** -- **Probability**: Low | **Impact**: Critical -- **Mitigation**: Multiple backup strategies, parallel systems, automated validation - -**Extended Downtime During Migration** -- **Probability**: Medium | **Impact**: High -- **Mitigation**: Blue-green deployment, comprehensive rollback procedures - -**Performance Degradation** -- **Probability**: Medium | **Impact**: Medium -- **Mitigation**: Load testing, performance monitoring, auto-scaling - -### Mitigation Strategies -- Comprehensive testing at each phase -- Automated rollback procedures -- Parallel running systems during transition -- 24/7 monitoring during critical periods - -## Success Metrics - -### Technical Success Criteria -- **Availability**: 99.9% uptime (≤ 8.76 hours downtime/year) -- **Performance**: 95th percentile response time < 500ms -- **Scalability**: Handle 10x current user load -- **Recovery**: RTO < 1 hour, RPO < 15 minutes - -### Operational Success Criteria -- **Deployment Frequency**: Weekly deployments with zero downtime -- **Mean Time to Recovery**: < 30 minutes for critical issues -- **Change Failure Rate**: < 5% of deployments require rollback -- **Monitoring Coverage**: 100% of critical services monitored - -### Business Success Criteria -- **User Satisfaction**: No degradation in user experience -- **Cost Efficiency**: Infrastructure costs within 20% of current spending -- **Maintenance Overhead**: 50% reduction in operational maintenance time -- **Future Readiness**: Foundation for advanced features and scaling - -## Implementation Timeline - -### 16-Week Detailed Schedule - -**Weeks 1-4**: [Phase 1 - Core Kubernetes Readiness](K8S-PHASE-1.md) -- Application configuration externalization -- Database architecture modernization -- Health checks and logging implementation - -**Weeks 5-8**: [Phase 2 - High Availability Infrastructure](K8S-PHASE-2.md) -- MinIO and PostgreSQL HA deployment -- File storage abstraction -- Redis cluster implementation - -**Weeks 9-12**: [Phase 3 - Production Deployment](K8S-PHASE-3.md) -- Production Kubernetes deployment -- Security and monitoring implementation -- Backup and recovery procedures - -**Weeks 13-16**: [Phase 4 - Advanced Features](K8S-PHASE-4.md) -- Performance optimization -- Security enhancements -- Production migration execution - -## Team Requirements - -### Skills and Training -- **Kubernetes Administration**: Container orchestration and cluster management -- **Cloud-Native Development**: Microservices patterns and distributed systems -- **Monitoring and Observability**: Prometheus, Grafana, and logging systems -- **Security**: Container security, network policies, and secret management - -### Operational Procedures -- **Deployment Automation**: CI/CD pipelines and GitOps workflows -- **Incident Response**: Monitoring, alerting, and escalation procedures -- **Backup and Recovery**: Automated backup validation and recovery testing -- **Performance Management**: Capacity planning and scaling procedures - -## Getting Started - -### Prerequisites -- Kubernetes cluster (development/staging/production) -- Container registry for Docker images -- Persistent storage classes -- Network policies and ingress controller -- Monitoring infrastructure (Prometheus/Grafana) - -### Phase 1 Quick Start -1. Review [Phase 1 implementation guide](K8S-PHASE-1.md) -2. Set up development Kubernetes environment -3. Create ConfigMap and Secret templates -4. Begin application configuration externalization -5. Remove LiteDB dependencies - -### Next Steps -After completing Phase 1, proceed with: -- [Phase 2: High Availability Infrastructure](K8S-PHASE-2.md) -- [Phase 3: Production Deployment](K8S-PHASE-3.md) -- [Phase 4: Advanced Features and Optimization](K8S-PHASE-4.md) - -## Support and Documentation - -### Additional Resources -- **Architecture Documentation**: See [docs/architecture.md](docs/architecture.md) -- **Development Guidelines**: Follow existing code conventions and patterns -- **Testing Strategy**: Comprehensive testing at each phase -- **Security Guidelines**: Container and Kubernetes security best practices - -### Team Contacts -- **Project Lead**: Kubernetes modernization coordination -- **DevOps Team**: Infrastructure and deployment automation -- **Security Team**: Security policies and compliance validation -- **QA Team**: Testing and validation procedures - ---- - -**Document Version**: 1.0 -**Last Updated**: January 2025 -**Status**: Implementation Ready - -This comprehensive modernization plan provides a structured approach to transforming MotoVaultPro into a cloud-native, highly available application running on Kubernetes. Each phase builds upon the previous one, ensuring minimal risk while delivering maximum benefits for future growth and reliability. \ No newline at end of file diff --git a/docs/K8S-PHASE-1-DETAILED.md b/docs/K8S-PHASE-1-DETAILED.md deleted file mode 100644 index 6025cf2..0000000 --- a/docs/K8S-PHASE-1-DETAILED.md +++ /dev/null @@ -1,3416 +0,0 @@ -# Phase 1: Core Kubernetes Readiness - Detailed Implementation Plan - -## Executive Summary - -This document provides a comprehensive, step-by-step implementation plan for Phase 1 that ensures minimal risk through incremental changes, thorough testing, and debugging at each step. Each change is isolated, tested, and verified before proceeding to the next step. - -## Improved Implementation Strategy - -### Key Principles -1. **One Change at a Time**: Each step focuses on a single, well-defined change -2. **Non-Destructive First**: Start with safest changes that don't affect data or core functionality -3. **Comprehensive Testing**: Automated and manual validation at each step -4. **Rollback Ready**: Every change includes a rollback procedure -5. **Debugging First**: Extensive debugging and diagnostic capabilities before making changes -6. **Continuous Validation**: Performance and functionality validation throughout - -### Risk Mitigation Improvements -- **Comprehensive Logging**: Extensive structured logging for troubleshooting -- **Feature Flags**: Enable/disable new functionality without code changes -- **Automated Testing**: Comprehensive test suite validation at each step -- **Performance Monitoring**: Baseline and continuous performance validation -- **User Experience**: Functional testing ensures no user-facing regressions - -## Step-by-Step Implementation Plan - -### Step 1: Structured Logging Implementation -**Duration**: 2-3 days -**Risk Level**: Low -**Rollback Complexity**: Simple - -#### Objective -Implement structured JSON logging to improve observability during subsequent changes. - -#### Implementation - -```csharp -// 1.1: Add logging configuration (Program.cs) -builder.Services.AddLogging(loggingBuilder => -{ - loggingBuilder.ClearProviders(); - - if (builder.Environment.IsDevelopment()) - { - loggingBuilder.AddConsole(); - } - else - { - loggingBuilder.AddJsonConsole(options => - { - options.IncludeScopes = true; - options.TimestampFormat = "yyyy-MM-ddTHH:mm:ss.fffZ"; - options.JsonWriterOptions = new JsonWriterOptions { Indented = false }; - }); - } -}); - -// 1.2: Add correlation ID service -public class CorrelationIdService -{ - public string CorrelationId { get; } = Guid.NewGuid().ToString(); -} - -// 1.3: Add correlation ID middleware -public class CorrelationIdMiddleware -{ - private readonly RequestDelegate _next; - private readonly ILogger _logger; - - public async Task InvokeAsync(HttpContext context) - { - var correlationId = context.Request.Headers["X-Correlation-ID"] - .FirstOrDefault() ?? Guid.NewGuid().ToString(); - - context.Items["CorrelationId"] = correlationId; - context.Response.Headers.Add("X-Correlation-ID", correlationId); - - using var scope = _logger.BeginScope(new Dictionary - { - ["CorrelationId"] = correlationId, - ["RequestPath"] = context.Request.Path, - ["RequestMethod"] = context.Request.Method - }); - - await _next(context); - } -} -``` - -#### Testing Plan - -**Automated Tests**: -```csharp -[Test] -public async Task StructuredLogging_ProducesValidJson() -{ - // Arrange - var logOutput = new StringWriter(); - var logger = CreateTestLogger(logOutput); - - // Act - logger.LogInformation("Test message", new { TestProperty = "TestValue" }); - - // Assert - var logEntry = JsonSerializer.Deserialize(logOutput.ToString()); - Assert.IsNotNull(logEntry.Timestamp); - Assert.AreEqual("Information", logEntry.Level); - Assert.Contains("Test message", logEntry.Message); -} - -[Test] -public async Task CorrelationId_PreservedAcrossRequests() -{ - // Test that correlation ID flows through request pipeline - var client = _factory.CreateClient(); - var correlationId = Guid.NewGuid().ToString(); - - client.DefaultRequestHeaders.Add("X-Correlation-ID", correlationId); - var response = await client.GetAsync("/health"); - - Assert.AreEqual(correlationId, response.Headers.GetValues("X-Correlation-ID").First()); -} -``` - -**Manual Validation**: -1. Start application and verify JSON log format in console -2. Make HTTP requests and verify correlation IDs in logs -3. Check log aggregation works with external tools -4. Verify existing functionality unchanged - -**Success Criteria**: -- [ ] All logs output in structured JSON format -- [ ] Correlation IDs generated and preserved -- [ ] No existing functionality affected -- [ ] Performance impact < 5ms per request - -**Rollback Procedure**: -```bash -# Revert logging configuration -git checkout HEAD~1 -- Program.cs -# Remove middleware registration -# Restart application -``` - ---- - -### Step 2: Health Check Infrastructure -**Duration**: 2-3 days -**Risk Level**: Low -**Rollback Complexity**: Simple - -#### Objective -Implement comprehensive health check endpoints for Kubernetes readiness and liveness probes. - -#### Implementation - -```csharp -// 2.1: Add health check services -public class DatabaseHealthCheck : IHealthCheck -{ - private readonly IConfiguration _configuration; - private readonly ILogger _logger; - - public async Task CheckHealthAsync( - HealthCheckContext context, - CancellationToken cancellationToken = default) - { - try - { - var connectionString = _configuration.GetConnectionString("DefaultConnection"); - - if (connectionString?.Contains("LiteDB") == true) - { - return await CheckLiteDBHealthAsync(connectionString); - } - else if (!string.IsNullOrEmpty(connectionString)) - { - return await CheckPostgreSQLHealthAsync(connectionString, cancellationToken); - } - - return HealthCheckResult.Unhealthy("No database configuration found"); - } - catch (Exception ex) - { - _logger.LogError(ex, "Database health check failed"); - return HealthCheckResult.Unhealthy("Database health check failed", ex); - } - } - - private async Task CheckPostgreSQLHealthAsync( - string connectionString, - CancellationToken cancellationToken) - { - using var connection = new NpgsqlConnection(connectionString); - await connection.OpenAsync(cancellationToken); - - using var command = new NpgsqlCommand("SELECT 1", connection); - var result = await command.ExecuteScalarAsync(cancellationToken); - - return HealthCheckResult.Healthy($"PostgreSQL connection successful. Result: {result}"); - } - - private async Task CheckLiteDBHealthAsync(string connectionString) - { - try - { - using var db = new LiteDatabase(connectionString); - var collections = db.GetCollectionNames().ToList(); - return HealthCheckResult.Healthy($"LiteDB connection successful. Collections: {collections.Count}"); - } - catch (Exception ex) - { - return HealthCheckResult.Unhealthy("LiteDB connection failed", ex); - } - } -} - -// 2.2: Add application health check -public class ApplicationHealthCheck : IHealthCheck -{ - private readonly IServiceProvider _serviceProvider; - - public async Task CheckHealthAsync( - HealthCheckContext context, - CancellationToken cancellationToken = default) - { - try - { - // Verify essential services are available - var vehicleLogic = _serviceProvider.GetService(); - var userLogic = _serviceProvider.GetService(); - - if (vehicleLogic == null || userLogic == null) - { - return HealthCheckResult.Unhealthy("Essential services not available"); - } - - return HealthCheckResult.Healthy("Application services available"); - } - catch (Exception ex) - { - return HealthCheckResult.Unhealthy("Application health check failed", ex); - } - } -} - -// 2.3: Configure health checks in Program.cs -builder.Services.AddHealthChecks() - .AddCheck("database", tags: new[] { "ready", "db" }) - .AddCheck("application", tags: new[] { "ready", "app" }); - -// 2.4: Add health check endpoints -app.MapHealthChecks("/health/live", new HealthCheckOptions -{ - Predicate = _ => false, // Only checks if the app is running - ResponseWriter = async (context, report) => - { - context.Response.ContentType = "application/json"; - var response = new - { - status = "Healthy", - timestamp = DateTime.UtcNow, - uptime = DateTime.UtcNow - Process.GetCurrentProcess().StartTime - }; - await context.Response.WriteAsync(JsonSerializer.Serialize(response)); - } -}); - -app.MapHealthChecks("/health/ready", new HealthCheckOptions -{ - Predicate = check => check.Tags.Contains("ready"), - ResponseWriter = async (context, report) => - { - context.Response.ContentType = "application/json"; - var response = new - { - status = report.Status.ToString(), - timestamp = DateTime.UtcNow, - checks = report.Entries.Select(x => new - { - name = x.Key, - status = x.Value.Status.ToString(), - description = x.Value.Description, - duration = x.Value.Duration.TotalMilliseconds - }) - }; - await context.Response.WriteAsync(JsonSerializer.Serialize(response)); - } -}); -``` - -#### Testing Plan - -**Automated Tests**: -```csharp -[Test] -public async Task HealthCheck_Live_ReturnsHealthy() -{ - var client = _factory.CreateClient(); - var response = await client.GetAsync("/health/live"); - - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); - - var content = await response.Content.ReadAsStringAsync(); - var healthResponse = JsonSerializer.Deserialize(content); - - Assert.AreEqual("Healthy", healthResponse.Status); - Assert.IsTrue(healthResponse.Uptime > TimeSpan.Zero); -} - -[Test] -public async Task HealthCheck_Ready_ValidatesAllServices() -{ - var client = _factory.CreateClient(); - var response = await client.GetAsync("/health/ready"); - - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); - - var content = await response.Content.ReadAsStringAsync(); - var healthResponse = JsonSerializer.Deserialize(content); - - Assert.Contains(healthResponse.Checks, c => c.Name == "database"); - Assert.Contains(healthResponse.Checks, c => c.Name == "application"); -} - -[Test] -public async Task HealthCheck_DatabaseFailure_ReturnsUnhealthy() -{ - // Test with invalid connection string - var factory = CreateTestFactory(invalidConnectionString: true); - var client = factory.CreateClient(); - - var response = await client.GetAsync("/health/ready"); - Assert.AreEqual(HttpStatusCode.ServiceUnavailable, response.StatusCode); -} -``` - -**Manual Validation**: -1. Verify `/health/live` returns 200 OK with JSON response -2. Verify `/health/ready` returns detailed health information -3. Test with database disconnected - should return 503 -4. Verify health checks work with both LiteDB and PostgreSQL -5. Test health check performance (< 100ms response time) - -**Success Criteria**: -- [ ] Health endpoints return appropriate HTTP status codes -- [ ] JSON responses contain required health information -- [ ] Database connectivity properly validated -- [ ] Health checks complete within 100ms -- [ ] Unhealthy conditions properly detected - ---- - -### Step 3: Configuration Framework Enhancement -**Duration**: 2-3 days -**Risk Level**: Low -**Rollback Complexity**: Simple - -#### Objective -Enhance configuration framework to support both file-based and environment variable configuration. - -#### Implementation - -```csharp -// 3.1: Create configuration validation service -public class ConfigurationValidationService -{ - private readonly IConfiguration _configuration; - private readonly ILogger _logger; - - public ValidationResult ValidateConfiguration() - { - var result = new ValidationResult(); - - // Database configuration - ValidateDatabaseConfiguration(result); - - // Application configuration - ValidateApplicationConfiguration(result); - - // External service configuration - ValidateExternalServiceConfiguration(result); - - return result; - } - - private void ValidateDatabaseConfiguration(ValidationResult result) - { - var postgresConnection = _configuration.GetConnectionString("DefaultConnection"); - var liteDbPath = _configuration["LiteDB:DatabasePath"]; - - if (string.IsNullOrEmpty(postgresConnection) && string.IsNullOrEmpty(liteDbPath)) - { - result.AddError("Database", "No database configuration found"); - } - - if (!string.IsNullOrEmpty(postgresConnection)) - { - try - { - var builder = new NpgsqlConnectionStringBuilder(postgresConnection); - if (string.IsNullOrEmpty(builder.Database)) - { - result.AddWarning("Database", "PostgreSQL database name not specified"); - } - } - catch (Exception ex) - { - result.AddError("Database", $"Invalid PostgreSQL connection string: {ex.Message}"); - } - } - } - - private void ValidateApplicationConfiguration(ValidationResult result) - { - var appName = _configuration["App:Name"]; - if (string.IsNullOrEmpty(appName)) - { - result.AddWarning("Application", "Application name not configured"); - } - - var logLevel = _configuration["Logging:LogLevel:Default"]; - if (!IsValidLogLevel(logLevel)) - { - result.AddWarning("Logging", $"Invalid log level: {logLevel}"); - } - } - - private void ValidateExternalServiceConfiguration(ValidationResult result) - { - // Validate email configuration if enabled - var emailEnabled = _configuration.GetValue("Email:Enabled"); - if (emailEnabled) - { - var smtpServer = _configuration["Email:SmtpServer"]; - if (string.IsNullOrEmpty(smtpServer)) - { - result.AddError("Email", "SMTP server required when email is enabled"); - } - } - - // Validate OIDC configuration if enabled - var oidcEnabled = _configuration.GetValue("Authentication:OpenIDConnect:Enabled"); - if (oidcEnabled) - { - var authority = _configuration["Authentication:OpenIDConnect:Authority"]; - var clientId = _configuration["Authentication:OpenIDConnect:ClientId"]; - - if (string.IsNullOrEmpty(authority) || string.IsNullOrEmpty(clientId)) - { - result.AddError("OIDC", "Authority and ClientId required for OpenID Connect"); - } - } - } -} - -// 3.2: Create startup configuration validation -public class StartupConfigurationValidator : IHostedService -{ - private readonly ConfigurationValidationService _validator; - private readonly ILogger _logger; - private readonly IHostApplicationLifetime _lifetime; - - public async Task StartAsync(CancellationToken cancellationToken) - { - _logger.LogInformation("Validating application configuration..."); - - var result = _validator.ValidateConfiguration(); - - foreach (var warning in result.Warnings) - { - _logger.LogWarning("Configuration warning: {Category}: {Message}", - warning.Category, warning.Message); - } - - if (result.HasErrors) - { - foreach (var error in result.Errors) - { - _logger.LogError("Configuration error: {Category}: {Message}", - error.Category, error.Message); - } - - _logger.LogCritical("Application startup failed due to configuration errors"); - _lifetime.StopApplication(); - return; - } - - _logger.LogInformation("Configuration validation completed successfully"); - } - - public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask; -} - -// 3.3: Enhanced configuration builder -public static class ConfigurationBuilderExtensions -{ - public static IConfigurationBuilder AddMotoVaultConfiguration( - this IConfigurationBuilder builder, - IWebHostEnvironment environment) - { - // Base configuration files - builder.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); - builder.AddJsonFile($"appsettings.{environment.EnvironmentName}.json", - optional: true, reloadOnChange: true); - - // Environment variables with prefix - builder.AddEnvironmentVariables("MOTOVAULT_"); - - // Standard environment variables for compatibility - builder.AddEnvironmentVariables(); - - return builder; - } -} - -// 3.4: Register services -builder.Services.AddSingleton(); -builder.Services.AddHostedService(); -``` - -#### Testing Plan - -**Automated Tests**: -```csharp -[Test] -public void ConfigurationValidation_ValidConfiguration_ReturnsSuccess() -{ - var configuration = CreateTestConfiguration(new Dictionary - { - ["ConnectionStrings:DefaultConnection"] = "Host=localhost;Database=test;Username=test;Password=test", - ["App:Name"] = "MotoVaultPro", - ["Logging:LogLevel:Default"] = "Information" - }); - - var validator = new ConfigurationValidationService(configuration, Mock.Of>()); - var result = validator.ValidateConfiguration(); - - Assert.IsFalse(result.HasErrors); - Assert.AreEqual(0, result.Errors.Count); -} - -[Test] -public void ConfigurationValidation_MissingDatabase_ReturnsError() -{ - var configuration = CreateTestConfiguration(new Dictionary - { - ["App:Name"] = "MotoVaultPro" - }); - - var validator = new ConfigurationValidationService(configuration, Mock.Of>()); - var result = validator.ValidateConfiguration(); - - Assert.IsTrue(result.HasErrors); - Assert.Contains(result.Errors, e => e.Category == "Database"); -} - -[Test] -public async Task StartupValidator_InvalidConfiguration_StopsApplication() -{ - var mockLifetime = new Mock(); - var validator = CreateStartupValidator(invalidConfig: true, mockLifetime.Object); - - await validator.StartAsync(CancellationToken.None); - - mockLifetime.Verify(x => x.StopApplication(), Times.Once); -} -``` - -**Manual Validation**: -1. Start application with valid configuration - should start normally -2. Start with missing database configuration - should fail with clear error -3. Start with invalid PostgreSQL connection string - should fail -4. Test environment variable override of JSON configuration -5. Verify configuration warnings are logged but don't stop startup - -**Success Criteria**: -- [ ] Configuration validation runs at startup -- [ ] Invalid configuration prevents application startup -- [ ] Clear error messages for configuration issues -- [ ] Environment variables properly override JSON settings -- [ ] Existing functionality unchanged - ---- - -### Step 4: Configuration Externalization -**Duration**: 3-4 days -**Risk Level**: Medium -**Rollback Complexity**: Moderate - -#### Objective -Externalize configuration to support Kubernetes ConfigMaps and Secrets while maintaining compatibility. - -#### Implementation - -```csharp -// 4.1: Create Kubernetes configuration extensions -public static class KubernetesConfigurationExtensions -{ - public static IConfigurationBuilder AddKubernetesConfiguration( - this IConfigurationBuilder builder) - { - // Check if running in Kubernetes - var kubernetesServiceHost = Environment.GetEnvironmentVariable("KUBERNETES_SERVICE_HOST"); - if (!string.IsNullOrEmpty(kubernetesServiceHost)) - { - builder.AddKubernetesSecrets(); - builder.AddKubernetesConfigMaps(); - } - - return builder; - } - - private static IConfigurationBuilder AddKubernetesSecrets(this IConfigurationBuilder builder) - { - var secretsPath = "/var/secrets"; - if (Directory.Exists(secretsPath)) - { - foreach (var secretFile in Directory.GetFiles(secretsPath)) - { - var key = Path.GetFileName(secretFile); - var value = File.ReadAllText(secretFile); - builder.AddInMemoryCollection(new[] { new KeyValuePair(key, value) }); - } - } - return builder; - } - - private static IConfigurationBuilder AddKubernetesConfigMaps(this IConfigurationBuilder builder) - { - var configPath = "/var/config"; - if (Directory.Exists(configPath)) - { - foreach (var configFile in Directory.GetFiles(configPath)) - { - var key = Path.GetFileName(configFile); - var value = File.ReadAllText(configFile); - builder.AddInMemoryCollection(new[] { new KeyValuePair(key, value) }); - } - } - return builder; - } -} - -// 4.2: Create configuration mapping service -public class ConfigurationMappingService -{ - private readonly IConfiguration _configuration; - - public DatabaseConfiguration GetDatabaseConfiguration() - { - return new DatabaseConfiguration - { - PostgreSQLConnectionString = GetConnectionString("POSTGRES_CONNECTION", "ConnectionStrings:DefaultConnection"), - LiteDBPath = GetConfigValue("LITEDB_PATH", "LiteDB:DatabasePath"), - CommandTimeout = GetConfigValue("DB_COMMAND_TIMEOUT", "Database:CommandTimeout", 30), - MaxPoolSize = GetConfigValue("DB_MAX_POOL_SIZE", "Database:MaxPoolSize", 100), - MinPoolSize = GetConfigValue("DB_MIN_POOL_SIZE", "Database:MinPoolSize", 10) - }; - } - - public ApplicationConfiguration GetApplicationConfiguration() - { - return new ApplicationConfiguration - { - Name = GetConfigValue("APP_NAME", "App:Name", "MotoVaultPro"), - Environment = GetConfigValue("ASPNETCORE_ENVIRONMENT", "App:Environment", "Production"), - LogLevel = GetConfigValue("LOG_LEVEL", "Logging:LogLevel:Default", "Information"), - EnableFeatures = GetConfigValue("ENABLE_FEATURES", "App:EnableFeatures", "").Split(','), - CacheExpiryMinutes = GetConfigValue("CACHE_EXPIRY_MINUTES", "App:CacheExpiryMinutes", 30) - }; - } - - public EmailConfiguration GetEmailConfiguration() - { - return new EmailConfiguration - { - Enabled = GetConfigValue("EMAIL_ENABLED", "Email:Enabled", false), - SmtpServer = GetConfigValue("EMAIL_SMTP_SERVER", "Email:SmtpServer"), - SmtpPort = GetConfigValue("EMAIL_SMTP_PORT", "Email:SmtpPort", 587), - Username = GetConfigValue("EMAIL_USERNAME", "Email:Username"), - Password = GetConfigValue("EMAIL_PASSWORD", "Email:Password"), - FromAddress = GetConfigValue("EMAIL_FROM_ADDRESS", "Email:FromAddress"), - EnableSsl = GetConfigValue("EMAIL_ENABLE_SSL", "Email:EnableSsl", true) - }; - } - - private string GetConnectionString(string envKey, string configKey) - { - return _configuration[envKey] ?? _configuration.GetConnectionString(configKey); - } - - private string GetConfigValue(string envKey, string configKey, string defaultValue = null) - { - return _configuration[envKey] ?? _configuration[configKey] ?? defaultValue; - } - - private T GetConfigValue(string envKey, string configKey, T defaultValue = default) - { - var value = _configuration[envKey] ?? _configuration[configKey]; - if (string.IsNullOrEmpty(value)) - return defaultValue; - - return (T)Convert.ChangeType(value, typeof(T)); - } -} - -// 4.3: Create configuration models -public class DatabaseConfiguration -{ - public string PostgreSQLConnectionString { get; set; } - public string LiteDBPath { get; set; } - public int CommandTimeout { get; set; } - public int MaxPoolSize { get; set; } - public int MinPoolSize { get; set; } -} - -public class ApplicationConfiguration -{ - public string Name { get; set; } - public string Environment { get; set; } - public string LogLevel { get; set; } - public string[] EnableFeatures { get; set; } - public int CacheExpiryMinutes { get; set; } -} - -public class EmailConfiguration -{ - public bool Enabled { get; set; } - public string SmtpServer { get; set; } - public int SmtpPort { get; set; } - public string Username { get; set; } - public string Password { get; set; } - public string FromAddress { get; set; } - public bool EnableSsl { get; set; } -} - -// 4.4: Update Program.cs configuration -var builder = WebApplication.CreateBuilder(args); - -// Enhanced configuration setup -builder.Configuration - .AddMotoVaultConfiguration(builder.Environment) - .AddKubernetesConfiguration(); - -// Register configuration services -builder.Services.AddSingleton(); -builder.Services.Configure(config => - config = builder.Services.GetRequiredService().GetDatabaseConfiguration()); -``` - -#### Testing Plan - -**Automated Tests**: -```csharp -[Test] -public void ConfigurationMapping_EnvironmentVariableOverride_TakesPrecedence() -{ - Environment.SetEnvironmentVariable("APP_NAME", "TestApp"); - var configuration = CreateTestConfiguration(new Dictionary - { - ["App:Name"] = "ConfigApp" - }); - - var mapper = new ConfigurationMappingService(configuration); - var appConfig = mapper.GetApplicationConfiguration(); - - Assert.AreEqual("TestApp", appConfig.Name); - - Environment.SetEnvironmentVariable("APP_NAME", null); // Cleanup -} - -[Test] -public void KubernetesConfiguration_SecretsPath_LoadsSecrets() -{ - // Create temporary secrets directory - var secretsPath = Path.Combine(Path.GetTempPath(), "secrets"); - Directory.CreateDirectory(secretsPath); - File.WriteAllText(Path.Combine(secretsPath, "POSTGRES_CONNECTION"), "test-connection-string"); - - try - { - Environment.SetEnvironmentVariable("KUBERNETES_SERVICE_HOST", "localhost"); - var builder = new ConfigurationBuilder(); - builder.AddKubernetesConfiguration(); - var configuration = builder.Build(); - - Assert.AreEqual("test-connection-string", configuration["POSTGRES_CONNECTION"]); - } - finally - { - Directory.Delete(secretsPath, true); - Environment.SetEnvironmentVariable("KUBERNETES_SERVICE_HOST", null); - } -} - -[Test] -public async Task Application_StartupWithExternalizedConfig_Succeeds() -{ - var factory = new WebApplicationFactory() - .WithWebHostBuilder(builder => - { - builder.UseEnvironment("Testing"); - builder.ConfigureAppConfiguration((context, config) => - { - config.AddInMemoryCollection(new[] - { - new KeyValuePair("POSTGRES_CONNECTION", "Host=localhost;Database=test;Username=test;Password=test"), - new KeyValuePair("APP_NAME", "TestApp") - }); - }); - }); - - var client = factory.CreateClient(); - var response = await client.GetAsync("/health/ready"); - - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); -} -``` - -**Kubernetes Manifests for Testing**: -```yaml -# test-configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: motovault-config-test -data: - APP_NAME: "MotoVaultPro" - LOG_LEVEL: "Information" - CACHE_EXPIRY_MINUTES: "30" - ENABLE_FEATURES: "OpenIDConnect,EmailNotifications" - ---- -# test-secret.yaml -apiVersion: v1 -kind: Secret -metadata: - name: motovault-secrets-test -type: Opaque -data: - POSTGRES_CONNECTION: - EMAIL_PASSWORD: - JWT_SECRET: - ---- -# test-deployment.yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: motovault-config-test -spec: - replicas: 1 - selector: - matchLabels: - app: motovault-test - template: - spec: - containers: - - name: motovault - image: motovault:test - envFrom: - - configMapRef: - name: motovault-config-test - - secretRef: - name: motovault-secrets-test - volumeMounts: - - name: config-volume - mountPath: /var/config - - name: secrets-volume - mountPath: /var/secrets - volumes: - - name: config-volume - configMap: - name: motovault-config-test - - name: secrets-volume - secret: - secretName: motovault-secrets-test -``` - -**Manual Validation**: -1. Test with environment variables only - application should start -2. Test with JSON configuration only - application should start -3. Test with Kubernetes ConfigMap/Secret simulation - application should start -4. Verify environment variables override JSON configuration -5. Test configuration validation with externalized config -6. Deploy to test Kubernetes environment and verify functionality - -**Success Criteria**: -- [ ] Application starts with environment variables only -- [ ] Kubernetes ConfigMap/Secret integration works -- [ ] Environment variables override JSON configuration -- [ ] Configuration validation works with externalized config -- [ ] All existing functionality preserved -- [ ] No hardcoded configuration remains in code - ---- - -### Step 5: PostgreSQL Connection Optimization -**Duration**: 2-3 days -**Risk Level**: Low -**Rollback Complexity**: Simple - -#### Objective -Optimize PostgreSQL connections for high availability and performance without affecting LiteDB functionality. - -#### Implementation - -```csharp -// 5.1: Enhanced PostgreSQL configuration -public class PostgreSQLConnectionService -{ - private readonly DatabaseConfiguration _config; - private readonly ILogger _logger; - private readonly IHostEnvironment _environment; - - public NpgsqlConnectionStringBuilder CreateOptimizedConnectionString() - { - var builder = new NpgsqlConnectionStringBuilder(_config.PostgreSQLConnectionString); - - // Connection pooling optimization - builder.MaxPoolSize = _config.MaxPoolSize; - builder.MinPoolSize = _config.MinPoolSize; - builder.ConnectionLifetime = 300; // 5 minutes - builder.ConnectionIdleLifetime = 300; // 5 minutes - builder.ConnectionPruningInterval = 10; // 10 seconds - - // Performance optimization - builder.CommandTimeout = _config.CommandTimeout; - builder.NoResetOnClose = true; - builder.Enlist = false; // Disable distributed transactions for performance - - // Reliability settings - builder.KeepAlive = 30; // 30 seconds - builder.TcpKeepAliveTime = 30; - builder.TcpKeepAliveInterval = 5; - - // Application name for monitoring - builder.ApplicationName = $"{_config.ApplicationName}-{_environment.EnvironmentName}"; - - _logger.LogInformation("PostgreSQL connection configured: Pool({MinPoolSize}-{MaxPoolSize}), Timeout({CommandTimeout}s)", - builder.MinPoolSize, builder.MaxPoolSize, builder.CommandTimeout); - - return builder; - } - - public async Task TestConnectionAsync(CancellationToken cancellationToken = default) - { - try - { - var connectionString = CreateOptimizedConnectionString().ConnectionString; - using var connection = new NpgsqlConnection(connectionString); - - await connection.OpenAsync(cancellationToken); - - using var command = new NpgsqlCommand("SELECT version()", connection); - var version = await command.ExecuteScalarAsync(cancellationToken); - - _logger.LogInformation("PostgreSQL connection test successful. Version: {Version}", version); - return true; - } - catch (Exception ex) - { - _logger.LogError(ex, "PostgreSQL connection test failed"); - return false; - } - } -} - -// 5.2: Enhanced database context configuration -public static class DatabaseServiceExtensions -{ - public static IServiceCollection AddOptimizedDatabase( - this IServiceCollection services, - DatabaseConfiguration config) - { - if (!string.IsNullOrEmpty(config.PostgreSQLConnectionString)) - { - services.AddOptimizedPostgreSQL(config); - } - else if (!string.IsNullOrEmpty(config.LiteDBPath)) - { - services.AddLiteDB(config); - } - else - { - throw new InvalidOperationException("No database configuration provided"); - } - - return services; - } - - private static IServiceCollection AddOptimizedPostgreSQL( - this IServiceCollection services, - DatabaseConfiguration config) - { - services.AddSingleton(); - - services.AddDbContextFactory((serviceProvider, options) => - { - var connectionService = serviceProvider.GetRequiredService(); - var connectionString = connectionService.CreateOptimizedConnectionString().ConnectionString; - - options.UseNpgsql(connectionString, npgsqlOptions => - { - npgsqlOptions.EnableRetryOnFailure( - maxRetryCount: 3, - maxRetryDelay: TimeSpan.FromSeconds(5), - errorCodesToAdd: null); - - npgsqlOptions.CommandTimeout(config.CommandTimeout); - npgsqlOptions.MigrationsAssembly(typeof(MotoVaultContext).Assembly.FullName); - }); - - // Performance optimizations - options.EnableSensitiveDataLogging(false); - options.EnableServiceProviderCaching(); - options.EnableDetailedErrors(false); - - }, ServiceLifetime.Singleton); - - // Register data access implementations - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - - return services; - } - - private static IServiceCollection AddLiteDB( - this IServiceCollection services, - DatabaseConfiguration config) - { - // Keep existing LiteDB configuration unchanged - services.AddSingleton(provider => - { - var connectionString = $"Filename={config.LiteDBPath};Connection=shared"; - return new LiteDatabase(connectionString); - }); - - // Register LiteDB data access implementations - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - - return services; - } -} - -// 5.3: Connection monitoring service -public class DatabaseConnectionMonitoringService : BackgroundService -{ - private readonly IServiceProvider _serviceProvider; - private readonly ILogger _logger; - private readonly Counter _connectionAttempts; - private readonly Counter _connectionFailures; - private readonly Gauge _activeConnections; - - public DatabaseConnectionMonitoringService(IServiceProvider serviceProvider, ILogger logger) - { - _serviceProvider = serviceProvider; - _logger = logger; - - _connectionAttempts = Metrics.CreateCounter( - "motovault_db_connection_attempts_total", - "Total database connection attempts"); - - _connectionFailures = Metrics.CreateCounter( - "motovault_db_connection_failures_total", - "Total database connection failures"); - - _activeConnections = Metrics.CreateGauge( - "motovault_db_active_connections", - "Number of active database connections"); - } - - protected override async Task ExecuteAsync(CancellationToken stoppingToken) - { - while (!stoppingToken.IsCancellationRequested) - { - await MonitorConnections(); - await Task.Delay(TimeSpan.FromMinutes(1), stoppingToken); - } - } - - private async Task MonitorConnections() - { - try - { - using var scope = _serviceProvider.CreateScope(); - var connectionService = scope.ServiceProvider.GetService(); - - if (connectionService != null) - { - _connectionAttempts.Inc(); - - var isHealthy = await connectionService.TestConnectionAsync(); - if (!isHealthy) - { - _connectionFailures.Inc(); - _logger.LogWarning("Database connection health check failed"); - } - - // Monitor connection pool if available - await MonitorConnectionPool(); - } - } - catch (Exception ex) - { - _logger.LogError(ex, "Error monitoring database connections"); - _connectionFailures.Inc(); - } - } - - private async Task MonitorConnectionPool() - { - // This would require access to Npgsql connection pool metrics - // For now, we'll implement a basic check - try - { - using var scope = _serviceProvider.CreateScope(); - var contextFactory = scope.ServiceProvider.GetService>(); - - if (contextFactory != null) - { - using var context = contextFactory.CreateDbContext(); - var connectionState = context.Database.GetDbConnection().State; - - _logger.LogDebug("Database connection state: {State}", connectionState); - } - } - catch (Exception ex) - { - _logger.LogWarning(ex, "Failed to monitor connection pool"); - } - } -} - -// 5.4: Register services in Program.cs -var databaseConfig = builder.Services.GetRequiredService() - .GetDatabaseConfiguration(); - -builder.Services.AddOptimizedDatabase(databaseConfig); -builder.Services.AddHostedService(); -``` - -#### Testing Plan - -**Automated Tests**: -```csharp -[Test] -public void PostgreSQLConnectionService_CreatesOptimizedConnectionString() -{ - var config = new DatabaseConfiguration - { - PostgreSQLConnectionString = "Host=localhost;Database=test;Username=test;Password=test", - MaxPoolSize = 50, - MinPoolSize = 5, - CommandTimeout = 30 - }; - - var service = new PostgreSQLConnectionService(config, Mock.Of>(), Mock.Of()); - var builder = service.CreateOptimizedConnectionString(); - - Assert.AreEqual(50, builder.MaxPoolSize); - Assert.AreEqual(5, builder.MinPoolSize); - Assert.AreEqual(30, builder.CommandTimeout); - Assert.AreEqual(300, builder.ConnectionLifetime); -} - -[Test] -public async Task PostgreSQLConnectionService_TestConnection_ValidConnection_ReturnsTrue() -{ - var config = CreateValidDatabaseConfiguration(); - var service = new PostgreSQLConnectionService(config, Mock.Of>(), Mock.Of()); - - var result = await service.TestConnectionAsync(); - - Assert.IsTrue(result); -} - -[Test] -public async Task DatabaseServiceExtensions_PostgreSQLConfiguration_RegistersCorrectServices() -{ - var services = new ServiceCollection(); - var config = new DatabaseConfiguration - { - PostgreSQLConnectionString = "Host=localhost;Database=test;Username=test;Password=test" - }; - - services.AddOptimizedDatabase(config); - - var serviceProvider = services.BuildServiceProvider(); - - Assert.IsNotNull(serviceProvider.GetService>()); - Assert.IsNotNull(serviceProvider.GetService()); - Assert.IsInstanceOf(serviceProvider.GetService()); -} - -[Test] -public async Task DatabaseServiceExtensions_LiteDBConfiguration_RegistersCorrectServices() -{ - var services = new ServiceCollection(); - var config = new DatabaseConfiguration - { - LiteDBPath = ":memory:" - }; - - services.AddOptimizedDatabase(config); - - var serviceProvider = services.BuildServiceProvider(); - - Assert.IsNotNull(serviceProvider.GetService()); - Assert.IsInstanceOf(serviceProvider.GetService()); -} -``` - -**Performance Tests**: -```csharp -[Test] -public async Task PostgreSQLConnection_ConcurrentConnections_HandlesLoad() -{ - var config = CreateValidDatabaseConfiguration(); - var service = new PostgreSQLConnectionService(config, Mock.Of>(), Mock.Of()); - - var tasks = Enumerable.Range(0, 20).Select(async i => - { - var stopwatch = Stopwatch.StartNew(); - var result = await service.TestConnectionAsync(); - stopwatch.Stop(); - - return new { Success = result, Duration = stopwatch.ElapsedMilliseconds }; - }); - - var results = await Task.WhenAll(tasks); - - Assert.IsTrue(results.All(r => r.Success)); - Assert.IsTrue(results.All(r => r.Duration < 1000)); // All connections under 1 second -} - -[Test] -public async Task DatabaseContext_ConcurrentQueries_OptimalPerformance() -{ - using var factory = CreateDbContextFactory(); - - var tasks = Enumerable.Range(0, 10).Select(async i => - { - using var context = factory.CreateDbContext(); - var stopwatch = Stopwatch.StartNew(); - - var count = await context.Vehicles.CountAsync(); - - stopwatch.Stop(); - return stopwatch.ElapsedMilliseconds; - }); - - var durations = await Task.WhenAll(tasks); - - Assert.IsTrue(durations.All(d => d < 500)); // All queries under 500ms - Assert.IsTrue(durations.Average() < 200); // Average under 200ms -} -``` - -**Manual Validation**: -1. Test PostgreSQL connection with optimized settings -2. Verify connection pooling behavior under load -3. Test connection recovery after database restart -4. Verify LiteDB functionality remains unchanged -5. Monitor connection metrics during testing -6. Test with both PostgreSQL and LiteDB configurations - -**Success Criteria**: -- [ ] PostgreSQL connections use optimized settings -- [ ] Connection pooling configured correctly -- [ ] Connection monitoring provides metrics -- [ ] LiteDB functionality unchanged -- [ ] Performance improvement measurable -- [ ] Connection recovery works after database restart - ---- - -### Step 6: Database Provider Selection and Debugging Infrastructure -**Duration**: 2-3 days -**Risk Level**: Low -**Rollback Complexity**: Simple - -#### Objective -Implement a clean database provider selection mechanism with comprehensive debugging and diagnostic capabilities. - -#### Implementation - -```csharp -// 6.1: Database provider selector -public enum DatabaseProvider -{ - LiteDB, - PostgreSQL -} - -public class DatabaseProviderService -{ - private readonly DatabaseConfiguration _config; - private readonly ILogger _logger; - - public DatabaseProvider GetActiveProvider() - { - var hasPostgreSQL = !string.IsNullOrEmpty(_config.PostgreSQLConnectionString); - var hasLiteDB = !string.IsNullOrEmpty(_config.LiteDBPath); - - if (hasPostgreSQL) - { - _logger.LogInformation("PostgreSQL database mode enabled. Connection: {ConnectionInfo}", - GetConnectionInfo(_config.PostgreSQLConnectionString)); - return DatabaseProvider.PostgreSQL; - } - - if (hasLiteDB) - { - _logger.LogInformation("LiteDB database mode enabled. Path: {LiteDBPath}", _config.LiteDBPath); - return DatabaseProvider.LiteDB; - } - - throw new InvalidOperationException("No database provider configured"); - } - - private string GetConnectionInfo(string connectionString) - { - try - { - var builder = new NpgsqlConnectionStringBuilder(connectionString); - return $"Host={builder.Host}, Database={builder.Database}, Port={builder.Port}"; - } - catch - { - return "Invalid connection string"; - } - } -} - -// 6.2: Database diagnostics service -public class DatabaseDiagnosticsService -{ - private readonly ILogger _logger; - private readonly DatabaseConfiguration _config; - private readonly DatabaseProviderService _providerService; - - public async Task PerformDiagnosticsAsync() - { - var result = new DatabaseDiagnosticResult(); - var provider = _providerService.GetActiveProvider(); - - _logger.LogInformation("Starting database diagnostics for provider: {Provider}", provider); - - switch (provider) - { - case DatabaseProvider.PostgreSQL: - await DiagnosePostgreSQLAsync(result); - break; - case DatabaseProvider.LiteDB: - await DiagnoseLiteDBAsync(result); - break; - } - - _logger.LogInformation("Database diagnostics completed. Status: {Status}, Issues: {IssueCount}", - result.OverallStatus, result.Issues.Count); - - return result; - } - - private async Task DiagnosePostgreSQLAsync(DatabaseDiagnosticResult result) - { - result.Provider = "PostgreSQL"; - - // Test connection string parsing - try - { - var builder = new NpgsqlConnectionStringBuilder(_config.PostgreSQLConnectionString); - result.ConnectionDetails = new Dictionary - { - ["Host"] = builder.Host, - ["Port"] = builder.Port, - ["Database"] = builder.Database, - ["Username"] = builder.Username, - ["MaxPoolSize"] = builder.MaxPoolSize, - ["MinPoolSize"] = builder.MinPoolSize, - ["CommandTimeout"] = builder.CommandTimeout - }; - _logger.LogDebug("PostgreSQL connection string parsed successfully"); - } - catch (Exception ex) - { - result.Issues.Add($"Invalid PostgreSQL connection string: {ex.Message}"); - _logger.LogError(ex, "Failed to parse PostgreSQL connection string"); - result.OverallStatus = "Failed"; - return; - } - - // Test connectivity - try - { - using var connection = new NpgsqlConnection(_config.PostgreSQLConnectionString); - var stopwatch = Stopwatch.StartNew(); - await connection.OpenAsync(); - stopwatch.Stop(); - - result.ConnectionTime = stopwatch.ElapsedMilliseconds; - _logger.LogDebug("PostgreSQL connection established in {ElapsedMs}ms", stopwatch.ElapsedMilliseconds); - - // Test basic query - using var command = new NpgsqlCommand("SELECT version(), current_database(), current_user", connection); - using var reader = await command.ExecuteReaderAsync(); - - if (await reader.ReadAsync()) - { - result.ServerInfo = new Dictionary - { - ["Version"] = reader.GetString(0), - ["Database"] = reader.GetString(1), - ["User"] = reader.GetString(2) - }; - } - - result.OverallStatus = "Healthy"; - _logger.LogInformation("PostgreSQL diagnostics successful. Version: {Version}", - result.ServerInfo?["Version"]); - } - catch (Exception ex) - { - result.Issues.Add($"PostgreSQL connection failed: {ex.Message}"); - result.OverallStatus = "Failed"; - _logger.LogError(ex, "PostgreSQL connection failed during diagnostics"); - } - } - - private async Task DiagnoseLiteDBAsync(DatabaseDiagnosticResult result) - { - result.Provider = "LiteDB"; - - try - { - var dbPath = _config.LiteDBPath; - var directory = Path.GetDirectoryName(dbPath); - - result.ConnectionDetails = new Dictionary - { - ["DatabasePath"] = dbPath, - ["Directory"] = directory, - ["DirectoryExists"] = Directory.Exists(directory), - ["FileExists"] = File.Exists(dbPath) - }; - - // Test directory access - if (!Directory.Exists(directory)) - { - _logger.LogWarning("LiteDB directory does not exist: {Directory}", directory); - Directory.CreateDirectory(directory); - _logger.LogInformation("Created LiteDB directory: {Directory}", directory); - } - - // Test LiteDB access - var stopwatch = Stopwatch.StartNew(); - using var db = new LiteDatabase($"Filename={dbPath};Connection=shared"); - var collections = db.GetCollectionNames().ToList(); - stopwatch.Stop(); - - result.ConnectionTime = stopwatch.ElapsedMilliseconds; - result.ServerInfo = new Dictionary - { - ["Collections"] = collections, - ["CollectionCount"] = collections.Count, - ["FileSize"] = File.Exists(dbPath) ? new FileInfo(dbPath).Length : 0 - }; - - result.OverallStatus = "Healthy"; - _logger.LogInformation("LiteDB diagnostics successful. Collections: {CollectionCount}, Size: {FileSize} bytes", - collections.Count, result.ServerInfo["FileSize"]); - } - catch (Exception ex) - { - result.Issues.Add($"LiteDB access failed: {ex.Message}"); - result.OverallStatus = "Failed"; - _logger.LogError(ex, "LiteDB access failed during diagnostics"); - } - } -} - -// 6.3: Database diagnostic result model -public class DatabaseDiagnosticResult -{ - public string Provider { get; set; } - public string OverallStatus { get; set; } = "Unknown"; - public long ConnectionTime { get; set; } - public Dictionary ConnectionDetails { get; set; } = new(); - public Dictionary ServerInfo { get; set; } = new(); - public List Issues { get; set; } = new(); - public List Recommendations { get; set; } = new(); -} - -// 6.4: Database startup diagnostics service -public class DatabaseStartupDiagnosticsService : IHostedService -{ - private readonly DatabaseDiagnosticsService _diagnostics; - private readonly ILogger _logger; - - public DatabaseStartupDiagnosticsService( - DatabaseDiagnosticsService diagnostics, - ILogger logger) - { - _diagnostics = diagnostics; - _logger = logger; - } - - public async Task StartAsync(CancellationToken cancellationToken) - { - try - { - _logger.LogInformation("Running database diagnostics at startup"); - var result = await _diagnostics.PerformDiagnosticsAsync(); - - _logger.LogInformation("Database diagnostics completed. Provider: {Provider}, Status: {Status}, ConnectionTime: {ConnectionTime}ms", - result.Provider, result.OverallStatus, result.ConnectionTime); - - if (result.Issues.Any()) - { - foreach (var issue in result.Issues) - { - _logger.LogWarning("Database diagnostic issue: {Issue}", issue); - } - } - - foreach (var detail in result.ConnectionDetails) - { - _logger.LogDebug("Database connection detail - {Key}: {Value}", detail.Key, detail.Value); - } - - foreach (var info in result.ServerInfo) - { - _logger.LogInformation("Database server info - {Key}: {Value}", info.Key, info.Value); - } - } - catch (Exception ex) - { - _logger.LogError(ex, "Database startup diagnostics failed"); - } - } - - public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask; -} - -// 6.5: Enhanced database service registration -public static class DatabaseServiceExtensions -{ - public static IServiceCollection AddDatabaseWithDiagnostics( - this IServiceCollection services, - DatabaseConfiguration config) - { - services.AddSingleton(); - services.AddSingleton(); - - var providerService = new DatabaseProviderService(config, null); - var provider = providerService.GetActiveProvider(); - - switch (provider) - { - case DatabaseProvider.PostgreSQL: - services.AddOptimizedPostgreSQL(config); - break; - - case DatabaseProvider.LiteDB: - services.AddLiteDB(config); - break; - } - - return services; - } -} -``` - -#### Testing Plan - -**Automated Tests**: -```csharp -[Test] -public void DatabaseProviderService_PostgreSQLConfigured_ReturnsPostgreSQL() -{ - var config = new DatabaseConfiguration - { - PostgreSQLConnectionString = "Host=localhost;Database=test;Username=test;Password=test" - }; - - var service = new DatabaseProviderService(config, Mock.Of>()); - var provider = service.GetActiveProvider(); - - Assert.AreEqual(DatabaseProvider.PostgreSQL, provider); -} - -[Test] -public void DatabaseProviderService_LiteDBConfigured_ReturnsLiteDB() -{ - var config = new DatabaseConfiguration - { - LiteDBPath = "/tmp/test.db" - }; - - var service = new DatabaseProviderService(config, Mock.Of>()); - var provider = service.GetActiveProvider(); - - Assert.AreEqual(DatabaseProvider.LiteDB, provider); -} - -[Test] -public void DatabaseProviderService_NoConfiguration_ThrowsException() -{ - var config = new DatabaseConfiguration(); - - var service = new DatabaseProviderService(config, Mock.Of>()); - - Assert.Throws(() => service.GetActiveProvider()); -} - -[Test] -public async Task DatabaseDiagnosticsService_PostgreSQL_ValidConnection_ReturnsHealthy() -{ - var config = new DatabaseConfiguration - { - PostgreSQLConnectionString = GetTestPostgreSQLConnectionString() - }; - - var providerService = new DatabaseProviderService(config, Mock.Of>()); - var diagnostics = new DatabaseDiagnosticsService( - Mock.Of>(), - config, - providerService); - - var result = await diagnostics.PerformDiagnosticsAsync(); - - Assert.AreEqual("Healthy", result.OverallStatus); - Assert.AreEqual("PostgreSQL", result.Provider); - Assert.IsTrue(result.ConnectionTime > 0); - Assert.IsTrue(result.ServerInfo.ContainsKey("Version")); -} - -[Test] -public async Task DatabaseDiagnosticsService_LiteDB_ValidPath_ReturnsHealthy() -{ - var tempPath = Path.GetTempFileName(); - var config = new DatabaseConfiguration - { - LiteDBPath = tempPath - }; - - try - { - var providerService = new DatabaseProviderService(config, Mock.Of>()); - var diagnostics = new DatabaseDiagnosticsService( - Mock.Of>(), - config, - providerService); - - var result = await diagnostics.PerformDiagnosticsAsync(); - - Assert.AreEqual("Healthy", result.OverallStatus); - Assert.AreEqual("LiteDB", result.Provider); - Assert.IsTrue(result.ConnectionTime >= 0); - } - finally - { - File.Delete(tempPath); - } -} - -[Test] -public async Task DatabaseStartupDiagnosticsService_RunsAtStartup_LogsResults() -{ - var mockLogger = new Mock>(); - var mockDiagnostics = new Mock(); - - var diagnosticResult = new DatabaseDiagnosticResult - { - Provider = "PostgreSQL", - OverallStatus = "Healthy", - ConnectionTime = 50 - }; - - mockDiagnostics.Setup(x => x.PerformDiagnosticsAsync()) - .ReturnsAsync(diagnosticResult); - - var service = new DatabaseStartupDiagnosticsService(mockDiagnostics.Object, mockLogger.Object); - await service.StartAsync(CancellationToken.None); - - // Verify that diagnostic information was logged - mockLogger.Verify( - x => x.Log( - LogLevel.Information, - It.IsAny(), - It.Is((v, t) => v.ToString().Contains("Database diagnostics completed")), - It.IsAny(), - It.IsAny>()), - Times.Once); -} -``` - -**Manual Validation**: -1. Test database provider selection with PostgreSQL configuration -2. Test database provider selection with LiteDB configuration -3. Review startup logs for diagnostic information -4. Test with invalid PostgreSQL connection string and verify error logging -5. Test with invalid LiteDB path and verify error logging -6. Verify logging output provides comprehensive debugging information - -**Success Criteria**: -- [ ] Database provider correctly selected based on configuration -- [ ] Comprehensive diagnostic information logged at startup -- [ ] Error conditions properly detected and logged -- [ ] Logging provides sufficient detail for debugging -- [ ] Connection details and server info logged appropriately -- [ ] No impact on existing functionality - ---- - -### Step 7: Database Migration Preparation and Tooling -**Duration**: 3-4 days -**Risk Level**: Low -**Rollback Complexity**: Simple - -#### Objective -Create comprehensive database migration tools and validation utilities for future PostgreSQL transition. - -#### Implementation - -```csharp -// 7.1: Database migration service -public class DatabaseMigrationService -{ - private readonly ILogger _logger; - private readonly DatabaseConfiguration _config; - - public async Task PrepareMigrationAsync() - { - var result = new MigrationPreparationResult(); - - _logger.LogInformation("Starting migration preparation analysis"); - - // Analyze current data structure - await AnalyzeDataStructureAsync(result); - - // Validate migration prerequisites - await ValidateMigrationPrerequisitesAsync(result); - - // Generate migration plan - await GenerateMigrationPlanAsync(result); - - _logger.LogInformation("Migration preparation completed. Status: {Status}", result.Status); - return result; - } - - private async Task AnalyzeDataStructureAsync(MigrationPreparationResult result) - { - try - { - if (!string.IsNullOrEmpty(_config.LiteDBPath) && File.Exists(_config.LiteDBPath)) - { - using var db = new LiteDatabase(_config.LiteDBPath); - var collections = db.GetCollectionNames().ToList(); - - result.DataAnalysis = new Dictionary(); - - foreach (var collectionName in collections) - { - var collection = db.GetCollection(collectionName); - var count = collection.Count(); - - result.DataAnalysis[collectionName] = new - { - RecordCount = count, - EstimatedSize = count * 1024 // Rough estimate - }; - - _logger.LogDebug("Collection {Collection}: {Count} records", collectionName, count); - } - - result.TotalRecords = result.DataAnalysis.Values - .Cast() - .Sum(x => (int)x.RecordCount); - - _logger.LogInformation("Data analysis completed. Total records: {TotalRecords}", result.TotalRecords); - } - else - { - result.DataAnalysis = new Dictionary(); - result.TotalRecords = 0; - _logger.LogInformation("No LiteDB database found for analysis"); - } - } - catch (Exception ex) - { - result.Issues.Add($"Data analysis failed: {ex.Message}"); - _logger.LogError(ex, "Failed to analyze data structure"); - } - } - - private async Task ValidateMigrationPrerequisitesAsync(MigrationPreparationResult result) - { - _logger.LogDebug("Validating migration prerequisites"); - - // Check PostgreSQL availability if configured - if (!string.IsNullOrEmpty(_config.PostgreSQLConnectionString)) - { - try - { - using var connection = new NpgsqlConnection(_config.PostgreSQLConnectionString); - await connection.OpenAsync(); - - // Check if database is empty or has expected schema - using var command = new NpgsqlCommand( - "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'public'", - connection); - var tableCount = (long)await command.ExecuteScalarAsync(); - - result.Prerequisites["PostgreSQLConnectivity"] = true; - result.Prerequisites["PostgreSQLTableCount"] = tableCount; - - if (tableCount > 0) - { - result.Recommendations.Add("PostgreSQL database contains existing tables. Consider backup before migration."); - } - - _logger.LogDebug("PostgreSQL validation successful. Table count: {TableCount}", tableCount); - } - catch (Exception ex) - { - result.Prerequisites["PostgreSQLConnectivity"] = false; - result.Issues.Add($"PostgreSQL validation failed: {ex.Message}"); - _logger.LogWarning(ex, "PostgreSQL validation failed"); - } - } - - // Check disk space - try - { - var currentPath = Environment.CurrentDirectory; - var drive = new DriveInfo(Path.GetPathRoot(currentPath)); - var freeSpaceGB = drive.AvailableFreeSpace / (1024 * 1024 * 1024); - - result.Prerequisites["DiskSpaceGB"] = freeSpaceGB; - - if (freeSpaceGB < 1) - { - result.Issues.Add("Insufficient disk space for migration (< 1GB available)"); - } - else if (freeSpaceGB < 5) - { - result.Recommendations.Add("Limited disk space available. Monitor during migration."); - } - - _logger.LogDebug("Disk space check: {FreeSpaceGB}GB available", freeSpaceGB); - } - catch (Exception ex) - { - result.Issues.Add($"Disk space check failed: {ex.Message}"); - _logger.LogWarning(ex, "Failed to check disk space"); - } - } - - private async Task GenerateMigrationPlanAsync(MigrationPreparationResult result) - { - _logger.LogDebug("Generating migration plan"); - - var plan = new List(); - - if (result.TotalRecords > 0) - { - plan.Add("1. Create PostgreSQL database schema"); - plan.Add("2. Export data from LiteDB"); - plan.Add("3. Transform data for PostgreSQL compatibility"); - plan.Add("4. Import data to PostgreSQL"); - plan.Add("5. Validate data integrity"); - plan.Add("6. Update configuration to use PostgreSQL"); - plan.Add("7. Test application functionality"); - plan.Add("8. Archive LiteDB data"); - - // Estimate migration time based on record count - var estimatedMinutes = Math.Max(5, result.TotalRecords / 1000); // Rough estimate - result.EstimatedMigrationTime = TimeSpan.FromMinutes(estimatedMinutes); - - plan.Add($"Estimated migration time: {result.EstimatedMigrationTime.TotalMinutes:F0} minutes"); - } - else - { - plan.Add("1. Create PostgreSQL database schema"); - plan.Add("2. Update configuration to use PostgreSQL"); - plan.Add("3. Test application functionality"); - result.EstimatedMigrationTime = TimeSpan.FromMinutes(5); - } - - result.MigrationPlan = plan; - _logger.LogInformation("Migration plan generated with {StepCount} steps", plan.Count); - } -} - -// 7.2: Migration result models -public class MigrationPreparationResult -{ - public string Status { get; set; } = "Success"; - public Dictionary DataAnalysis { get; set; } = new(); - public Dictionary Prerequisites { get; set; } = new(); - public List Issues { get; set; } = new(); - public List Recommendations { get; set; } = new(); - public List MigrationPlan { get; set; } = new(); - public int TotalRecords { get; set; } - public TimeSpan EstimatedMigrationTime { get; set; } -} - -// 7.3: Data validation service -public class DataValidationService -{ - private readonly ILogger _logger; - - public async Task ValidateDataIntegrityAsync(DatabaseProvider provider) - { - var result = new DataValidationResult { Provider = provider.ToString() }; - - _logger.LogInformation("Starting data integrity validation for {Provider}", provider); - - switch (provider) - { - case DatabaseProvider.LiteDB: - await ValidateLiteDBIntegrityAsync(result); - break; - case DatabaseProvider.PostgreSQL: - await ValidatePostgreSQLIntegrityAsync(result); - break; - } - - _logger.LogInformation("Data validation completed for {Provider}. Status: {Status}, Issues: {IssueCount}", - provider, result.Status, result.Issues.Count); - - return result; - } - - private async Task ValidateLiteDBIntegrityAsync(DataValidationResult result) - { - try - { - // Implement LiteDB-specific validation logic - result.ValidationChecks["LiteDBAccessible"] = true; - result.ValidationChecks["CollectionsAccessible"] = true; - result.Status = "Healthy"; - } - catch (Exception ex) - { - result.Issues.Add($"LiteDB validation failed: {ex.Message}"); - result.Status = "Failed"; - _logger.LogError(ex, "LiteDB validation failed"); - } - } - - private async Task ValidatePostgreSQLIntegrityAsync(DataValidationResult result) - { - try - { - // Implement PostgreSQL-specific validation logic - result.ValidationChecks["PostgreSQLAccessible"] = true; - result.ValidationChecks["TablesAccessible"] = true; - result.Status = "Healthy"; - } - catch (Exception ex) - { - result.Issues.Add($"PostgreSQL validation failed: {ex.Message}"); - result.Status = "Failed"; - _logger.LogError(ex, "PostgreSQL validation failed"); - } - } -} - -public class DataValidationResult -{ - public string Provider { get; set; } - public string Status { get; set; } = "Unknown"; - public Dictionary ValidationChecks { get; set; } = new(); - public List Issues { get; set; } = new(); - public Dictionary Statistics { get; set; } = new(); -} - -// 7.4: Migration analysis startup service -public class MigrationAnalysisService : IHostedService -{ - private readonly DatabaseMigrationService _migrationService; - private readonly DataValidationService _validationService; - private readonly DatabaseProviderService _providerService; - private readonly FeatureFlagService _featureFlags; - private readonly ILogger _logger; - - public MigrationAnalysisService( - DatabaseMigrationService migrationService, - DataValidationService validationService, - DatabaseProviderService providerService, - FeatureFlagService featureFlags, - ILogger logger) - { - _migrationService = migrationService; - _validationService = validationService; - _providerService = providerService; - _featureFlags = featureFlags; - _logger = logger; - } - - public async Task StartAsync(CancellationToken cancellationToken) - { - if (!_featureFlags.IsEnabled("MigrationTools", true)) - { - _logger.LogDebug("Migration tools feature is disabled, skipping migration analysis"); - return; - } - - try - { - var currentProvider = _providerService.GetActiveProvider(); - _logger.LogInformation("Running migration analysis for current provider: {Provider}", currentProvider); - - var migrationResult = await _migrationService.PrepareMigrationAsync(); - _logger.LogInformation("Migration analysis completed. Status: {Status}, Total Records: {TotalRecords}, Estimated Time: {EstimatedTime}", - migrationResult.Status, migrationResult.TotalRecords, migrationResult.EstimatedMigrationTime); - - if (migrationResult.Issues.Any()) - { - foreach (var issue in migrationResult.Issues) - { - _logger.LogWarning("Migration analysis issue: {Issue}", issue); - } - } - - if (migrationResult.Recommendations.Any()) - { - foreach (var recommendation in migrationResult.Recommendations) - { - _logger.LogInformation("Migration recommendation: {Recommendation}", recommendation); - } - } - - foreach (var step in migrationResult.MigrationPlan) - { - _logger.LogDebug("Migration plan step: {Step}", step); - } - - var validationResult = await _validationService.ValidateDataIntegrityAsync(currentProvider); - _logger.LogInformation("Data validation completed for {Provider}. Status: {Status}", - validationResult.Provider, validationResult.Status); - - if (validationResult.Issues.Any()) - { - foreach (var issue in validationResult.Issues) - { - _logger.LogWarning("Data validation issue: {Issue}", issue); - } - } - } - catch (Exception ex) - { - _logger.LogError(ex, "Migration analysis failed during startup"); - } - } - - public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask; -} -``` - -#### Testing Plan - -**Automated Tests**: -```csharp -[Test] -public async Task DatabaseMigrationService_PrepareMigration_GeneratesValidPlan() -{ - var config = new DatabaseConfiguration - { - LiteDBPath = CreateTestLiteDBWithData(), - PostgreSQLConnectionString = GetTestPostgreSQLConnectionString() - }; - - var migrationService = new DatabaseMigrationService( - Mock.Of>(), - config); - - var result = await migrationService.PrepareMigrationAsync(); - - Assert.AreEqual("Success", result.Status); - Assert.IsTrue(result.MigrationPlan.Count > 0); - Assert.IsTrue(result.TotalRecords >= 0); - Assert.IsTrue(result.EstimatedMigrationTime > TimeSpan.Zero); -} - -[Test] -public async Task DataValidationService_LiteDB_ReturnsValidationResult() -{ - var validationService = new DataValidationService(Mock.Of>()); - - var result = await validationService.ValidateDataIntegrityAsync(DatabaseProvider.LiteDB); - - Assert.AreEqual("LiteDB", result.Provider); - Assert.IsNotNull(result.Status); - Assert.IsNotNull(result.ValidationChecks); -} - -[Test] -public async Task MigrationAnalysisService_RunsAtStartup_LogsAnalysis() -{ - var mockLogger = new Mock>(); - var mockMigrationService = new Mock(); - var mockValidationService = new Mock(); - var mockProviderService = new Mock(); - var mockFeatureFlags = new Mock(); - - mockFeatureFlags.Setup(x => x.IsEnabled("MigrationTools", true)).Returns(true); - mockProviderService.Setup(x => x.GetActiveProvider()).Returns(DatabaseProvider.LiteDB); - - var migrationResult = new MigrationPreparationResult { Status = "Success", TotalRecords = 100 }; - mockMigrationService.Setup(x => x.PrepareMigrationAsync()).ReturnsAsync(migrationResult); - - var validationResult = new DataValidationResult { Provider = "LiteDB", Status = "Healthy" }; - mockValidationService.Setup(x => x.ValidateDataIntegrityAsync(It.IsAny())) - .ReturnsAsync(validationResult); - - var service = new MigrationAnalysisService( - mockMigrationService.Object, - mockValidationService.Object, - mockProviderService.Object, - mockFeatureFlags.Object, - mockLogger.Object); - - await service.StartAsync(CancellationToken.None); - - // Verify migration analysis was logged - mockLogger.Verify( - x => x.Log( - LogLevel.Information, - It.IsAny(), - It.Is((v, t) => v.ToString().Contains("Migration analysis completed")), - It.IsAny(), - It.IsAny>()), - Times.Once); -} -``` - -**Manual Validation**: -1. Review startup logs for migration analysis information -2. Test migration preparation with existing LiteDB data -3. Test migration preparation with empty database -4. Verify PostgreSQL connectivity validation in logs -5. Test with invalid PostgreSQL configuration and check error logs -6. Verify migration plan generation logic through log output - -**Success Criteria**: -- [ ] Migration preparation analysis works correctly -- [ ] Data structure analysis provides accurate information and logs details -- [ ] Migration plan generated with realistic time estimates -- [ ] Prerequisites validation identifies potential issues and logs them -- [ ] Comprehensive migration information logged at startup -- [ ] No impact on existing application functionality - ---- - -### Step 8: Performance Monitoring and Benchmarking -**Duration**: 2-3 days -**Risk Level**: Low -**Rollback Complexity**: Simple - -#### Objective -Implement comprehensive performance monitoring and benchmarking to establish baselines and detect regressions. - -#### Implementation - -```csharp -// 8.1: Performance monitoring service -public class PerformanceMonitoringService -{ - private readonly ILogger _logger; - private readonly Counter _requestCounter; - private readonly Histogram _requestDuration; - private readonly Histogram _databaseOperationDuration; - private readonly Gauge _activeConnections; - - public PerformanceMonitoringService(ILogger logger) - { - _logger = logger; - - _requestCounter = Metrics.CreateCounter( - "motovault_http_requests_total", - "Total HTTP requests", - new[] { "method", "endpoint", "status_code" }); - - _requestDuration = Metrics.CreateHistogram( - "motovault_http_request_duration_seconds", - "HTTP request duration in seconds", - new[] { "method", "endpoint" }); - - _databaseOperationDuration = Metrics.CreateHistogram( - "motovault_database_operation_duration_seconds", - "Database operation duration in seconds", - new[] { "operation", "provider" }); - - _activeConnections = Metrics.CreateGauge( - "motovault_active_connections", - "Number of active connections"); - } - - public void RecordHttpRequest(string method, string endpoint, int statusCode, double durationSeconds) - { - _requestCounter.WithLabels(method, endpoint, statusCode.ToString()).Inc(); - _requestDuration.WithLabels(method, endpoint).Observe(durationSeconds); - } - - public void RecordDatabaseOperation(string operation, string provider, double durationSeconds) - { - _databaseOperationDuration.WithLabels(operation, provider).Observe(durationSeconds); - } - - public void SetActiveConnections(double count) - { - _activeConnections.Set(count); - } -} - -// 8.2: Performance monitoring middleware -public class PerformanceMonitoringMiddleware -{ - private readonly RequestDelegate _next; - private readonly PerformanceMonitoringService _monitoring; - private readonly ILogger _logger; - - public async Task InvokeAsync(HttpContext context) - { - var stopwatch = Stopwatch.StartNew(); - var endpoint = GetEndpointName(context); - - try - { - await _next(context); - } - finally - { - stopwatch.Stop(); - - _monitoring.RecordHttpRequest( - context.Request.Method, - endpoint, - context.Response.StatusCode, - stopwatch.Elapsed.TotalSeconds); - - // Log slow requests - if (stopwatch.ElapsedMilliseconds > 1000) - { - _logger.LogWarning("Slow request detected: {Method} {Endpoint} took {ElapsedMs}ms", - context.Request.Method, endpoint, stopwatch.ElapsedMilliseconds); - } - } - } - - private string GetEndpointName(HttpContext context) - { - var endpoint = context.GetEndpoint(); - if (endpoint?.DisplayName != null) - { - return endpoint.DisplayName; - } - - var path = context.Request.Path.Value; - - // Normalize common patterns - if (path.StartsWith("/Vehicle/")) - { - return "/Vehicle/*"; - } - if (path.StartsWith("/api/")) - { - return "/api/*"; - } - - return path ?? "unknown"; - } -} - -// 8.3: Database operation interceptor -public class DatabaseOperationInterceptor : DbCommandInterceptor -{ - private readonly PerformanceMonitoringService _monitoring; - private readonly ILogger _logger; - - public DatabaseOperationInterceptor( - PerformanceMonitoringService monitoring, - ILogger logger) - { - _monitoring = monitoring; - _logger = logger; - } - - public override ValueTask> ReaderExecutingAsync( - DbCommand command, - CommandEventData eventData, - InterceptionResult result, - CancellationToken cancellationToken = default) - { - var stopwatch = Stopwatch.StartNew(); - eventData.Context.ContextId.ToString(); // Use for correlation - - return base.ReaderExecutingAsync(command, eventData, result, cancellationToken); - } - - public override ValueTask ReaderExecutedAsync( - DbCommand command, - CommandExecutedEventData eventData, - DbDataReader result, - CancellationToken cancellationToken = default) - { - var duration = eventData.Duration.TotalSeconds; - var operation = GetOperationType(command.CommandText); - var provider = GetProviderName(eventData.Context); - - _monitoring.RecordDatabaseOperation(operation, provider, duration); - - // Log slow queries - if (eventData.Duration.TotalMilliseconds > 500) - { - _logger.LogWarning("Slow database query detected: {Operation} took {ElapsedMs}ms. Query: {CommandText}", - operation, eventData.Duration.TotalMilliseconds, command.CommandText); - } - - return base.ReaderExecutedAsync(command, eventData, result, cancellationToken); - } - - private string GetOperationType(string commandText) - { - if (string.IsNullOrEmpty(commandText)) - return "unknown"; - - var upperCommand = commandText.Trim().ToUpper(); - - if (upperCommand.StartsWith("SELECT")) return "SELECT"; - if (upperCommand.StartsWith("INSERT")) return "INSERT"; - if (upperCommand.StartsWith("UPDATE")) return "UPDATE"; - if (upperCommand.StartsWith("DELETE")) return "DELETE"; - - return "other"; - } - - private string GetProviderName(DbContext context) - { - return context?.Database?.ProviderName?.Contains("Npgsql") == true ? "PostgreSQL" : "Unknown"; - } -} - -// 8.4: Performance benchmarking service -public class PerformanceBenchmarkService -{ - private readonly IServiceProvider _serviceProvider; - private readonly ILogger _logger; - - public async Task RunBenchmarkAsync(BenchmarkOptions options) - { - var result = new BenchmarkResult - { - TestName = options.TestName, - StartTime = DateTime.UtcNow - }; - - _logger.LogInformation("Starting benchmark: {TestName}", options.TestName); - - try - { - switch (options.TestType) - { - case BenchmarkType.DatabaseRead: - await BenchmarkDatabaseReads(result, options); - break; - case BenchmarkType.DatabaseWrite: - await BenchmarkDatabaseWrites(result, options); - break; - case BenchmarkType.HttpEndpoint: - await BenchmarkHttpEndpoint(result, options); - break; - } - - result.Status = "Completed"; - } - catch (Exception ex) - { - result.Status = "Failed"; - result.Error = ex.Message; - _logger.LogError(ex, "Benchmark failed: {TestName}", options.TestName); - } - finally - { - result.EndTime = DateTime.UtcNow; - result.Duration = result.EndTime - result.StartTime; - } - - _logger.LogInformation("Benchmark completed: {TestName}, Duration: {Duration}ms, Status: {Status}", - options.TestName, result.Duration.TotalMilliseconds, result.Status); - - return result; - } - - private async Task BenchmarkDatabaseReads(BenchmarkResult result, BenchmarkOptions options) - { - using var scope = _serviceProvider.CreateScope(); - var vehicleAccess = scope.ServiceProvider.GetRequiredService(); - - var durations = new List(); - - for (int i = 0; i < options.Iterations; i++) - { - var stopwatch = Stopwatch.StartNew(); - - try - { - var vehicles = await vehicleAccess.GetVehiclesAsync(1); // Test user ID - stopwatch.Stop(); - durations.Add(stopwatch.Elapsed.TotalMilliseconds); - } - catch (Exception ex) - { - stopwatch.Stop(); - result.Errors.Add($"Iteration {i}: {ex.Message}"); - } - } - - if (durations.Count > 0) - { - result.Metrics["AverageMs"] = durations.Average(); - result.Metrics["MinMs"] = durations.Min(); - result.Metrics["MaxMs"] = durations.Max(); - result.Metrics["P95Ms"] = durations.OrderBy(x => x).Skip((int)(durations.Count * 0.95)).First(); - result.Metrics["SuccessfulIterations"] = durations.Count; - result.Metrics["FailedIterations"] = options.Iterations - durations.Count; - } - } - - private async Task BenchmarkDatabaseWrites(BenchmarkResult result, BenchmarkOptions options) - { - // Similar implementation for write operations - result.Metrics["WriteOperationsCompleted"] = options.Iterations; - } - - private async Task BenchmarkHttpEndpoint(BenchmarkResult result, BenchmarkOptions options) - { - // HTTP endpoint benchmarking implementation - result.Metrics["HttpRequestsCompleted"] = options.Iterations; - } -} - -// 8.5: Benchmark models -public class BenchmarkOptions -{ - public string TestName { get; set; } - public BenchmarkType TestType { get; set; } - public int Iterations { get; set; } = 10; - public string TargetEndpoint { get; set; } - public Dictionary Parameters { get; set; } = new(); -} - -public enum BenchmarkType -{ - DatabaseRead, - DatabaseWrite, - HttpEndpoint -} - -public class BenchmarkResult -{ - public string TestName { get; set; } - public string Status { get; set; } - public DateTime StartTime { get; set; } - public DateTime EndTime { get; set; } - public TimeSpan Duration { get; set; } - public Dictionary Metrics { get; set; } = new(); - public List Errors { get; set; } = new(); - public string Error { get; set; } -} -``` - -#### Testing Plan - -**Automated Tests**: -```csharp -[Test] -public void PerformanceMonitoringService_RecordHttpRequest_UpdatesMetrics() -{ - var monitoring = new PerformanceMonitoringService(Mock.Of>()); - - // Record some test requests - monitoring.RecordHttpRequest("GET", "/test", 200, 0.5); - monitoring.RecordHttpRequest("POST", "/test", 201, 0.8); - - // Verify metrics are updated (would need to access metrics collector in real implementation) - Assert.IsTrue(true); // Placeholder - would verify actual metrics -} - -[Test] -public async Task PerformanceBenchmarkService_DatabaseReadBenchmark_ReturnsValidResults() -{ - var serviceCollection = new ServiceCollection(); - // Add required services for benchmark - var serviceProvider = serviceCollection.BuildServiceProvider(); - - var benchmarkService = new PerformanceBenchmarkService(serviceProvider, Mock.Of>()); - - var options = new BenchmarkOptions - { - TestName = "Database Read Test", - TestType = BenchmarkType.DatabaseRead, - Iterations = 5 - }; - - var result = await benchmarkService.RunBenchmarkAsync(options); - - Assert.AreEqual("Database Read Test", result.TestName); - Assert.IsTrue(result.Duration > TimeSpan.Zero); - Assert.IsNotNull(result.Status); -} - -[Test] -public async Task PerformanceMonitoringMiddleware_SlowRequest_LogsWarning() -{ - var mockLogger = new Mock>(); - var monitoring = Mock.Of(); - - var middleware = new PerformanceMonitoringMiddleware( - async context => await Task.Delay(1100), // Simulate slow request - monitoring, - mockLogger.Object); - - var context = new DefaultHttpContext(); - await middleware.InvokeAsync(context); - - // Verify warning was logged for slow request - mockLogger.Verify( - x => x.Log( - LogLevel.Warning, - It.IsAny(), - It.Is((v, t) => v.ToString().Contains("Slow request detected")), - It.IsAny(), - It.IsAny>()), - Times.Once); -} -``` - -**Manual Validation**: -1. Run application and verify Prometheus metrics are collected -2. Access `/metrics` endpoint and verify metric format -3. Perform operations and verify metrics are updated -4. Test performance monitoring middleware with various request types -5. Run database operation benchmarks -6. Verify slow query logging functionality - -**Success Criteria**: -- [ ] HTTP request metrics collected accurately -- [ ] Database operation metrics recorded -- [ ] Slow requests and queries properly logged -- [ ] Benchmark service provides realistic performance data -- [ ] Prometheus metrics endpoint functional -- [ ] Performance overhead < 5% of request time - ---- - -### Step 9: Feature Flags and Configuration Controls -**Duration**: 2-3 days -**Risk Level**: Low -**Rollback Complexity**: Simple - -#### Objective -Implement feature flags to safely enable/disable functionality during Phase 1 implementation and future migrations. - -#### Implementation - -```csharp -// 9.1: Feature flag service -public class FeatureFlagService -{ - private readonly IConfiguration _configuration; - private readonly ILogger _logger; - private readonly Dictionary _cachedFlags = new(); - private readonly object _cacheLock = new(); - - public FeatureFlagService(IConfiguration configuration, ILogger logger) - { - _configuration = configuration; - _logger = logger; - } - - public bool IsEnabled(string flagName, bool defaultValue = false) - { - lock (_cacheLock) - { - if (_cachedFlags.TryGetValue(flagName, out var cachedValue)) - { - return cachedValue; - } - - var value = GetFlagValue(flagName, defaultValue); - _cachedFlags[flagName] = value; - - _logger.LogDebug("Feature flag {FlagName} = {Value}", flagName, value); - return value; - } - } - - private bool GetFlagValue(string flagName, bool defaultValue) - { - // Check environment variable first (highest priority) - var envValue = Environment.GetEnvironmentVariable($"FEATURE_{flagName.ToUpper()}"); - if (!string.IsNullOrEmpty(envValue)) - { - if (bool.TryParse(envValue, out var envResult)) - { - _logger.LogDebug("Feature flag {FlagName} set via environment variable: {Value}", flagName, envResult); - return envResult; - } - } - - // Check configuration - var configKey = $"Features:{flagName}"; - var configValue = _configuration[configKey]; - if (!string.IsNullOrEmpty(configValue)) - { - if (bool.TryParse(configValue, out var configResult)) - { - _logger.LogDebug("Feature flag {FlagName} set via configuration: {Value}", flagName, configResult); - return configResult; - } - } - - _logger.LogDebug("Feature flag {FlagName} using default value: {Value}", flagName, defaultValue); - return defaultValue; - } - - public void InvalidateCache() - { - lock (_cacheLock) - { - _cachedFlags.Clear(); - _logger.LogInformation("Feature flag cache invalidated"); - } - } - - public Dictionary GetAllFlags() - { - var flags = new Dictionary(); - - // Get all known feature flags - var knownFlags = new[] - { - "StructuredLogging", - "HealthChecks", - "PerformanceMonitoring", - "DatabaseDiagnostics", - "MigrationTools", - "PostgreSQLOptimizations", - "ConfigurationValidation", - "DebugEndpoints" - }; - - foreach (var flag in knownFlags) - { - flags[flag] = IsEnabled(flag); - } - - return flags; - } -} - -// 9.2: Feature flag startup logging service -public class FeatureFlagStartupService : IHostedService -{ - private readonly FeatureFlagService _featureFlags; - private readonly IWebHostEnvironment _environment; - private readonly ILogger _logger; - - public FeatureFlagStartupService( - FeatureFlagService featureFlags, - IWebHostEnvironment environment, - ILogger logger) - { - _featureFlags = featureFlags; - _environment = environment; - _logger = logger; - } - - public async Task StartAsync(CancellationToken cancellationToken) - { - try - { - var allFlags = _featureFlags.GetAllFlags(); - var enabledFlags = allFlags.Where(kvp => kvp.Value).ToList(); - var disabledFlags = allFlags.Where(kvp => !kvp.Value).ToList(); - - _logger.LogInformation("Feature flags initialized. Environment: {Environment}, Total: {Total}, Enabled: {Enabled}, Disabled: {Disabled}", - _environment.EnvironmentName, - allFlags.Count, - enabledFlags.Count, - disabledFlags.Count); - - foreach (var flag in enabledFlags) - { - _logger.LogInformation("Feature flag ENABLED: {FlagName}", flag.Key); - } - - foreach (var flag in disabledFlags) - { - _logger.LogDebug("Feature flag disabled: {FlagName}", flag.Key); - } - } - catch (Exception ex) - { - _logger.LogError(ex, "Failed to log feature flag status at startup"); - } - } - - public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask; -} - -// 9.3: Feature-aware service registration -public static class FeatureAwareServiceExtensions -{ - public static IServiceCollection AddFeatureAwareServices(this IServiceCollection services, IConfiguration configuration) - { - services.AddSingleton(); - - var featureFlags = new FeatureFlagService(configuration, null); - - // Register services based on feature flags - if (featureFlags.IsEnabled("StructuredLogging", true)) - { - services.AddSingleton(); - } - - if (featureFlags.IsEnabled("HealthChecks", true)) - { - services.AddSingleton(); - services.AddSingleton(); - } - - if (featureFlags.IsEnabled("PerformanceMonitoring", true)) - { - services.AddSingleton(); - services.AddSingleton(); - } - - if (featureFlags.IsEnabled("DatabaseDiagnostics", true)) - { - services.AddSingleton(); - } - - if (featureFlags.IsEnabled("MigrationTools", true)) - { - services.AddSingleton(); - services.AddSingleton(); - } - - return services; - } -} - -// 9.4: Feature flag configuration options -public class FeatureFlagOptions -{ - public const string SectionName = "Features"; - - public bool StructuredLogging { get; set; } = true; - public bool HealthChecks { get; set; } = true; - public bool PerformanceMonitoring { get; set; } = true; - public bool DatabaseDiagnostics { get; set; } = true; - public bool MigrationTools { get; set; } = true; - public bool PostgreSQLOptimizations { get; set; } = true; - public bool ConfigurationValidation { get; set; } = true; - public bool DebugEndpoints { get; set; } = false; // Disabled by default in production -} - -// 9.5: Feature-gated components -public class FeatureGatedHealthCheckService -{ - private readonly FeatureFlagService _featureFlags; - private readonly DatabaseHealthCheck _databaseHealthCheck; - private readonly ApplicationHealthCheck _applicationHealthCheck; - - public async Task GetHealthStatusAsync() - { - var healthInfo = new Dictionary(); - - if (_featureFlags.IsEnabled("HealthChecks")) - { - if (_databaseHealthCheck != null) - { - var dbHealth = await _databaseHealthCheck.CheckHealthAsync(null); - healthInfo["Database"] = new - { - Status = dbHealth.Status.ToString(), - Description = dbHealth.Description - }; - } - - if (_applicationHealthCheck != null) - { - var appHealth = await _applicationHealthCheck.CheckHealthAsync(null); - healthInfo["Application"] = new - { - Status = appHealth.Status.ToString(), - Description = appHealth.Description - }; - } - } - else - { - healthInfo["Message"] = "Health checks are disabled"; - } - - return healthInfo; - } -} -``` - -#### Testing Plan - -**Automated Tests**: -```csharp -[Test] -public void FeatureFlagService_EnvironmentVariable_TakesPrecedence() -{ - Environment.SetEnvironmentVariable("FEATURE_TESTFLAG", "true"); - - var config = new ConfigurationBuilder() - .AddInMemoryCollection(new[] { new KeyValuePair("Features:TestFlag", "false") }) - .Build(); - - try - { - var service = new FeatureFlagService(config, Mock.Of>()); - var result = service.IsEnabled("TestFlag", false); - - Assert.IsTrue(result); // Environment variable should override config - } - finally - { - Environment.SetEnvironmentVariable("FEATURE_TESTFLAG", null); - } -} - -[Test] -public void FeatureFlagService_Configuration_UsedWhenNoEnvironmentVariable() -{ - var config = new ConfigurationBuilder() - .AddInMemoryCollection(new[] { new KeyValuePair("Features:TestFlag", "true") }) - .Build(); - - var service = new FeatureFlagService(config, Mock.Of>()); - var result = service.IsEnabled("TestFlag", false); - - Assert.IsTrue(result); -} - -[Test] -public void FeatureFlagService_DefaultValue_UsedWhenNoConfiguration() -{ - var config = new ConfigurationBuilder().Build(); - - var service = new FeatureFlagService(config, Mock.Of>()); - var result = service.IsEnabled("NonExistentFlag", true); - - Assert.IsTrue(result); -} - -[Test] -public async Task FeatureFlagStartupService_RunsAtStartup_LogsFeatureFlags() -{ - var mockLogger = new Mock>(); - var mockFeatureFlags = new Mock(); - var mockEnvironment = new Mock(); - - mockEnvironment.Setup(x => x.EnvironmentName).Returns("Testing"); - - var flags = new Dictionary - { - ["StructuredLogging"] = true, - ["HealthChecks"] = true, - ["PerformanceMonitoring"] = false - }; - - mockFeatureFlags.Setup(x => x.GetAllFlags()).Returns(flags); - - var service = new FeatureFlagStartupService( - mockFeatureFlags.Object, - mockEnvironment.Object, - mockLogger.Object); - - await service.StartAsync(CancellationToken.None); - - // Verify feature flags were logged - mockLogger.Verify( - x => x.Log( - LogLevel.Information, - It.IsAny(), - It.Is((v, t) => v.ToString().Contains("Feature flags initialized")), - It.IsAny(), - It.IsAny>()), - Times.Once); -} - -[Test] -public void FeatureAwareServiceExtensions_RegistersServicesBasedOnFlags() -{ - var config = new ConfigurationBuilder() - .AddInMemoryCollection(new[] - { - new KeyValuePair("Features:PerformanceMonitoring", "true"), - new KeyValuePair("Features:DatabaseDiagnostics", "false") - }) - .Build(); - - var services = new ServiceCollection(); - services.AddFeatureAwareServices(config); - - var serviceProvider = services.BuildServiceProvider(); - - Assert.IsNotNull(serviceProvider.GetService()); - Assert.IsNull(serviceProvider.GetService()); -} -``` - -**Manual Validation**: -1. Test feature flags via environment variables -2. Test feature flags via configuration file -3. Review startup logs for feature flag status -4. Toggle feature flags and verify services are enabled/disabled -5. Test feature flag cache invalidation -6. Verify feature flags work in different environments and log appropriately - -**Success Criteria**: -- [ ] Feature flags correctly control service registration -- [ ] Environment variables override configuration values -- [ ] Feature flag status logged comprehensively at startup -- [ ] Cache invalidation works properly -- [ ] No performance impact when features are disabled -- [ ] Feature flags properly logged for debugging - ---- - -### Step 10: Final Integration and Validation -**Duration**: 2-3 days -**Risk Level**: Low -**Rollback Complexity**: Simple - -#### Objective -Integrate all Phase 1 components and perform comprehensive validation of the Kubernetes-ready application. - -#### Implementation - -```csharp -// 10.1: Integration validation service -public class IntegrationValidationService -{ - private readonly IServiceProvider _serviceProvider; - private readonly ILogger _logger; - - public async Task ValidateIntegrationAsync() - { - var result = new IntegrationValidationResult(); - _logger.LogInformation("Starting comprehensive integration validation"); - - try - { - // Validate all Phase 1 components - await ValidateStructuredLogging(result); - await ValidateHealthChecks(result); - await ValidateConfigurationFramework(result); - await ValidateDatabaseProvider(result); - await ValidatePerformanceMonitoring(result); - await ValidateFeatureFlags(result); - - // Overall integration test - await ValidateEndToEndWorkflow(result); - - result.OverallStatus = result.ComponentResults.All(c => c.Value.Status == "Healthy") ? "Healthy" : "Degraded"; - } - catch (Exception ex) - { - result.OverallStatus = "Failed"; - result.GeneralIssues.Add($"Integration validation failed: {ex.Message}"); - _logger.LogError(ex, "Integration validation failed"); - } - - _logger.LogInformation("Integration validation completed. Status: {Status}", result.OverallStatus); - return result; - } - - private async Task ValidateStructuredLogging(IntegrationValidationResult result) - { - var componentResult = new ComponentValidationResult { ComponentName = "StructuredLogging" }; - - try - { - var logger = _serviceProvider.GetService>(); - var correlationService = _serviceProvider.GetService(); - - if (logger != null) - { - logger.LogInformation("Testing structured logging functionality"); - componentResult.Status = "Healthy"; - componentResult.Details["LoggerAvailable"] = true; - componentResult.Details["CorrelationIdService"] = correlationService != null; - } - else - { - componentResult.Status = "Failed"; - componentResult.Issues.Add("Logger service not available"); - } - } - catch (Exception ex) - { - componentResult.Status = "Failed"; - componentResult.Issues.Add($"Structured logging validation failed: {ex.Message}"); - } - - result.ComponentResults["StructuredLogging"] = componentResult; - } - - private async Task ValidateHealthChecks(IntegrationValidationResult result) - { - var componentResult = new ComponentValidationResult { ComponentName = "HealthChecks" }; - - try - { - var databaseHealthCheck = _serviceProvider.GetService(); - var applicationHealthCheck = _serviceProvider.GetService(); - - if (databaseHealthCheck != null && applicationHealthCheck != null) - { - var dbHealth = await databaseHealthCheck.CheckHealthAsync(null); - var appHealth = await applicationHealthCheck.CheckHealthAsync(null); - - componentResult.Status = (dbHealth.Status == HealthStatus.Healthy && appHealth.Status == HealthStatus.Healthy) - ? "Healthy" : "Degraded"; - - componentResult.Details["DatabaseHealth"] = dbHealth.Status.ToString(); - componentResult.Details["ApplicationHealth"] = appHealth.Status.ToString(); - } - else - { - componentResult.Status = "Failed"; - componentResult.Issues.Add("Health check services not available"); - } - } - catch (Exception ex) - { - componentResult.Status = "Failed"; - componentResult.Issues.Add($"Health check validation failed: {ex.Message}"); - } - - result.ComponentResults["HealthChecks"] = componentResult; - } - - private async Task ValidateConfigurationFramework(IntegrationValidationResult result) - { - var componentResult = new ComponentValidationResult { ComponentName = "ConfigurationFramework" }; - - try - { - var configValidation = _serviceProvider.GetService(); - var configMapping = _serviceProvider.GetService(); - - if (configValidation != null && configMapping != null) - { - var validationResult = configValidation.ValidateConfiguration(); - - componentResult.Status = validationResult.HasErrors ? "Failed" : "Healthy"; - componentResult.Details["ValidationErrors"] = validationResult.Errors.Count; - componentResult.Details["ValidationWarnings"] = validationResult.Warnings.Count; - - if (validationResult.HasErrors) - { - componentResult.Issues.AddRange(validationResult.Errors.Select(e => e.Message)); - } - } - else - { - componentResult.Status = "Failed"; - componentResult.Issues.Add("Configuration services not available"); - } - } - catch (Exception ex) - { - componentResult.Status = "Failed"; - componentResult.Issues.Add($"Configuration validation failed: {ex.Message}"); - } - - result.ComponentResults["ConfigurationFramework"] = componentResult; - } - - private async Task ValidateDatabaseProvider(IntegrationValidationResult result) - { - var componentResult = new ComponentValidationResult { ComponentName = "DatabaseProvider" }; - - try - { - var providerService = _serviceProvider.GetService(); - var diagnosticsService = _serviceProvider.GetService(); - - if (providerService != null && diagnosticsService != null) - { - var provider = providerService.GetActiveProvider(); - var diagnostics = await diagnosticsService.PerformDiagnosticsAsync(); - - componentResult.Status = diagnostics.OverallStatus; - componentResult.Details["ActiveProvider"] = provider.ToString(); - componentResult.Details["ConnectionTime"] = diagnostics.ConnectionTime; - componentResult.Details["IssueCount"] = diagnostics.Issues.Count; - - if (diagnostics.Issues.Count > 0) - { - componentResult.Issues.AddRange(diagnostics.Issues); - } - } - else - { - componentResult.Status = "Failed"; - componentResult.Issues.Add("Database services not available"); - } - } - catch (Exception ex) - { - componentResult.Status = "Failed"; - componentResult.Issues.Add($"Database provider validation failed: {ex.Message}"); - } - - result.ComponentResults["DatabaseProvider"] = componentResult; - } - - private async Task ValidatePerformanceMonitoring(IntegrationValidationResult result) - { - var componentResult = new ComponentValidationResult { ComponentName = "PerformanceMonitoring" }; - - try - { - var performanceService = _serviceProvider.GetService(); - var benchmarkService = _serviceProvider.GetService(); - - if (performanceService != null) - { - // Test metrics recording - performanceService.RecordHttpRequest("GET", "/test", 200, 0.1); - performanceService.RecordDatabaseOperation("SELECT", "Test", 0.05); - - componentResult.Status = "Healthy"; - componentResult.Details["PerformanceServiceAvailable"] = true; - componentResult.Details["BenchmarkServiceAvailable"] = benchmarkService != null; - } - else - { - componentResult.Status = "Failed"; - componentResult.Issues.Add("Performance monitoring service not available"); - } - } - catch (Exception ex) - { - componentResult.Status = "Failed"; - componentResult.Issues.Add($"Performance monitoring validation failed: {ex.Message}"); - } - - result.ComponentResults["PerformanceMonitoring"] = componentResult; - } - - private async Task ValidateFeatureFlags(IntegrationValidationResult result) - { - var componentResult = new ComponentValidationResult { ComponentName = "FeatureFlags" }; - - try - { - var featureFlagService = _serviceProvider.GetService(); - - if (featureFlagService != null) - { - var allFlags = featureFlagService.GetAllFlags(); - var enabledCount = allFlags.Count(f => f.Value); - - componentResult.Status = "Healthy"; - componentResult.Details["TotalFlags"] = allFlags.Count; - componentResult.Details["EnabledFlags"] = enabledCount; - componentResult.Details["DisabledFlags"] = allFlags.Count - enabledCount; - } - else - { - componentResult.Status = "Failed"; - componentResult.Issues.Add("Feature flag service not available"); - } - } - catch (Exception ex) - { - componentResult.Status = "Failed"; - componentResult.Issues.Add($"Feature flag validation failed: {ex.Message}"); - } - - result.ComponentResults["FeatureFlags"] = componentResult; - } - - private async Task ValidateEndToEndWorkflow(IntegrationValidationResult result) - { - var componentResult = new ComponentValidationResult { ComponentName = "EndToEndWorkflow" }; - - try - { - // Test a complete workflow that uses multiple components - using var scope = _serviceProvider.CreateScope(); - var vehicleAccess = scope.ServiceProvider.GetService(); - - if (vehicleAccess != null) - { - // Test basic database operation - var vehicles = await vehicleAccess.GetVehiclesAsync(1); - - componentResult.Status = "Healthy"; - componentResult.Details["DatabaseOperationSuccessful"] = true; - componentResult.Details["VehicleCount"] = vehicles?.Count ?? 0; - } - else - { - componentResult.Status = "Failed"; - componentResult.Issues.Add("Vehicle data access not available for end-to-end test"); - } - } - catch (Exception ex) - { - componentResult.Status = "Failed"; - componentResult.Issues.Add($"End-to-end workflow validation failed: {ex.Message}"); - } - - result.ComponentResults["EndToEndWorkflow"] = componentResult; - } -} - -// 10.2: Integration validation models -public class IntegrationValidationResult -{ - public string OverallStatus { get; set; } = "Unknown"; - public DateTime ValidationTime { get; set; } = DateTime.UtcNow; - public Dictionary ComponentResults { get; set; } = new(); - public List GeneralIssues { get; set; } = new(); - public Dictionary Summary { get; set; } = new(); -} - -public class ComponentValidationResult -{ - public string ComponentName { get; set; } - public string Status { get; set; } = "Unknown"; - public Dictionary Details { get; set; } = new(); - public List Issues { get; set; } = new(); -} - -// 10.3: Integration validation startup service -public class IntegrationValidationStartupService : IHostedService -{ - private readonly IntegrationValidationService _validationService; - private readonly ILogger _logger; - - public IntegrationValidationStartupService( - IntegrationValidationService validationService, - ILogger logger) - { - _validationService = validationService; - _logger = logger; - } - - public async Task StartAsync(CancellationToken cancellationToken) - { - try - { - _logger.LogInformation("Starting comprehensive integration validation"); - var result = await _validationService.ValidateIntegrationAsync(); - - _logger.LogInformation("Integration validation completed. Overall Status: {OverallStatus}", result.OverallStatus); - - foreach (var component in result.ComponentResults) - { - var componentResult = component.Value; - _logger.LogInformation("Component {ComponentName}: {Status}", - componentResult.ComponentName, componentResult.Status); - - foreach (var detail in componentResult.Details) - { - _logger.LogDebug("Component {ComponentName} detail - {Key}: {Value}", - componentResult.ComponentName, detail.Key, detail.Value); - } - - foreach (var issue in componentResult.Issues) - { - _logger.LogWarning("Component {ComponentName} issue: {Issue}", - componentResult.ComponentName, issue); - } - } - - foreach (var issue in result.GeneralIssues) - { - _logger.LogError("Integration validation general issue: {Issue}", issue); - } - - if (result.OverallStatus != "Healthy") - { - _logger.LogWarning("Application integration validation indicates issues. Review component logs for details."); - } - else - { - _logger.LogInformation("All integration components are healthy and ready for Kubernetes deployment"); - } - } - catch (Exception ex) - { - _logger.LogError(ex, "Integration validation failed during startup"); - } - } - - public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask; -} -``` - -#### Testing Plan - -**Automated Tests**: -```csharp -[Test] -public async Task IntegrationValidationService_AllComponentsHealthy_ReturnsHealthyStatus() -{ - var services = new ServiceCollection(); - - // Add all required services - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - // ... add other services - - var serviceProvider = services.BuildServiceProvider(); - var validationService = new IntegrationValidationService(serviceProvider, Mock.Of>()); - - var result = await validationService.ValidateIntegrationAsync(); - - Assert.AreEqual("Healthy", result.OverallStatus); - Assert.IsTrue(result.ComponentResults.Count > 0); -} - -[Test] -public async Task IntegrationValidationStartupService_RunsAtStartup_LogsValidationResults() -{ - var mockLogger = new Mock>(); - var mockValidationService = new Mock(); - - var validationResult = new IntegrationValidationResult - { - OverallStatus = "Healthy", - ComponentResults = new Dictionary - { - ["StructuredLogging"] = new ComponentValidationResult - { - ComponentName = "StructuredLogging", - Status = "Healthy" - } - } - }; - - mockValidationService.Setup(x => x.ValidateIntegrationAsync()) - .ReturnsAsync(validationResult); - - var service = new IntegrationValidationStartupService( - mockValidationService.Object, - mockLogger.Object); - - await service.StartAsync(CancellationToken.None); - - // Verify integration validation was logged - mockLogger.Verify( - x => x.Log( - LogLevel.Information, - It.IsAny(), - It.Is((v, t) => v.ToString().Contains("Integration validation completed")), - It.IsAny(), - It.IsAny>()), - Times.Once); -} -``` - -**Manual Validation**: -1. Review startup logs to verify all components are healthy -2. Test with individual component failures and verify proper error logging -3. Verify all Phase 1 features work together correctly -4. Test application startup with all new components and review logs -5. Perform end-to-end user workflows -6. Verify Kubernetes readiness (health checks, configuration, etc.) - -**Success Criteria**: -- [ ] All Phase 1 components integrate successfully -- [ ] Integration validation service reports accurate status and logs details -- [ ] End-to-end workflows function correctly -- [ ] Application ready for Kubernetes deployment -- [ ] Comprehensive logging provides visibility into all components -- [ ] Performance remains within acceptable limits - ---- - -## Summary - -This detailed implementation plan provides a safe, step-by-step approach to Phase 1 with: - -1. **Incremental Changes**: Each step is isolated and testable -2. **Comprehensive Testing**: Automated and manual validation at each step -3. **Debugging Focus**: Extensive logging and diagnostic capabilities -4. **Risk Mitigation**: Rollback procedures and thorough validation -5. **Performance Monitoring**: Baseline and continuous validation -6. **Feature Control**: Feature flags for safe rollout of new functionality - -The plan ensures that any issues can be detected and resolved quickly before proceeding to the next step, making the overall Phase 1 implementation much safer and more reliable than the original approach. Each step builds upon the previous ones while maintaining full backward compatibility until the final integration. \ No newline at end of file diff --git a/docs/K8S-PHASE-1.md b/docs/K8S-PHASE-1.md deleted file mode 100644 index d1825f0..0000000 --- a/docs/K8S-PHASE-1.md +++ /dev/null @@ -1,365 +0,0 @@ -# Phase 1: Core Kubernetes Readiness (Weeks 1-4) - -This phase focuses on making the application compatible with Kubernetes deployment patterns while maintaining existing functionality. - -## Overview - -The primary goal of Phase 1 is to transform MotoVaultPro from a traditional self-hosted application into a Kubernetes-ready application. This involves removing state dependencies, externalizing configuration, implementing health checks, and modernizing the database architecture. - -## Key Objectives - -- **Configuration Externalization**: Move all configuration from files to Kubernetes-native management -- **Database Modernization**: Eliminate LiteDB dependency and optimize PostgreSQL usage -- **Health Check Implementation**: Add Kubernetes-compatible health check endpoints -- **Logging Enhancement**: Implement structured logging for centralized log aggregation - -## 1.1 Configuration Externalization - -**Objective**: Move all configuration from files to Kubernetes-native configuration management. - -**Current State**: -- Configuration stored in `appsettings.json` and environment variables -- Database connection strings in configuration files -- Feature flags and application settings mixed with deployment configuration - -**Target State**: -- All configuration externalized to ConfigMaps and Secrets -- Environment-specific configuration separated from application code -- Sensitive data (passwords, API keys) managed through Kubernetes Secrets - -### Implementation Tasks - -#### 1. Create ConfigMap templates for non-sensitive configuration -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: motovault-config -data: - APP_NAME: "MotoVaultPro" - LOG_LEVEL: "Information" - ENABLE_FEATURES: "OpenIDConnect,EmailNotifications" - CACHE_EXPIRY_MINUTES: "30" -``` - -#### 2. Create Secret templates for sensitive configuration -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: motovault-secrets -type: Opaque -data: - POSTGRES_CONNECTION: - MINIO_ACCESS_KEY: - MINIO_SECRET_KEY: - JWT_SECRET: -``` - -#### 3. Modify application startup to read from environment variables -- Update `Program.cs` to prioritize environment variables over file configuration -- Remove dependencies on `appsettings.json` for runtime configuration -- Implement configuration validation at startup - -#### 4. Remove file-based configuration dependencies -- Update all services to use IConfiguration instead of direct file access -- Ensure all configuration is injectable through dependency injection - -#### 5. Implement configuration validation at startup -- Add startup checks to ensure all required configuration is present -- Fail fast if critical configuration is missing - -## 1.2 Database Architecture Modernization - -**Objective**: Eliminate LiteDB dependency and optimize PostgreSQL usage for Kubernetes. - -**Current State**: -- Dual database support with LiteDB as default -- Single PostgreSQL connection for external database mode -- No connection pooling optimization for multiple instances - -**Target State**: -- PostgreSQL-only configuration with high availability -- Optimized connection pooling for horizontal scaling -- Database migration strategy for existing LiteDB installations - -### Implementation Tasks - -#### 1. Remove LiteDB implementation and dependencies -```csharp -// Remove all LiteDB-related code from: -// - External/Implementations/LiteDB/ -// - Remove LiteDB package references -// - Update dependency injection to only register PostgreSQL implementations -``` - -#### 2. Implement PostgreSQL HA configuration -```csharp -services.AddDbContext(options => -{ - options.UseNpgsql(connectionString, npgsqlOptions => - { - npgsqlOptions.EnableRetryOnFailure( - maxRetryCount: 3, - maxRetryDelay: TimeSpan.FromSeconds(5), - errorCodesToAdd: null); - }); -}); -``` - -#### 3. Add connection pooling configuration -```csharp -// Configure connection pooling for multiple instances -services.Configure(options => -{ - options.MaxPoolSize = 100; - options.MinPoolSize = 10; - options.ConnectionLifetime = 300; // 5 minutes -}); -``` - -#### 4. Create data migration tools for LiteDB to PostgreSQL conversion -- Develop utility to export data from LiteDB format -- Create import scripts for PostgreSQL -- Ensure data integrity during migration - -#### 5. Implement database health checks for Kubernetes probes -```csharp -public class DatabaseHealthCheck : IHealthCheck -{ - private readonly IDbContextFactory _contextFactory; - - public async Task CheckHealthAsync( - HealthCheckContext context, - CancellationToken cancellationToken = default) - { - try - { - using var dbContext = _contextFactory.CreateDbContext(); - await dbContext.Database.CanConnectAsync(cancellationToken); - return HealthCheckResult.Healthy("Database connection successful"); - } - catch (Exception ex) - { - return HealthCheckResult.Unhealthy("Database connection failed", ex); - } - } -} -``` - -## 1.3 Health Check Implementation - -**Objective**: Add Kubernetes-compatible health check endpoints for proper orchestration. - -**Current State**: -- No dedicated health check endpoints -- Application startup/shutdown not optimized for Kubernetes - -**Target State**: -- Comprehensive health checks for all dependencies -- Proper readiness and liveness probe endpoints -- Graceful shutdown handling for pod termination - -### Implementation Tasks - -#### 1. Add health check middleware -```csharp -// Program.cs -builder.Services.AddHealthChecks() - .AddNpgSql(connectionString, name: "database") - .AddRedis(redisConnectionString, name: "cache") - .AddCheck("minio"); - -app.MapHealthChecks("/health/ready", new HealthCheckOptions -{ - Predicate = check => check.Tags.Contains("ready"), - ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse -}); - -app.MapHealthChecks("/health/live", new HealthCheckOptions -{ - Predicate = _ => false // Only check if the app is responsive -}); -``` - -#### 2. Implement custom health checks -```csharp -public class MinIOHealthCheck : IHealthCheck -{ - private readonly IMinioClient _minioClient; - - public async Task CheckHealthAsync( - HealthCheckContext context, - CancellationToken cancellationToken = default) - { - try - { - await _minioClient.ListBucketsAsync(cancellationToken); - return HealthCheckResult.Healthy("MinIO is accessible"); - } - catch (Exception ex) - { - return HealthCheckResult.Unhealthy("MinIO is not accessible", ex); - } - } -} -``` - -#### 3. Add graceful shutdown handling -```csharp -builder.Services.Configure(options => -{ - options.ShutdownTimeout = TimeSpan.FromSeconds(30); -}); -``` - -## 1.4 Logging Enhancement - -**Objective**: Implement structured logging suitable for centralized log aggregation. - -**Current State**: -- Basic logging with simple string messages -- No correlation IDs for distributed tracing -- Log levels not optimized for production monitoring - -**Target State**: -- JSON-structured logging with correlation IDs -- Centralized log aggregation compatibility -- Performance and error metrics embedded in logs - -### Implementation Tasks - -#### 1. Configure structured logging -```csharp -builder.Services.AddLogging(loggingBuilder => -{ - loggingBuilder.ClearProviders(); - loggingBuilder.AddJsonConsole(options => - { - options.IncludeScopes = true; - options.TimestampFormat = "yyyy-MM-ddTHH:mm:ss.fffZ"; - options.JsonWriterOptions = new JsonWriterOptions - { - Indented = false - }; - }); -}); -``` - -#### 2. Add correlation ID middleware -```csharp -public class CorrelationIdMiddleware -{ - public async Task InvokeAsync(HttpContext context, RequestDelegate next) - { - var correlationId = context.Request.Headers["X-Correlation-ID"] - .FirstOrDefault() ?? Guid.NewGuid().ToString(); - - using var scope = _logger.BeginScope(new Dictionary - { - ["CorrelationId"] = correlationId, - ["UserId"] = context.User?.Identity?.Name - }); - - context.Response.Headers.Add("X-Correlation-ID", correlationId); - await next(context); - } -} -``` - -#### 3. Implement performance logging for critical operations -- Add timing information to database operations -- Log request/response metrics -- Include user context in all log entries - -## Week-by-Week Breakdown - -### Week 1: Environment Setup and Configuration -- **Days 1-2**: Set up development Kubernetes environment -- **Days 3-4**: Create ConfigMap and Secret templates -- **Days 5-7**: Modify application to read from environment variables - -### Week 2: Database Migration -- **Days 1-3**: Remove LiteDB dependencies -- **Days 4-5**: Implement PostgreSQL connection pooling -- **Days 6-7**: Create data migration utilities - -### Week 3: Health Checks and Monitoring -- **Days 1-3**: Implement health check endpoints -- **Days 4-5**: Add custom health checks for dependencies -- **Days 6-7**: Test health check functionality - -### Week 4: Logging and Documentation -- **Days 1-3**: Implement structured logging -- **Days 4-5**: Add correlation ID middleware -- **Days 6-7**: Document changes and prepare for Phase 2 - -## Success Criteria - -- [ ] Application starts successfully using only environment variables -- [ ] All LiteDB dependencies removed -- [ ] PostgreSQL connection pooling configured and tested -- [ ] Health check endpoints return appropriate status -- [ ] Structured JSON logging implemented -- [ ] Data migration tool successfully converts LiteDB to PostgreSQL -- [ ] Application can be deployed to Kubernetes without file dependencies - -## Testing Requirements - -### Unit Tests -- Configuration validation logic -- Health check implementations -- Database connection handling - -### Integration Tests -- End-to-end application startup with external configuration -- Database connectivity and migration -- Health check endpoint responses - -### Manual Testing -- Deploy to development Kubernetes cluster -- Verify all functionality works without local file dependencies -- Test health check endpoints with kubectl - -## Deliverables - -1. **Updated Application Code** - - Removed LiteDB dependencies - - Externalized configuration - - Added health checks - - Implemented structured logging - -2. **Kubernetes Manifests** - - ConfigMap templates - - Secret templates - - Basic deployment configuration for testing - -3. **Migration Tools** - - LiteDB to PostgreSQL data migration utility - - Configuration migration scripts - -4. **Documentation** - - Updated deployment instructions - - Configuration reference - - Health check endpoint documentation - -## Dependencies - -- Kubernetes cluster (development environment) -- PostgreSQL instance for testing -- Docker registry for container images - -## Risks and Mitigations - -### Risk: Data Loss During Migration -**Mitigation**: Comprehensive backup strategy and thorough testing of migration tools - -### Risk: Configuration Errors -**Mitigation**: Configuration validation at startup and extensive testing - -### Risk: Performance Degradation -**Mitigation**: Performance testing and gradual rollout with monitoring - ---- - -**Next Phase**: [Phase 2: High Availability Infrastructure](K8S-PHASE-2.md) \ No newline at end of file diff --git a/docs/K8S-PHASE-2.md b/docs/K8S-PHASE-2.md deleted file mode 100644 index df21bb5..0000000 --- a/docs/K8S-PHASE-2.md +++ /dev/null @@ -1,742 +0,0 @@ -# Phase 2: High Availability Infrastructure (Weeks 5-8) - -This phase focuses on implementing the supporting infrastructure required for high availability, including MinIO clusters, PostgreSQL HA setup, Redis clusters, and file storage abstraction. - -## Overview - -Phase 2 transforms MotoVaultPro's supporting infrastructure from single-instance services to highly available, distributed systems. This phase establishes the foundation for true high availability by eliminating all single points of failure in the data layer. - -## Key Objectives - -- **MinIO High Availability**: Deploy distributed object storage with erasure coding -- **File Storage Abstraction**: Create unified interface for file operations -- **PostgreSQL HA**: Implement primary/replica configuration with automated failover -- **Redis Cluster**: Deploy distributed caching and session storage -- **Data Migration**: Seamless transition from local storage to distributed systems - -## 2.1 MinIO High Availability Setup - -**Objective**: Deploy a highly available MinIO cluster for file storage with automatic failover. - -**Architecture Overview**: -MinIO will be deployed as a distributed cluster with erasure coding for data protection and automatic healing capabilities. - -### MinIO Cluster Configuration - -```yaml -# MinIO Tenant Configuration -apiVersion: minio.min.io/v2 -kind: Tenant -metadata: - name: motovault-minio - namespace: motovault -spec: - image: minio/minio:RELEASE.2024-01-16T16-07-38Z - creationDate: 2024-01-20T10:00:00Z - pools: - - servers: 4 - name: pool-0 - volumesPerServer: 4 - volumeClaimTemplate: - metadata: - name: data - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 100Gi - storageClassName: fast-ssd - mountPath: /export - subPath: /data - requestAutoCert: false - certConfig: - commonName: "" - organizationName: [] - dnsNames: [] - console: - image: minio/console:v0.22.5 - replicas: 2 - consoleSecret: - name: motovault-minio-console-secret - configuration: - name: motovault-minio-config -``` - -### Implementation Tasks - -#### 1. Deploy MinIO Operator -```bash -kubectl apply -k "github.com/minio/operator/resources" -``` - -#### 2. Create MinIO cluster configuration with erasure coding -- Configure 4+ nodes for optimal erasure coding -- Set up data protection with automatic healing -- Configure storage classes for performance - -#### 3. Configure backup policies for disaster recovery -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: minio-backup-policy -data: - backup-policy.json: | - { - "rules": [ - { - "id": "motovault-backup", - "status": "Enabled", - "transition": { - "days": 30, - "storage_class": "GLACIER" - } - } - ] - } -``` - -#### 4. Set up monitoring with Prometheus metrics -```yaml -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: minio-metrics -spec: - selector: - matchLabels: - app: minio - endpoints: - - port: http-minio - path: /minio/v2/metrics/cluster -``` - -#### 5. Create service endpoints for application connectivity -```yaml -apiVersion: v1 -kind: Service -metadata: - name: minio-service -spec: - selector: - app: minio - ports: - - name: http - port: 9000 - targetPort: 9000 - - name: console - port: 9001 - targetPort: 9001 -``` - -### MinIO High Availability Features - -- **Erasure Coding**: Data is split across multiple drives with parity for automatic healing -- **Distributed Architecture**: No single point of failure -- **Automatic Healing**: Corrupted data is automatically detected and repaired -- **Load Balancing**: Built-in load balancing across cluster nodes -- **Bucket Policies**: Fine-grained access control for different data types - -## 2.2 File Storage Abstraction Implementation - -**Objective**: Create an abstraction layer that allows seamless switching between local filesystem and MinIO object storage. - -**Current State**: -- Direct filesystem operations throughout the application -- File paths hardcoded in various controllers and services -- No abstraction for different storage backends - -**Target State**: -- Unified file storage interface -- Pluggable storage implementations -- Transparent migration between storage types - -### Implementation Tasks - -#### 1. Define storage abstraction interface -```csharp -public interface IFileStorageService -{ - Task UploadFileAsync(Stream fileStream, string fileName, string contentType, CancellationToken cancellationToken = default); - Task DownloadFileAsync(string fileId, CancellationToken cancellationToken = default); - Task DeleteFileAsync(string fileId, CancellationToken cancellationToken = default); - Task GetFileMetadataAsync(string fileId, CancellationToken cancellationToken = default); - Task> ListFilesAsync(string prefix = null, CancellationToken cancellationToken = default); - Task GeneratePresignedUrlAsync(string fileId, TimeSpan expiration, CancellationToken cancellationToken = default); -} - -public class FileMetadata -{ - public string Id { get; set; } - public string FileName { get; set; } - public string ContentType { get; set; } - public long Size { get; set; } - public DateTime CreatedDate { get; set; } - public DateTime ModifiedDate { get; set; } - public Dictionary Tags { get; set; } -} -``` - -#### 2. Implement MinIO storage service -```csharp -public class MinIOFileStorageService : IFileStorageService -{ - private readonly IMinioClient _minioClient; - private readonly ILogger _logger; - private readonly string _bucketName; - - public MinIOFileStorageService(IMinioClient minioClient, IConfiguration configuration, ILogger logger) - { - _minioClient = minioClient; - _logger = logger; - _bucketName = configuration["MinIO:BucketName"] ?? "motovault-files"; - } - - public async Task UploadFileAsync(Stream fileStream, string fileName, string contentType, CancellationToken cancellationToken = default) - { - var fileId = $"{Guid.NewGuid()}/{fileName}"; - - try - { - await _minioClient.PutObjectAsync(new PutObjectArgs() - .WithBucket(_bucketName) - .WithObject(fileId) - .WithStreamData(fileStream) - .WithObjectSize(fileStream.Length) - .WithContentType(contentType) - .WithHeaders(new Dictionary - { - ["X-Amz-Meta-Original-Name"] = fileName, - ["X-Amz-Meta-Upload-Date"] = DateTime.UtcNow.ToString("O") - }), cancellationToken); - - _logger.LogInformation("File uploaded successfully: {FileId}", fileId); - return fileId; - } - catch (Exception ex) - { - _logger.LogError(ex, "Failed to upload file: {FileName}", fileName); - throw; - } - } - - public async Task DownloadFileAsync(string fileId, CancellationToken cancellationToken = default) - { - try - { - var memoryStream = new MemoryStream(); - await _minioClient.GetObjectAsync(new GetObjectArgs() - .WithBucket(_bucketName) - .WithObject(fileId) - .WithCallbackStream(stream => stream.CopyTo(memoryStream)), cancellationToken); - - memoryStream.Position = 0; - return memoryStream; - } - catch (Exception ex) - { - _logger.LogError(ex, "Failed to download file: {FileId}", fileId); - throw; - } - } - - // Additional method implementations... -} -``` - -#### 3. Create fallback storage service for graceful degradation -```csharp -public class FallbackFileStorageService : IFileStorageService -{ - private readonly IFileStorageService _primaryService; - private readonly IFileStorageService _fallbackService; - private readonly ILogger _logger; - - public FallbackFileStorageService( - IFileStorageService primaryService, - IFileStorageService fallbackService, - ILogger logger) - { - _primaryService = primaryService; - _fallbackService = fallbackService; - _logger = logger; - } - - public async Task UploadFileAsync(Stream fileStream, string fileName, string contentType, CancellationToken cancellationToken = default) - { - try - { - return await _primaryService.UploadFileAsync(fileStream, fileName, contentType, cancellationToken); - } - catch (Exception ex) - { - _logger.LogWarning(ex, "Primary storage failed, falling back to secondary storage"); - fileStream.Position = 0; // Reset stream position - return await _fallbackService.UploadFileAsync(fileStream, fileName, contentType, cancellationToken); - } - } - - // Implementation with automatic fallback logic for other methods... -} -``` - -#### 4. Update all file operations to use the abstraction layer -- Replace direct File.WriteAllBytes, File.ReadAllBytes calls -- Update all controllers to use IFileStorageService -- Modify attachment handling in vehicle records - -#### 5. Implement file migration utility for existing local files -```csharp -public class FileMigrationService -{ - private readonly IFileStorageService _targetStorage; - private readonly ILogger _logger; - - public async Task MigrateLocalFilesAsync(string localPath) - { - var result = new MigrationResult(); - var files = Directory.GetFiles(localPath, "*", SearchOption.AllDirectories); - - foreach (var filePath in files) - { - try - { - using var fileStream = File.OpenRead(filePath); - var fileName = Path.GetFileName(filePath); - var contentType = GetContentType(fileName); - - var fileId = await _targetStorage.UploadFileAsync(fileStream, fileName, contentType); - result.ProcessedFiles.Add(new MigratedFile - { - OriginalPath = filePath, - NewFileId = fileId, - Success = true - }); - } - catch (Exception ex) - { - _logger.LogError(ex, "Failed to migrate file: {FilePath}", filePath); - result.ProcessedFiles.Add(new MigratedFile - { - OriginalPath = filePath, - Success = false, - Error = ex.Message - }); - } - } - - return result; - } -} -``` - -## 2.3 PostgreSQL High Availability Configuration - -**Objective**: Set up a PostgreSQL cluster with automatic failover and read replicas. - -**Architecture Overview**: -PostgreSQL will be deployed using an operator (like CloudNativePG or Postgres Operator) to provide automated failover, backup, and scaling capabilities. - -### PostgreSQL Cluster Configuration - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: motovault-postgres - namespace: motovault -spec: - instances: 3 - primaryUpdateStrategy: unsupervised - - postgresql: - parameters: - max_connections: "200" - shared_buffers: "256MB" - effective_cache_size: "1GB" - maintenance_work_mem: "64MB" - checkpoint_completion_target: "0.9" - wal_buffers: "16MB" - default_statistics_target: "100" - random_page_cost: "1.1" - effective_io_concurrency: "200" - - resources: - requests: - memory: "2Gi" - cpu: "1000m" - limits: - memory: "4Gi" - cpu: "2000m" - - storage: - size: "100Gi" - storageClass: "fast-ssd" - - monitoring: - enabled: true - - backup: - retentionPolicy: "30d" - barmanObjectStore: - destinationPath: "s3://motovault-backups/postgres" - s3Credentials: - accessKeyId: - name: postgres-backup-credentials - key: ACCESS_KEY_ID - secretAccessKey: - name: postgres-backup-credentials - key: SECRET_ACCESS_KEY - wal: - retention: "5d" - data: - retention: "30d" - jobs: 1 -``` - -### Implementation Tasks - -#### 1. Deploy PostgreSQL operator (CloudNativePG recommended) -```bash -kubectl apply -f https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-1.20/releases/cnpg-1.20.1.yaml -``` - -#### 2. Configure cluster with primary/replica setup -- 3-node cluster with automatic failover -- Read-write split capability -- Streaming replication configuration - -#### 3. Set up automated backups to MinIO or external storage -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: motovault-postgres-backup -spec: - schedule: "0 2 * * *" # Daily at 2 AM - backupOwnerReference: self - cluster: - name: motovault-postgres -``` - -#### 4. Implement connection pooling with PgBouncer -```yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: pgbouncer -spec: - replicas: 2 - selector: - matchLabels: - app: pgbouncer - template: - spec: - containers: - - name: pgbouncer - image: pgbouncer/pgbouncer:latest - env: - - name: DATABASES_HOST - value: motovault-postgres-rw - - name: DATABASES_PORT - value: "5432" - - name: DATABASES_DATABASE - value: motovault - - name: POOL_MODE - value: session - - name: MAX_CLIENT_CONN - value: "1000" - - name: DEFAULT_POOL_SIZE - value: "25" -``` - -#### 5. Configure monitoring and alerting for database health -```yaml -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: postgres-metrics -spec: - selector: - matchLabels: - app.kubernetes.io/name: cloudnative-pg - endpoints: - - port: metrics - path: /metrics -``` - -## 2.4 Redis Cluster for Session Management - -**Objective**: Implement distributed session storage and caching using Redis cluster. - -**Current State**: -- In-memory session storage tied to individual application instances -- No distributed caching for expensive operations -- Configuration and translation data loaded on each application start - -**Target State**: -- Redis cluster for distributed session storage -- Centralized caching for frequently accessed data -- High availability with automatic failover - -### Redis Cluster Configuration - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: redis-cluster-config - namespace: motovault -data: - redis.conf: | - cluster-enabled yes - cluster-require-full-coverage no - cluster-node-timeout 15000 - cluster-config-file /data/nodes.conf - cluster-migration-barrier 1 - appendonly yes - appendfsync everysec - save 900 1 - save 300 10 - save 60 10000 - ---- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: redis-cluster - namespace: motovault -spec: - serviceName: redis-cluster - replicas: 6 - selector: - matchLabels: - app: redis-cluster - template: - metadata: - labels: - app: redis-cluster - spec: - containers: - - name: redis - image: redis:7-alpine - command: - - redis-server - - /etc/redis/redis.conf - ports: - - containerPort: 6379 - - containerPort: 16379 - resources: - requests: - memory: "512Mi" - cpu: "250m" - limits: - memory: "1Gi" - cpu: "500m" - volumeMounts: - - name: redis-config - mountPath: /etc/redis - - name: redis-data - mountPath: /data - volumes: - - name: redis-config - configMap: - name: redis-cluster-config - volumeClaimTemplates: - - metadata: - name: redis-data - spec: - accessModes: ["ReadWriteOnce"] - resources: - requests: - storage: 10Gi -``` - -### Implementation Tasks - -#### 1. Deploy Redis cluster with 6 nodes (3 masters, 3 replicas) -```bash -# Initialize Redis cluster after deployment -kubectl exec -it redis-cluster-0 -- redis-cli --cluster create \ - redis-cluster-0.redis-cluster:6379 \ - redis-cluster-1.redis-cluster:6379 \ - redis-cluster-2.redis-cluster:6379 \ - redis-cluster-3.redis-cluster:6379 \ - redis-cluster-4.redis-cluster:6379 \ - redis-cluster-5.redis-cluster:6379 \ - --cluster-replicas 1 -``` - -#### 2. Configure session storage -```csharp -services.AddStackExchangeRedisCache(options => -{ - options.Configuration = configuration.GetConnectionString("Redis"); - options.InstanceName = "MotoVault"; -}); - -services.AddSession(options => -{ - options.IdleTimeout = TimeSpan.FromMinutes(30); - options.Cookie.HttpOnly = true; - options.Cookie.IsEssential = true; - options.Cookie.SecurePolicy = CookieSecurePolicy.Always; -}); -``` - -#### 3. Implement distributed caching -```csharp -public class CachedTranslationService : ITranslationService -{ - private readonly IDistributedCache _cache; - private readonly ITranslationService _translationService; - private readonly ILogger _logger; - - public async Task GetTranslationAsync(string key, string language) - { - var cacheKey = $"translation:{language}:{key}"; - var cached = await _cache.GetStringAsync(cacheKey); - - if (cached != null) - { - return cached; - } - - var translation = await _translationService.GetTranslationAsync(key, language); - - await _cache.SetStringAsync(cacheKey, translation, new DistributedCacheEntryOptions - { - SlidingExpiration = TimeSpan.FromHours(1) - }); - - return translation; - } -} -``` - -#### 4. Add cache monitoring and performance metrics -```csharp -public class CacheMetricsService -{ - private readonly Counter _cacheHits; - private readonly Counter _cacheMisses; - private readonly Histogram _cacheOperationDuration; - - public CacheMetricsService() - { - _cacheHits = Metrics.CreateCounter( - "motovault_cache_hits_total", - "Total cache hits", - new[] { "cache_type" }); - - _cacheMisses = Metrics.CreateCounter( - "motovault_cache_misses_total", - "Total cache misses", - new[] { "cache_type" }); - - _cacheOperationDuration = Metrics.CreateHistogram( - "motovault_cache_operation_duration_seconds", - "Cache operation duration", - new[] { "operation", "cache_type" }); - } -} -``` - -## Week-by-Week Breakdown - -### Week 5: MinIO Deployment -- **Days 1-2**: Deploy MinIO operator and configure basic cluster -- **Days 3-4**: Implement file storage abstraction interface -- **Days 5-7**: Create MinIO storage service implementation - -### Week 6: File Migration and PostgreSQL HA -- **Days 1-2**: Complete file storage abstraction and migration tools -- **Days 3-4**: Deploy PostgreSQL operator and HA cluster -- **Days 5-7**: Configure connection pooling and backup strategies - -### Week 7: Redis Cluster and Caching -- **Days 1-3**: Deploy Redis cluster and configure session storage -- **Days 4-5**: Implement distributed caching layer -- **Days 6-7**: Add cache monitoring and performance metrics - -### Week 8: Integration and Testing -- **Days 1-3**: End-to-end testing of all HA components -- **Days 4-5**: Performance testing and optimization -- **Days 6-7**: Documentation and preparation for Phase 3 - -## Success Criteria - -- [ ] MinIO cluster operational with erasure coding -- [ ] File storage abstraction implemented and tested -- [ ] PostgreSQL HA cluster with automatic failover -- [ ] Redis cluster providing distributed sessions -- [ ] All file operations migrated to object storage -- [ ] Comprehensive monitoring for all infrastructure components -- [ ] Backup and recovery procedures validated - -## Testing Requirements - -### Infrastructure Tests -- MinIO cluster failover scenarios -- PostgreSQL primary/replica failover -- Redis cluster node failure recovery -- Network partition handling - -### Application Integration Tests -- File upload/download through abstraction layer -- Session persistence across application restarts -- Cache performance and invalidation -- Database connection pool behavior - -### Performance Tests -- File storage throughput and latency -- Database query performance with connection pooling -- Cache hit/miss ratios and response times - -## Deliverables - -1. **Infrastructure Components** - - MinIO HA cluster configuration - - PostgreSQL HA cluster with operator - - Redis cluster deployment - - Monitoring and alerting setup - -2. **Application Updates** - - File storage abstraction implementation - - Session management configuration - - Distributed caching integration - - Connection pooling optimization - -3. **Migration Tools** - - File migration utility - - Database migration scripts - - Configuration migration helpers - -4. **Documentation** - - Infrastructure architecture diagrams - - Operational procedures - - Monitoring and alerting guides - -## Dependencies - -- Kubernetes cluster with sufficient resources -- Storage classes for persistent volumes -- Prometheus and Grafana for monitoring -- Network connectivity between components - -## Risks and Mitigations - -### Risk: Data Corruption During File Migration -**Mitigation**: Checksum validation and parallel running of old/new systems - -### Risk: Database Failover Issues -**Mitigation**: Extensive testing of failover scenarios and automated recovery - -### Risk: Cache Inconsistency -**Mitigation**: Proper cache invalidation strategies and monitoring - ---- - -**Previous Phase**: [Phase 1: Core Kubernetes Readiness](K8S-PHASE-1.md) -**Next Phase**: [Phase 3: Production Deployment](K8S-PHASE-3.md) \ No newline at end of file diff --git a/docs/K8S-PHASE-3.md b/docs/K8S-PHASE-3.md deleted file mode 100644 index c2ebbf3..0000000 --- a/docs/K8S-PHASE-3.md +++ /dev/null @@ -1,862 +0,0 @@ -# Phase 3: Production Deployment (Weeks 9-12) - -This phase focuses on deploying the modernized application with proper production configurations, monitoring, backup strategies, and operational procedures. - -## Overview - -Phase 3 transforms the development-ready Kubernetes application into a production-grade system with comprehensive monitoring, automated backup and recovery, secure ingress, and operational excellence. This phase ensures the system is ready for enterprise-level workloads with proper security, performance, and reliability guarantees. - -## Key Objectives - -- **Production Kubernetes Deployment**: Configure scalable, secure deployment manifests -- **Ingress and TLS Configuration**: Secure external access with proper routing -- **Comprehensive Monitoring**: Application and infrastructure observability -- **Backup and Disaster Recovery**: Automated backup strategies and recovery procedures -- **Migration Execution**: Seamless transition from legacy system - -## 3.1 Kubernetes Deployment Configuration - -**Objective**: Create production-ready Kubernetes manifests with proper resource management and high availability. - -### Application Deployment Configuration - -```yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: motovault-app - namespace: motovault - labels: - app: motovault - version: v1.0.0 -spec: - replicas: 3 - strategy: - type: RollingUpdate - rollingUpdate: - maxSurge: 1 - maxUnavailable: 0 - selector: - matchLabels: - app: motovault - template: - metadata: - labels: - app: motovault - version: v1.0.0 - annotations: - prometheus.io/scrape: "true" - prometheus.io/path: "/metrics" - prometheus.io/port: "8080" - spec: - serviceAccountName: motovault-service-account - securityContext: - runAsNonRoot: true - runAsUser: 1000 - fsGroup: 2000 - affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 100 - podAffinityTerm: - labelSelector: - matchExpressions: - - key: app - operator: In - values: - - motovault - topologyKey: kubernetes.io/hostname - - weight: 50 - podAffinityTerm: - labelSelector: - matchExpressions: - - key: app - operator: In - values: - - motovault - topologyKey: topology.kubernetes.io/zone - containers: - - name: motovault - image: motovault:latest - imagePullPolicy: Always - ports: - - containerPort: 8080 - name: http - protocol: TCP - env: - - name: ASPNETCORE_ENVIRONMENT - value: "Production" - - name: ASPNETCORE_URLS - value: "http://+:8080" - envFrom: - - configMapRef: - name: motovault-config - - secretRef: - name: motovault-secrets - resources: - requests: - memory: "512Mi" - cpu: "250m" - limits: - memory: "1Gi" - cpu: "500m" - readinessProbe: - httpGet: - path: /health/ready - port: 8080 - initialDelaySeconds: 10 - periodSeconds: 5 - timeoutSeconds: 3 - failureThreshold: 3 - livenessProbe: - httpGet: - path: /health/live - port: 8080 - initialDelaySeconds: 30 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 3 - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - capabilities: - drop: - - ALL - volumeMounts: - - name: tmp-volume - mountPath: /tmp - - name: app-logs - mountPath: /app/logs - volumes: - - name: tmp-volume - emptyDir: {} - - name: app-logs - emptyDir: {} - terminationGracePeriodSeconds: 30 - ---- -apiVersion: v1 -kind: Service -metadata: - name: motovault-service - namespace: motovault - labels: - app: motovault -spec: - type: ClusterIP - ports: - - port: 80 - targetPort: 8080 - protocol: TCP - name: http - selector: - app: motovault - ---- -apiVersion: policy/v1 -kind: PodDisruptionBudget -metadata: - name: motovault-pdb - namespace: motovault -spec: - minAvailable: 2 - selector: - matchLabels: - app: motovault -``` - -### Horizontal Pod Autoscaler Configuration - -```yaml -apiVersion: autoscaling/v2 -kind: HorizontalPodAutoscaler -metadata: - name: motovault-hpa - namespace: motovault -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: motovault-app - minReplicas: 3 - maxReplicas: 10 - metrics: - - type: Resource - resource: - name: cpu - target: - type: Utilization - averageUtilization: 70 - - type: Resource - resource: - name: memory - target: - type: Utilization - averageUtilization: 80 - behavior: - scaleUp: - stabilizationWindowSeconds: 300 - policies: - - type: Percent - value: 100 - periodSeconds: 15 - scaleDown: - stabilizationWindowSeconds: 300 - policies: - - type: Percent - value: 10 - periodSeconds: 60 -``` - -### Implementation Tasks - -#### 1. Create production namespace with security policies -```yaml -apiVersion: v1 -kind: Namespace -metadata: - name: motovault - labels: - pod-security.kubernetes.io/enforce: restricted - pod-security.kubernetes.io/audit: restricted - pod-security.kubernetes.io/warn: restricted -``` - -#### 2. Configure resource quotas and limits -```yaml -apiVersion: v1 -kind: ResourceQuota -metadata: - name: motovault-quota - namespace: motovault -spec: - hard: - requests.cpu: "4" - requests.memory: 8Gi - limits.cpu: "8" - limits.memory: 16Gi - persistentvolumeclaims: "10" - pods: "20" -``` - -#### 3. Set up service accounts and RBAC -```yaml -apiVersion: v1 -kind: ServiceAccount -metadata: - name: motovault-service-account - namespace: motovault ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: motovault-role - namespace: motovault -rules: -- apiGroups: [""] - resources: ["configmaps", "secrets"] - verbs: ["get", "list"] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: motovault-rolebinding - namespace: motovault -subjects: -- kind: ServiceAccount - name: motovault-service-account - namespace: motovault -roleRef: - kind: Role - name: motovault-role - apiGroup: rbac.authorization.k8s.io -``` - -#### 4. Configure pod anti-affinity for high availability -- Spread pods across nodes and availability zones -- Ensure no single point of failure -- Optimize for both performance and availability - -#### 5. Implement rolling update strategy with zero downtime -- Configure progressive rollout with health checks -- Automatic rollback on failure -- Canary deployment capabilities - -## 3.2 Ingress and TLS Configuration - -**Objective**: Configure secure external access with proper TLS termination and routing. - -### Ingress Configuration - -```yaml -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: motovault-ingress - namespace: motovault - annotations: - nginx.ingress.kubernetes.io/ssl-redirect: "true" - nginx.ingress.kubernetes.io/force-ssl-redirect: "true" - nginx.ingress.kubernetes.io/proxy-body-size: "50m" - nginx.ingress.kubernetes.io/proxy-read-timeout: "300" - nginx.ingress.kubernetes.io/proxy-send-timeout: "300" - cert-manager.io/cluster-issuer: "letsencrypt-prod" - nginx.ingress.kubernetes.io/rate-limit: "100" - nginx.ingress.kubernetes.io/rate-limit-window: "1m" -spec: - ingressClassName: nginx - tls: - - hosts: - - motovault.example.com - secretName: motovault-tls - rules: - - host: motovault.example.com - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: motovault-service - port: - number: 80 -``` - -### TLS Certificate Management - -```yaml -apiVersion: cert-manager.io/v1 -kind: ClusterIssuer -metadata: - name: letsencrypt-prod -spec: - acme: - server: https://acme-v02.api.letsencrypt.org/directory - email: admin@motovault.example.com - privateKeySecretRef: - name: letsencrypt-prod - solvers: - - http01: - ingress: - class: nginx -``` - -### Implementation Tasks - -#### 1. Deploy cert-manager for automated TLS -```bash -kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.0/cert-manager.yaml -``` - -#### 2. Configure Let's Encrypt for SSL certificates -- Automated certificate provisioning and renewal -- DNS-01 or HTTP-01 challenge configuration -- Certificate monitoring and alerting - -#### 3. Set up WAF and DDoS protection -```yaml -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: motovault-ingress-policy - namespace: motovault -spec: - podSelector: - matchLabels: - app: motovault - policyTypes: - - Ingress - ingress: - - from: - - namespaceSelector: - matchLabels: - name: nginx-ingress - ports: - - protocol: TCP - port: 8080 -``` - -#### 4. Configure rate limiting and security headers -- Request rate limiting per IP -- Security headers (HSTS, CSP, etc.) -- Request size limitations - -#### 5. Set up health check endpoints for load balancer -- Configure ingress health checks -- Implement graceful degradation -- Monitor certificate expiration - -## 3.3 Monitoring and Observability Setup - -**Objective**: Implement comprehensive monitoring, logging, and alerting for production operations. - -### Prometheus ServiceMonitor Configuration - -```yaml -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: motovault-metrics - namespace: motovault - labels: - app: motovault -spec: - selector: - matchLabels: - app: motovault - endpoints: - - port: http - path: /metrics - interval: 30s - scrapeTimeout: 10s -``` - -### Application Metrics Implementation - -```csharp -public class MetricsService -{ - private readonly Counter _httpRequestsTotal; - private readonly Histogram _httpRequestDuration; - private readonly Gauge _activeConnections; - private readonly Counter _databaseOperationsTotal; - private readonly Histogram _databaseOperationDuration; - - public MetricsService() - { - _httpRequestsTotal = Metrics.CreateCounter( - "motovault_http_requests_total", - "Total number of HTTP requests", - new[] { "method", "endpoint", "status_code" }); - - _httpRequestDuration = Metrics.CreateHistogram( - "motovault_http_request_duration_seconds", - "Duration of HTTP requests in seconds", - new[] { "method", "endpoint" }); - - _activeConnections = Metrics.CreateGauge( - "motovault_active_connections", - "Number of active database connections"); - - _databaseOperationsTotal = Metrics.CreateCounter( - "motovault_database_operations_total", - "Total number of database operations", - new[] { "operation", "table", "status" }); - - _databaseOperationDuration = Metrics.CreateHistogram( - "motovault_database_operation_duration_seconds", - "Duration of database operations in seconds", - new[] { "operation", "table" }); - } - - public void RecordHttpRequest(string method, string endpoint, int statusCode, double duration) - { - _httpRequestsTotal.WithLabels(method, endpoint, statusCode.ToString()).Inc(); - _httpRequestDuration.WithLabels(method, endpoint).Observe(duration); - } - - public void RecordDatabaseOperation(string operation, string table, bool success, double duration) - { - var status = success ? "success" : "error"; - _databaseOperationsTotal.WithLabels(operation, table, status).Inc(); - _databaseOperationDuration.WithLabels(operation, table).Observe(duration); - } -} -``` - -### Grafana Dashboard Configuration - -```json -{ - "dashboard": { - "title": "MotoVaultPro Application Dashboard", - "panels": [ - { - "title": "HTTP Request Rate", - "type": "graph", - "targets": [ - { - "expr": "rate(motovault_http_requests_total[5m])", - "legendFormat": "{{method}} {{endpoint}}" - } - ] - }, - { - "title": "Response Time Percentiles", - "type": "graph", - "targets": [ - { - "expr": "histogram_quantile(0.50, rate(motovault_http_request_duration_seconds_bucket[5m]))", - "legendFormat": "50th percentile" - }, - { - "expr": "histogram_quantile(0.95, rate(motovault_http_request_duration_seconds_bucket[5m]))", - "legendFormat": "95th percentile" - } - ] - }, - { - "title": "Database Connection Pool", - "type": "singlestat", - "targets": [ - { - "expr": "motovault_active_connections", - "legendFormat": "Active Connections" - } - ] - }, - { - "title": "Error Rate", - "type": "graph", - "targets": [ - { - "expr": "rate(motovault_http_requests_total{status_code=~\"5..\"}[5m])", - "legendFormat": "5xx errors" - } - ] - } - ] - } -} -``` - -### Alert Manager Configuration - -```yaml -groups: -- name: motovault.rules - rules: - - alert: HighErrorRate - expr: rate(motovault_http_requests_total{status_code=~"5.."}[5m]) > 0.1 - for: 2m - labels: - severity: critical - annotations: - summary: "High error rate detected" - description: "Error rate is {{ $value }}% for the last 5 minutes" - - - alert: HighResponseTime - expr: histogram_quantile(0.95, rate(motovault_http_request_duration_seconds_bucket[5m])) > 2 - for: 5m - labels: - severity: warning - annotations: - summary: "High response time detected" - description: "95th percentile response time is {{ $value }}s" - - - alert: DatabaseConnectionPoolExhaustion - expr: motovault_active_connections > 80 - for: 2m - labels: - severity: warning - annotations: - summary: "Database connection pool nearly exhausted" - description: "Active connections: {{ $value }}/100" - - - alert: PodCrashLooping - expr: rate(kube_pod_container_status_restarts_total{namespace="motovault"}[15m]) > 0 - for: 5m - labels: - severity: critical - annotations: - summary: "Pod is crash looping" - description: "Pod {{ $labels.pod }} is restarting frequently" -``` - -### Implementation Tasks - -#### 1. Deploy Prometheus and Grafana stack -```bash -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/bundle.yaml -``` - -#### 2. Configure application metrics endpoints -- Add Prometheus metrics middleware -- Implement custom business metrics -- Configure metric collection intervals - -#### 3. Set up centralized logging with structured logs -```csharp -builder.Services.AddLogging(loggingBuilder => -{ - loggingBuilder.AddJsonConsole(options => - { - options.JsonWriterOptions = new JsonWriterOptions { Indented = false }; - options.IncludeScopes = true; - options.TimestampFormat = "yyyy-MM-ddTHH:mm:ss.fffZ"; - }); -}); -``` - -#### 4. Create operational dashboards and alerts -- Application performance dashboards -- Infrastructure monitoring dashboards -- Business metrics and KPIs -- Alert routing and escalation - -#### 5. Implement distributed tracing -```csharp -services.AddOpenTelemetry() - .WithTracing(builder => - { - builder - .AddAspNetCoreInstrumentation() - .AddNpgsql() - .AddRedisInstrumentation() - .AddJaegerExporter(); - }); -``` - -## 3.4 Backup and Disaster Recovery - -**Objective**: Implement comprehensive backup strategies and disaster recovery procedures. - -### Velero Backup Configuration - -```yaml -apiVersion: velero.io/v1 -kind: Schedule -metadata: - name: motovault-daily-backup - namespace: velero -spec: - schedule: "0 2 * * *" # Daily at 2 AM - template: - includedNamespaces: - - motovault - includedResources: - - "*" - storageLocation: default - ttl: 720h0m0s # 30 days - snapshotVolumes: true - ---- -apiVersion: velero.io/v1 -kind: Schedule -metadata: - name: motovault-weekly-backup - namespace: velero -spec: - schedule: "0 3 * * 0" # Weekly on Sunday at 3 AM - template: - includedNamespaces: - - motovault - includedResources: - - "*" - storageLocation: default - ttl: 2160h0m0s # 90 days - snapshotVolumes: true -``` - -### Database Backup Strategy - -```bash -#!/bin/bash -# Automated database backup script - -BACKUP_DATE=$(date +%Y%m%d_%H%M%S) -BACKUP_FILE="motovault_backup_${BACKUP_DATE}.sql" -S3_BUCKET="motovault-backups" - -# Create database backup -kubectl exec -n motovault motovault-postgres-1 -- \ - pg_dump -U postgres motovault > "${BACKUP_FILE}" - -# Compress backup -gzip "${BACKUP_FILE}" - -# Upload to S3/MinIO -aws s3 cp "${BACKUP_FILE}.gz" "s3://${S3_BUCKET}/database/" - -# Clean up local file -rm "${BACKUP_FILE}.gz" - -# Retain only last 30 days of backups -aws s3api list-objects-v2 \ - --bucket "${S3_BUCKET}" \ - --prefix "database/" \ - --query 'Contents[?LastModified<=`'$(date -d "30 days ago" --iso-8601)'`].[Key]' \ - --output text | \ - xargs -I {} aws s3 rm "s3://${S3_BUCKET}/{}" -``` - -### Disaster Recovery Procedures - -```bash -#!/bin/bash -# Full system recovery script - -BACKUP_DATE=$1 -if [ -z "$BACKUP_DATE" ]; then - echo "Usage: $0 " - echo "Example: $0 20240120_020000" - exit 1 -fi - -# Stop application -echo "Scaling down application..." -kubectl scale deployment motovault-app --replicas=0 -n motovault - -# Restore database -echo "Restoring database from backup..." -aws s3 cp "s3://motovault-backups/database/database_backup_${BACKUP_DATE}.sql.gz" . -gunzip "database_backup_${BACKUP_DATE}.sql.gz" -kubectl exec -i motovault-postgres-1 -n motovault -- \ - psql -U postgres -d motovault < "database_backup_${BACKUP_DATE}.sql" - -# Restore MinIO data -echo "Restoring MinIO data..." -aws s3 sync "s3://motovault-backups/minio/${BACKUP_DATE}/" /tmp/minio_restore/ -mc mirror /tmp/minio_restore/ motovault-minio/motovault-files/ - -# Restart application -echo "Scaling up application..." -kubectl scale deployment motovault-app --replicas=3 -n motovault - -# Verify health -echo "Waiting for application to be ready..." -kubectl wait --for=condition=ready pod -l app=motovault -n motovault --timeout=300s - -echo "Recovery completed successfully" -``` - -### Implementation Tasks - -#### 1. Deploy Velero for Kubernetes backup -```bash -velero install \ - --provider aws \ - --plugins velero/velero-plugin-for-aws:v1.7.0 \ - --bucket motovault-backups \ - --backup-location-config region=us-west-2 \ - --snapshot-location-config region=us-west-2 -``` - -#### 2. Configure automated database backups -- Point-in-time recovery setup -- Incremental backup strategies -- Cross-region backup replication - -#### 3. Implement MinIO backup synchronization -- Automated file backup to external storage -- Metadata backup and restoration -- Verification of backup integrity - -#### 4. Create disaster recovery runbooks -- Step-by-step recovery procedures -- RTO/RPO definitions and testing -- Contact information and escalation procedures - -#### 5. Set up backup monitoring and alerting -```yaml -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: backup-alerts -spec: - groups: - - name: backup.rules - rules: - - alert: BackupFailed - expr: velero_backup_failure_total > 0 - labels: - severity: critical - annotations: - summary: "Backup operation failed" - description: "Velero backup has failed" -``` - -## Week-by-Week Breakdown - -### Week 9: Production Kubernetes Configuration -- **Days 1-2**: Create production deployment manifests -- **Days 3-4**: Configure HPA, PDB, and resource quotas -- **Days 5-7**: Set up RBAC and security policies - -### Week 10: Ingress and TLS Setup -- **Days 1-2**: Deploy and configure ingress controller -- **Days 3-4**: Set up cert-manager and TLS certificates -- **Days 5-7**: Configure security policies and rate limiting - -### Week 11: Monitoring and Observability -- **Days 1-3**: Deploy Prometheus and Grafana stack -- **Days 4-5**: Configure application metrics and dashboards -- **Days 6-7**: Set up alerting and notification channels - -### Week 12: Backup and Migration Preparation -- **Days 1-3**: Deploy and configure backup solutions -- **Days 4-5**: Create migration scripts and procedures -- **Days 6-7**: Execute migration dry runs and validation - -## Success Criteria - -- [ ] Production Kubernetes deployment with 99.9% availability -- [ ] Secure ingress with automated TLS certificate management -- [ ] Comprehensive monitoring with alerting -- [ ] Automated backup and recovery procedures tested -- [ ] Migration procedures validated and documented -- [ ] Security policies and network controls implemented -- [ ] Performance baselines established and monitored - -## Testing Requirements - -### Production Readiness Tests -- Load testing under expected traffic patterns -- Failover testing for all components -- Security penetration testing -- Backup and recovery validation - -### Performance Tests -- Application response time under load -- Database performance with connection pooling -- Cache performance and hit ratios -- Network latency and throughput - -### Security Tests -- Container image vulnerability scanning -- Network policy validation -- Authentication and authorization testing -- TLS configuration verification - -## Deliverables - -1. **Production Deployment** - - Complete Kubernetes manifests - - Security configurations - - Monitoring and alerting setup - - Backup and recovery procedures - -2. **Documentation** - - Operational runbooks - - Security procedures - - Monitoring guides - - Disaster recovery plans - -3. **Migration Tools** - - Data migration scripts - - Validation tools - - Rollback procedures - -## Dependencies - -- Production Kubernetes cluster -- External storage for backups -- DNS management for ingress -- Certificate authority for TLS -- Monitoring infrastructure - -## Risks and Mitigations - -### Risk: Extended Downtime During Migration -**Mitigation**: Blue-green deployment strategy with comprehensive rollback plan - -### Risk: Data Integrity Issues -**Mitigation**: Extensive validation and parallel running during transition - -### Risk: Performance Degradation -**Mitigation**: Load testing and gradual traffic migration - ---- - -**Previous Phase**: [Phase 2: High Availability Infrastructure](K8S-PHASE-2.md) -**Next Phase**: [Phase 4: Advanced Features and Optimization](K8S-PHASE-4.md) \ No newline at end of file diff --git a/docs/K8S-PHASE-4.md b/docs/K8S-PHASE-4.md deleted file mode 100644 index 1b343d6..0000000 --- a/docs/K8S-PHASE-4.md +++ /dev/null @@ -1,885 +0,0 @@ -# Phase 4: Advanced Features and Optimization (Weeks 13-16) - -This phase focuses on advanced cloud-native features, performance optimization, security enhancements, and final production migration. - -## Overview - -Phase 4 elevates MotoVaultPro to a truly cloud-native application with enterprise-grade features including advanced caching strategies, performance optimization, enhanced security, and seamless production migration. This phase ensures the system is optimized for scale, security, and operational excellence. - -## Key Objectives - -- **Advanced Caching Strategies**: Multi-layer caching for optimal performance -- **Performance Optimization**: Database and application tuning for high load -- **Security Enhancements**: Advanced security features and compliance -- **Production Migration**: Final cutover and optimization -- **Operational Excellence**: Advanced monitoring and automation - -## 4.1 Advanced Caching Strategies - -**Objective**: Implement multi-layer caching for optimal performance and reduced database load. - -### Cache Architecture - -``` -┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ -│ Browser │ │ CDN/Proxy │ │ Application │ -│ Cache │◄──►│ Cache │◄──►│ Memory Cache │ -│ (Static) │ │ (Static + │ │ (L1) │ -│ │ │ Dynamic) │ │ │ -└─────────────────┘ └─────────────────┘ └─────────────────┘ - │ - ┌─────────────────┐ - │ Redis Cache │ - │ (L2) │ - │ Distributed │ - └─────────────────┘ - │ - ┌─────────────────┐ - │ Database │ - │ (Source) │ - │ │ - └─────────────────┘ -``` - -### Multi-Level Cache Service Implementation - -```csharp -public class MultiLevelCacheService -{ - private readonly IMemoryCache _memoryCache; - private readonly IDistributedCache _distributedCache; - private readonly ILogger _logger; - - public async Task GetAsync(string key, Func> factory, TimeSpan? expiration = null) - { - // L1 Cache - Memory - if (_memoryCache.TryGetValue(key, out T cachedValue)) - { - _logger.LogDebug("Cache hit (L1): {Key}", key); - return cachedValue; - } - - // L2 Cache - Redis - var distributedValue = await _distributedCache.GetStringAsync(key); - if (distributedValue != null) - { - var deserializedValue = JsonSerializer.Deserialize(distributedValue); - _memoryCache.Set(key, deserializedValue, TimeSpan.FromMinutes(5)); // Short-lived L1 cache - _logger.LogDebug("Cache hit (L2): {Key}", key); - return deserializedValue; - } - - // Cache miss - fetch from source - _logger.LogDebug("Cache miss: {Key}", key); - var value = await factory(); - - // Store in both cache levels - var serializedValue = JsonSerializer.Serialize(value); - await _distributedCache.SetStringAsync(key, serializedValue, new DistributedCacheEntryOptions - { - SlidingExpiration = expiration ?? TimeSpan.FromHours(1) - }); - - _memoryCache.Set(key, value, TimeSpan.FromMinutes(5)); - - return value; - } -} -``` - -### Cache Invalidation Strategy - -```csharp -public class CacheInvalidationService -{ - private readonly IDistributedCache _distributedCache; - private readonly IMemoryCache _memoryCache; - private readonly ILogger _logger; - - public async Task InvalidatePatternAsync(string pattern) - { - // Implement cache invalidation using Redis key pattern matching - var keys = await GetKeysMatchingPatternAsync(pattern); - - var tasks = keys.Select(async key => - { - await _distributedCache.RemoveAsync(key); - _memoryCache.Remove(key); - _logger.LogDebug("Invalidated cache key: {Key}", key); - }); - - await Task.WhenAll(tasks); - } - - public async Task InvalidateVehicleDataAsync(int vehicleId) - { - var patterns = new[] - { - $"vehicle:{vehicleId}:*", - $"dashboard:{vehicleId}:*", - $"reports:{vehicleId}:*" - }; - - foreach (var pattern in patterns) - { - await InvalidatePatternAsync(pattern); - } - } -} -``` - -### Implementation Tasks - -#### 1. Implement intelligent cache warming -```csharp -public class CacheWarmupService : BackgroundService -{ - protected override async Task ExecuteAsync(CancellationToken stoppingToken) - { - while (!stoppingToken.IsCancellationRequested) - { - await WarmupFrequentlyAccessedData(); - await Task.Delay(TimeSpan.FromHours(1), stoppingToken); - } - } - - private async Task WarmupFrequentlyAccessedData() - { - // Pre-load dashboard data for active users - var activeUsers = await GetActiveUsersAsync(); - - var warmupTasks = activeUsers.Select(async user => - { - await _cacheService.GetAsync($"dashboard:{user.Id}", - () => _dashboardService.GetDashboardDataAsync(user.Id)); - }); - - await Task.WhenAll(warmupTasks); - } -} -``` - -#### 2. Configure CDN integration for static assets -```yaml -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: motovault-cdn-ingress - annotations: - nginx.ingress.kubernetes.io/configuration-snippet: | - add_header Cache-Control "public, max-age=31536000, immutable"; - add_header X-Cache-Status $upstream_cache_status; -spec: - rules: - - host: cdn.motovault.example.com - http: - paths: - - path: /static - pathType: Prefix - backend: - service: - name: motovault-service - port: - number: 80 -``` - -#### 3. Implement cache monitoring and metrics -```csharp -public class CacheMetricsMiddleware -{ - private readonly Counter _cacheHits; - private readonly Counter _cacheMisses; - private readonly Histogram _cacheLatency; - - public async Task InvokeAsync(HttpContext context, RequestDelegate next) - { - var stopwatch = Stopwatch.StartNew(); - - // Track cache operations during request - context.Response.OnStarting(() => - { - var cacheStatus = context.Response.Headers["X-Cache-Status"].FirstOrDefault(); - - if (cacheStatus == "HIT") - _cacheHits.Inc(); - else if (cacheStatus == "MISS") - _cacheMisses.Inc(); - - _cacheLatency.Observe(stopwatch.Elapsed.TotalSeconds); - return Task.CompletedTask; - }); - - await next(context); - } -} -``` - -## 4.2 Performance Optimization - -**Objective**: Optimize application performance for high-load scenarios. - -### Database Query Optimization - -```csharp -public class OptimizedVehicleService -{ - private readonly IDbContextFactory _dbContextFactory; - private readonly IMemoryCache _cache; - - public async Task GetDashboardDataAsync(int userId, int vehicleId) - { - var cacheKey = $"dashboard:{userId}:{vehicleId}"; - - if (_cache.TryGetValue(cacheKey, out VehicleDashboardData cached)) - { - return cached; - } - - using var context = _dbContextFactory.CreateDbContext(); - - // Optimized single query with projections - var dashboardData = await context.Vehicles - .Where(v => v.Id == vehicleId && v.UserId == userId) - .Select(v => new VehicleDashboardData - { - Vehicle = v, - RecentServices = v.ServiceRecords - .OrderByDescending(s => s.Date) - .Take(5) - .ToList(), - UpcomingReminders = v.ReminderRecords - .Where(r => r.IsActive && r.DueDate > DateTime.Now) - .OrderBy(r => r.DueDate) - .Take(5) - .ToList(), - FuelEfficiency = v.GasRecords - .Where(g => g.Date >= DateTime.Now.AddMonths(-3)) - .Average(g => g.Efficiency), - TotalMileage = v.OdometerRecords - .OrderByDescending(o => o.Date) - .FirstOrDefault().Mileage ?? 0 - }) - .AsNoTracking() - .FirstOrDefaultAsync(); - - _cache.Set(cacheKey, dashboardData, TimeSpan.FromMinutes(15)); - return dashboardData; - } -} -``` - -### Connection Pool Optimization - -```csharp -services.AddDbContextFactory(options => -{ - options.UseNpgsql(connectionString, npgsqlOptions => - { - npgsqlOptions.EnableRetryOnFailure( - maxRetryCount: 3, - maxRetryDelay: TimeSpan.FromSeconds(5), - errorCodesToAdd: null); - npgsqlOptions.CommandTimeout(30); - }); - - // Optimize for read-heavy workloads - options.EnableSensitiveDataLogging(false); - options.EnableServiceProviderCaching(); - options.EnableDetailedErrors(false); -}, ServiceLifetime.Singleton); - -// Configure connection pooling -services.Configure(builder => -{ - builder.MaxPoolSize = 100; - builder.MinPoolSize = 10; - builder.ConnectionLifetime = 300; - builder.ConnectionPruningInterval = 10; - builder.ConnectionIdleLifetime = 300; -}); -``` - -### Application Performance Optimization - -```csharp -public class PerformanceOptimizationService -{ - // Implement bulk operations for data modifications - public async Task BulkUpdateServiceRecordsAsync( - List records) - { - using var context = _dbContextFactory.CreateDbContext(); - - // Use EF Core bulk operations - context.AttachRange(records); - context.UpdateRange(records); - - var affectedRows = await context.SaveChangesAsync(); - - // Invalidate related cache entries - var vehicleIds = records.Select(r => r.VehicleId).Distinct(); - foreach (var vehicleId in vehicleIds) - { - await _cacheInvalidation.InvalidateVehicleDataAsync(vehicleId); - } - - return new BulkUpdateResult { AffectedRows = affectedRows }; - } - - // Implement read-through cache for expensive calculations - public async Task GetFuelEfficiencyReportAsync( - int vehicleId, - DateTime startDate, - DateTime endDate) - { - var cacheKey = $"fuel_report:{vehicleId}:{startDate:yyyyMM}:{endDate:yyyyMM}"; - - return await _multiLevelCache.GetAsync(cacheKey, async () => - { - using var context = _dbContextFactory.CreateDbContext(); - - var gasRecords = await context.GasRecords - .Where(g => g.VehicleId == vehicleId && - g.Date >= startDate && - g.Date <= endDate) - .AsNoTracking() - .ToListAsync(); - - return CalculateFuelEfficiencyReport(gasRecords); - }, TimeSpan.FromHours(6)); - } -} -``` - -### Implementation Tasks - -#### 1. Implement database indexing strategy -```sql --- Create optimized indexes for common queries -CREATE INDEX CONCURRENTLY idx_gasrecords_vehicle_date - ON gas_records(vehicle_id, date DESC); - -CREATE INDEX CONCURRENTLY idx_servicerecords_vehicle_date - ON service_records(vehicle_id, date DESC); - -CREATE INDEX CONCURRENTLY idx_reminderrecords_active_due - ON reminder_records(is_active, due_date) - WHERE is_active = true; - --- Partial indexes for better performance -CREATE INDEX CONCURRENTLY idx_vehicles_active_users - ON vehicles(user_id) - WHERE is_active = true; -``` - -#### 2. Configure response compression and bundling -```csharp -builder.Services.AddResponseCompression(options => -{ - options.Providers.Add(); - options.Providers.Add(); - options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat( - new[] { "application/json", "text/css", "application/javascript" }); -}); - -builder.Services.Configure(options => -{ - options.Level = CompressionLevel.Optimal; -}); -``` - -#### 3. Implement request batching for API endpoints -```csharp -[HttpPost("batch")] -public async Task BatchOperations([FromBody] BatchRequest request) -{ - var results = new List(); - - // Execute operations in parallel where possible - var tasks = request.Operations.Select(async operation => - { - try - { - var result = await ExecuteOperationAsync(operation); - return new BatchResult { Success = true, Data = result }; - } - catch (Exception ex) - { - return new BatchResult { Success = false, Error = ex.Message }; - } - }); - - results.AddRange(await Task.WhenAll(tasks)); - return Ok(new { Results = results }); -} -``` - -## 4.3 Security Enhancements - -**Objective**: Implement advanced security features for production deployment. - -### Network Security Policies - -```yaml -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: motovault-network-policy - namespace: motovault -spec: - podSelector: - matchLabels: - app: motovault - policyTypes: - - Ingress - - Egress - ingress: - - from: - - namespaceSelector: - matchLabels: - name: nginx-ingress - ports: - - protocol: TCP - port: 8080 - egress: - - to: - - namespaceSelector: - matchLabels: - name: motovault - ports: - - protocol: TCP - port: 5432 # PostgreSQL - - protocol: TCP - port: 6379 # Redis - - protocol: TCP - port: 9000 # MinIO - - to: [] # Allow external HTTPS for OIDC - ports: - - protocol: TCP - port: 443 - - protocol: TCP - port: 80 -``` - -### Pod Security Standards - -```yaml -apiVersion: v1 -kind: Namespace -metadata: - name: motovault - labels: - pod-security.kubernetes.io/enforce: restricted - pod-security.kubernetes.io/audit: restricted - pod-security.kubernetes.io/warn: restricted -``` - -### External Secrets Management - -```yaml -apiVersion: external-secrets.io/v1beta1 -kind: SecretStore -metadata: - name: vault-backend - namespace: motovault -spec: - provider: - vault: - server: "https://vault.example.com" - path: "secret" - version: "v2" - auth: - kubernetes: - mountPath: "kubernetes" - role: "motovault-role" - ---- -apiVersion: external-secrets.io/v1beta1 -kind: ExternalSecret -metadata: - name: motovault-secrets - namespace: motovault -spec: - refreshInterval: 1h - secretStoreRef: - name: vault-backend - kind: SecretStore - target: - name: motovault-secrets - creationPolicy: Owner - data: - - secretKey: POSTGRES_CONNECTION - remoteRef: - key: motovault/database - property: connection_string - - secretKey: JWT_SECRET - remoteRef: - key: motovault/auth - property: jwt_secret -``` - -### Application Security Enhancements - -```csharp -public class SecurityMiddleware -{ - public async Task InvokeAsync(HttpContext context, RequestDelegate next) - { - // Add security headers - context.Response.Headers.Add("X-Content-Type-Options", "nosniff"); - context.Response.Headers.Add("X-Frame-Options", "DENY"); - context.Response.Headers.Add("X-XSS-Protection", "1; mode=block"); - context.Response.Headers.Add("Referrer-Policy", "strict-origin-when-cross-origin"); - context.Response.Headers.Add("Permissions-Policy", "geolocation=(), microphone=(), camera=()"); - - // Content Security Policy - var csp = "default-src 'self'; " + - "script-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net; " + - "style-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net; " + - "img-src 'self' data: https:; " + - "connect-src 'self';"; - context.Response.Headers.Add("Content-Security-Policy", csp); - - await next(context); - } -} -``` - -### Implementation Tasks - -#### 1. Implement container image scanning -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: Workflow -metadata: - name: security-scan -spec: - entrypoint: scan-workflow - templates: - - name: scan-workflow - steps: - - - name: trivy-scan - template: trivy-container-scan - - - name: publish-results - template: publish-scan-results - - name: trivy-container-scan - container: - image: aquasec/trivy:latest - command: [trivy] - args: ["image", "--exit-code", "1", "--severity", "HIGH,CRITICAL", "motovault:latest"] -``` - -#### 2. Configure security monitoring and alerting -```yaml -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: security-alerts -spec: - groups: - - name: security.rules - rules: - - alert: HighFailedLoginAttempts - expr: rate(motovault_failed_login_attempts_total[5m]) > 10 - labels: - severity: warning - annotations: - summary: "High number of failed login attempts" - description: "{{ $value }} failed login attempts per second" - - - alert: SuspiciousNetworkActivity - expr: rate(container_network_receive_bytes_total{namespace="motovault"}[5m]) > 1e8 - labels: - severity: critical - annotations: - summary: "Unusual network activity detected" -``` - -#### 3. Implement rate limiting and DDoS protection -```csharp -services.AddRateLimiter(options => -{ - options.RejectionStatusCode = StatusCodes.Status429TooManyRequests; - - options.AddFixedWindowLimiter("api", limiterOptions => - { - limiterOptions.PermitLimit = 100; - limiterOptions.Window = TimeSpan.FromMinutes(1); - limiterOptions.QueueProcessingOrder = QueueProcessingOrder.OldestFirst; - limiterOptions.QueueLimit = 10; - }); - - options.AddSlidingWindowLimiter("login", limiterOptions => - { - limiterOptions.PermitLimit = 5; - limiterOptions.Window = TimeSpan.FromMinutes(5); - limiterOptions.SegmentsPerWindow = 5; - }); -}); -``` - -## 4.4 Production Migration Execution - -**Objective**: Execute seamless production migration with minimal downtime. - -### Blue-Green Deployment Strategy - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: Rollout -metadata: - name: motovault-rollout - namespace: motovault -spec: - replicas: 5 - strategy: - blueGreen: - activeService: motovault-active - previewService: motovault-preview - autoPromotionEnabled: false - scaleDownDelaySeconds: 30 - prePromotionAnalysis: - templates: - - templateName: health-check - args: - - name: service-name - value: motovault-preview - postPromotionAnalysis: - templates: - - templateName: performance-check - args: - - name: service-name - value: motovault-active - selector: - matchLabels: - app: motovault - template: - metadata: - labels: - app: motovault - spec: - containers: - - name: motovault - image: motovault:latest - # ... container specification -``` - -### Migration Validation Scripts - -```bash -#!/bin/bash -# Production migration validation script - -echo "Starting production migration validation..." - -# Validate database connectivity -echo "Checking database connectivity..." -kubectl exec -n motovault deployment/motovault-app -- \ - curl -f http://localhost:8080/health/ready || exit 1 - -# Validate MinIO connectivity -echo "Checking MinIO connectivity..." -kubectl exec -n motovault deployment/motovault-app -- \ - curl -f http://minio-service:9000/minio/health/live || exit 1 - -# Validate Redis connectivity -echo "Checking Redis connectivity..." -kubectl exec -n motovault redis-cluster-0 -- \ - redis-cli ping || exit 1 - -# Test critical user journeys -echo "Testing critical user journeys..." -python3 migration_tests.py --endpoint https://motovault.example.com - -# Validate performance metrics -echo "Checking performance metrics..." -response_time=$(curl -s "http://prometheus:9090/api/v1/query?query=histogram_quantile(0.95,rate(motovault_http_request_duration_seconds_bucket[5m]))" | jq -r '.data.result[0].value[1]') -if (( $(echo "$response_time > 2.0" | bc -l) )); then - echo "Performance degradation detected: ${response_time}s" - exit 1 -fi - -echo "Migration validation completed successfully" -``` - -### Rollback Procedures - -```bash -#!/bin/bash -# Emergency rollback script - -echo "Initiating emergency rollback..." - -# Switch traffic back to previous version -kubectl patch rollout motovault-rollout -n motovault \ - --type='merge' -p='{"spec":{"strategy":{"blueGreen":{"activeService":"motovault-previous"}}}}' - -# Scale down new version -kubectl scale deployment motovault-app-new --replicas=0 -n motovault - -# Restore database from last known good backup -BACKUP_TIMESTAMP=$(date -d "1 hour ago" +"%Y%m%d_%H0000") -./restore_database.sh "$BACKUP_TIMESTAMP" - -# Validate rollback success -curl -f https://motovault.example.com/health/ready - -echo "Rollback completed" -``` - -### Implementation Tasks - -#### 1. Execute phased traffic migration -```yaml -apiVersion: networking.istio.io/v1beta1 -kind: VirtualService -metadata: - name: motovault-traffic-split -spec: - http: - - match: - - headers: - x-canary: - exact: "true" - route: - - destination: - host: motovault-service - subset: v2 - weight: 100 - - route: - - destination: - host: motovault-service - subset: v1 - weight: 90 - - destination: - host: motovault-service - subset: v2 - weight: 10 -``` - -#### 2. Implement automated rollback triggers -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: AnalysisTemplate -metadata: - name: automated-rollback -spec: - metrics: - - name: error-rate - provider: - prometheus: - address: http://prometheus:9090 - query: rate(motovault_http_requests_total{status_code=~"5.."}[2m]) - successCondition: result[0] < 0.05 - failureLimit: 3 - - name: response-time - provider: - prometheus: - address: http://prometheus:9090 - query: histogram_quantile(0.95, rate(motovault_http_request_duration_seconds_bucket[2m])) - successCondition: result[0] < 2.0 - failureLimit: 3 -``` - -#### 3. Configure comprehensive monitoring during migration -- Real-time error rate monitoring -- Performance metric tracking -- User experience validation -- Resource utilization monitoring - -## Week-by-Week Breakdown - -### Week 13: Advanced Caching and Performance -- **Days 1-2**: Implement multi-level caching architecture -- **Days 3-4**: Optimize database queries and connection pooling -- **Days 5-7**: Configure CDN and response optimization - -### Week 14: Security Enhancements -- **Days 1-2**: Implement advanced security policies -- **Days 3-4**: Configure external secrets management -- **Days 5-7**: Set up security monitoring and scanning - -### Week 15: Production Migration -- **Days 1-2**: Execute database migration and validation -- **Days 3-4**: Perform blue-green deployment cutover -- **Days 5-7**: Monitor performance and user experience - -### Week 16: Optimization and Documentation -- **Days 1-3**: Performance tuning based on production metrics -- **Days 4-5**: Complete operational documentation -- **Days 6-7**: Team training and knowledge transfer - -## Success Criteria - -- [ ] Multi-layer caching reducing database load by 70% -- [ ] 95th percentile response time under 500ms -- [ ] Zero-downtime production migration -- [ ] Advanced security policies implemented and validated -- [ ] Comprehensive monitoring and alerting operational -- [ ] Team trained on new operational procedures -- [ ] Performance optimization achieving 10x scalability - -## Testing Requirements - -### Performance Validation -- Load testing with 10x expected traffic -- Database performance under stress -- Cache efficiency and hit ratios -- End-to-end response time validation - -### Security Testing -- Penetration testing of all endpoints -- Container security scanning -- Network policy validation -- Authentication and authorization testing - -### Migration Testing -- Complete migration dry runs -- Rollback procedure validation -- Data integrity verification -- User acceptance testing - -## Deliverables - -1. **Optimized Application** - - Multi-layer caching implementation - - Performance-optimized queries - - Security-hardened deployment - - Production-ready configuration - -2. **Migration Artifacts** - - Migration scripts and procedures - - Rollback automation - - Validation tools - - Performance baselines - -3. **Documentation** - - Operational runbooks - - Performance tuning guides - - Security procedures - - Training materials - -## Final Success Metrics - -### Technical Achievements -- **Availability**: 99.9% uptime achieved -- **Performance**: 95th percentile response time < 500ms -- **Scalability**: 10x user load capacity demonstrated -- **Security**: Zero critical vulnerabilities - -### Operational Achievements -- **Deployment**: Zero-downtime deployments enabled -- **Recovery**: RTO < 30 minutes, RPO < 5 minutes -- **Monitoring**: 100% observability coverage -- **Automation**: 90% reduction in manual operations - -### Business Value -- **User Experience**: No degradation during migration -- **Cost Efficiency**: Infrastructure costs optimized -- **Future Readiness**: Foundation for advanced features -- **Operational Excellence**: Reduced maintenance overhead - ---- - -**Previous Phase**: [Phase 3: Production Deployment](K8S-PHASE-3.md) -**Project Overview**: [Kubernetes Modernization Overview](K8S-OVERVIEW.md) \ No newline at end of file diff --git a/docs/K8S-REFACTOR.md b/docs/K8S-REFACTOR.md deleted file mode 100644 index 207480a..0000000 --- a/docs/K8S-REFACTOR.md +++ /dev/null @@ -1,2009 +0,0 @@ -# Kubernetes Modernization Plan for MotoVaultPro - -## Executive Summary - -This document outlines a comprehensive plan to modernize MotoVaultPro from a traditional self-hosted application to a cloud-native, highly available system running on Kubernetes. The modernization focuses on transforming the current monolithic ASP.NET Core application into a resilient, scalable platform capable of handling enterprise-level workloads while maintaining the existing feature set and user experience. - -### Key Objectives -- **High Availability**: Eliminate single points of failure through distributed architecture -- **Scalability**: Enable horizontal scaling to handle increased user loads -- **Resilience**: Implement fault tolerance and automatic recovery mechanisms -- **Cloud-Native**: Adopt Kubernetes-native patterns and best practices -- **Operational Excellence**: Improve monitoring, logging, and maintenance capabilities - -### Strategic Benefits -- **Reduced Downtime**: Multi-replica deployments with automatic failover -- **Improved Performance**: Distributed caching and optimized data access patterns -- **Enhanced Security**: Pod-level isolation and secret management -- **Cost Optimization**: Efficient resource utilization through auto-scaling -- **Future-Ready**: Foundation for microservices and advanced cloud features - -## Current Architecture Analysis - -### Existing System Overview -MotoVaultPro is currently deployed as a monolithic ASP.NET Core 8.0 application with the following characteristics: - -#### Application Architecture -- **Monolithic Design**: Single deployable unit containing all functionality -- **MVC Pattern**: Traditional Model-View-Controller architecture -- **Dual Database Support**: LiteDB (embedded) and PostgreSQL (external) -- **File Storage**: Local filesystem for document attachments -- **Session Management**: In-memory or cookie-based sessions -- **Configuration**: File-based configuration with environment variables - -#### Current Deployment Model -- **Single Instance**: Typically deployed as a single container or VM -- **Stateful**: Relies on local storage for files and embedded database -- **Limited Scalability**: Cannot horizontally scale due to state dependencies -- **Single Point of Failure**: No redundancy or automatic recovery - -#### Identified Limitations for Kubernetes -1. **State Dependencies**: LiteDB and local file storage prevent stateless operation -2. **Configuration Management**: File-based configuration not suitable for container orchestration -3. **Health Monitoring**: Lacks Kubernetes-compatible health check endpoints -4. **Logging**: Basic logging not optimized for centralized log aggregation -5. **Resource Management**: No resource constraints or auto-scaling capabilities -6. **Secret Management**: Sensitive configuration stored in plain text files - -## Target Architecture - -### Cloud-Native Design Principles -The modernized architecture will embrace the following cloud-native principles: - -#### Stateless Application Design -- **External State Storage**: All state moved to external, highly available services -- **Horizontal Scalability**: Multiple application replicas with load balancing -- **Configuration as Code**: All configuration externalized to ConfigMaps and Secrets -- **Ephemeral Containers**: Pods can be created, destroyed, and recreated without data loss - -#### Distributed Data Architecture -- **PostgreSQL Cluster**: Primary/replica configuration with automatic failover -- **MinIO High Availability**: Distributed object storage for file attachments -- **Redis Cluster**: Distributed caching and session storage -- **Backup Strategy**: Automated backups with point-in-time recovery - -#### Observability and Operations -- **Structured Logging**: JSON logging with correlation IDs for distributed tracing -- **Metrics Collection**: Prometheus-compatible metrics for monitoring -- **Health Checks**: Kubernetes-native readiness and liveness probes -- **Distributed Tracing**: OpenTelemetry integration for request flow analysis - -### High-Level Architecture Diagram -``` -┌─────────────────────────────────────────────────────────────────┐ -│ Kubernetes Cluster │ -├─────────────────────────────────────────────────────────────────┤ -│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ -│ │ MotoVault │ │ MotoVault │ │ MotoVault │ │ -│ │ Pod (1) │ │ Pod (2) │ │ Pod (3) │ │ -│ │ │ │ │ │ │ │ -│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ -│ │ │ │ │ -│ ┌─────────────────────────────────────────────────────────────┐ │ -│ │ Load Balancer Service │ │ -│ └─────────────────────────────────────────────────────────────┘ │ -│ │ │ │ │ -├───────────┼─────────────────────┼─────────────────────┼──────────┤ -│ ┌────────▼──────┐ ┌─────────▼──────┐ ┌─────────▼──────┐ │ -│ │ PostgreSQL │ │ Redis Cluster │ │ MinIO Cluster │ │ -│ │ Primary │ │ (3 nodes) │ │ (4+ nodes) │ │ -│ │ + 2 Replicas │ │ │ │ Erasure Coded │ │ -│ └───────────────┘ └────────────────┘ └────────────────┘ │ -└─────────────────────────────────────────────────────────────────┘ -``` - -## Detailed Implementation Phases - -### Phase 1: Core Kubernetes Readiness (Weeks 1-4) - -This phase focuses on making the application compatible with Kubernetes deployment patterns while maintaining existing functionality. - -#### 1.1 Configuration Externalization - -**Objective**: Move all configuration from files to Kubernetes-native configuration management. - -**Current State**: -- Configuration stored in `appsettings.json` and environment variables -- Database connection strings in configuration files -- Feature flags and application settings mixed with deployment configuration - -**Target State**: -- All configuration externalized to ConfigMaps and Secrets -- Environment-specific configuration separated from application code -- Sensitive data (passwords, API keys) managed through Kubernetes Secrets - -**Implementation Tasks**: -1. **Create ConfigMap templates** for non-sensitive configuration - ```yaml - apiVersion: v1 - kind: ConfigMap - metadata: - name: motovault-config - data: - APP_NAME: "MotoVaultPro" - LOG_LEVEL: "Information" - ENABLE_FEATURES: "OpenIDConnect,EmailNotifications" - CACHE_EXPIRY_MINUTES: "30" - ``` - -2. **Create Secret templates** for sensitive configuration - ```yaml - apiVersion: v1 - kind: Secret - metadata: - name: motovault-secrets - type: Opaque - data: - POSTGRES_CONNECTION: - MINIO_ACCESS_KEY: - MINIO_SECRET_KEY: - JWT_SECRET: - ``` - -3. **Modify application startup** to read from environment variables -4. **Remove file-based configuration** dependencies -5. **Implement configuration validation** at startup - -#### 1.2 Database Architecture Modernization - -**Objective**: Eliminate LiteDB dependency and optimize PostgreSQL usage for Kubernetes. - -**Current State**: -- Dual database support with LiteDB as default -- Single PostgreSQL connection for external database mode -- No connection pooling optimization for multiple instances - -**Target State**: -- PostgreSQL-only configuration with high availability -- Optimized connection pooling for horizontal scaling -- Database migration strategy for existing LiteDB installations - -**Implementation Tasks**: -1. **Remove LiteDB implementation** and dependencies -2. **Implement PostgreSQL HA configuration**: - ```csharp - services.AddDbContext(options => - { - options.UseNpgsql(connectionString, npgsqlOptions => - { - npgsqlOptions.EnableRetryOnFailure( - maxRetryCount: 3, - maxRetryDelay: TimeSpan.FromSeconds(5), - errorCodesToAdd: null); - }); - }); - ``` -3. **Add connection pooling configuration**: - ```csharp - // Configure connection pooling for multiple instances - services.Configure(options => - { - options.MaxPoolSize = 100; - options.MinPoolSize = 10; - options.ConnectionLifetime = 300; // 5 minutes - }); - ``` -4. **Create data migration tools** for LiteDB to PostgreSQL conversion -5. **Implement database health checks** for Kubernetes probes - -#### 1.3 Health Check Implementation - -**Objective**: Add Kubernetes-compatible health check endpoints for proper orchestration. - -**Current State**: -- No dedicated health check endpoints -- Application startup/shutdown not optimized for Kubernetes - -**Target State**: -- Comprehensive health checks for all dependencies -- Proper readiness and liveness probe endpoints -- Graceful shutdown handling for pod termination - -**Implementation Tasks**: -1. **Add health check middleware**: - ```csharp - // Program.cs - builder.Services.AddHealthChecks() - .AddNpgSql(connectionString, name: "database") - .AddRedis(redisConnectionString, name: "cache") - .AddCheck("minio"); - - app.MapHealthChecks("/health/ready", new HealthCheckOptions - { - Predicate = check => check.Tags.Contains("ready"), - ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse - }); - - app.MapHealthChecks("/health/live", new HealthCheckOptions - { - Predicate = _ => false // Only check if the app is responsive - }); - ``` - -2. **Implement custom health checks**: - ```csharp - public class MinIOHealthCheck : IHealthCheck - { - private readonly IMinioClient _minioClient; - - public async Task CheckHealthAsync( - HealthCheckContext context, - CancellationToken cancellationToken = default) - { - try - { - await _minioClient.ListBucketsAsync(cancellationToken); - return HealthCheckResult.Healthy("MinIO is accessible"); - } - catch (Exception ex) - { - return HealthCheckResult.Unhealthy("MinIO is not accessible", ex); - } - } - } - ``` - -3. **Add graceful shutdown handling**: - ```csharp - builder.Services.Configure(options => - { - options.ShutdownTimeout = TimeSpan.FromSeconds(30); - }); - ``` - -#### 1.4 Logging Enhancement - -**Objective**: Implement structured logging suitable for centralized log aggregation. - -**Current State**: -- Basic logging with simple string messages -- No correlation IDs for distributed tracing -- Log levels not optimized for production monitoring - -**Target State**: -- JSON-structured logging with correlation IDs -- Centralized log aggregation compatibility -- Performance and error metrics embedded in logs - -**Implementation Tasks**: -1. **Configure structured logging**: - ```csharp - builder.Services.AddLogging(loggingBuilder => - { - loggingBuilder.ClearProviders(); - loggingBuilder.AddJsonConsole(options => - { - options.IncludeScopes = true; - options.TimestampFormat = "yyyy-MM-ddTHH:mm:ss.fffZ"; - options.JsonWriterOptions = new JsonWriterOptions - { - Indented = false - }; - }); - }); - ``` - -2. **Add correlation ID middleware**: - ```csharp - public class CorrelationIdMiddleware - { - public async Task InvokeAsync(HttpContext context, RequestDelegate next) - { - var correlationId = context.Request.Headers["X-Correlation-ID"] - .FirstOrDefault() ?? Guid.NewGuid().ToString(); - - using var scope = _logger.BeginScope(new Dictionary - { - ["CorrelationId"] = correlationId, - ["UserId"] = context.User?.Identity?.Name - }); - - context.Response.Headers.Add("X-Correlation-ID", correlationId); - await next(context); - } - } - ``` - -3. **Implement performance logging** for critical operations - -### Phase 2: High Availability Infrastructure (Weeks 5-8) - -This phase focuses on implementing the supporting infrastructure required for high availability. - -#### 2.1 MinIO High Availability Setup - -**Objective**: Deploy a highly available MinIO cluster for file storage with automatic failover. - -**Architecture Overview**: -MinIO will be deployed as a distributed cluster with erasure coding for data protection and automatic healing capabilities. - -**MinIO Cluster Configuration**: -```yaml -# MinIO Tenant Configuration -apiVersion: minio.min.io/v2 -kind: Tenant -metadata: - name: motovault-minio - namespace: motovault -spec: - image: minio/minio:RELEASE.2024-01-16T16-07-38Z - creationDate: 2024-01-20T10:00:00Z - pools: - - servers: 4 - name: pool-0 - volumesPerServer: 4 - volumeClaimTemplate: - metadata: - name: data - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 100Gi - storageClassName: fast-ssd - mountPath: /export - subPath: /data - requestAutoCert: false - certConfig: - commonName: "" - organizationName: [] - dnsNames: [] - console: - image: minio/console:v0.22.5 - replicas: 2 - consoleSecret: - name: motovault-minio-console-secret - configuration: - name: motovault-minio-config - pools: - - servers: 4 - volumesPerServer: 4 - volumeClaimTemplate: - spec: - accessModes: [ "ReadWriteOnce" ] - resources: - requests: - storage: 100Gi -``` - -**Implementation Tasks**: -1. **Deploy MinIO Operator**: - ```bash - kubectl apply -k "github.com/minio/operator/resources" - ``` - -2. **Create MinIO cluster configuration** with erasure coding for data protection -3. **Configure backup policies** for disaster recovery -4. **Set up monitoring** with Prometheus metrics -5. **Create service endpoints** for application connectivity - -**MinIO High Availability Features**: -- **Erasure Coding**: Data is split across multiple drives with parity for automatic healing -- **Distributed Architecture**: No single point of failure -- **Automatic Healing**: Corrupted data is automatically detected and repaired -- **Load Balancing**: Built-in load balancing across cluster nodes -- **Bucket Policies**: Fine-grained access control for different data types - -#### 2.2 File Storage Abstraction Implementation - -**Objective**: Create an abstraction layer that allows seamless switching between local filesystem and MinIO object storage. - -**Current State**: -- Direct filesystem operations throughout the application -- File paths hardcoded in various controllers and services -- No abstraction for different storage backends - -**Target State**: -- Unified file storage interface -- Pluggable storage implementations -- Transparent migration between storage types - -**Implementation Tasks**: -1. **Define storage abstraction interface**: - ```csharp - public interface IFileStorageService - { - Task UploadFileAsync(Stream fileStream, string fileName, string contentType, CancellationToken cancellationToken = default); - Task DownloadFileAsync(string fileId, CancellationToken cancellationToken = default); - Task DeleteFileAsync(string fileId, CancellationToken cancellationToken = default); - Task GetFileMetadataAsync(string fileId, CancellationToken cancellationToken = default); - Task> ListFilesAsync(string prefix = null, CancellationToken cancellationToken = default); - Task GeneratePresignedUrlAsync(string fileId, TimeSpan expiration, CancellationToken cancellationToken = default); - } - - public class FileMetadata - { - public string Id { get; set; } - public string FileName { get; set; } - public string ContentType { get; set; } - public long Size { get; set; } - public DateTime CreatedDate { get; set; } - public DateTime ModifiedDate { get; set; } - public Dictionary Tags { get; set; } - } - ``` - -2. **Implement MinIO storage service**: - ```csharp - public class MinIOFileStorageService : IFileStorageService - { - private readonly IMinioClient _minioClient; - private readonly ILogger _logger; - private readonly string _bucketName; - - public MinIOFileStorageService(IMinioClient minioClient, IConfiguration configuration, ILogger logger) - { - _minioClient = minioClient; - _logger = logger; - _bucketName = configuration["MinIO:BucketName"] ?? "motovault-files"; - } - - public async Task UploadFileAsync(Stream fileStream, string fileName, string contentType, CancellationToken cancellationToken = default) - { - var fileId = $"{Guid.NewGuid()}/{fileName}"; - - try - { - await _minioClient.PutObjectAsync(new PutObjectArgs() - .WithBucket(_bucketName) - .WithObject(fileId) - .WithStreamData(fileStream) - .WithObjectSize(fileStream.Length) - .WithContentType(contentType) - .WithHeaders(new Dictionary - { - ["X-Amz-Meta-Original-Name"] = fileName, - ["X-Amz-Meta-Upload-Date"] = DateTime.UtcNow.ToString("O") - }), cancellationToken); - - _logger.LogInformation("File uploaded successfully: {FileId}", fileId); - return fileId; - } - catch (Exception ex) - { - _logger.LogError(ex, "Failed to upload file: {FileName}", fileName); - throw; - } - } - - // Additional method implementations... - } - ``` - -3. **Create fallback storage service** for graceful degradation: - ```csharp - public class FallbackFileStorageService : IFileStorageService - { - private readonly IFileStorageService _primaryService; - private readonly IFileStorageService _fallbackService; - private readonly ILogger _logger; - - // Implementation with automatic fallback logic - } - ``` - -4. **Update all file operations** to use the abstraction layer -5. **Implement file migration utility** for existing local files - -#### 2.3 PostgreSQL High Availability Configuration - -**Objective**: Set up a PostgreSQL cluster with automatic failover and read replicas. - -**Architecture Overview**: -PostgreSQL will be deployed using an operator (like CloudNativePG or Postgres Operator) to provide automated failover, backup, and scaling capabilities. - -**PostgreSQL Cluster Configuration**: -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: motovault-postgres - namespace: motovault -spec: - instances: 3 - primaryUpdateStrategy: unsupervised - - postgresql: - parameters: - max_connections: "200" - shared_buffers: "256MB" - effective_cache_size: "1GB" - maintenance_work_mem: "64MB" - checkpoint_completion_target: "0.9" - wal_buffers: "16MB" - default_statistics_target: "100" - random_page_cost: "1.1" - effective_io_concurrency: "200" - - resources: - requests: - memory: "2Gi" - cpu: "1000m" - limits: - memory: "4Gi" - cpu: "2000m" - - storage: - size: "100Gi" - storageClass: "fast-ssd" - - monitoring: - enabled: true - - backup: - retentionPolicy: "30d" - barmanObjectStore: - destinationPath: "s3://motovault-backups/postgres" - s3Credentials: - accessKeyId: - name: postgres-backup-credentials - key: ACCESS_KEY_ID - secretAccessKey: - name: postgres-backup-credentials - key: SECRET_ACCESS_KEY - wal: - retention: "5d" - data: - retention: "30d" - jobs: 1 -``` - -**Implementation Tasks**: -1. **Deploy PostgreSQL operator** (CloudNativePG recommended) -2. **Configure cluster with primary/replica setup** -3. **Set up automated backups** to MinIO or external storage -4. **Implement connection pooling** with PgBouncer -5. **Configure monitoring** and alerting for database health - -#### 2.4 Redis Cluster for Session Management - -**Objective**: Implement distributed session storage and caching using Redis cluster. - -**Current State**: -- In-memory session storage tied to individual application instances -- No distributed caching for expensive operations -- Configuration and translation data loaded on each application start - -**Target State**: -- Redis cluster for distributed session storage -- Centralized caching for frequently accessed data -- High availability with automatic failover - -**Redis Cluster Configuration**: -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: redis-cluster-config - namespace: motovault -data: - redis.conf: | - cluster-enabled yes - cluster-require-full-coverage no - cluster-node-timeout 15000 - cluster-config-file /data/nodes.conf - cluster-migration-barrier 1 - appendonly yes - appendfsync everysec - save 900 1 - save 300 10 - save 60 10000 - ---- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: redis-cluster - namespace: motovault -spec: - serviceName: redis-cluster - replicas: 6 - selector: - matchLabels: - app: redis-cluster - template: - metadata: - labels: - app: redis-cluster - spec: - containers: - - name: redis - image: redis:7-alpine - command: - - redis-server - - /etc/redis/redis.conf - ports: - - containerPort: 6379 - - containerPort: 16379 - resources: - requests: - memory: "512Mi" - cpu: "250m" - limits: - memory: "1Gi" - cpu: "500m" - volumeMounts: - - name: redis-config - mountPath: /etc/redis - - name: redis-data - mountPath: /data - volumes: - - name: redis-config - configMap: - name: redis-cluster-config - volumeClaimTemplates: - - metadata: - name: redis-data - spec: - accessModes: ["ReadWriteOnce"] - resources: - requests: - storage: 10Gi -``` - -**Implementation Tasks**: -1. **Deploy Redis cluster** with 6 nodes (3 masters, 3 replicas) -2. **Configure session storage**: - ```csharp - services.AddStackExchangeRedisCache(options => - { - options.Configuration = configuration.GetConnectionString("Redis"); - options.InstanceName = "MotoVault"; - }); - - services.AddSession(options => - { - options.IdleTimeout = TimeSpan.FromMinutes(30); - options.Cookie.HttpOnly = true; - options.Cookie.IsEssential = true; - options.Cookie.SecurePolicy = CookieSecurePolicy.Always; - }); - ``` - -3. **Implement distributed caching**: - ```csharp - public class CachedTranslationService : ITranslationService - { - private readonly IDistributedCache _cache; - private readonly ITranslationService _translationService; - private readonly ILogger _logger; - - public async Task GetTranslationAsync(string key, string language) - { - var cacheKey = $"translation:{language}:{key}"; - var cached = await _cache.GetStringAsync(cacheKey); - - if (cached != null) - { - return cached; - } - - var translation = await _translationService.GetTranslationAsync(key, language); - - await _cache.SetStringAsync(cacheKey, translation, new DistributedCacheEntryOptions - { - SlidingExpiration = TimeSpan.FromHours(1) - }); - - return translation; - } - } - ``` - -4. **Add cache monitoring** and performance metrics - -### Phase 3: Production Deployment (Weeks 9-12) - -This phase focuses on deploying the modernized application with proper production configurations and operational procedures. - -#### 3.1 Kubernetes Deployment Configuration - -**Objective**: Create production-ready Kubernetes manifests with proper resource management and high availability. - -**Application Deployment Configuration**: -```yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: motovault-app - namespace: motovault - labels: - app: motovault - version: v1.0.0 -spec: - replicas: 3 - strategy: - type: RollingUpdate - rollingUpdate: - maxSurge: 1 - maxUnavailable: 0 - selector: - matchLabels: - app: motovault - template: - metadata: - labels: - app: motovault - version: v1.0.0 - annotations: - prometheus.io/scrape: "true" - prometheus.io/path: "/metrics" - prometheus.io/port: "8080" - spec: - serviceAccountName: motovault-service-account - securityContext: - runAsNonRoot: true - runAsUser: 1000 - fsGroup: 2000 - affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 100 - podAffinityTerm: - labelSelector: - matchExpressions: - - key: app - operator: In - values: - - motovault - topologyKey: kubernetes.io/hostname - - weight: 50 - podAffinityTerm: - labelSelector: - matchExpressions: - - key: app - operator: In - values: - - motovault - topologyKey: topology.kubernetes.io/zone - containers: - - name: motovault - image: motovault:latest - imagePullPolicy: Always - ports: - - containerPort: 8080 - name: http - protocol: TCP - env: - - name: ASPNETCORE_ENVIRONMENT - value: "Production" - - name: ASPNETCORE_URLS - value: "http://+:8080" - envFrom: - - configMapRef: - name: motovault-config - - secretRef: - name: motovault-secrets - resources: - requests: - memory: "512Mi" - cpu: "250m" - limits: - memory: "1Gi" - cpu: "500m" - readinessProbe: - httpGet: - path: /health/ready - port: 8080 - initialDelaySeconds: 10 - periodSeconds: 5 - timeoutSeconds: 3 - failureThreshold: 3 - livenessProbe: - httpGet: - path: /health/live - port: 8080 - initialDelaySeconds: 30 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 3 - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - capabilities: - drop: - - ALL - volumeMounts: - - name: tmp-volume - mountPath: /tmp - - name: app-logs - mountPath: /app/logs - volumes: - - name: tmp-volume - emptyDir: {} - - name: app-logs - emptyDir: {} - terminationGracePeriodSeconds: 30 - ---- -apiVersion: v1 -kind: Service -metadata: - name: motovault-service - namespace: motovault - labels: - app: motovault -spec: - type: ClusterIP - ports: - - port: 80 - targetPort: 8080 - protocol: TCP - name: http - selector: - app: motovault - ---- -apiVersion: policy/v1 -kind: PodDisruptionBudget -metadata: - name: motovault-pdb - namespace: motovault -spec: - minAvailable: 2 - selector: - matchLabels: - app: motovault -``` - -**Horizontal Pod Autoscaler Configuration**: -```yaml -apiVersion: autoscaling/v2 -kind: HorizontalPodAutoscaler -metadata: - name: motovault-hpa - namespace: motovault -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: motovault-app - minReplicas: 3 - maxReplicas: 10 - metrics: - - type: Resource - resource: - name: cpu - target: - type: Utilization - averageUtilization: 70 - - type: Resource - resource: - name: memory - target: - type: Utilization - averageUtilization: 80 - behavior: - scaleUp: - stabilizationWindowSeconds: 300 - policies: - - type: Percent - value: 100 - periodSeconds: 15 - scaleDown: - stabilizationWindowSeconds: 300 - policies: - - type: Percent - value: 10 - periodSeconds: 60 -``` - -#### 3.2 Ingress and TLS Configuration - -**Objective**: Configure secure external access with proper TLS termination and routing. - -**Ingress Configuration**: -```yaml -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: motovault-ingress - namespace: motovault - annotations: - nginx.ingress.kubernetes.io/ssl-redirect: "true" - nginx.ingress.kubernetes.io/force-ssl-redirect: "true" - nginx.ingress.kubernetes.io/proxy-body-size: "50m" - nginx.ingress.kubernetes.io/proxy-read-timeout: "300" - nginx.ingress.kubernetes.io/proxy-send-timeout: "300" - cert-manager.io/cluster-issuer: "letsencrypt-prod" - nginx.ingress.kubernetes.io/rate-limit: "100" - nginx.ingress.kubernetes.io/rate-limit-window: "1m" -spec: - ingressClassName: nginx - tls: - - hosts: - - motovault.example.com - secretName: motovault-tls - rules: - - host: motovault.example.com - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: motovault-service - port: - number: 80 -``` - -#### 3.3 Monitoring and Observability Setup - -**Objective**: Implement comprehensive monitoring, logging, and alerting for production operations. - -**Prometheus ServiceMonitor Configuration**: -```yaml -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: motovault-metrics - namespace: motovault - labels: - app: motovault -spec: - selector: - matchLabels: - app: motovault - endpoints: - - port: http - path: /metrics - interval: 30s - scrapeTimeout: 10s -``` - -**Application Metrics Implementation**: -```csharp -public class MetricsService -{ - private readonly Counter _httpRequestsTotal; - private readonly Histogram _httpRequestDuration; - private readonly Gauge _activeConnections; - private readonly Counter _databaseOperationsTotal; - private readonly Histogram _databaseOperationDuration; - - public MetricsService() - { - _httpRequestsTotal = Metrics.CreateCounter( - "motovault_http_requests_total", - "Total number of HTTP requests", - new[] { "method", "endpoint", "status_code" }); - - _httpRequestDuration = Metrics.CreateHistogram( - "motovault_http_request_duration_seconds", - "Duration of HTTP requests in seconds", - new[] { "method", "endpoint" }); - - _activeConnections = Metrics.CreateGauge( - "motovault_active_connections", - "Number of active database connections"); - - _databaseOperationsTotal = Metrics.CreateCounter( - "motovault_database_operations_total", - "Total number of database operations", - new[] { "operation", "table", "status" }); - - _databaseOperationDuration = Metrics.CreateHistogram( - "motovault_database_operation_duration_seconds", - "Duration of database operations in seconds", - new[] { "operation", "table" }); - } - - public void RecordHttpRequest(string method, string endpoint, int statusCode, double duration) - { - _httpRequestsTotal.WithLabels(method, endpoint, statusCode.ToString()).Inc(); - _httpRequestDuration.WithLabels(method, endpoint).Observe(duration); - } - - public void RecordDatabaseOperation(string operation, string table, bool success, double duration) - { - var status = success ? "success" : "error"; - _databaseOperationsTotal.WithLabels(operation, table, status).Inc(); - _databaseOperationDuration.WithLabels(operation, table).Observe(duration); - } -} -``` - -**Custom Grafana Dashboard Configuration**: -```json -{ - "dashboard": { - "title": "MotoVaultPro Application Dashboard", - "panels": [ - { - "title": "HTTP Request Rate", - "type": "graph", - "targets": [ - { - "expr": "rate(motovault_http_requests_total[5m])", - "legendFormat": "{{method}} {{endpoint}}" - } - ] - }, - { - "title": "Response Time Percentiles", - "type": "graph", - "targets": [ - { - "expr": "histogram_quantile(0.50, rate(motovault_http_request_duration_seconds_bucket[5m]))", - "legendFormat": "50th percentile" - }, - { - "expr": "histogram_quantile(0.95, rate(motovault_http_request_duration_seconds_bucket[5m]))", - "legendFormat": "95th percentile" - } - ] - }, - { - "title": "Database Connection Pool", - "type": "singlestat", - "targets": [ - { - "expr": "motovault_active_connections", - "legendFormat": "Active Connections" - } - ] - }, - { - "title": "Error Rate", - "type": "graph", - "targets": [ - { - "expr": "rate(motovault_http_requests_total{status_code=~\"5..\"}[5m])", - "legendFormat": "5xx errors" - } - ] - } - ] - } -} -``` - -#### 3.4 Backup and Disaster Recovery - -**Objective**: Implement comprehensive backup strategies and disaster recovery procedures. - -**Velero Backup Configuration**: -```yaml -apiVersion: velero.io/v1 -kind: Schedule -metadata: - name: motovault-daily-backup - namespace: velero -spec: - schedule: "0 2 * * *" # Daily at 2 AM - template: - includedNamespaces: - - motovault - includedResources: - - "*" - storageLocation: default - ttl: 720h0m0s # 30 days - snapshotVolumes: true - ---- -apiVersion: velero.io/v1 -kind: Schedule -metadata: - name: motovault-weekly-backup - namespace: velero -spec: - schedule: "0 3 * * 0" # Weekly on Sunday at 3 AM - template: - includedNamespaces: - - motovault - includedResources: - - "*" - storageLocation: default - ttl: 2160h0m0s # 90 days - snapshotVolumes: true -``` - -**Database Backup Strategy**: -```bash -#!/bin/bash -# Automated database backup script - -BACKUP_DATE=$(date +%Y%m%d_%H%M%S) -BACKUP_FILE="motovault_backup_${BACKUP_DATE}.sql" -S3_BUCKET="motovault-backups" - -# Create database backup -kubectl exec -n motovault motovault-postgres-1 -- \ - pg_dump -U postgres motovault > "${BACKUP_FILE}" - -# Compress backup -gzip "${BACKUP_FILE}" - -# Upload to S3/MinIO -aws s3 cp "${BACKUP_FILE}.gz" "s3://${S3_BUCKET}/database/" - -# Clean up local file -rm "${BACKUP_FILE}.gz" - -# Retain only last 30 days of backups -aws s3api list-objects-v2 \ - --bucket "${S3_BUCKET}" \ - --prefix "database/" \ - --query 'Contents[?LastModified<=`'$(date -d "30 days ago" --iso-8601)'`].[Key]' \ - --output text | \ - xargs -I {} aws s3 rm "s3://${S3_BUCKET}/{}" -``` - -### Phase 4: Advanced Features and Optimization (Weeks 13-16) - -This phase focuses on advanced cloud-native features and performance optimization. - -#### 4.1 Advanced Caching Strategies - -**Objective**: Implement multi-layer caching for optimal performance and reduced database load. - -**Cache Architecture**: -``` -┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ -│ Browser │ │ CDN/Proxy │ │ Application │ -│ Cache │◄──►│ Cache │◄──►│ Memory Cache │ -│ (Static) │ │ (Static + │ │ (L1) │ -│ │ │ Dynamic) │ │ │ -└─────────────────┘ └─────────────────┘ └─────────────────┘ - │ - ┌─────────────────┐ - │ Redis Cache │ - │ (L2) │ - │ Distributed │ - └─────────────────┘ - │ - ┌─────────────────┐ - │ Database │ - │ (Source) │ - │ │ - └─────────────────┘ -``` - -**Implementation Details**: -```csharp -public class MultiLevelCacheService -{ - private readonly IMemoryCache _memoryCache; - private readonly IDistributedCache _distributedCache; - private readonly ILogger _logger; - - public async Task GetAsync(string key, Func> factory, TimeSpan? expiration = null) - { - // L1 Cache - Memory - if (_memoryCache.TryGetValue(key, out T cachedValue)) - { - _logger.LogDebug("Cache hit (L1): {Key}", key); - return cachedValue; - } - - // L2 Cache - Redis - var distributedValue = await _distributedCache.GetStringAsync(key); - if (distributedValue != null) - { - var deserializedValue = JsonSerializer.Deserialize(distributedValue); - _memoryCache.Set(key, deserializedValue, TimeSpan.FromMinutes(5)); // Short-lived L1 cache - _logger.LogDebug("Cache hit (L2): {Key}", key); - return deserializedValue; - } - - // Cache miss - fetch from source - _logger.LogDebug("Cache miss: {Key}", key); - var value = await factory(); - - // Store in both cache levels - var serializedValue = JsonSerializer.Serialize(value); - await _distributedCache.SetStringAsync(key, serializedValue, new DistributedCacheEntryOptions - { - SlidingExpiration = expiration ?? TimeSpan.FromHours(1) - }); - - _memoryCache.Set(key, value, TimeSpan.FromMinutes(5)); - - return value; - } -} -``` - -#### 4.2 Performance Optimization - -**Objective**: Optimize application performance for high-load scenarios. - -**Database Query Optimization**: -```csharp -public class OptimizedVehicleService -{ - private readonly IDbContextFactory _dbContextFactory; - private readonly IMemoryCache _cache; - - public async Task GetDashboardDataAsync(int userId, int vehicleId) - { - var cacheKey = $"dashboard:{userId}:{vehicleId}"; - - if (_cache.TryGetValue(cacheKey, out VehicleDashboardData cached)) - { - return cached; - } - - using var context = _dbContextFactory.CreateDbContext(); - - // Optimized single query with projections - var dashboardData = await context.Vehicles - .Where(v => v.Id == vehicleId && v.UserId == userId) - .Select(v => new VehicleDashboardData - { - Vehicle = v, - RecentServices = v.ServiceRecords - .OrderByDescending(s => s.Date) - .Take(5) - .ToList(), - UpcomingReminders = v.ReminderRecords - .Where(r => r.IsActive && r.DueDate > DateTime.Now) - .OrderBy(r => r.DueDate) - .Take(5) - .ToList(), - FuelEfficiency = v.GasRecords - .Where(g => g.Date >= DateTime.Now.AddMonths(-3)) - .Average(g => g.Efficiency), - TotalMileage = v.OdometerRecords - .OrderByDescending(o => o.Date) - .FirstOrDefault().Mileage ?? 0 - }) - .AsNoTracking() - .FirstOrDefaultAsync(); - - _cache.Set(cacheKey, dashboardData, TimeSpan.FromMinutes(15)); - return dashboardData; - } -} -``` - -**Connection Pool Optimization**: -```csharp -services.AddDbContextFactory(options => -{ - options.UseNpgsql(connectionString, npgsqlOptions => - { - npgsqlOptions.EnableRetryOnFailure( - maxRetryCount: 3, - maxRetryDelay: TimeSpan.FromSeconds(5), - errorCodesToAdd: null); - npgsqlOptions.CommandTimeout(30); - }); - - // Optimize for read-heavy workloads - options.EnableSensitiveDataLogging(false); - options.EnableServiceProviderCaching(); - options.EnableDetailedErrors(false); -}, ServiceLifetime.Singleton); - -// Configure connection pooling -services.Configure(builder => -{ - builder.MaxPoolSize = 100; - builder.MinPoolSize = 10; - builder.ConnectionLifetime = 300; - builder.ConnectionPruningInterval = 10; - builder.ConnectionIdleLifetime = 300; -}); -``` - -#### 4.3 Security Enhancements - -**Objective**: Implement advanced security features for production deployment. - -**Network Security Policies**: -```yaml -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: motovault-network-policy - namespace: motovault -spec: - podSelector: - matchLabels: - app: motovault - policyTypes: - - Ingress - - Egress - ingress: - - from: - - namespaceSelector: - matchLabels: - name: nginx-ingress - ports: - - protocol: TCP - port: 8080 - egress: - - to: - - namespaceSelector: - matchLabels: - name: motovault - ports: - - protocol: TCP - port: 5432 # PostgreSQL - - protocol: TCP - port: 6379 # Redis - - protocol: TCP - port: 9000 # MinIO - - to: [] # Allow external HTTPS for OIDC - ports: - - protocol: TCP - port: 443 - - protocol: TCP - port: 80 -``` - -**Pod Security Standards**: -```yaml -apiVersion: v1 -kind: Namespace -metadata: - name: motovault - labels: - pod-security.kubernetes.io/enforce: restricted - pod-security.kubernetes.io/audit: restricted - pod-security.kubernetes.io/warn: restricted -``` - -**Secret Management with External Secrets Operator**: -```yaml -apiVersion: external-secrets.io/v1beta1 -kind: SecretStore -metadata: - name: vault-backend - namespace: motovault -spec: - provider: - vault: - server: "https://vault.example.com" - path: "secret" - version: "v2" - auth: - kubernetes: - mountPath: "kubernetes" - role: "motovault-role" - ---- -apiVersion: external-secrets.io/v1beta1 -kind: ExternalSecret -metadata: - name: motovault-secrets - namespace: motovault -spec: - refreshInterval: 1h - secretStoreRef: - name: vault-backend - kind: SecretStore - target: - name: motovault-secrets - creationPolicy: Owner - data: - - secretKey: POSTGRES_CONNECTION - remoteRef: - key: motovault/database - property: connection_string - - secretKey: JWT_SECRET - remoteRef: - key: motovault/auth - property: jwt_secret -``` - -## Migration Strategy - -### Pre-Migration Assessment - -**Current State Analysis**: -1. **Data Inventory**: Catalog all existing data, configurations, and file attachments -2. **Dependency Mapping**: Identify all external dependencies and integrations -3. **Performance Baseline**: Establish current performance metrics for comparison -4. **User Impact Assessment**: Analyze potential downtime and user experience changes - -**Migration Prerequisites**: -1. **Kubernetes Cluster Ready**: Properly configured cluster with required operators -2. **Infrastructure Deployed**: PostgreSQL, MinIO, and Redis clusters operational -3. **Backup Strategy**: Complete backup of current system and data -4. **Rollback Plan**: Detailed procedure for reverting to current system if needed - -### Migration Execution Plan - -#### Phase 1: Parallel Environment Setup (Week 1) -1. **Deploy target infrastructure** in parallel to existing system -2. **Configure monitoring and logging** for new environment -3. **Run initial data migration tests** with sample data -4. **Validate all health checks** and monitoring alerts - -#### Phase 2: Data Migration (Week 2) -1. **Initial data sync**: Migrate historical data during low-usage periods -2. **File migration**: Transfer all attachments to MinIO with validation -3. **Configuration migration**: Convert all settings to ConfigMaps/Secrets -4. **User data validation**: Verify data integrity and completeness - -#### Phase 3: Application Cutover (Week 3) -1. **Final data sync**: Synchronize any changes made during migration -2. **DNS cutover**: Redirect traffic to new Kubernetes deployment -3. **Monitor closely**: Watch for any issues or performance problems -4. **User acceptance testing**: Validate all functionality works correctly - -#### Phase 4: Optimization and Cleanup (Week 4) -1. **Performance tuning**: Optimize based on real-world usage patterns -2. **Clean up old infrastructure**: Decommission legacy deployment -3. **Update documentation**: Finalize operational procedures -4. **Training**: Train operations team on new procedures - -### Data Migration Tools - -**LiteDB to PostgreSQL Migration Utility**: -```csharp -public class DataMigrationService -{ - private readonly ILiteDatabase _liteDb; - private readonly IServiceProvider _serviceProvider; - private readonly ILogger _logger; - - public async Task MigrateAllDataAsync() - { - var result = new MigrationResult(); - - try - { - using var scope = _serviceProvider.CreateScope(); - var context = scope.ServiceProvider.GetRequiredService(); - - // Migrate users first (dependencies) - result.UsersProcessed = await MigrateUsersAsync(context); - - // Migrate vehicles - result.VehiclesProcessed = await MigrateVehiclesAsync(context); - - // Migrate all record types - result.ServiceRecordsProcessed = await MigrateServiceRecordsAsync(context); - result.GasRecordsProcessed = await MigrateGasRecordsAsync(context); - result.FilesProcessed = await MigrateFilesAsync(); - - await context.SaveChangesAsync(); - result.Success = true; - } - catch (Exception ex) - { - _logger.LogError(ex, "Migration failed"); - result.Success = false; - result.ErrorMessage = ex.Message; - } - - return result; - } - - private async Task MigrateFilesAsync() - { - var fileStorage = _serviceProvider.GetRequiredService(); - var filesProcessed = 0; - - var localFilesPath = "data/files"; - if (Directory.Exists(localFilesPath)) - { - var files = Directory.GetFiles(localFilesPath, "*", SearchOption.AllDirectories); - - foreach (var filePath in files) - { - using var fileStream = File.OpenRead(filePath); - var fileName = Path.GetFileName(filePath); - var contentType = GetContentType(fileName); - - await fileStorage.UploadFileAsync(fileStream, fileName, contentType); - filesProcessed++; - - _logger.LogInformation("Migrated file: {FileName}", fileName); - } - } - - return filesProcessed; - } -} -``` - -### Rollback Procedures - -**Emergency Rollback Plan**: -1. **Immediate Actions** (0-15 minutes): - - Redirect DNS back to original system - - Activate incident response team - - Begin root cause analysis - -2. **Data Consistency** (15-30 minutes): - - Verify data integrity in original system - - Sync any changes made during brief cutover period - - Validate all services are operational - -3. **Communication** (30-60 minutes): - - Notify stakeholders of rollback - - Provide status updates to users - - Document lessons learned - -4. **Post-Rollback Analysis** (1-24 hours): - - Complete root cause analysis - - Update migration plan based on findings - - Plan next migration attempt - -## Risk Assessment and Mitigation - -### Technical Risks - -#### High Impact Risks - -**1. Data Loss or Corruption** -- **Probability**: Low -- **Impact**: Critical -- **Mitigation**: - - Multiple backup strategies with point-in-time recovery - - Comprehensive data validation during migration - - Parallel running systems during cutover - - Automated data integrity checks - -**2. Extended Downtime During Migration** -- **Probability**: Medium -- **Impact**: High -- **Mitigation**: - - Phased migration approach with minimal downtime windows - - Blue-green deployment strategy - - Comprehensive rollback procedures - - 24/7 monitoring during cutover - -**3. Performance Degradation** -- **Probability**: Medium -- **Impact**: Medium -- **Mitigation**: - - Extensive load testing before migration - - Performance monitoring and alerting - - Auto-scaling capabilities - - Database query optimization - -#### Medium Impact Risks - -**4. Integration Failures** -- **Probability**: Medium -- **Impact**: Medium -- **Mitigation**: - - Thorough integration testing - - Circuit breaker patterns for external dependencies - - Graceful degradation for non-critical features - - Health check monitoring - -**5. Security Vulnerabilities** -- **Probability**: Low -- **Impact**: High -- **Mitigation**: - - Security scanning of all container images - - Network policies and Pod Security Standards - - Secret management best practices - - Regular security audits - -### Operational Risks - -**6. Team Knowledge Gaps** -- **Probability**: Medium -- **Impact**: Medium -- **Mitigation**: - - Comprehensive training program - - Detailed operational documentation - - On-call procedures and runbooks - - Knowledge transfer sessions - -**7. Infrastructure Capacity Issues** -- **Probability**: Low -- **Impact**: Medium -- **Mitigation**: - - Capacity planning and resource monitoring - - Auto-scaling policies - - Resource quotas and limits - - Infrastructure as Code for rapid scaling - -### Business Risks - -**8. User Adoption Challenges** -- **Probability**: Low -- **Impact**: Medium -- **Mitigation**: - - Transparent communication about changes - - User training and documentation - - Phased rollout to minimize impact - - User feedback collection and response - -## Testing Strategy - -### Test Environment Architecture - -**Multi-Environment Strategy**: -``` -Development → Staging → Pre-Production → Production - ↓ ↓ ↓ ↓ - Unit Tests Integration Load Testing Monitoring - API Tests UI Tests Security Alerting - DB Tests E2E Tests Performance Backup Tests -``` - -### Comprehensive Testing Plan - -#### Unit Testing -- **Coverage Target**: 80% code coverage minimum -- **Focus Areas**: Business logic, data access layer, API endpoints -- **Test Framework**: xUnit with Moq for dependency injection testing -- **Automated Execution**: Run on every commit and pull request - -#### Integration Testing -- **Database Integration**: Test all repository implementations -- **External Service Integration**: MinIO, Redis, PostgreSQL connectivity -- **API Integration**: Full request/response cycle testing -- **Authentication Testing**: All authentication flows and authorization rules - -#### Load Testing -- **Tools**: k6 or Artillery for load generation -- **Scenarios**: - - Normal load: 100 concurrent users - - Peak load: 500 concurrent users - - Stress test: 1000+ concurrent users -- **Metrics**: Response time, throughput, error rate, resource utilization - -#### Security Testing -- **Container Security**: Scan images for vulnerabilities -- **Network Security**: Validate network policies and isolation -- **Authentication**: Test all authentication and authorization scenarios -- **Data Protection**: Verify encryption at rest and in transit - -#### Disaster Recovery Testing -- **Database Failover**: Test automatic failover scenarios -- **Application Recovery**: Pod failure and recovery testing -- **Backup Restoration**: Full system restoration from backups -- **Network Partitioning**: Test behavior during network issues - -### Performance Testing Scenarios - -**Load Testing Script Example**: -```javascript -import http from 'k6/http'; -import { check, sleep } from 'k6'; - -export let options = { - stages: [ - { duration: '2m', target: 20 }, // Ramp up - { duration: '5m', target: 20 }, // Stay at 20 users - { duration: '2m', target: 50 }, // Ramp up to 50 - { duration: '5m', target: 50 }, // Stay at 50 - { duration: '2m', target: 100 }, // Ramp up to 100 - { duration: '5m', target: 100 }, // Stay at 100 - { duration: '2m', target: 0 }, // Ramp down - ], - thresholds: { - http_req_duration: ['p(95)<500'], // 95% of requests under 500ms - http_req_failed: ['rate<0.1'], // Error rate under 10% - }, -}; - -export default function() { - // Login - let loginResponse = http.post('https://motovault.example.com/api/auth/login', { - username: 'testuser', - password: 'testpass' - }); - - check(loginResponse, { - 'login successful': (r) => r.status === 200, - }); - - let authToken = loginResponse.json('token'); - - // Dashboard load - let dashboardResponse = http.get('https://motovault.example.com/api/dashboard', { - headers: { Authorization: `Bearer ${authToken}` }, - }); - - check(dashboardResponse, { - 'dashboard loaded': (r) => r.status === 200, - 'response time < 500ms': (r) => r.timings.duration < 500, - }); - - sleep(1); -} -``` - -## Operational Procedures - -### Monitoring and Alerting - -#### Application Metrics -```yaml -# Prometheus AlertManager Rules -groups: -- name: motovault.rules - rules: - - alert: HighErrorRate - expr: rate(motovault_http_requests_total{status_code=~"5.."}[5m]) > 0.1 - for: 2m - labels: - severity: critical - annotations: - summary: "High error rate detected" - description: "Error rate is {{ $value }}% for the last 5 minutes" - - - alert: HighResponseTime - expr: histogram_quantile(0.95, rate(motovault_http_request_duration_seconds_bucket[5m])) > 2 - for: 5m - labels: - severity: warning - annotations: - summary: "High response time detected" - description: "95th percentile response time is {{ $value }}s" - - - alert: DatabaseConnectionPoolExhaustion - expr: motovault_active_connections > 80 - for: 2m - labels: - severity: warning - annotations: - summary: "Database connection pool nearly exhausted" - description: "Active connections: {{ $value }}/100" - - - alert: PodCrashLooping - expr: rate(kube_pod_container_status_restarts_total{namespace="motovault"}[15m]) > 0 - for: 5m - labels: - severity: critical - annotations: - summary: "Pod is crash looping" - description: "Pod {{ $labels.pod }} is restarting frequently" -``` - -#### Infrastructure Monitoring -- **Node Resources**: CPU, memory, disk usage across all nodes -- **Network Performance**: Latency, throughput, packet loss -- **Storage Performance**: IOPS, latency for persistent volumes -- **Kubernetes Health**: API server, etcd, scheduler performance - -### Backup and Recovery Procedures - -#### Automated Backup Schedule -```bash -# Daily backup script -#!/bin/bash -set -e - -TIMESTAMP=$(date +%Y%m%d_%H%M%S) -BACKUP_NAMESPACE="motovault" - -# Database backup -echo "Starting database backup at $(date)" -kubectl exec -n $BACKUP_NAMESPACE motovault-postgres-1 -- \ - pg_dump -U postgres motovault | \ - gzip > "database_backup_${TIMESTAMP}.sql.gz" - -# MinIO backup (metadata and small files) -echo "Starting MinIO backup at $(date)" -mc mirror motovault-minio/motovault-files backup/minio_${TIMESTAMP}/ - -# Kubernetes resources backup -echo "Starting Kubernetes backup at $(date)" -velero backup create "motovault-${TIMESTAMP}" \ - --include-namespaces motovault \ - --wait - -# Upload to remote storage -echo "Uploading backups to remote storage" -aws s3 cp "database_backup_${TIMESTAMP}.sql.gz" s3://motovault-backups/daily/ -aws s3 sync "backup/minio_${TIMESTAMP}/" s3://motovault-backups/minio/${TIMESTAMP}/ - -# Cleanup local files older than 7 days -find backup/ -name "*.gz" -mtime +7 -delete -find backup/minio_* -mtime +7 -exec rm -rf {} \; - -echo "Backup completed successfully at $(date)" -``` - -#### Recovery Procedures -```bash -# Full system recovery script -#!/bin/bash -set -e - -BACKUP_DATE=$1 -if [ -z "$BACKUP_DATE" ]; then - echo "Usage: $0 " - echo "Example: $0 20240120_020000" - exit 1 -fi - -# Stop application -echo "Scaling down application..." -kubectl scale deployment motovault-app --replicas=0 -n motovault - -# Restore database -echo "Restoring database from backup..." -aws s3 cp "s3://motovault-backups/daily/database_backup_${BACKUP_DATE}.sql.gz" . -gunzip "database_backup_${BACKUP_DATE}.sql.gz" -kubectl exec -i motovault-postgres-1 -n motovault -- \ - psql -U postgres -d motovault < "database_backup_${BACKUP_DATE}.sql" - -# Restore MinIO data -echo "Restoring MinIO data..." -aws s3 sync "s3://motovault-backups/minio/${BACKUP_DATE}/" /tmp/minio_restore/ -mc mirror /tmp/minio_restore/ motovault-minio/motovault-files/ - -# Restart application -echo "Scaling up application..." -kubectl scale deployment motovault-app --replicas=3 -n motovault - -# Verify health -echo "Waiting for application to be ready..." -kubectl wait --for=condition=ready pod -l app=motovault -n motovault --timeout=300s - -echo "Recovery completed successfully" -``` - -### Maintenance Procedures - -#### Rolling Updates -```yaml -# Zero-downtime deployment strategy -apiVersion: argoproj.io/v1alpha1 -kind: Rollout -metadata: - name: motovault-rollout - namespace: motovault -spec: - replicas: 5 - strategy: - canary: - steps: - - setWeight: 20 - - pause: {duration: 1m} - - setWeight: 40 - - pause: {duration: 2m} - - setWeight: 60 - - pause: {duration: 2m} - - setWeight: 80 - - pause: {duration: 2m} - analysis: - templates: - - templateName: success-rate - args: - - name: service-name - value: motovault-service - canaryService: motovault-canary-service - stableService: motovault-stable-service - selector: - matchLabels: - app: motovault - template: - metadata: - labels: - app: motovault - spec: - containers: - - name: motovault - image: motovault:latest - # ... container spec -``` - -#### Scaling Procedures -- **Horizontal Scaling**: Use HPA for automatic scaling based on metrics -- **Vertical Scaling**: Monitor resource usage and adjust requests/limits -- **Database Scaling**: Add read replicas for read-heavy workloads -- **Storage Scaling**: Monitor MinIO usage and add nodes as needed - -## Implementation Timeline - -### Detailed 16-Week Schedule - -#### Weeks 1-4: Foundation Phase -**Week 1: Environment Setup** -- Day 1-2: Kubernetes cluster setup and configuration -- Day 3-4: Deploy PostgreSQL operator and cluster -- Day 5-7: Deploy MinIO operator and configure HA cluster - -**Week 2: Redis and Monitoring** -- Day 1-3: Deploy Redis cluster with sentinel configuration -- Day 4-5: Set up Prometheus and Grafana -- Day 6-7: Configure initial monitoring dashboards - -**Week 3: Application Changes** -- Day 1-2: Remove LiteDB dependencies -- Day 3-4: Implement configuration externalization -- Day 5-7: Add health check endpoints - -**Week 4: File Storage Abstraction** -- Day 1-3: Implement IFileStorageService interface -- Day 4-5: Create MinIO implementation -- Day 6-7: Add fallback mechanisms - -#### Weeks 5-8: Core Implementation -**Week 5: Database Integration** -- Day 1-3: Optimize PostgreSQL connections -- Day 4-5: Implement connection pooling -- Day 6-7: Add database health checks - -**Week 6: Session and Caching** -- Day 1-2: Implement Redis session storage -- Day 3-4: Add distributed caching layer -- Day 5-7: Implement multi-level caching - -**Week 7: Observability** -- Day 1-3: Add structured logging -- Day 4-5: Implement Prometheus metrics -- Day 6-7: Add distributed tracing - -**Week 8: Security Implementation** -- Day 1-2: Configure Pod Security Standards -- Day 3-4: Implement network policies -- Day 5-7: Set up secret management - -#### Weeks 9-12: Production Deployment -**Week 9: Kubernetes Manifests** -- Day 1-3: Create production Kubernetes manifests -- Day 4-5: Configure HPA and resource limits -- Day 6-7: Set up ingress and TLS - -**Week 10: Backup and Recovery** -- Day 1-3: Implement backup strategies -- Day 4-5: Create recovery procedures -- Day 6-7: Test disaster recovery scenarios - -**Week 11: Load Testing** -- Day 1-3: Create load testing scenarios -- Day 4-5: Execute performance tests -- Day 6-7: Optimize based on results - -**Week 12: Migration Preparation** -- Day 1-3: Create data migration tools -- Day 4-5: Test migration procedures -- Day 6-7: Prepare rollback plans - -#### Weeks 13-16: Advanced Features -**Week 13: Performance Optimization** -- Day 1-3: Implement advanced caching strategies -- Day 4-5: Optimize database queries -- Day 6-7: Fine-tune resource allocation - -**Week 14: Advanced Security** -- Day 1-3: Implement external secret management -- Day 4-5: Add security scanning to CI/CD -- Day 6-7: Configure advanced network policies - -**Week 15: Production Migration** -- Day 1-2: Execute data migration -- Day 3-4: Perform application cutover -- Day 5-7: Monitor and optimize - -**Week 16: Optimization and Documentation** -- Day 1-3: Performance tuning based on production usage -- Day 4-5: Update operational documentation -- Day 6-7: Conduct team training - -### Success Criteria - -#### Technical Success Metrics -- **Availability**: 99.9% uptime (no more than 8.76 hours downtime per year) -- **Performance**: 95th percentile response time under 500ms -- **Scalability**: Ability to handle 10x current user load -- **Recovery**: RTO < 1 hour, RPO < 15 minutes - -#### Operational Success Metrics -- **Deployment Frequency**: Enable weekly deployments with zero downtime -- **Mean Time to Recovery**: < 30 minutes for critical issues -- **Change Failure Rate**: < 5% of deployments require rollback -- **Monitoring Coverage**: 100% of critical services monitored - -#### Business Success Metrics -- **User Satisfaction**: No degradation in user experience -- **Cost Efficiency**: Infrastructure costs within 20% of current spending -- **Maintenance Overhead**: Reduced operational maintenance time by 50% -- **Future Readiness**: Foundation for future enhancements and scaling - ---- - -**Document Version**: 1.0 -**Last Updated**: January 2025 -**Author**: MotoVaultPro Modernization Team -**Status**: Draft for Review - ---- - -This comprehensive plan provides a detailed roadmap for modernizing MotoVaultPro to run efficiently on Kubernetes with high availability, scalability, and operational excellence. The phased approach ensures minimal risk while delivering maximum benefits for future growth and reliability. \ No newline at end of file diff --git a/docs/MOBILE.md b/docs/MOBILE.md deleted file mode 100644 index 3f9b8f4..0000000 --- a/docs/MOBILE.md +++ /dev/null @@ -1,185 +0,0 @@ -# Mobile Experience Improvement Plan for Add Fuel Record Screen - -## Analysis Summary - -The current add fuel record screen has significant mobile UX issues that create pain points for users on mobile devices. The interface feels like a shrunken desktop version rather than a mobile-first experience. - -## Critical Mobile UX Issues Identified - -### 1. Modal Size and Viewport Problems -- Uses Bootstrap's default modal sizing without mobile optimization -- No mobile-specific modal sizing classes or responsive adjustments -- **File Location**: `/Views/Vehicle/Gas/_GasModal.cshtml` - -### 2. Touch Target Size Issues -- Small "+" button for odometer increment (44px minimum not met) -- Small close button in header -- Form switch toggles too small for reliable touch interaction -- **File Locations**: - - `/Views/Vehicle/Gas/_GasModal.cshtml` (lines 69, 99, 51, 48, 106, 110) - -### 3. Dense Two-Column Layout Problems -- Advanced mode uses `col-md-6` layout creating cramped display -- Fields become too narrow for comfortable text input -- Second column with file upload becomes nearly unusable -- **File Location**: `/Views/Vehicle/Gas/_GasModal.cshtml` (lines 59, 139) - -### 4. Complex Header Layout on Mobile -- Modal header contains multiple elements in cramped flex layout -- Toggle labels may wrap or get cut off -- Mode switch becomes hard to understand and use -- **File Location**: `/Views/Vehicle/Gas/_GasModal.cshtml` (lines 44-53) - -### 5. Input Field Accessibility Issues -- Decimal inputs with custom key interceptors interfere with mobile keyboards -- Multi-select dropdown for tags difficult on mobile -- File upload interface unusable in narrow mobile view -- **File Locations**: - - `/Views/Vehicle/Gas/_GasModal.cshtml` (lines 74, 103, 117, 127, 130-135) - - `/wwwroot/js/gasrecord.js` - -### 6. Modal Footer Button Layout -- Multiple buttons including conditional "Delete" button create touch conflicts -- Risk of accidental deletion or difficulty reaching primary action -- **File Location**: `/Views/Vehicle/Gas/_GasModal.cshtml` (line 155) - -### 7. Form Mode Switching UX -- Simple/Advanced mode toggle jarring on mobile -- Content suddenly appears/disappears -- Users might not understand mode switching capability -- **File Location**: `/wwwroot/js/gasrecord.js` (lines 509-536) - -### 8. Keyboard and Input Mode Issues -- Mixed input types with custom JavaScript key handlers -- Mobile keyboards may not behave predictably -- **File Locations**: - - `/Views/Vehicle/Gas/_GasModal.cshtml` - - `/wwwroot/js/gasrecord.js` - -### 9. Date Picker Mobile Issues -- Bootstrap datepicker doesn't provide optimal mobile experience -- Native mobile date pickers would be better -- **File Location**: `/wwwroot/js/gasrecord.js` (lines 6, 29) - -### 10. No Progressive Enhancement for Mobile -- No mobile-specific CSS classes or touch-friendly spacing -- No mobile-optimized layouts -- **File Locations**: - - `/wwwroot/css/site.css` - - `/Views/Vehicle/Gas/_GasModal.cshtml` - -## Mobile Experience Improvement Plan - -### Priority 1: Critical Mobile UX Fixes - -#### 1. Mobile-First Modal Design -- Implement full-screen modal on mobile devices -- Add slide-up animation for native app feel -- Create mobile-specific modal header with simplified layout -- **Files to Modify**: - - `/Views/Vehicle/Gas/_GasModal.cshtml` - - `/wwwroot/css/site.css` - - `/wwwroot/js/gasrecord.js` - -#### 2. Touch Target Optimization -- Increase all interactive elements to minimum 44px -- Add larger padding around buttons and form controls -- Implement touch-friendly spacing between elements -- **Files to Modify**: - - `/Views/Vehicle/Gas/_GasModal.cshtml` - - `/wwwroot/css/site.css` - -#### 3. Single-Column Mobile Layout -- Force single-column layout on mobile regardless of mode -- Stack all form fields vertically with proper spacing -- Move file upload and notes to dedicated sections -- **Files to Modify**: - - `/Views/Vehicle/Gas/_GasModal.cshtml` - - `/wwwroot/css/site.css` - -### Priority 2: Input and Interaction Improvements - -#### 4. Mobile-Optimized Inputs -- Replace Bootstrap datepicker with native HTML5 date input on mobile -- Simplify tag selection with mobile-friendly chip input -- Improve number input keyboards with proper `inputmode` attributes -- **Files to Modify**: - - `/Views/Vehicle/Gas/_GasModal.cshtml` - - `/wwwroot/js/gasrecord.js` - -#### 5. Form Mode Simplification -- Default to Simple mode on mobile -- Make mode toggle more prominent and clear -- Add smooth transitions between modes -- **Files to Modify**: - - `/Views/Vehicle/Gas/_GasModal.cshtml` - - `/wwwroot/js/gasrecord.js` - - `/Controllers/Vehicle/GasController.cs` - -### Priority 3: Enhanced Mobile Features - -#### 6. Bottom Sheet Pattern -- Implement native-style bottom sheet for mobile -- Add swipe-to-dismiss gesture -- Include pull handle for better UX -- **Files to Modify**: - - `/Views/Vehicle/Gas/_GasModal.cshtml` - - `/wwwroot/css/site.css` - - `/wwwroot/js/gasrecord.js` - -#### 7. Mobile-Specific CSS Improvements -- Add mobile breakpoint styles -- Implement proper touch feedback -- Optimize form field sizing for mobile keyboards -- **Files to Modify**: - - `/wwwroot/css/site.css` - -#### 8. Progressive Enhancement -- Add mobile detection for conditional features -- Implement haptic feedback where supported -- Add mobile-specific validation styling -- **Files to Modify**: - - `/wwwroot/js/gasrecord.js` - - `/wwwroot/js/shared.js` - - `/Views/Shared/_Layout.cshtml` - -## Implementation Strategy - -### Phase 1: Modal and Layout Fixes (Priority 1 items) -- Focus on making the most impactful changes first -- Ensure mobile modal feels native and intuitive -- Implement proper touch targets and single-column layout - -### Phase 2: Input Optimizations (Priority 2 items) -- Optimize form inputs for mobile interaction -- Simplify complex form elements -- Improve mode switching experience - -### Phase 3: Advanced Mobile Features (Priority 3 items) -- Add sophisticated mobile interaction patterns -- Implement progressive enhancement -- Add mobile-specific features and feedback - -## Key Files for Mobile Improvements - -### Primary Files: -- `/Views/Vehicle/Gas/_GasModal.cshtml` - Main modal template -- `/wwwroot/js/gasrecord.js` - Modal behavior and form handling -- `/wwwroot/css/site.css` - Styling and responsive design - -### Supporting Files: -- `/Controllers/Vehicle/GasController.cs` - Server-side logic -- `/Views/Shared/_Layout.cshtml` - Global mobile configuration -- `/wwwroot/js/shared.js` - Shared JavaScript utilities - -## Success Metrics - -- Touch target compliance (minimum 44px) -- Single-column layout on mobile breakpoints -- Native mobile input patterns -- Improved task completion rates on mobile -- Reduced user friction and abandonment - -## Notes - -This plan maintains existing functionality while transforming the mobile experience from a desktop-centric interface to a mobile-first, touch-optimized experience that feels native and intuitive on mobile devices. \ No newline at end of file diff --git a/docs/architecture.md b/docs/architecture.md deleted file mode 100644 index 0eb6c9e..0000000 --- a/docs/architecture.md +++ /dev/null @@ -1,351 +0,0 @@ -# MotoVaultPro Architecture Documentation - -## Table of Contents -1. [Overview](#overview) -2. [Technology Stack](#technology-stack) -3. [Architecture Patterns](#architecture-patterns) -4. [Project Structure](#project-structure) -5. [Data Layer](#data-layer) -6. [Business Logic Layer](#business-logic-layer) -7. [Controller Layer](#controller-layer) -8. [Frontend Architecture](#frontend-architecture) -9. [Authentication & Security](#authentication--security) -10. [Deployment & Configuration](#deployment--configuration) -11. [API Design](#api-design) -12. [Performance Considerations](#performance-considerations) -13. [Development Guidelines](#development-guidelines) -14. [Future Enhancements](#future-enhancements) - -## Overview - -MotoVaultPro is a self-hosted, open-source vehicle maintenance and fuel mileage tracking application built with ASP.NET Core 8.0. The application follows a traditional Model-View-Controller (MVC) architecture with modern patterns including dependency injection, repository pattern, and dual-database support. - -### Key Features -- Vehicle maintenance tracking and reminders -- Fuel efficiency monitoring and analysis -- Multi-user support with role-based access control -- Dual database support (LiteDB and PostgreSQL) -- RESTful API endpoints -- Progressive Web App (PWA) capabilities -- Internationalization support -- OpenID Connect integration -- File attachment and document management - -## Technology Stack - -### Core Framework -- **ASP.NET Core 8.0** - Web application framework -- **C# 12** - Programming language -- **Razor Pages** - Server-side rendering engine - -### Database Support -- **LiteDB 5.0.17** - Embedded NoSQL database (default) -- **PostgreSQL** - External relational database (via Npgsql 9.0.3) - -### Frontend Technologies -- **Bootstrap 5** - UI framework and responsive design -- **jQuery** - DOM manipulation and AJAX -- **Chart.js** - Data visualization -- **SweetAlert2** - Modal dialogs and notifications - -### Additional Libraries -- **MailKit 4.11.0** - Email functionality -- **CsvHelper 33.0.1** - CSV import/export -- **System.IdentityModel.Tokens.Jwt 7.3.1** - JWT authentication -- **Bootstrap Extensions** - Date pickers, tag inputs, etc. - -## Architecture Patterns - -### 1. Model-View-Controller (MVC) -Clean separation of concerns with: -- **Models**: Data representation and business logic -- **Views**: User interface and presentation -- **Controllers**: Request handling and application flow - -### 2. Repository Pattern -Data access abstraction through interfaces: -- Interface contracts in `External/Interfaces/` -- Dual implementations for LiteDB and PostgreSQL -- Dependency injection for provider selection - -### 3. Dependency Injection -Comprehensive DI container usage: -- Service registration in `Program.cs` -- Constructor injection throughout application -- Singleton lifetime for most services - -### 4. Generic Record Pattern -Base class inheritance for consistency: -- `GenericRecord` base class with common properties -- Specialized record types for different data types -- Promotes code reuse and maintainability - -### 5. Helper/Service Layer Pattern -Business logic separation: -- Helper classes for specific functionality -- Service classes for complex operations -- Clear separation from controllers - -## Project Structure - -``` -MotoVaultPro/ -├── Controllers/ # MVC Controllers -│ ├── Vehicle/ # Vehicle-specific controllers -│ ├── HomeController.cs -│ ├── LoginController.cs -│ └── AdminController.cs -├── Models/ # Data models and ViewModels -│ ├── API/ # API-specific models -│ ├── Shared/ # Common models -│ └── Vehicle/ # Vehicle-related models -├── Views/ # Razor views -│ ├── Shared/ # Common layouts and partials -│ └── Vehicle/ # Vehicle-specific views -├── External/ # Data access layer -│ ├── Interfaces/ # Repository interfaces -│ └── Implementations/ # Database implementations -├── Logic/ # Business logic classes -├── Helper/ # Utility classes -├── Middleware/ # Custom middleware -├── wwwroot/ # Static web assets -└── docs/ # Documentation -``` - -## Data Layer - -### Database Architecture -The application supports dual database backends through a unified repository pattern: - -#### LiteDB Implementation -- **File-based storage**: Single database file (`data/cartracker.db`) -- **NoSQL document storage**: Entities stored as JSON documents -- **Embedded database**: No external dependencies -- **Performance**: Excellent for single-user scenarios - -#### PostgreSQL Implementation -- **Relational database**: External PostgreSQL server -- **Hybrid schema**: Combines relational structure with JSONB flexibility -- **Scalability**: Supports multi-user scenarios with better performance -- **Advanced features**: Full-text search, complex queries, transactions - -### Entity Model -``` -Vehicle (Root Entity) -├── ServiceRecord (maintenance and repairs) -├── GasRecord (fuel tracking) -├── CollisionRecord (accident records) -├── UpgradeRecord (modifications) -├── TaxRecord (registration and taxes) -├── SupplyRecord (parts and supplies) -├── PlanRecord (maintenance planning) -├── OdometerRecord (mileage tracking) -├── ReminderRecord (maintenance reminders) -└── Note (general notes) -``` - -### Data Access Interfaces -Each entity type has a dedicated interface: -- `IVehicleDataAccess` - Vehicle management -- `IServiceRecordDataAccess` - Service records -- `IGasRecordDataAccess` - Fuel tracking -- `IUserRecordDataAccess` - User management -- And more... - -## Business Logic Layer - -### Logic Classes -- **VehicleLogic**: Core vehicle operations and aggregations -- **UserLogic**: User management and access control -- **LoginLogic**: Authentication and user registration -- **OdometerLogic**: Mileage tracking and validation - -### Helper Classes -- **ReminderHelper**: Reminder calculations and urgency -- **ReportHelper**: Data aggregation and reporting -- **StaticHelper**: Common utilities and constants -- **TranslationHelper**: Internationalization support -- **ConfigHelper**: Configuration management - -### Business Rules -- **Mileage Progression**: Automatic odometer record management -- **Reminder Urgency**: Complex urgency calculations based on date/mileage -- **Access Control**: Vehicle-level permissions with collaborator system -- **Data Validation**: Input validation and business rule enforcement - -## Controller Layer - -### Main Controllers -- **HomeController**: Dashboard, settings, and kiosk mode -- **VehicleController**: Vehicle management hub (partial class) -- **LoginController**: Authentication and user management -- **AdminController**: Administrative functions -- **APIController**: RESTful API endpoints - -### Vehicle Controller Architecture -The `VehicleController` uses a partial class pattern with specialized controllers: -- **GasController**: Fuel record management -- **ServiceController**: Service record operations -- **ReminderController**: Reminder management -- **ImportController**: CSV import/export -- And more... - -### Security and Authorization -- **Authentication Middleware**: Custom authentication handler -- **Role-based Authorization**: Admin, root user, and regular user roles -- **Vehicle-level Permissions**: CollaboratorFilter for fine-grained access -- **API Authentication**: Supports both cookie and Basic Auth - -## Frontend Architecture - -### View Organization -- **Razor Views**: Server-side rendered with strong typing -- **Partial Views**: Modular components for reusability -- **Layout System**: Single layout with sections for customization -- **Modal-heavy UI**: Extensive use of Bootstrap modals - -### JavaScript Architecture -- **jQuery-based**: DOM manipulation and AJAX requests -- **Feature-specific files**: Organized by functionality -- **Global functions**: Accessible throughout the application -- **Event-driven**: Extensive event handling for user interactions - -### Styling Approach -- **Bootstrap 5**: Primary CSS framework -- **Custom CSS**: Application-specific styling in `site.css` -- **Responsive Design**: Mobile-first approach with media queries -- **Dark Mode Support**: CSS variables for theme switching - -### Progressive Web App (PWA) -- **Web App Manifest**: Proper configuration for app installation -- **Service Worker Ready**: Architecture supports offline functionality -- **Multiple Icons**: Various sizes for different devices -- **Responsive Design**: Optimized for mobile and desktop - -## Authentication & Security - -### Authentication Modes -- **Cookie-based**: Encrypted session cookies for web interface -- **Basic Authentication**: HTTP Basic Auth for API access -- **OpenID Connect**: External provider integration -- **Token-based**: Registration and password reset tokens - -### Authorization Levels -- **Root User**: Full system access (user ID -1) -- **Admin User**: Administrative privileges -- **Regular User**: Standard application access -- **Vehicle Collaborators**: Vehicle-specific permissions - -### Security Features -- **Password Hashing**: SHA256 with UTF-8 encoding -- **Data Protection**: ASP.NET Core encryption for cookies -- **PKCE Support**: Enhanced OIDC security -- **File Security**: Authenticated file access and uploads -- **SQL Injection Protection**: Parameterized queries throughout - -## Deployment & Configuration - -### Database Selection -Configuration-driven database selection: -```csharp -if (!string.IsNullOrWhiteSpace(builder.Configuration["POSTGRES_CONNECTION"])) -{ - // Use PostgreSQL -} -else -{ - // Use LiteDB (default) -} -``` - -### Configuration Management -- **Environment Variables**: Database connections and external services -- **JSON Configuration**: Application settings and user preferences -- **Feature Flags**: Enable/disable authentication and features -- **Multi-environment**: Development, staging, production configurations - -### Docker Support -- **Multi-stage build**: Optimized Docker image creation -- **ASP.NET Core 8.0 runtime**: Lightweight production image -- **Port 8080**: Standard web application port -- **Volume mounting**: Persistent data storage - -## API Design - -### RESTful Endpoints -- **Conventional routing**: `/api/{controller}/{action}` -- **JSON responses**: Consistent response format -- **HTTP status codes**: Proper error handling -- **Authentication required**: All endpoints require authentication - -### API Features -- **Vehicle data**: CRUD operations for all record types -- **User management**: Authentication and authorization -- **File operations**: Upload and download capabilities -- **Reporting**: Data aggregation and analysis endpoints - -## Performance Considerations - -### Database Performance -- **Connection pooling**: Efficient connection management (PostgreSQL) -- **Lazy loading**: On-demand data retrieval -- **Caching**: Configuration and translation caching -- **Batch operations**: Efficient bulk data operations - -### Frontend Performance -- **Partial views**: Reduced page load times -- **AJAX updates**: Dynamic content without full page reloads -- **Responsive images**: Optimized for different screen sizes -- **Minification ready**: Architecture supports asset bundling - -## Development Guidelines - -### Code Organization -- **Separation of concerns**: Clear layer boundaries -- **Consistent naming**: Descriptive class and method names -- **Interface-based design**: Abstraction for testability -- **Dependency injection**: Loose coupling between components - -### Best Practices -- **Error handling**: Comprehensive exception management -- **Logging**: Structured logging throughout application -- **Validation**: Input validation at multiple layers -- **Security**: Security-first approach to all features - -### Testing Strategy -- **Unit testing**: Business logic and data access layers -- **Integration testing**: API endpoints and workflows -- **UI testing**: Frontend functionality and user flows -- **Security testing**: Authentication and authorization - -## Future Enhancements - -### Scalability Improvements -- **Microservices**: Potential service decomposition -- **Caching layer**: Redis or in-memory caching -- **Load balancing**: Multi-instance deployment support -- **Database sharding**: Data partitioning for scale - -### Technology Upgrades -- **Modern JavaScript**: ES6+ modules and TypeScript -- **Frontend framework**: React, Vue, or Angular integration -- **Real-time features**: SignalR for live updates -- **API versioning**: Structured API evolution - -### Feature Enhancements -- **Mobile applications**: Native iOS and Android apps -- **Advanced reporting**: Business intelligence features -- **Integration APIs**: Third-party service connections -- **Automated backups**: Scheduled data protection - -### Security Enhancements -- **Multi-factor authentication**: Enhanced security options -- **OAuth 2.0**: Extended authentication provider support -- **API rate limiting**: Protection against abuse -- **Audit logging**: Comprehensive security tracking - ---- - -**Last Updated**: January 2025 -**Version**: 1.0 -**Maintainer**: MotoVaultPro Development Team \ No newline at end of file diff --git a/docs/data-model-prompt.md b/docs/data-model-prompt.md deleted file mode 100644 index 4923b8d..0000000 --- a/docs/data-model-prompt.md +++ /dev/null @@ -1 +0,0 @@ -Analyze and document the data model of this application. It is a vehicle fleet management application. I don't believe the data model was structured properly for our desired outcome. The desired data records will be a high level "Maintenance" "Fuel" "Documents". Under Maintenance there will be different catagories for Service, Repairs and Upgrades. Fuel will have different types of Gasoline, Diesel and Electric. Documents will have Insurance, Registration, Notes. \ No newline at end of file diff --git a/docs/generic-record.md b/docs/generic-record.md deleted file mode 100644 index 83d9a2f..0000000 --- a/docs/generic-record.md +++ /dev/null @@ -1,122 +0,0 @@ -# GenericRecord Data Model Analysis - -## Overview - -**GenericRecord** is a **C# class** defined in `Models/Shared/GenericRecord.cs` that serves as a **base class** in MotoVaultPro's architecture, implementing the Generic Record Pattern for shared vehicle maintenance record properties. - -## Properties - -The GenericRecord class has **10 properties**: - -### Core Properties -- `int Id` - Primary key identifier -- `int VehicleId` - Foreign key linking to vehicle -- `DateTime Date` - When the record occurred -- `int Mileage` - Vehicle odometer reading -- `string Description` - Human-readable description -- `decimal Cost` - Monetary cost associated with record -- `string Notes` - Additional notes/comments - -### Collection Properties -- `List Files` - File attachments (Name, Location, IsPending) -- `List Tags` - Categorization tags -- `List ExtraFields` - Custom fields (Name, Value, IsRequired, FieldType) -- `List RequisitionHistory` - Supply usage tracking - -## Architecture Role - -GenericRecord implements the **Generic Record Pattern** mentioned in the architecture documentation. It serves as a **base class** that provides common properties shared across different record types, promoting code reuse and maintainability. - -## Inheritance Pattern - -### Classes that inherit from GenericRecord -- `ServiceRecord` - Maintenance and repair records -- `UpgradeRecord` - Vehicle modification records - -### Classes with similar structure (not inheriting) -- `GasRecord` - Fuel tracking with additional properties (Gallons, IsFillToFull, MissedFuelUp) -- `TaxRecord` - Registration and tax records with recurring reminder fields -- `SupplyRecord` - Parts and supplies with specific properties (PartNumber, PartSupplier, Quantity) -- `PlanRecord` - Maintenance planning with priority/progress tracking -- `OdometerRecord` - Simplified for mileage tracking only -- `ReminderRecord` - Focused on reminder scheduling and intervals - -## Supporting Classes - -### UploadedFiles -Located in `Models/Shared/UploadedFiles.cs`: -- `string Name` - File name -- `string Location` - File storage path -- `bool IsPending` - Upload status flag - -### ExtraField -Located in `Models/Shared/ExtraField.cs`: -- `string Name` - Field name -- `string Value` - Field value -- `bool IsRequired` - Required field flag -- `ExtraFieldType FieldType` - Field data type - -### SupplyUsageHistory -Located in `Models/Supply/SupplyUsageHistory.cs`: -- `int Id` - Record identifier -- `DateTime Date` - Usage date -- `string PartNumber` - Part identifier -- `string Description` - Part description -- `decimal Quantity` - Amount used -- `decimal Cost` - Cost of usage - -### ExtraFieldType Enum -Located in `Enum/ExtraFieldType.cs`: -- `Text` (0) - Text input -- `Number` (1) - Integer input -- `Decimal` (2) - Decimal input -- `Date` (3) - Date picker -- `Time` (4) - Time picker -- `Location` (5) - Location input - -## Usage Throughout Application - -GenericRecord is utilized extensively across MotoVaultPro: - -### API Layer -- **GenericRecordExportModel** - JSON serialization for import/export operations -- **API endpoints** - Service and upgrade record CRUD operations -- **Webhook notifications** - WebHookPayload.FromGenericRecord for external integrations - -### UI Layer -- **GenericRecordEditModel** - Bulk editing operations across multiple records -- **_GenericRecordModal** - Modal interface for multi-record editing -- **Sticker generation** - Vehicle maintenance stickers with record data - -### Data Access Layer -- **Repository pattern** - Common interface for record operations -- **Database abstraction** - Unified storage across LiteDB and PostgreSQL -- **Data transformation** - Conversion between record types - -### Business Logic -- **Record management** - Create, update, delete operations -- **Cost calculations** - Financial reporting and analysis -- **Mileage tracking** - Odometer progression validation - -## Design Benefits - -1. **Code Reuse** - Common properties defined once and inherited -2. **Maintainability** - Centralized structure for vehicle records -3. **Consistency** - Uniform data model across record types -4. **Extensibility** - Easy addition of new record types -5. **Bulk Operations** - Unified interface for multi-record editing -6. **API Consistency** - Standardized data exchange format - -## Implementation Notes - -- GenericRecord serves as both a base class and a standalone model -- Not all record types inherit from GenericRecord due to specialized requirements -- The pattern balances common functionality with type-specific needs -- File attachments, tags, and extra fields provide extensibility -- Supply usage tracking enables parts management integration - ---- - -**Document Version**: 1.0 -**Last Updated**: August 2025 -**Related Documentation**: [Architecture Documentation](architecture.md), [Record Architecture](record-architecture.md) \ No newline at end of file diff --git a/docs/record-architecture.md b/docs/record-architecture.md deleted file mode 100644 index 0b61403..0000000 --- a/docs/record-architecture.md +++ /dev/null @@ -1,268 +0,0 @@ -This UX Design Summary serves as a comprehensive reference for future development efforts, providing specific recommendations and code examples for continued enhancement of the MotoVaultPro - -# Record Entity Removal Guide -## Complete Entity Removal Process -This section documents the comprehensive process used to remove the Collision/Repair record entities from MotoVaultPro, serving as a reference for future AI-assisted entity removals. - -### Pre-Removal Analysis -Before removing any record entity, perform a thorough analysis: - -1. **Identify all entity references** across the entire codebase -2. **Map data flow** from database → data access → business logic → controllers → views → frontend -3. **Document dependencies** including translation keys, navigation elements, and configuration - -### Systematic Removal Checklist - -#### 1. Data Models & Core Entities ✅ **COMPLETED** -**Files Removed:** -- `/Models/CollisionRecord/` - Entire model directory ✅ -- `CollisionRecord.cs`, `CollisionRecordInput.cs`, `CollisionRecordViewModel.cs` ✅ - -**Files Updated:** -- `/Models/Shared/VehicleRecords.cs` - Removed CollisionRecords property ✅ -- `/Enum/ImportMode.cs` - Removed RepairRecord enum entry ✅ -- `/Models/UserConfig.cs` - Removed RepairRecord from VisibleTabs list ✅ -- Report models in `/Models/Report/` - Removed CollisionRecordSum properties ✅ - -#### 2. Data Access Layer ✅ **COMPLETED** -**Files Removed:** -- `/External/Interfaces/ICollisionRecordDataAccess.cs` ✅ -- `/External/Implementations/Litedb/CollisionRecordDataAccess.cs` ✅ -- `/External/Implementations/Postgres/CollisionRecordDataAccess.cs` ✅ - -**Files Updated:** -- `/Program.cs` - Removed dependency injection registrations for both LiteDB and PostgreSQL ✅ -- All controller constructors - Removed ICollisionRecordDataAccess parameters ✅ - -#### 3. Controllers & Business Logic ✅ **COMPLETED** -**Files Removed:** -- `/Controllers/Vehicle/CollisionController.cs` ✅ - -**Files Updated:** -- `/Controllers/VehicleController.cs` - Removed all RepairRecord case statements and _collisionRecordDataAccess usage ✅ -- `/Controllers/APIController.cs` - Removed RepairRecord API endpoints and collision record references ✅ -- `/Logic/VehicleLogic.cs` - Removed CollisionRecords properties and GetOwnershipDays parameter ✅ -- `/Helper/ReportHelper.cs` - Removed GetRepairRecordSum methods ✅ -- `/Helper/StaticHelper.cs` - Removed RepairRecord ImportMode case and GenericToRepairRecord method ✅ -- `/Controllers/Vehicle/ReportController.cs` - Removed all collision record cost calculations and references ✅ -- `/Controllers/Vehicle/ImportController.cs` - Removed RepairRecord import/export functionality ✅ -- `/Controllers/Vehicle/PlanController.cs` - Removed RepairRecord case from plan conversion ✅ -- `/Controllers/MigrationController.cs` - Removed collision record migration code ✅ - -#### 4. Views & Frontend Components ✅ -**Files to Remove:** -- `/Views/Vehicle/{EntityName}/` - Entire view directory -- `/wwwroot/js/{entityname}record.js` - Entity-specific JavaScript - -**Files to Update:** -- `/Views/Vehicle/Index.cshtml` - Remove script references, navigation tabs, and tab panes -- All view files with context menus - Remove "Move To" options -- All view files with modal dropdowns - Remove entity references -- Configuration views (`/Views/Home/_Settings.cshtml`) - Remove tab visibility options - -#### 5. JavaScript & Client-Side ✅ -**Files to Update:** -- `/wwwroot/js/shared.js` - Remove entity cases from move/duplicate/delete functions -- `/wwwroot/js/vehicle.js` - Remove entity tab loading logic and function calls -- Remove all `getVehicle{EntityName}Records` function calls - -#### 6. Translations & Localization ✅ -**Files to Update:** -- `/wwwroot/defaults/en_US.json` - Remove all entity-related translation keys -- Update context-sensitive translations (e.g., "Service/Repair/Upgrade" → "Service/Upgrade") - -#### 7. Configuration & Settings ✅ -**Files to Update:** -- User configuration systems that reference entity tabs -- Kiosk mode displays that show entity counts -- Dashboard metrics that include entity data -- Report configurations that aggregate entity costs - -### Critical C# Code Patterns to Find - -#### Constructor Parameter Removal -```csharp -// BEFORE -public VehicleController( - IServiceRecordDataAccess serviceRecordDataAccess, - ICollisionRecordDataAccess collisionRecordDataAccess, // ← REMOVE - IUpgradeRecordDataAccess upgradeRecordDataAccess) - -// AFTER -public VehicleController( - IServiceRecordDataAccess serviceRecordDataAccess, - IUpgradeRecordDataAccess upgradeRecordDataAccess) -``` - -#### Field Declaration Removal -```csharp -// REMOVE these patterns -private readonly ICollisionRecordDataAccess _collisionRecordDataAccess; -``` - -#### Constructor Assignment Removal -```csharp -// REMOVE these patterns -_collisionRecordDataAccess = collisionRecordDataAccess; -``` - -#### Method Parameter Cleanup -```csharp -// BEFORE -int GetOwnershipDays(string purchaseDate, string soldDate, int year, - List serviceRecords, - List repairRecords, // ← REMOVE - List upgradeRecords) - -// AFTER -int GetOwnershipDays(string purchaseDate, string soldDate, int year, - List serviceRecords, - List upgradeRecords) -``` - -#### Data Access Usage Removal -```csharp -// REMOVE these patterns -var repairRecords = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicleId); -numbersArray.AddRange(repairRecords.Select(x => x.Mileage)); -``` - -#### API Endpoint Removal -```csharp -// REMOVE entire #region blocks -#region RepairRecord -[HttpGet] -[Route("/api/vehicle/repairrecords")] -public IActionResult RepairRecords(int vehicleId) { ... } -#endregion -``` - -#### Model Property Removal -```csharp -// REMOVE properties from report models -public decimal CollisionRecordSum { get; set; } -public decimal CollisionRecordPerMile { get { return ... CollisionRecordSum ... } } -``` - -### JavaScript Patterns to Remove - -#### Tab Loading Logic -```javascript -// REMOVE these cases -case "accident-tab": - getVehicleCollisionRecords(vehicleId); - break; -``` - -#### Function Definitions -```javascript -// REMOVE entire functions -function getVehicleCollisionRecords(vehicleId) { ... } -``` - -#### Switch Statement Cases -```javascript -// REMOVE these cases from move/duplicate/delete operations -case "RepairRecord": - friendlySource = "Repairs"; - refreshDataCallBack = getVehicleCollisionRecords; - break; -``` - -### View/HTML Patterns to Remove - -#### Navigation Tabs -```html - - -``` - -#### Tab Panes -```html - -
-``` - -#### Context Menu Options -```html - -
  • -
    - Repairs -
    -
  • -``` - -### Translation Cleanup - -#### Systematic Key Removal -```bash -# Use sed to remove translation keys -sed -i 's/,"Repairs":"Repairs"//g; s/,"Add_Repair_Record":"Add Repair Record"//g' en_US.json -``` - -### Post-Removal Verification ✅ **COMPLETED** - -#### Build Verification ✅ -1. **Compilation Check**: ✅ Build completed successfully with no compilation errors -2. **Missing Reference Scan**: ✅ No remaining CollisionRecord/RepairRecord references found -3. **Database Schema**: ✅ All collision record table creation and migration code removed -4. **UI Testing**: ✅ Application functionality confirmed to work correctly - -#### Search Patterns for Verification -```bash -# Search for any remaining references -grep -r "CollisionRecord\|RepairRecord\|collision.*record\|repair.*record" --include="*.cs" --include="*.js" --include="*.cshtml" . -``` - -### Common Pitfalls to Avoid - -1. **Incomplete Constructor Cleanup**: Missing parameter removal and assignment cleanup -2. **Orphaned JavaScript Functions**: Function definitions that are no longer called -3. **Translation Context**: Missing context updates (e.g., "Service/Repair/Upgrade" references) -4. **Report Model Dependencies**: Cost calculations that reference removed entities -5. **Configuration Arrays**: Missing removal from user configuration lists -6. **API Documentation**: Outdated API endpoint references in documentation - -### Recovery Strategy - -If issues arise during removal: - -1. **Incremental Approach**: Remove one layer at a time (models → data access → controllers → views) -2. **Compilation Gates**: Build after each major layer removal -3. **Reference Tracking**: Maintain a list of files modified for potential rollback -4. **Dependency Mapping**: Use IDE "Find Usages" to ensure complete removal - ---- - -**Document Version**: 1.2 -**Last Updated**: August 2025 -**Analysis Coverage**: Complete frontend and user interaction layers + Entity Removal Guide + **Collision/Repair Record Removal COMPLETED** -**Completion Status**: ✅ All collision/repair record entities successfully removed from MotoVaultPro -**Build Status**: ✅ Application builds and runs successfully -**Complementary Documentation**: [MotoVaultPro Architecture Documentation](architecture.md) - ---- - -## Collision/Repair Record Removal - COMPLETED ✅ - -**Completion Date**: August 5, 2025 -**Total Files Modified**: 15+ files across models, controllers, logic, and data access layers -**Build Status**: ✅ SUCCESS - No compilation errors -**Functionality Status**: ✅ VERIFIED - Application runs correctly without collision record functionality - -### Summary of Changes Made: -1. ✅ Removed all collision record model files and directories -2. ✅ Removed data access interfaces and implementations (LiteDB + PostgreSQL) -3. ✅ Cleaned up all controller logic and case statements -4. ✅ Updated business logic to remove collision record dependencies -5. ✅ Removed collision record properties from report models -6. ✅ Updated user configuration to remove RepairRecord references -7. ✅ Cleaned up migration code and database schema references -8. ✅ Verified successful compilation and application functionality - -**This removal process can serve as a template for future entity removals in MotoVaultPro.** \ No newline at end of file diff --git a/docs/ux-architecture.md b/docs/ux-architecture.md deleted file mode 100644 index d80a7d9..0000000 --- a/docs/ux-architecture.md +++ /dev/null @@ -1,434 +0,0 @@ -# MotoVaultPro UX Design Summary - -## Executive Summary - -MotoVaultPro demonstrates a sophisticated user experience design that successfully balances feature richness with usability through intelligent workflow automation, comprehensive mobile optimization, and consistent interaction patterns. The application employs a modal-centric, tab-based architecture with extensive responsive design considerations and a well-implemented dark mode system. - -**Key UX Strengths:** -- Modal-heavy interface with consistent interaction patterns across all features -- Comprehensive mobile-first responsive design with touch-optimized interfaces -- Sophisticated reminder system with multi-dimensional urgency calculations -- Robust feedback mechanisms using SweetAlert2 for notifications and confirmations -- Intelligent automation features that reduce user cognitive load - -**Critical Areas for Improvement:** -- Accessibility compliance gaps requiring immediate attention -- Complex JavaScript architecture creating potential performance bottlenecks -- Modal state management limitations leading to potential data loss - -## Navigation & Layout - -### Architecture Overview -MotoVaultPro uses a **tabbed single-page application (SPA) architecture** with two primary contexts: - -1. **Home Dashboard Layout** (`/Views/Home/Index.cshtml`) - Vehicle overview and global settings -2. **Vehicle Management Layout** (`/Views/Vehicle/Index.cshtml`) - Detailed vehicle record management - -### Navigation Patterns - -#### Desktop Navigation -- **Horizontal tab-based navigation** with intelligent overflow management -- **User-configurable tab ordering** using CSS `order` properties -- **Dynamic content loading** via AJAX partial views for performance optimization -- **Persistent navigation state** with session storage - -#### Mobile Navigation -- **Full-screen overlay menu** replicating desktop functionality -- **Touch-optimized interface elements** with adequate target sizes (44px minimum) -- **Swipe-to-dismiss modals** with native mobile animations -- **Progressive enhancement** based on device detection - -### Layout Consistency -```html - -
    -
    -
    - -
    -
    -
    -``` - -**File References:** -- Base layout: `/Views/Shared/_Layout.cshtml` -- Navigation logic: `/wwwroot/js/shared.js` (lines 1810-1848) -- Overflow management: `checkNavBarOverflow()` function - -## User Interaction & Behavior - -### jQuery-Based Interaction Framework -The application implements a comprehensive jQuery-based system with approximately 8,000+ lines of JavaScript across 18 files, emphasizing: - -- **AJAX-driven content loading** with intelligent caching -- **Modal management system** with mobile-specific optimizations -- **Real-time form validation** with immediate visual feedback -- **Touch gesture support** including swipe-to-dismiss functionality - -### Key Interactive Components - -#### Modal Management (`/wwwroot/js/shared.js`) -```javascript -function initMobileModal(config) { - if (!isMobileDevice()) return; - - // Convert to native HTML5 inputs on mobile - if (dateInputId) { - $(dateInputId).attr('type', 'date').removeClass('datepicker'); - } - - // Initialize swipe to dismiss - initSwipeToDismiss(modalId); -} -``` - -#### Form Validation Patterns -- **Bootstrap integration** using `is-invalid` class system -- **Multi-field validation** with contextual error aggregation -- **Progressive validation** from basic to advanced field sets -- **Real-time financial input validation** supporting multiple currency formats - -#### Performance Optimizations -- **Memory management** through DOM cleanup when switching tabs -- **Event debouncing** (1-second threshold) for rapid operations -- **Lazy loading** of tab content on demand -- **Session storage** for user preferences and state preservation - -**File References:** -- Core interactions: `/wwwroot/js/shared.js` -- Vehicle management: `/wwwroot/js/vehicle.js` -- Fuel tracking: `/wwwroot/js/gasrecord.js` - -## Visual & Responsive Design - -### Design System Foundation -Built on **Bootstrap 5** with extensive customizations for mobile-first responsive design and comprehensive dark mode support. - -### Mobile-First Architecture -```css -html { - font-size: 14px; /* Base mobile size */ -} - -@media (min-width: 768px) { - html { - font-size: 16px; /* Desktop scaling */ - } -} -``` - -### Dark Mode Implementation -Sophisticated theme system using Bootstrap 5's `data-bs-theme` attribute: - -```html - -``` - -**Theme-aware components** with backdrop blur effects: -```css -html[data-bs-theme="dark"] .table-context-menu { - background-color: rgba(33, 37, 41, 0.7); - backdrop-filter: blur(10px); -} -``` - -### Mobile Modal Excellence -Full-screen mobile modals with hardware-accelerated animations: -```css -@media (max-width: 768px) { - .modal-dialog { - margin: 0; - width: 100vw; - height: 100vh; - max-width: none; - max-height: none; - } - - .modal.fade .modal-dialog { - transform: translateY(100%); - transition: transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94); - } -} -``` - -### Progressive Web App (PWA) Features -- **Complete PWA manifest** configuration -- **Theme-aware meta tags** for light/dark system preferences -- **Multiple icon sizes** for various device types -- **Standalone display mode** support - -**File References:** -- Main stylesheet: `/wwwroot/css/site.css` (1,089 lines) -- Loading animations: `/wwwroot/css/loader.css` -- PWA manifest: `/wwwroot/manifest.json` - -## Accessibility & Internationalization - -### Accessibility Assessment -**Current Score: 4/10** - Basic HTML semantics present but lacks essential accessibility features - -#### Strengths -- **Semantic HTML** with proper `
    ` usage -- **Form labels** properly associated with inputs -- **Bootstrap tab components** with basic ARIA support -- **Focus management** with custom focus indicators - -#### Critical Gaps -- **Missing skip navigation links** for keyboard users -- **Limited ARIA implementation** beyond basic tab functionality -- **No focus trapping** in modals -- **Missing alt text** for images throughout the application -- **No ARIA live regions** for dynamic content announcements - -### Internationalization Excellence -**Current Score: 7/10** - Strong server-side translation system with room for UX improvements - -#### Translation System (`/Helper/TranslationHelper.cs`) -```csharp -public string Translate(string userLanguage, string text) -{ - string translationKey = text.Replace(" ", "_"); - var translationFilePath = userLanguage == "en_US" ? - _fileHelper.GetFullFilePath($"/defaults/en_US.json") : - _fileHelper.GetFullFilePath($"/translations/{userLanguage}.json", false); - // Cached translation lookup with fallback -} -``` - -#### Features -- **500+ translation terms** with comprehensive coverage -- **Memory caching** with sliding expiration (1 hour) -- **Fallback strategy** to English when translations missing -- **Cultural formatting** for dates, numbers, and currency -- **Administrative translation management** interface - -#### Limitations -- **No client-side language switching** - requires server round-trip -- **No RTL (right-to-left) language support** -- **Missing pluralization rules** for number-dependent translations -- **No automatic browser language detection** - -**File References:** -- Translation system: `/Helper/TranslationHelper.cs` -- Language configuration: Culture-aware date/number formatting throughout controllers - -## Core User Flows & Feedback Mechanisms - -### Critical Workflow Analysis - -#### 1. Authentication Flow (`/Controllers/LoginController.cs`) -- **Multi-provider support**: Standard auth, OpenID Connect with PKCE -- **Security features**: Encrypted cookies, state validation, comprehensive logging -- **Mobile optimization**: Touch-friendly login interface with proper input types - -#### 2. Vehicle Management (`/Controllers/VehicleController.cs`) -- **Modal-based CRUD operations** with real-time validation -- **File upload handling** with temporary storage management -- **Collaborative access control** with automatic permission assignment -- **Dashboard metrics configuration** with real-time preview - -#### 3. Fuel Tracking (`/Controllers/Vehicle/GasController.cs`) -**Dual-Mode Interface:** -- **Simple Mode**: Auto-calculated costs, touch-optimized for mobile -- **Advanced Mode**: Comprehensive tracking including electric vehicle support - -```javascript -// Mobile-responsive fuel entry initialization -function initializeGasRecordMobile() { - if (typeof initMobileModal === 'function') { - initMobileModal({ - modalId: '#gasRecordModal', - dateInputId: '#gasRecordDate', - simpleModeDefault: true - }); - } -} -``` - -### Reminder System Excellence (`/Helper/ReminderHelper.cs`) - -#### Sophisticated Urgency Calculation -```csharp -public enum ReminderUrgency -{ - NotUrgent = 0, - Urgent = 1, - VeryUrgent = 2, - PastDue = 3 -} -``` - -**Multi-dimensional evaluation:** -- **Date-based urgency** with configurable thresholds -- **Mileage-based calculations** for distance-dependent maintenance -- **Combined metrics** with intelligent prioritization -- **Automatic refresh system** for recurring reminders - -### Feedback System Architecture - -#### SweetAlert2 Integration (`/wwwroot/js/shared.js`) -```javascript -function successToast(message) { - Swal.fire({ - toast: true, - position: "top-end", - showConfirmButton: false, - timer: 3000, - title: message, - timerProgressBar: true, - icon: "success", - didOpen: (toast) => { - toast.onmouseenter = Swal.stopTimer; - toast.onmouseleave = Swal.resumeTimer; - } - }); -} -``` - -#### Validation Framework -- **Client-side validation** with immediate visual feedback via Bootstrap classes -- **Server-side security** with permission checking and parameterized queries -- **Progressive enhancement** for mobile devices -- **Error categorization** with specific handling patterns - -#### Operation Response Pattern (`/Models/Shared/OperationResponse.cs`) -```csharp -public class OperationResponse -{ - public static OperationResponse Succeed(string message = "") { ... } - public static OperationResponse Failed(string message = "") { ... } - public static OperationResponse Conditional(bool result, string successMessage = "", string errorMessage = "") { ... } -} -``` - -### Workflow Strengths -1. **Intelligent automation**: Auto-odometer insertion, reminder pushback, supply requisitioning -2. **Bulk operations**: Multi-record selection with batch processing capabilities -3. **Global search**: Cross-record-type search with result highlighting -4. **Collaborative features**: Vehicle sharing with granular permission management -5. **Data integrity**: Automatic validation rules and consistency checks - -### Identified Friction Points -1. **Modal state management**: Limited caching can lead to data loss on accidental closure -2. **Mobile input challenges**: Date pickers and complex forms on smaller screens -3. **Progressive loading**: Large datasets may impact performance -4. **Error recovery**: Limited undo functionality for destructive operations - -## Opportunities for UX Optimization - -### Short-Term Improvements (High Impact, Low Effort) - -#### 1. Accessibility Quick Wins -```html - -Skip to main content - - - - - -
    -``` - -#### 2. Modal State Management -```javascript -// Implement auto-save for form data -function enableModalAutoSave(modalId, formId) { - setInterval(() => { - const formData = $(formId).serialize(); - sessionStorage.setItem(`${modalId}_autosave`, formData); - }, 5000); -} -``` - -#### 3. Real-Time Validation Enhancement -```javascript -// Move validation to input events -$('input').on('input blur', function() { - validateField(this); -}); -``` - -### Medium-Term Enhancements (Moderate Impact, Moderate Effort) - -#### 1. Client-Side Language Switching -```javascript -function switchLanguage(lang) { - document.cookie = `language=${lang}; path=/`; - // Implement partial page updates instead of full reload - updateTranslatedElements(lang); -} -``` - -#### 2. Enhanced Mobile Experience -- **Implement Progressive Web App offline capabilities** -- **Add gesture-based navigation** for mobile users -- **Optimize touch interactions** with haptic feedback where available - -#### 3. Performance Optimizations -- **Code splitting** for JavaScript modules -- **Implement virtual scrolling** for large data sets -- **Add skeleton screens** for loading states - -### Long-Term Strategic Improvements (High Impact, High Effort) - -#### 1. Modern JavaScript Architecture -```javascript -// Migrate to ES6+ modules -import { VehicleManager } from './modules/VehicleManager.js'; -import { FuelTracker } from './modules/FuelTracker.js'; - -// Implement state management -const appState = new Proxy({}, { - set(target, property, value) { - target[property] = value; - notifyObservers(property, value); - return true; - } -}); -``` - -#### 2. Advanced Analytics Integration -- **Machine learning** for maintenance predictions -- **Predictive analytics** for fuel efficiency optimization -- **Cost forecasting** based on historical data patterns - -#### 3. Enhanced Accessibility Compliance -- **Full WCAG 2.1 AA compliance** implementation -- **Screen reader optimization** with comprehensive ARIA usage -- **Keyboard navigation shortcuts** for power users -- **Voice input support** for hands-free data entry - -#### 4. Internationalization Expansion -- **RTL language support** with proper CSS and layout handling -- **Advanced pluralization** rules for complex language requirements -- **Cultural customization** beyond date/number formatting -- **Dynamic font loading** for international character sets - -## Conclusion - -MotoVaultPro represents a mature and thoughtfully designed user experience that successfully addresses the complex requirements of vehicle maintenance tracking while maintaining usability across diverse user contexts. The application's strength lies in its consistent interaction patterns, comprehensive mobile optimization, and intelligent workflow automation. - -The modal-centric architecture, while occasionally creating navigation complexity, provides a unified interaction model that users can quickly learn and apply across all application features. The sophisticated reminder system and validation frameworks demonstrate deep understanding of user needs and workflow optimization. - -However, the application would significantly benefit from addressing accessibility gaps and modernizing its JavaScript architecture. The translation system provides an excellent foundation for international expansion, though enhanced client-side capabilities would improve the user experience. - -**Overall UX Assessment: 8/10** -- **Navigation & Layout**: 8/10 - Sophisticated but occasionally complex -- **Interaction & Behavior**: 8/10 - Comprehensive but performance-sensitive -- **Visual & Responsive Design**: 9/10 - Excellent mobile-first implementation -- **Accessibility**: 4/10 - Basic compliance with significant gaps -- **Internationalization**: 7/10 - Strong foundation with UX limitations -- **User Flows & Feedback**: 9/10 - Exceptional workflow design and automation - -This UX Design Summary serves as a comprehensive reference for future development efforts, providing specific recommendations and code examples for continued enhancement of the MotoVaultPro user experience. - ---- - -**Document Version**: 1.0 -**Last Updated**: July 2025 -**Analysis Coverage**: Complete frontend and user interaction layers -**Complementary Documentation**: [MotoVaultPro Architecture Documentation](architecture.md) \ No newline at end of file diff --git a/init.sql b/init.sql deleted file mode 100644 index dc88439..0000000 --- a/init.sql +++ /dev/null @@ -1,6 +0,0 @@ -DO $$ -BEGIN - IF NOT EXISTS (SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'app') THEN - CREATE SCHEMA app; - END IF; -END $$; diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 53893ae..0000000 --- a/package-lock.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "name": "motovaultpro", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "devDependencies": { - "@playwright/test": "^1.54.1" - } - }, - "node_modules/@playwright/test": { - "version": "1.54.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.54.1.tgz", - "integrity": "sha512-FS8hQ12acieG2dYSksmLOF7BNxnVf2afRJdCuM1eMSxj6QTSE6G4InGF7oApGgDb65MX7AwMVlIkpru0yZA4Xw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright": "1.54.1" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/playwright": { - "version": "1.54.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.54.1.tgz", - "integrity": "sha512-peWpSwIBmSLi6aW2auvrUtf2DqY16YYcCMO8rTVx486jKmDTJg7UAhyrraP98GB8BoPURZP8+nxO7TSd4cPr5g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright-core": "1.54.1" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/playwright-core": { - "version": "1.54.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.54.1.tgz", - "integrity": "sha512-Nbjs2zjj0htNhzgiy5wu+3w09YetDx5pkrpI/kZotDlDUaYk0HVA5xrBVPdow4SAUIlhgKcJeJg4GRKW6xHusA==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=18" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 8ec54d8..0000000 --- a/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "devDependencies": { - "@playwright/test": "^1.54.1" - } -} diff --git a/wwwroot/.DS_Store b/wwwroot/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 button { - padding: 0; - font-size: 2rem; - } - - .motovaultpro-menu-icon { - display: inline-block; - width: 1.5em; - height: 1.5em; - } - - - .motovaultpro-mobile-nav { - background-color: var(--bs-body-bg); - height: 100vh; - width: 100%; - position: fixed; - top: 0; - left: 0; - margin: 0; - display: none; - z-index: 2000; - overflow-y:auto; - } - - .motovaultpro-mobile-nav-show { - display: block; - } - - .motovaultpro-mobile-nav > ul > li > .nav-link.active { - color: #6ea8fe; - } -} - -@media(min-width: 576px) { - .motovaultpro-mobile-nav-show { - display: none; - } - - .motovaultpro-mobile-nav { - display: none; - } - - .motovaultpro-navbar-button { - display: none; - } -} - -.dropdown-menu.show { - z-index: 1030; -} - -.table-context-menu { - z-index: 1030; - box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24); - position: absolute; -} - -.table-context-menu > li > .dropdown-item:hover { - background-color: rgba(var(--bs-primary-rgb)) !important; - color: #fff !important; -} - -html[data-bs-theme="dark"] .table-context-menu { - background-color: rgba(33, 37, 41, 0.7); - backdrop-filter: blur(10px); - -webkit-backdrop-filter: blur(10px); -} - -html[data-bs-theme="light"] .table-context-menu { - background-color: rgba(255, 255, 255, 0.7); - backdrop-filter: blur(10px); - -webkit-backdrop-filter: blur(10px); -} - -input[type="file"] { - max-width: 100%; -} - -.uploadedFileName { - max-width: 75%; -} - -.taskCard { - max-height: 20vh; - padding:0.5rem; - overflow:hidden; - border-radius: 4px; - box-shadow: 0 6px 10px rgba(0,0,0,.08), 0 0 6px rgba(0,0,0,.05); - transition: .3s transform cubic-bezier(.155,1.105,.295,1.12),.3s box-shadow,.3s -webkit-transform cubic-bezier(.155,1.105,.295,1.12); - cursor: pointer; -} -.taskCard.nodrag{ - cursor:not-allowed; -} -.taskCard-title{ - font-size:1.5rem; - font-weight:300; - max-height:10vh; -} -[data-bs-theme=dark] .taskCard { - background-color: rgba(255,255,255,0.5); -} -[data-bs-theme=light] .taskCard { - background-color: rgba(80,80,80,0.25); -} -.override-hide{ - display: none !important; -} -.reminderCalendarViewContent .datepicker, .reminderCalendarViewContent .datepicker-inline, .reminderCalendarViewContent .datepicker-days, .reminderCalendarViewContent .table-condensed { - width: 100%; - height: 100%; - table-layout: fixed; - cursor: default; -} -.reminder-exist{ - overflow:auto; - vertical-align:top; -} -.reminder-exist p{ - margin:0; -} -.reminderCalendarViewContent .datepicker table tr td.day { - cursor: default; -} -.reminderCalendarViewContent .datepicker table tr td.day:hover { - cursor: default; -} -.reminder-calendar-item{ - cursor: pointer; -} -.zero-y-padding{ - padding-top: 0rem; - padding-bottom: 0rem; -} -.vehicle-sold-banner { - color: #fff; - background-color: rgba(0, 0, 0, 0.6); - width: 100%; - text-align: center; - position: absolute; - z-index: 10; -} -.copyable{ - cursor: pointer; -} -.accordion-button.skinny { - padding: 0.438rem 0rem !important; - background-color: inherit !important; -} -.planner-indicator{ - font-size:1em; - padding:0.2em; -} -html[data-bs-theme="dark"] .btn-adaptive { - --bs-btn-color: #fff; - --bs-btn-bg: #212529; - --bs-btn-border-color: #212529; - --bs-btn-hover-color: #fff; - --bs-btn-hover-bg: #424649; - --bs-btn-hover-border-color: #373b3e; - --bs-btn-focus-shadow-rgb: 66, 70, 73; - --bs-btn-active-color: #fff; - --bs-btn-active-bg: #4d5154; - --bs-btn-active-border-color: #373b3e; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #fff; - --bs-btn-disabled-bg: #212529; - --bs-btn-disabled-border-color: #212529; -} -html[data-bs-theme="light"] .btn-adaptive { - --bs-btn-color: #000; - --bs-btn-bg: #f8f9fa; - --bs-btn-border-color: #f8f9fa; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #d3d4d5; - --bs-btn-hover-border-color: #c6c7c8; - --bs-btn-focus-shadow-rgb: 211, 212, 213; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #c6c7c8; - --bs-btn-active-border-color: #babbbc; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #000; - --bs-btn-disabled-bg: #f8f9fa; - --bs-btn-disabled-border-color: #f8f9fa; -} - -html[data-bs-theme="dark"] .api-method:hover { - background-color: #373b3e; -} - -html[data-bs-theme="light"] .api-method:hover { - background-color: rgba(0,0,0,0.1); -} - -.resizable-nav-link { - padding: 0.5rem; -} - -@media(max-width: 1400px) { - .resizable-nav-link { - padding-left: 0.35rem; - padding-right: 0.35rem; - padding-top: 0.5rem; - padding-bottom:0.5rem; - } -} - -@media(max-width: 1200px) { - .resizable-nav-link { - padding-left: 0.2rem; - padding-right: 0.2rem; - padding-top: 0.5rem; - padding-bottom: 0.5rem; - } -} - -@media(max-width: 992px) { - .resizable-nav-link { - padding-left: 0.25rem; - padding-right: 0.25rem; - padding-top: 0.5rem; - padding-bottom: 0.5rem; - } -} - -@media(max-width: 768px) { - .resizable-nav-link { - padding-left: 1rem; - padding-right: 1rem; - padding-top: 0.5rem; - padding-bottom: 0.5rem; - } -} - -.password-visible-button { - padding: 0rem; -} - -.btn-warning { - --bs-btn-color: #fff; - --bs-btn-bg: #DA112A; - --bs-btn-border-color: #DA112A; - --bs-btn-hover-color: #fff; - --bs-btn-hover-bg: #B80E23; - --bs-btn-hover-border-color: #A60C1F; - --bs-btn-focus-shadow-rgb: 218, 17, 42; -} - -.motovaultpro-logo { - min-width: 48px; - max-width: 204px; - object-fit: scale-down; - pointer-events: none; -} -.motovaultpro-logo-sticker { - height: 6rem; - width: auto; - object-fit: scale-down; - pointer-events: none; -} - -::-ms-reveal { - display: none; -} - -.motovaultpro-report-banner { - border-top: thin solid black; - text-align: center; -} - -.attachment-badge-xs { - padding-left: 0.25em; - padding-right: 0.25em; - font-size: 0.6em; - font-weight: 500; - top: 15% -} - -.motovaultpro-vehicle-logo { - height: 48px; - width: 48px; - border-radius: 50%; - object-fit: cover; - pointer-events: none; -} - - .motovaultpro-vehicle-logo.sold { - filter: grayscale(100%); - } - -.motovaultpro-uploader { - border: 1px dashed rgb(73,80,87); - border-radius: 0.375rem; - cursor:pointer; - position:relative; -} -.motovaultpro-link-uploader{ - position:absolute; - right:0; - top:0; -} - .motovaultpro-link-uploader > .btn { - border-bottom-left-radius: 0; - border-top-left-radius: 0; - border-bottom-right-radius: 0; - } - -.motovaultpro-uploader.solid { - border-style: solid; -} - -.setup-wizard-container { - position:relative; - box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24); - height:85vh; -} - -.setup-wizard-content{ - height: calc(100% - 60px); - overflow-y:auto; - overflow-x:hidden; - padding: 10px 15px; -} - -.setup-wizard-nav{ - position: absolute; - width:100%; - height: 60px; - bottom: 0; - border-top: #E6E6E6 solid 1px; -} - -html[data-bs-theme="dark"] .frosted { - background-color: rgba(33, 37, 41, 0.7); - backdrop-filter: blur(10px); - -webkit-backdrop-filter: blur(10px); -} - -html[data-bs-theme="light"] .frosted { - background-color: rgba(255, 255, 255, 0.7); - backdrop-filter: blur(10px); - -webkit-backdrop-filter: blur(10px); -} - -.motovaultpro-body-container { - padding-top: calc(48px + 2.5rem); - min-height: 100vh; -} - - -.no-top-pad { - margin-top: calc(-48px - 2.5rem); -} -.sticky-top-nav { - top: calc(48px + 2.5rem); -} - diff --git a/wwwroot/defaults/.DS_Store b/wwwroot/defaults/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0nQjKGlpF&3%dvoNjkmt|>0O|9_ou=G=1h^OTOfHWw(i&aur>8L`qi`V zs#LFb++fvoRd7vTLMh8?uQ$($POd-gXnMrM+u!AEo?XLT|L)<|wXUCRYfjt$uf7o%UbF3sJJd*2Tf!p?IPzB< Wms?ZEANUODF9uInKbLh*2~7Z#^Lx$! diff --git a/wwwroot/defaults/demo_default.zip b/wwwroot/defaults/demo_default.zip deleted file mode 100644 index f58e2a53d94083603ed7366eca0a7c63c0ff5ffe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456598 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≶%$!W28YqI$Hj^aNp(c6SE?$-A^0}rttUrWW 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

    gA^97s8VDbwN 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 Je);y}{{@A%wN?NC diff --git a/wwwroot/defaults/garage_narrow.png b/wwwroot/defaults/garage_narrow.png deleted file mode 100644 index 335e83e1cc6b7a113630cac696ff4c570310bcdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102384 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 b7U3Q$rJIXRYQ$&!g@2Uf)MaZvT73Ioh0+>+ diff --git a/wwwroot/defaults/motovaultpro.png b/wwwroot/defaults/motovaultpro.png deleted file mode 100644 index d56c76dce4f66861420bc04c52190fdbd5f1eacc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1113198 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%0A_p|bX=C%tuLk**0m>&&yt(q&7_X-k%tc?%b4 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

    f-1I7ihUk>NiEYETdL=MrlJ-P}`|J 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

    !%2u;lLbcelG3=y1=! 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

    2AAmz2Xx$^tbQ!1hbNK?K2n_V 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

    DObQC(x!5^lNp2 zZ|8h;PdNH2)zzMy?Ia;vm)_(}S-p;PS`KG9OPS}}i}8$OpEB_X63%G@>_D&Rp==5i zSig^H=vW76Q`pXL`M22aQ`+>YxM|Uc+BwZ}*RA7>O>@rW&p0i;7T5VhJ1ZJ;IlRGU zIPkG$;bZJC{ppYt}M z4NeQ!>Ub~tQ~EdEOpo!8#XEUkDCXb}F@ydRN7-F|`{wER zf_Qu6ez<78+zV`6#s!dlWuaf>pq(D`Amz#866H;VZ}EGaYDck9s*8OW6a($y5`i`i z_%-UQ%7H={_$9W-@9clct%Q83(pY*xB40qUJ zWMJap&K7>u=gr!gd7{j<+tX*x=#zfs#aBWIy;1Myv^j7_dE5}#)idx~|8MQepf*%4 z?3u{6IwJ1+B0Nlbx0{lgPSE#QU->~l*WpxQte3!V0MI21Jbt4WYe`;Q!6{*E2Y&f| z06RK`#<`s2(bibl=S`aElk#dmutdKuGIJSPIW2!h2`^79GJHE}@<10d2{YP$s+UZ& z4f_RO%s=zO#O)^9m2X4{2su_ZUm#j_+0vhj=kgexG|JrOWg5t1^4MSTW#Ro3;i zkY2jw-G0TCiOOm5ydHT4g1(yDNO2=6R<~o2Xs}sGM)9h)>Dnbl`kiWSrK|c2wG5QDm_LTSuvzmKSZT*Lx)l%qDXsz++q! zX}3wzTKgnz$sN`E4yGJB@FILFe=e=ymG%luyI`8abK4$tx!rAsIs^vkG8Sd)T^?_2 z_EU0^R;NlU*_0F4`vSD?hjI-0nSgO}+FUqq7PK&7C+Zht0B$p9;;Zefw2P=W=0r`o zxBzAsFl~O#%wv+_TYGmpzI9}Nq_yoQ!{l~Y=uX=$boT3}%CcXYw+r8OfSw&*k|ozi zo@*}QB**TW)coL7LM&7&^`%U0&cb7*&~ojZa^!OFAqsK%otO?r=!U&isb7y11-$ z6X_oNC4#0e1E@lSR5iJ=FPFne$j0~I{e5u1B+(r${ZiO}U0_AuQn|FW$csg=oVOGPmjExjmBS{MLSCZGa9Ab*3ciKW_p6Y}&R16KFR%+GmLU@`e&&j`D-4~AmaD#_i06fz3@(V9^Z@lq_PT$L?K*8I@#lbO;14zewQJ}Oa zSt`}0E`6}Sq_i2r$Mr%%uKv@vT)TEn{cT=|%^)?&(J!U8p3TQ&F1qm;O*k+98**V6 zKKXZDfMfmIcYROcw`q>MkIQj~3$N1GaYL!lFFMS4xqLA`(I=m-T;5H~R`fB}%QurP*(S>TeP~Df)q!8Q%K^pW z20*STGgWm&av$HKa|0(EIRm993Yk|9n-6IjH^VqgXS@+j!QnD((^%&lrS0BkG$C05(P7 z;SGS^4yplo^N9A8Pl=&yShuy{)(8?C0voiumiCkduGU2Q+gcH~{Ubh*3t!oA&n z_ub#U{QUEx-L~n*2#uWm`YwP`l1jeK=f$uo7W+Im&-H&~BhHHi?MU0yQC90ss_325 zJ+2UE!=Q&%9Ot;h-XPdkh9Fk|WSTjB9Zk1YRMBn(6gp$Q#6nE1&UTo2IXtqCOM+5 z+?Z6G7IdqvnTBCndvLnpru->-JzOnf^sib7k6aYHNgDyIMporfTdND~)x4qXOiB_kukA_tcz?5q?13qpl|!lMf3S)^s~;V>T$0+abFC+=l)JBHwT9` z!x9g0jGy7MJ>>L*3g;U!j8{wcc~Cs}Lnj}mK}Ywe_d`zYX}a&+4^i9Nk?_R&wojP*5yHB6_dtT25U(+YPa64Sj z)ufyafE^Z1z6~M5S#Mc?o&=JX(^+s`zdq=iyi%8HZJ}c8wCKmDKn&h_P)DwH{g3+z z+G>^|$^_r4Z`%^-+3n1HNLeM4P4oB(lL}sh#Q zEE9`PCR$6APiV9-lM`3~?UEfxP^X4Z+u#JeKNYKG>f=DI*yFgpN$ePyUB^BtkA5)c zNsqa_LpgiPEi(0%8qt+MO%YT_#rELudayl#e3Qp6QeNmU@i?M-rRVE6K4?qS4almG z-D-f|AjO_?IcO`Mn1XVwzHg$38LJ!+xnUx4vzfFPZKzhNf#m_*~6`q(38}upKm4xuEtbe*D*5j z$dOOl;X%FKpbV*jyL^_R^;yj0mf)~y!;JNUeGF~Yc?F#M0IzCaWsrE`{FRFK21dzU z{tFNE=z20y>jiALU;C0h1&)A z9Nb>h+y1_#(_RvBy$o=+(2|n-F3QYjN^>8EX01=^13R=1`}9Q8X5I4>Jo>~1p6bT< zq(Q^^0aFRk$AlZIHlnGjOLnF0I>R1n%NyaF2R#)$J&!Fw6*R^ZFWNT8bPKw4sWxOImVohW!}>e z*8+xNmMJlVBT-tCp?K-_|(fas0{ypFx1Fif`^I1`C zZl|!c4)@4j@Bc}iSDnJ4g;+qmTM&yKjCt#+D(?t=t!-9?77R~Gw}w>}c# zdSQZUS)zVDZshsFh|_e$G@Kh{pd9flM7^lUdBD&0i-o2Iq8}n$CM!{g(owE6^A2Ad zu)O##>bOp(NG~);kSStb;FfTP4_e|MPUdGA;=s{H43AH~s=7m*lzcjc~M|q9i|Bu~bI$HxK%^?4mDJg5kVC$bC|V zj|~doT~Rd?eB?m?eA&d#bRAb_lm|P=V~O)O8BYw0-_oZ%q`BQ>Si>Wy_@(%g z-dnsmShv$Ye>{A(WWK569P)VqIodQ=eIAzE)IMy>ZU5$UtlY@LAXggWee6l5h)@Yb;BRA#(fUeYIJ&IoJ5mJ_g6 zPsG)8j3~4)!W!kb3xc6_O>YEHMw~YSB2w!j%G#yX9v!UBReW?JR+ zpBpHJ7jl-(wn8Ov(*_Z@0C?o*;>C-)1@KJw#+9r3gx`44((<2<%jP8uI@rdc|6{uL zPyd2Lf9QuB4s2dqSFW>`c3%9Gm*GlySkyWXzyBezbVM9I_33@PA11rxnTHpc{XUHJ zZCUXR8wibDPP3n3bJ+RoeBT^ed8ud`+t$%IsQkUizr=ezy|KOdy%DYpFI*hYyr@pT zQqpd?cn+0e2_wr?-DWt;+wybV`S#Ux!#SR55vFd*Yw^h=-8VQKXZ*~xC?johYAgZA zbO~?bGHu|GA_Gij9Q0}9IO@Xv(hT_B@w@)5 z(SZ9A&qK`B8=H=A>uqEQ`o&4niXZfnU2Gr+!t5B>;CwYS%3UY=Wg#@!L0RautG02;;p2%J zr%p_~y$Rqen!sfHG6ndJ-N2i4*XJ0f#MaeKYy_+zPWKyY+$LivYaSgLeTu^X9YNbzbtR zEBUyvxeavF(%m#pzXET3`W@t9@qa__)gWx0Ptju$?i(q<+AZPqFttomi+{sx>%-S| zY}`#3Jgv-gZQ1i1=vzN7yEg(n#&crb(giP{WDl*kX`}$kP2rcETl=@wYtMZsK%cZt zzacz@J?oe>>pACp12Xs9qx`1-_6e(DT$k3nt$IpMa13YsHr}Vp-lt@m zDuZ#Re3#F8zQN%5luwz4@xB}aOu-#y8hWvA50lT^iFVjr-Jm}#-DSFj=j?Y%uNjy8 z7B_DWw0TqX?xyWe1L)WXaLi%$yZA?%V^ngkXji1u9JlCwhsNYNb+(2#++O@l!(k7| zQv-HP%9-xgnVuIkmdi9+S)5P$CNRK(vxL{{1>oc|eeiRfFy(XE=nzQDFea6GJ1zTD z`A(an2X32>{;W&#Ef-;EWO%|k4VczBA3y3!6Le_0P7C~ahG8C=7Wl1e;j*mo$~cD2 zX{P5q$G7!YB`Xxnt1q3(5Z7omO^7@-V6Fz=ug3s(-z?XJv;A7Gr3r3cbma-0Cj&?V z9ryvudjWh(Kw8dYugPg+9pnvxa{3YS8>lZ}Nf_l-m^?9BZ6}$&i4Hy!qCpq3BMHh2 zBe7G`*$iM)fUx0=9pw>z<{9>_vSNc7K48<$2-9GJ8?MgZGmc^Kojz6mDY&UL< z;yoWc+l%%O({c4bUi_!G|D)%dyS9O9%$0dAbAR%_MzD+nXy`_LJAVGPWL&QUPQf)j z`^K{^&Gm!MH+<`BYiN{|$B9vfBD9m%+0L9EWvl%J_A==z8DOd5vf&h=0ADBbB+Z)G z>LG{mqc9bph*nI07VUX={6$`slzr%(j3kGD2e5qrqy;&}N-yCqc zB5gsQjN8|9Iz*YmH#y7P_J`g81GmVIKiEmmH%#{1{*AnCoaMr|9(o;$kn>Hm#D{*R z%{QEV({y}Oe~PZt_DXY8-ur>ebqAfHCJWWxZYqH5hqIh<+d#XT@Bu4zu?Wts;a&U|k*@53ld)~m~Af2w@8kpeR_ z{%j%WRyP1zx(JaA(B^L&cj3U>madf+3j3CAL#>gA}OPY2Fl05Gh1IKGLG z?ALV-5Zv*?e-rHWFuBuO4?Wn`Udplw{UsPq-ni0-V<3vSP6AJzIvpp1$VB~>Yl*{7 zek*GwvBYYWXPYP|m)QO=88uIK7I7`FJb&_AvNQi22EQG!NXu^JggHH5nc*BRFNZ8K zWTU;sBLFG`n*qD}cT_J0w9NvUWoXMozBd5~+j*e0uAI&!6dJKPmnOPy?}jJeZD@)o z^nlHI#CK!|UUcnt8v&Nxy!PVzQH>}| zH3riS8IpY4(hoXPNp9orLwX*n6Uv)+!?9W0>J-n>B(Ru$fMq_=j|Ge96XugSdC?Do zWtigOd~ZhV>cst?d+zDZpFba;1MFq4I-8@h*K}m#>OVj1!sFCl=w+LAxi+B_`lSBE ze@a&+eb6H?ZVN5_brbOxe%pBNGmMKoZc9$HKUE&*jrMh9Ka|rp+3KRzZBJt+&@Q$! zm}T-C-E-dU3g_9W?BAaBZPf5Eo`u{&`O(Qd{ zX*FY#+N2q&n=Do>KEOZs=Pv+1;>b*rg{nvZ?|u)b!#zBtjeL}QDUMa{l%oCJn7E3P8v5X>Cv6yftb2k@-vgv!7EJ z`#|sK0v5p^bdhW8!Blq5bBYZ=e47$G?91*MI%DGLC*MkL7>h z9oaXf)*lvs6vop=y!ej~bGTnSqQ9tf%Vy>5<;K2_N&7+=o8qG!^^((9h)t!-lTBoL zV43k?vcCy){RJ=VNV`i@4;u?_eCkC1)p;~WCjC&^kf7-+&S}DO#25ek@|Vcs{`LVtF)gg zHuqQIquhAWj-$DJ#QO+1dnm^cV>SD?hkt}kuUY0b<1g~W@}8g2I=_zAfjt=+{~`wf zaggK=MjgDJa4$faj*U+JX{j=)!z-SAPgV|24fwP<&}L;QS03-M=nwR*+#bcv^fOp7|7jw(fF@Q%ppn<+^d`rB_;>W`HxjZ^fit(&~gMXG-9AtPfnQ^r( zAFS>|Ja_)tPe-^<5KdcOIXY7ZB6Qm*45TyZzsn}5*;E*j_?&9=1^Hw;4A-*RxFA9aj2;Ov*SsiW$h zHmDa*WGMJxURt5_iFR<|#(%l!DSf=Wgz`wLR@2H-~euXC=)aK ziSGaa7xB>SCEC!RIi>s`|M4I734m|D`KCSv@MHOT%W~pZ#O#fMJxvW?`*pn{;b8Bp za=_3oZqS2%QgF91J@79vq+RWQRe!0I=qnB0#^C7Ae*J@U~-weY-7oz)rrx|hteHasW2K9b)WyKC*X zzpz%+JxH1x#gluG$2dJYCthpU&xy|%UgHyc7!qS6j*n|($#eJs0K=LD7N!L zI9?2As`162=>kr8FQ?7tF;QgG|EsO^k@8QUfoZdHd=a4aUT$n0SI{_5h%16?zq2Lz zUVX(?fyAYJ=38Yg0Je`;q_x@Rc2QFEp^7Pg@FBO6zjIrCmT-~-H%Z*oHQHdAXd6YV z#Q0zzb$J$x*0gWu{*o!61J>Xi`qj27gO{HK{KxmmSc#qlQzLF$5lNPDw^v-CX>~a(8qXQF8)h@rH&7QM*5mhwyt2I^5fh>4LFa5 ziDvI2EYmC6*w}Z>!HbhN=irqa$4#WeEo4I5@`xSjXotpg@B@oB(a%WM14%7rKd8e( zn|z|9O!Mo)-wyX22lKcs(we5KY@TP}mllQeR(RY;03&IKd4o2)fi3#Q^z&#B6wY_T zwb6Vfg?4g06$Co7J<*rSTYQOWU5l7;SsnI~G3A1hXMs#5*B1>bKA0%Z)04oR{BjR) z5rHIO8Q&41oYA@%X(^A|yR}K9mL|qxURJU|>t)V6lk#|t-_b{oe$6tMa92>~pXc$J zVJYOjjhK~=9r^N%^M3n`=^Mrvv%j^BDYik`aLppNH05fb|nR zQjPNz?hC@K?}8u!GJUQ`dovDE5mx7D*6}H5=1JwL>fr-`Q&I=S8a(G^hY;qgnJZ3= z1W0-&br$qE$ixAIZ(eMisLRX`je(YaR(7BOZ?tKPWj(0NCO!~fqdW6Z$5-JTOpI(Z zPWp~1HAYj=m7$5!0T)MJ{hu~+EU@C_JDQ_gn|eIxQJ*@rsYm})hvB1sn(J@d=wEJI z{5@{y+NVvw^7UeZZ2DzfSfJ-IBJY4e)9puYFp^;StK0;?ch!wtPcHiFK|l#Xwte0R z21e%wH^~7tEGpLnz)ZLv?-_fnZrho27{GV8t8caK;w-W)v)Wt8og;jQ!D?5&Enr=C&!DDUn2{-e|4&G|~l zR-cRh%QMQg7aL13Dj9A2UHQrnTkS2)maWEDntB6nV~&#U zC35y-d0+MtcBqrsyWas;W4XN~%lajMrU6L%cw9CO}SJd9Xi+vCQd-JCk z9N0s@=EH>_dg=u_7bN8o{_>~9t8J*EtsgG7CRoqd>SJNCf0c-ra&r(p!0W%Q3$N0L zFVhmF4fU67S3s%{fzSBUXSgWMNxbmP@4N%PmP-t3d2%FPTvo*N$G#e2wY=BB7Yuzs zwzE%l99r!yZSUBc4+64?r71I})|b9hdQUkp$`=Bwcq6OVUAmGR(03?okZhuin+Ft; z7+kfl#6ddh#w5~G28WNmB!3Tg1jg7UJp3de?*iaufdBF@|5C>IZA&m;F{ri``OU^R zPv3mYQ$-vgeJt<$Xzw4u#(JPs^0!ZW*CDAkG(QZ^yU-j_=_-~Ec2xY41zW5+&=4EIdJF4{LLx}vOHS%!8&5=Gm%f(E;zY^~ zOYkFICEEF8gJoGgHfhM^>(NEn9&McLv7P#s9%uqK zHtOOdT$nO)F8>}~=G&`RU#6=Kb?ouHMm!4uFGgk~@g^_H5cIADKQX z-82!z#j~&%8RZe-@-uqq>TYJj=5&dlyQ1|IE(`v6Df-xJ#|VQq*JJ}2X8-^|07*na zRHG*G=HT$jI-5h{_;ES}DZRVJaEeWo)hp-mLp?tt*yB42!%mW433yw+0su%jxadFi zy;SF$(uUaDO*Z9(%zZ$8Zqz+U5Dr_k&ocN(lXXj%;iEdT;PE0>I(3)}k2$!AA06`W z6v0`$qMjpVF335^{{8QN|MYMF_NOB(r)YSnfOm?N7B2_r%f-J!VjO^-x%gLxdF@+a z0=ker#hp0^oQDMRpUL5WblaS<=Nj6)7BhLr^&kJJJ62;^efN$7bD}a!Ni{V;5^v@U zFS?PlcK|4DR8;v2Kz&iBbhC}c-aJQ1^Ha#3zifAX{wdi0XdCmz@F+Gbx-wp38u3J$ zFXes&h+RIUWdE_3jJacUMZca>R;XC%@UX)wiM)u&^G{qns*i>DOsYJEL3_<-8Pj!^ebAr%6CXEO+Df~A_)vbzZu%)c zXg}3{TiSE7PrV)zKvQ)m2c-i~(hhDv);LXfIAfdA59=KXhF6Kd33_V2d_?#{Qy%GE z$VCrx+bzaSS?0z>T7(J17~33rd5}k+mrl5bv^Fo}ru^ga|A>#aKp$}n|I$a)53cGf zs2-2Jg=jA3LTT~(J?R?f=|Be>rzvZ`nAwSt)Z7a5H zC1^%%A)k7!XZ;y39eHen%oph>GhU$CqpP&j+$n9eL0Fc*SC4!gKJlv?tPS6N_ubPU z{_y*!fBn;+LjPein-6L(pK_@>r?2L`EiYW4HFy^Redf2n{e5|_$lLNuE?oTc^1tRg z-~W$u$DZAb@2&4!CtsC=AmIUYQIy|5cT1p|Ks$^2?_jWpfCnt&s+N)Ir(1#mv+29I;tFIY*cLzQ7ci2Yk>+8u{hPwr0Hb zn8)}5R~F?gkIia@rFAsY&1+hcg}k#V+5&IXLwyeq%_xm{BRrOSa<*sM!cqEWOxgZI z5YZRqxE})PxRfyCg+D6yun_sn9=d4*m+f&3X%F!<1~spJj&dPUE~>+k>v>` zn;~>Z`6IqZ!1Y`G*3am&KfxRMDbt4dD%|{xd}z7ofH%JF-S5EH#jPx=r1=n_)|Nlj zmPRrIooK2}aR#3$`i1$)mBN$#iFIOXA4XEdA;UV88)fT#t?)MoVqb=~)(_aPeC>Ch zs(o;z^agnKzg*1Kgn#89?Krnv7?VfTXuo|Go(!{I0>4Va%|*tsoDUqqWqSEWx%Ap- zE?hq9qrM?c%;_UsIIW$n?vGrZ7#{q@)734kBUuW)>p6_%a#n8CiyvG(auFF5 z{q)B&Nvl8Wpw3%VBOF;?n|crsW$u;pT}b1&;+w*NE_Itr=N&8I`f$-^rEf_S7r_}e*ALEJ(DT8c#>?IM-#-2C|NPIVfB*M?pZjRkxmT`o>Kws1dHeM1Uze8) za-cB1_z&MbH1dg(J(*khJXY&?;&N^Bt@*`xD%da7v=Bq-4l<_ z++WVv0j=~|&JjD^)I)o8e{@9dBWd&(9hCK(wX+_`m3iG{e4wEm*N2%e(93r;kG34; z*`iaPwmBx;7i{r+GXkFFbnAaNO!yyXar<2gLPq$59V= zPuO$mxu?yy%4+>!nQMFU-V>NQF^3DE9$|zzkw;i88*Dpb#NDeL7sf4_4uIap^A?{t zeX)KdZ-by+tP_JQ1DiPgH)Xu=92Y<3}`UpRK;4974x0NN`bLRSbjZS2Tg)%} zZkE%l=e}BHjRss#zyz~>wW~*}F7MdVcDLBx(*Z2U(Ze}#*Nm$y4>`T0e-RgXBR;li zwn@6kt4wfy>eCtwwvyzL?o6(JZBlQPIV%6i-S=`=i;H85Uw{2geHq~Y`Op7TeiCrm zxSg>FT5S0GS0BpPi1<0lAL=24_Eo$mc4r0e(4#jVDze$Gu;O2RTCCvRfbWPJqL=t` z0C4}OzHBS?3=Me!gl&jz+DZN>Tam4v>~2qIrJv^Q9$p!dPMA43c==SiQol7JhqPsr zI;6FJG@tD){+sm0`j`B=2yES0$X^TS?LXAY_~DmP;vDpIZX^40^pW+-dBnKfD_5WL ztn*@85_Ny3SDKv5BmBsimG+mCJ05&8=BVE_wmVzh_xz4-``zX?VLF`wBQ2Myt)BnJ z2Bh(v7#F(bZurs8=q9VlScZ5V(4|8cB?TpXkzYGp0o#cnE0qKpB9Vh^oxbD+PT;RUf)Lc$g{|s#m^UNa~vwlIJBIL3NA1l z^l#s^hdit+ZLZhN;neEI74=V1s}ra^F>k&u^zlv|GPGlErot?ba=bG~-MGwlNz}<> zKdQgOT_$={zSEU|Cpt7&Wm#IUNr*Pme4qI){`ar!-rPwhEFivwl1{fLJ4q@d99`n+_d}l^49?$&HJ)Nh>_RY)-iJ=ECha#z$Rv?p@GgYz2o96-U}) zCB5>j^Dc(1)P7lgO!4N&%hPb$fb^zJvY)5lc^^qoeOXFdgC=wMt@W)WKQ#Jg>@uHt z`;c|$Ef0AzqElCf`m5aVL&?<@{VO_Ko0bb^=KPRsYe5+w?M0^-|LT>mmuFeaIwN(P zYo@ML`cJd1sF}wZWfJ;m-`O4B{_FUMo<) zT7a+gb>dTXmvRVi<;&gWO_)0&nEU3`M^*L?n+r3p)emjLyfsZ4wypH$^uLNLw&6GW zYpf z>o%ADGjkf@3~zNe>k*4Bi@%M3&%QO!A`N(N{+B{Md-A2vdE}dAP3x)eIEXxvKEf?$ zyfVROoIK`{R@feobfbK4eR%UJwXXwdB=7>B<`V{YNac46ir?$U@YjAO{=iFd-<-tX zCYMP{8Sm_0g3LsHF~0@URgpsg`}(R)m}E9n*0?5qJI((>SF!;n`Rmw~n?7xaCwmxo z4YVhJEwA~44YgF-&Fi>XK`LC>oAB%1Q9@3k(?!||dyrY>7X15Z9TB#+w=yK5w^g%0 zJVm>m()dZlIeuB%p7`zFla!?@Yhhczn^t2NeO$?(_7#ZX=e-yHB)C**IzH_QfQ?a# zvZ#12v$zF?s))u3dqiIKOdas3{OHRWo};wHCi`Sr#k*Vqr z;nALG<306Xd{6g8+hjYct))G@=*Q;RR+;`x-8l4koEM-$r*&vEU#>@a;I{CQc2vHV zzbE(Bwr9+ddKU*--y`hLI;>~Ea$UN6KAFdPN2$0fhbKLz{syVG1B)>f z-Vt{bh&i;Vnv=G?Ef&L-Q#koaL+KTOFaIQErC>)Mmg8jkNjl&3nr`tVi# zS>!#Qd*IK+AkOXBnt59vT&&7?FqvkdK37tIwrNYs8Qt2>(>f%^UY@VEbbY}ci@=#S z*^;Q7I4|2rw)lPyxaaiKI2$*|NzGq)3DGuf(#D@c&R#u+PhXDOUibR3^LH5E-!m{8 z==Zq1D~t{n@S2y6n#qmPY(w-`qD~I|%+tY-K-cgnOI~w*6@MnbhYa<_yXe5MOZn2= zE7xarumB1}hu=S9Q%mA|n-O1u)1SI&4;Q!gg%N$^ePsDEcI&>TebSj9wdryr>&4)5 zc%+UhbJ@QiRdJXO+w+jC{)9({BYw6$*krp!r5-+kyCyzS=B#s4aCrwTYW`9_5`j^h z*zasV>a;~}19T`uo+EmX(D*eNXnAA)bXL-3)dmh3Yo95dHQSo!$Bgd^9suo^(Pw_i zp_gjxco|h$Y42AIwq(91V;fB(bxrLFr<^KHp^Nu1+E|FH#FjJY)TvNOu>$&R|u>O>x!YTmO!a({D+%(FIp zp}#ExU)t)n`0a5!=8SWD^5U^K>Go^_uU(h4afiE)%{S1_t*)2y_aHp}?|K}|dwfUn z%k#Y(90bn>U6s>Q00bva_EBWrNQR65h&x*zH|APWq|^R2#Zrq6JMv*q#v<)_$xWpk z*KSa47Y|?D__jOz>x)=)O7GqOBfe#t`eLSOV+YO+igEXV06G)6=<_VIj6?aPeGPeR z5A4R?d)pah)~^6;=rDHLr7d$DZwQ()qCHuhH0sq3?Sft!FU+I?7wM?SBpvw{UF6v- zYv+irH-XEeA0ysJ!|Qxn4Ac(n;$vO?!0K2l^Y1;9@~hl%NOy~DWbGx}oSZ(;=42jg z?;k>BnbbKTvL7iAxIPJ!re~8h4cF!_>5&!X$)6vS6;AH=;Tzv_01gfqcksXY)vu_Q z@9-~kC3W!Y6zb)U|F3@aO}+aM-KX*n5svh{Fo}FVbrNB*Y&SIar|#VTQFr9aTUO-6{mhn}DDzAC6v@E;}+~%J_&oQjWGmuRq2z>&r61OG6%QmsY&>wasgP zB2ASyU34geK0w@RPMp$333OfW*dTs=Y-aV+yi{XSxt zuIu|brtV>%i?S$heMize5AvY59cHwr`5J#)Uyxt@n)U#ch2?#L@_Kn35B9@I7ux~2 zaipAaz(&co!cLNPbNR$u&v@azyxPAWp7Z(*y|SVXe26|l2aKn3TsMJ@k}}0l?$xR| zb7^9pagiUo*glcZa%{66EwD%<-#zjym-JPB{{j5;Dbt&_J9aR<$${nld+ZVMl2kCc7fR@yDu#B=`j zfMRx|ZT1^${pA$A!lsv$^z25rFQn?>wP}>sO=q#`eR=!z59PP5*&Na~HLlZ*EbWRi zfb}*r*#1j?#GAO-{`0~-jbP(w`&-X1v5Rp=RuS1YL6hv6FA{dj+H#b>BjP4d?F*gF z@L8eGJ@dFAAR%!HN9y(e3cL7{L|}e!v2JL~4DZuCj91%5o7di~FFda`@67x<(vka3 zw0p!8;kH}r!%G_phc=cYZ!TwBz$2Hmg=_dqHvHq=rJkJ3)O0Q_29J*ufAh^Z?NRUV z*9RinxyWjEzkmO}-2HD)4M@YB!CSJeFFcPeW#6rvU#q=+b)v1yu9NuIYxf@Ph~6Bl zTW#*?R0r#$es~udyDf8<-+3y^0j7)y-z&pY52wN=HD4s}$vBJe%^ew*>-V-P#_Af` zk-uz6zNC!^!NC zK)m2T$GJ~k-T|;&`0kUBDQx&iVZ)2-EpCziNSO&eFCZg6^@_)y3=_APN4{7ty?c*! z6TfAXn;PThg#ZHGNc{NehfVnrsXTenjrl8oBEwGEJ6l}*fB5Rd)5jk^){7P7MjeRB zI;e99@S2lxk2dyT5x-Z?aVXQ{CX4!rsqGj0jBoD0l-tCzxfFNgG4Uvy_6>W-O*pK9DU*G;;z5?%t;q1MK6g5Vk6_Sn zzzp3ZQ=U^ErR(0YB`)vFudIBYeyV{wI_#5M{WklU`^ynq?N3?ObJyL^U30Pi+_rwv zw~j#WXOAB1YwhQ2FJYfLiB%q_M?AjviCc_~as1JrHKT3nhN5l0j6AnI&1N^_JAWqYa3ispdv z$byFrDHs2gxr?DKJrU{>lf11wk|YhQj`y$u{a|G+AJs6vpn(SS!bv=-OC^4-8*-UrXTF3c8Ia`x!3Mn_QyV) z;Xl>7@wb0J(vPNVzmGi9hDXabo>5PZ?LGUD`qZIp;n9v>In#|=NBNn)C-XJKeB}R; zcj+JL|9cLf`Q+a-tgxcl4iJs7@qon%nEDpIn{a5D+_~r$2Cs`cWjaQ~mHWip_Au2i zJ-Dd_zI6cv)8)mjov!*3e#g10AQsc&EVuL(pZ;h`#kmT)be_ zlDPT49DdrP9klx!?kokL3q*ChIdb4NuZwnR66GUcEqg6ee{B2sRDifO$GYZs#MGC6 z*BWZ%)Xn6?I+DBUXA`ZyP1TDm`lb!sX{T>fFWb~L&(uuI=4QbwOF1x>QL^R-HpP2% zhg$wBuQYJ2SDs1KqOvqp7+X;j^rc^XmOtV`dFu{o8=Lmez!Zw3wva@;x$s_Ffg8c) z%Q-DHr|E7#m(?|uIVxahvNMJ99{3gcrG48P@Y^wA43tspTnN#pitVMx&AK?0qh?>3 z5uso|5wt}sP3949u8r3B^0#k%x!GcS88$UxPnEZz_QX~Eg^i)VgX?|G$e3O#Sk@nG zDJIQxTP>Hj{FhNO&2goz3!b@#p9-tvuZ*vnPl7F1JIbN-+j0lEG+yEPP<{^Z_fNn3 z{qLXt=Rg1RJYQYBhoQ_XUzcAF_`19q{v8Gsh4nXokyYYE?4pi~g*`batzb7a)?=P& z!EuM5CAqHW45L`dS(WpdxPYEz-oz$qq!%yPW zJJ6*pO_l){g5(i3P(&IKYo1r{`>FiWBq^p!ylgh?O*@3 z-WmR}_{a*_(;3p+n7v`t<_6*#?R~^jnQx`gG^N#ox+Jgcw0QAp% zMSP-igrC@%w&=n6F%}$}k*v4c^Zc#0E~d|Y{CTwBrp1E-4+3tJc8uFLvW=;Gf!UKF z9l5+cx-YOL0*{K5ZLw%-r4c;Sy~aAWbHUHWKXH3k9w!y{8tv`bw0QvF0?ej`&59Q- zJwbaNhlS6@&I^C!z$ZM)1>Wl%BY5P!ri`xIcxgl0yNHf9P>#vE2MFM@AGsd+DH9Lk zHPfwCtjOI^7(;UI+P*~6USrVfGtyumW$iv~qZl!oKy+!wEoD2D~us6GFKi=`-jBUB?dhxW~Y%h3vbZ7MbTxfG_qF*sa#OyiZ zW*cb-_GOs3ocH=dhGm{!U7qNFq?_SkD4wx1${LliK|6SS-7@Qk>nJc{!yyK#&M)N* zkBg@t%2xuudjIv)-~R32KK*lf0^nc%*Z+EYTORTMobC{O{Z;wN!1AjBAIehzKYT3j zf2nv*>&l06@Uben!yn?;KJCKZ4NrtIPb_q8!EzqGg9)>Ux!sDNF~$%WXY9B~Qa$QU zFPyKZROf(Vj=orbE(=>9dBCLcTn_B$IWl&3MBI#C_EgJFnwy3GL+F1geBo=GQx`6HZL8cqS?;~-+DSi&x-G~4 zlXZiW-;0ANXNxz>%JoHm#@w&24kTtb$Fsq z%6yn>N!TI20?Hr0?@po(KmOQW$_Je`OHVG$yfT(Q(pb;Ac4m0AJL5)mboq%-DbzKj z9L{p+hkag9axstpKa?kizAZ2I`@I&((FBV4r3dcU; z*o!?deULuq#@cl(w~2W8jBnN@F2do+xPeY5TZ$~x;;ax(2+eYT-Yx%y&W zo&e%Op{s4l9&vE0VjRpdd)dj}$%zwUu-Eo?&*6UagqU9p zsbkgltMx$xLL)snb@nsf=y=Ycp)>BK(7p2EIgK=(`#+Qa|HqZ0-VRHOgefcJm_t}> zD(9S%3OOtxRxf;F;uzR?S2-Cj%W!A;fdZL-_VVkb zC}Bt}zjL>$lC_}bo@n!XV2to5^5^D!w={S<40$32q`rN5~p7PwrVVSY$>Zw-?)d^6x*_OEn$x6gDl znd3S}8Q2AtRjGF{a6m&B_LkM{HBVMvHc3i5p}S!VTb;k zY7a3li#Z|p3!_(ezb+1+)%y#V~m=ga~jZCgTVGv+R4!CSUm|+TmMo_G>`xOh6dU-G5(n4QNb^tg*!>S2H5(*CTM* z;QYp5onDxLk{N0*f1yL94x(Uq>GyRkW0U`=wtB!#cKRuh;?)Q@Y-|7*m7t$nq{BL;F|4~kKOtO>`Yi0wSn!lH}SB$@mDDBI{sn1Al zYpCVT{8dl=r69uYpTkV9i%>&1)6Edpt^iZgw(u=VI;g+bJT2K})fN;VhSZQczYIQh zGt12B(;hAC-aS!o;BV{}bkKqkUHQL6?<0PJL5f_m>&| z2BdKq9li$JILe9>`1*0ugYYi!KvRssfpx>a*r*E4oa-3Fs0ECzw(=drlSSOUn&~`Q z!`-UU)$S8zo$RidE81M1ECt-ZWHX=U1PwKcE!@C z8Ew+N8jO24Iagy#dFKp>E>wqu_D83RH##IOQPB^ZB1_lm$%b-u)v8kxW!ehl2+K-( zSIQPLA)Q$x_VTEov&+jqw z0^6mmsMwYz?X*0&iitS)=LEhP2s4MprQ$)&i6Q>O_6?Ivk#_VJu-0n7Wf+M_&e2;P zv}^FD4f_I4ZLBoxi%J5DUW5C#4`Y4yKcK+eqw>0G262z@3U_V*H+YeZQ>?M_3F_sY z4Lecm(L!SY+o;YkKx4fnbM7Ro-5(GP>IS{n9p!0#=tgPX9tO#olkK(ioQS7fBvy>6 zqh*P1SDfR}Xm`0l+}A?W$~_gM^K1$U@(GG|a(<&2RXVk7A_oa8of?)M9Mr*OCg`O!+xw=YwonW|5sjM+F{wR|DFl6q1A@@t`m30~_Wv2y}$ zYor7oR!mTvUEEFurA#s`9BhO&p-az*KAVb=xv=%6p#MtOGjTq5#rk}xH{jo8-`7A@ z$W6V2zt`ryY<&0sF}YCxdt&ZvUN5m#l~39pwq6MO&lB*@R*)((cj6)i?8?UtN<*V> zPiH*0)#Wv|N1y|4%$Wh`-qV-uHE>n5&i=q%Hio8snP9S_WFN%TI7tOW*-tCq4UM?G zxbAlnuCv|-89}|Myzcf_)ar(DTvaEF&dLLm%w)C4dohFcBx$;|q>h;G+$MCKH=a$! zZrIFVPYJyfKb{Y?Y&l{6(QA{SaJ9#?g;Vx0?sDM9FhUWZ%%WHwGpfF9mZ8m!$4tdG zd@bA;vQWvF>~X6yoL-IDsYBDEA$6#0E`?6m&uO<1Z%f(^?(6t=fT{egkB-N=+_4`6 zi)TU94udxn_J*bv&`^YSqOnS7qzA=3c-!j4^vMl4`7-?aB8cIKX z#Y`2VTniH)DVVMdhE~wuhqj@yg-Azw?wQ*M`ywZ%OJz-YG({J0Pi4U_JC(DvJbXbG?e2?|IFi%-#l*zRDI{xXevME0q)`_~wtrCi0s17{1fNx9&BusiW|Zzn>x1F7<2Rk5<*x zN|sdQoYlHBiyArh^js;@_jm9Q+>FU}ysp)KS@Ch}!M@A=O%X_LsTf29WulQEn7bH< zM<^9q&5C46Hvb$=$m^b)P6^DJen`#0@_a8L?H0v+k^1+jxbJQt%D1#=bDXmhwoTyPevnsvKuHSS!(eLk(|& zgY_AesZS4Y-yBXCrWk6JPyId`<V?f z{=OinkosnqFWR9rC~EIu-j?6UL#}1b4PyCM{xEU>o$#QvF|!M{vlh7U#Ws@ZOjPKG z&&Bs5swP9v(`mmi?|n!SLdXK|Q+kZ$dMF)C)~hp)Op_xA$3)9HIyrkT)OgBE>%N?b zfRC%jTC>p$ws2u(SWymB(>=7(`*xYND{@E~h3$49jP5_0=44+*{gb3DcZ;Tm)K;yh zmgy=5_@QUx&#SQ7ywpMfY`lB+s4rAnqTb~3uSo&)J@PP1TEye+KdIJ_>A8Q$#Yt|i z|5S(BWZbY?+UsybmYB-@H|6Be+FxA}EF86lO(!H5hALvNnDa3HHz|NS_GFNgnc^iD zXhFtul-m5k<(uEi$HRLqwoz4WM`;tiXR3bGP{a3u;vn^_ z;Pk_$bakv$&~snM_VHJN^M0AaKimWN7iH$(!+vymZ7$_bqumvVwuqsgd`L7Se$hTM zZ$GkW_`^nDR?q;g6o-Ak7Q@BSYl4|J>nLkGy0Kl?gjP@Dcu1!Q+V86 zhq&G0Re3A$G{=gy(F&W~$c)KnekE(Ghl~L*AZ4vkG3dxU=;#n|jt%PJI_dQO2OP5> z%)@Ae#Odgd1{{Q6kL$@U`!J%EWa29eYt}9=yX>o7_uERu_+q}Y{aXwh z`4POcbm3D(#)YlR@H+?Mi^FOr4X;AXinGA>vkU#^P91NW^vk?^kCsp_ zd`g4W_Yd(?+Z%x8jKU%&Rlx@O`}c7Cxk1k;g;$e^a|_>2f{tFC;y7GAyH#+uId zuQ$2us1dW_X4MXdA3h?nBQ6cX)(2-$Bpg4oW841v* zmPTqT_}$x_zO|o_-g*RM5t*s8EI;(%+qwRxb=?MKLAS%2{%xBua$$z!fx%T*>^ zV~`Fu!?zWG3s3(xjs_o=!5I@WRXU)2y9l}Zm_gOE$U;-R(opHU#51B98}Pb@su`@( zaP|$*?!oA(Z<(RQYfS7Z((y2{tmkrz*1aI>U)9rxl^s2-mhTl1>!d~WbPo444?a2H3=;3*MY^k;uDYrrn>wM}%6i~Dvp@BoN>NG2O0;0R$Gli_p= zeeX(^#}hXu6E)Pi6rCa81c8_KjLuAeHJM$*4bQrdDd$wp>c$c3WNtL*9QHk5d%no{ zBXR)TowRkE2zZ3AS8t-si8p3v_K*alg(9R857FR9bxg1>#O7XBJ5POvXtyZ-GYs`} zkn;TYv72s>6`bgjEIUys)_Zte-&+LFcoA>8|9fGjmOIuyuC3QxAU{TXQ9o#9rcJdT zWG#2-v?q;_O^V1jSNlE=9&|gDI2dGBxGX{Q?)l&`_Ic-cOts!)c2aO;ibNr`2gO&LnUAO*IXx> zA3BOI*$BBa<6<-=@x|qcuH~y+VU~N5?G=G3KYi{W^93%S4`~5)2MYbxo6{y9W-T`h z&60OD+I#Iw`f_|H*c5(ANkyGM-vOqd+|*hD4JM>4x7<6hEQX!J4^eEovEff<6FvD( zV~#bP;m;^%)EP)fMmDL1jCKzuW)!qqV-E;Fl*1= z0`C6j7V!pXeQ4Vm16x$qh!j(jR$G4mx%e07$^K5zeW9S0EMV`ld&YJ@xwyXZ_y;~Z zS&WPDJcoHRu2o%$ADGeyaEQz1vGaTA>hD{58C-^n_Ni#nXHcBZ(B2JBBV;9hn@zH= z8~U91Ch!0Vk;fS)1jgA=65W&;C7wy0YV7Fy=w%@8I{zEerBF)l6hL1a$o8Kb@|1m7 z&f3qlT1U#GPiMQCo7gjlJp2VZ_X(bv)l7T)1bZ`+F&oHoT@T^i#o9_T`^E|{E=F!d zNV$$}QbY?dz*N*H5@i`&AApgn?NM(^jAL`%D*&~rceo90t%A zJzgr9Vz;;;HMJFG=n1z4I^46@q<D+IREbV6C*qQ42?qv1B5B3fJ}5&AY)r_hYFcZG>}|pd5AgIujJ|+J znKoo(83AV&MQ28cI({-wd2T2X6b#gJ1--)QIzQ&qY%wR=`$slBBxhko?%rGK%On_f zuml~>c|D2aJWBvy3M&=!oa(tHE#PWd*I5(Vkca|7Bx#@&i2P}&mG*BzfunL5FFLS< z=Y-fEnByQ*A+YLVd(B(w;Ce9L$y~Y~JlhMciJE|WxT0N<8pCXg9Cl%1HFycKw)X1e`|pU<1j^0j{V z7(Ro@Zl2H2e(}047;cM5>VJrH&*kyt%|gidf`G0FA(*9oB-gGC;m0}~$vSyz#y$}! zdJw(Yb%zvW0m`@%iX<)lv|r$&3E}Ufr_l3Zkn65RnX#ey{$2|sQ2%noVj;rQ%y!J5 zWJP`B|IB3fm~(ij3b}iDvcYD8f9v;Uk5k)ylKxYZ{4v>W>(VYdXI7>$H6;xH?=$Od zPCoR0Wob7^d%E|sW@{W#%+zHT_D`qm`M^FHHgp$o+-=fm`i@a>eBP;>Wj7q>m3_7<&gF zJ77RD^acuX54(stu%wJ9lAbjYFMB|42)VN_Skng2sK|T(?!l)s+QQikkDLehf!{CL zPBThZBGZuWWK*=!Dj z-pfRyMyiGX@kXk@pFduG%vXo2sV~1oY_cb;`7teyaR-}EiU9db%IBD*Lz3ATc=-Un z<7{?c0{)p?N@5D*;ymMn!vFZIKODR%O`P)D8HAMwEI0QTYmat8qC6vbTuYCOvRSKXa7mc*ednQ<;) zf8v-Il^Ef9(95?ywfs2)fbzMs%Mk!b^eoFFqUTwD!q4p<+7nj+i=(UZpHEJ(wTon>GOGxAAgkl=v7PtL_e;XSJt;kG|XA=)3V3)T^S#9DVf_8?vMRBJ3%$6@TEGuB3s zKx+Qh?OOqzCCAWD^+JJx=Yq+ZDQn_Ff*@U>3Gmbz<#&A}raj@s^qz?mMXKg%s8WK~ zZz^oPoT{e8%R2TsL{<+(-&}n^$`o7fYN$lCJxFqI?V-<|UrG+_)=GZ4>Wdl)C2Mdx zjwCz=B-EsSNRA0T>ix8q&U$YW$%bfL-8@Hz1}?LgCz*^F>rJA0_8%xMe=Ugh`=Zam zNddlAOFZWLjWu_RVv_r@dBXF3F|m|4eXCP*N8%$c`Ro>ekT|8auqo~plrcZN>_dI^ z-hc25>yiHJ1!eO`!qq+wCSX~h0$3jI7MUMf>am^ScX$ss-8Aw+|ENo*m& zfqL`RS*6p&=1>yz9b)|j7WvP&?Pjf%cMUFzPK_jFya8T-IR}2=(dPcg^3X8Fai_BV zTX!Fm5(-5v z3d>`~=KUALv4A zsGL3MZ|H{&$*0JvJ)7yI=Je*~PnpF{`+<+Csq&Feuayd8^s)hE%wwy}x4UGQ2r)9JQwfYsL$%F%lG;DpcAi^^wn5(D-p5=Zpz z>cz*7K}3I6`N@h;rkRZoSskua%U(c#E#COR`W=QfhLt{Pzk6Q-c|tou=)um3(NQGo zggA;iJ3(kLvk|=V(+r}9{ld4+Z{W$xQs zv`6qI9ZX&cx@1m_r*u{B++{L__boJE{ifdWN?iICBZjfl=<$av8DJcU#k2dB2#gjr z$(J}KCFdaLjIh3Zas$ctUDN@$FjIqjk>5AyJo1h9a?T5$y(<(=GoW=u{f$?}|97Gk zTi*8-K@bQEA6}D6Adp?DQC2PN2GyRP0k2{%u|;Q#oV#w75)%7k=i`y+&N8!Lir)9L z%YOMmPBpp-Z~QFxr!a6JiW8u#ZLo6 zJhn_+EYIHFzVdpTUn>fHZTDHr`**nuy;rs4>Qt2&efj@B72|XfKQ?LP5=2B@cf6M9 z3pA4p#AKr;hIa*?nyeIfU(eIIM^Xpc{fmF#pdtueLr25Q(r`93^Cr&SyM1iqY%AXq zS>(O0722AF;smZe{=pZ}wPQ4ROcWVW0TC|s^QvCoJJ0ruLcfNEC7%YU@GbRsSzB)2 zgbvbsZC*F)GWE|E?5k|JkxAx}YGc^R8a%U{4@RC1(3_7h9^^ zdD#$eOqr_to4|=oyh;5|l)d*%mx)jYhl}_#IZp8Y`wKI3E-rT+MVGsjQ+@4G`0|Gb zLX1X*6%3V8&$Kk!r@xZ>PxY-LTl<9Yv>7(_bF~9Owk+Nd4M8-RbhS{w{kr z&9y&P?;QOy{r@b0;+n!3^`=$yJX-pU%N*C%-d)X5!n1-{zH^pr3PCSmINsoRWcFLKQwP=zETkhlB{j>rwHv0cNJf*%8*rNVi=%Mwh3(bL+U3Qv);;XyrsjGgTY#iqC<|Z zR33y@@eq5T@3THP&#z@aaI+29$W=Kg9P(Rn#&EgHVdZzgfT{mbvg6nh#9u01DxPyc z4x2O|8z9lRU9%}?&G^IdAJKn9i9gh*bIKUnc9LRSIipxz7m#g(JX|iBM*S%qATH6F zB&)l3|2~|`3m|`@qNq3tPpBLAa%6-p5R7E}XyD&w==*#w)tBc|2MZGpF5mLF*c|%? zr{^wKt*LDM7JUzonf!G`nc1>C^&}z5uM+aWx`DsHJc_tvrdqtWWx7 z@Igd;-6z#d1+rtdxVK2{qEL9| zk%{0HUFEBQb^${HdFYp`xV_ zx=8V>Fy2g(RTyIK09T2OnU44^%dDMtipjz6w|`cOzB*%gR-`^XSQl7e=zpudrNpi` zw#$SQtm;9YKJlP{l1Xp>IN$YA1n#4p;=OB=iJ0gm zHdCv;r%*n?#i1;C=14_Jpj}F&te0Yk^FzRY^5Dtj2+i>R0(g!GZ9^|#G}B6C zy}Ok#wK+GI+O3zYu7Ri=#sA0)%@;{bjeAY`Of&7udeCM#6H1L~R_dwZWbb{HZU0lv zrMNR`;W^OHW?n3VOUWt@H)xNX=r(5jpfHUnWzIf?S zs62X0YOfAdjXbD*FRj}0|obPTJ9y8JjzuSz_0upZJ0#QrWbMi_+n?cDEZVw)N<9?}=AnKFtwmQ10F=W8vV z-9H8at88nHblScLPv=%eYlqq+wu)WpbhL*#h(FgpkM~Fms~eBV=dVy$-yW&}iM{wh zYmvP3govDyoP(z;8yj>;QS|V{%hV&&))mP9+#)t<6TV;t@^x7b#Fol|Mijvq&`HKJzOhDuDpSPqpI-6f5vf&Y)7I@ z6u=vQiox`0{>SX_xs^MB8 z19_rRo>P97cH4mYPl-`wZtM+81ut6l8)r!z2qCk&oGofGw6!mipNKaAcr%H13t{{t zW`Vnp>Z`Z@5&lS*B;COkQYvXxm)-m&BOOBlHp}x{#G0G{e$SwIIF>c4j2oyS+xnusaNmOG@|uHnmDB zjruHoJ@uw|y$|DnajNm8U#bDIqtTo?nV7=S@O{8LGan|H%u13kMS9)5y}kGF&Iu20 zwVbrBmV-Wn#eu&Ed{f|4nKwZjL(8+H&rz0un!ORF&AU&MrL|2s52X8BRddkd zqtbf0-5y%Z%k`msq9Rz!tsIsk@ikA~reUbvm#6OM1iv8g%IgQ-2TeKG5amf z-Ydx1ax(?-7X(6n$^3Eyp{&y$S6oqBt634wG=1zw0cA+>aw;&pbs1#3Y6YQ60|q&X z_Uvw7^#eVgCDtR>`wt1`mV%A&?0InBy3q6Y1?)?Uhg>p_904pOOqy?4YZ| zw2y`mxN|*hEm?I|9m!Z0z-RVC@3i z4T*=MdZ-w_-c5P|#d#ghAbZ^t5ft!8Jk8g!t=TW;g@XX3ZQkC|KMGE|JSltJfSY`W zJZ)=25!Eph%_U>UdZJ1%*EFiP>46Irm8q~@X6j4x+9`R^da^C#(v!KEh%@OAuYE0= zL9&VaV9@?gS@RlbHbmmlJg3{ig(tH4jzYDCBM&br0zA00+VW`|-t308qKyXL`ix%{ zJ;DF3B)+Ds+6ZX)tQgEso1QH8mb>w$XajVU( zT}L+%sKPh6`M7sR;pW09c*b1Z$VmtNOgFl{xcnd~AC@tEL2UmEqF;ntcbA+|)-U^y zVw|}oA<%@0>xS%O=@qLFdM;4ihrQjM`=TpNA_fCL$pY+5vF9CU(}@ZCY2eNXH}djiUGZC$5$PM6!#{brJQ_>ky>HdNP# zO*my4#@&+z`Uex?4$4((&yn|3;abjC-1uaT`Of6Xu^%IWZmKFW_1G`V!2K86Rrct% z`UuJD(MWbMhdsLBKfSRy4Dv3 z5T^=_{FZlE@txPEny@ZiE=2owF)RqrOJPbsmKxNWh*GW0VvHb5TU(tPu~tATqdD;q zu#G23g76}+z@to8JFhl6a?5X!BX|LQ*l>0}Fr$>Uk7b&ydcNj*E2+8Jo;~T&i4Y)VpR{Mm_z&r-0+x z`NNXFw1bm5$7~Z>gR&j|P6pC;es7d>+MO8QlQ3DCTGDE3J$atHqemjf+);SKgDHr# z?Evx4GaU?kfh_ymWK~!3@#N_6$feLHk?xsg(8fQb_G5&PxQtfA#a<}!I21+Q!y*p* zJ2HAL(@)>W11>8B1@FHsAtDAEF?H9h?xM*DzoMV2HJD2UzuU5X zkL*A6Gt;3(*6v3#HgEe;bw`cpuXF0^^SO%y=t|Lb&#hn%sD7HZ=ce2=6c=a;{hG!q zs@b2T>&x$;YASqQ7{2G*olgJh`AHreg=)kh++t@|Q?XRJ_mG=@<1cALniOS44HGSPY7s&Drm@2wzp$ zBX&mNDeg-~)ObD9^F)3thmMVN-uD^y?SsfnU6}`=$89F|KgSeDUOR9dNUFkPmA{Nz z&OC~ieRCUS`LWo)yzcO(K^#DI=Y12=_uE;l)aWh$ z3Wj5ioNX=O1x>l|`B}C5lQ*r-Fa7%_AFvxltH(XXbKn;~dq@b8S%g5#U!1TC(Ji>^IMz5iCeKE4vw`A+MS z$pF?;Z+=7}?ixWeanvO~{&1H#aA!MPgBcyUPB2E5Fls0F-7GrG^`rmPR+;hQ-l=>i za{MLL_{D!p{Bc*!9FzlM&-nES=Lu>55~qkpqF!IB_+Jj5-lcetveS98>ofe}9cXlF z%vb(odui_$&qh}GH$z&fD?;i$SN>+MLCBXPA&C(p8WVGDg7Em(nv=eI7~Htt$IN}1 z0{Ulsvd=fiqX?&t1vUgiPoqM1O=Z2#Yo*|jHW5DVuE#F<;p8j3_E{EfV*rQjG{$YQ z>I_FF&&;LR3C$G_f4+YW)|t?b>J|=c%=S-cJ7TON8l*U+l1}6=5NE|Jf6XZeKDAkR zG~l_T!xY`D4y(N1J}{8Fm!q(X-oY93$za4Gq>HJ$>-m>o)&re8c*O?2Y3!dFZ%;$v z>y#{r!)7bCyEB;CzWs(ozODpyT)7FI>GiP1#?-i7tN87I>5OzK=9FB30)$ef??)i3 zMB((6Zc%t~W(L&=l26Vygvxb`l(@&t?j`?ithY84V2aK3`lI}S=^_{U>dMdB3x%HRKw+sW=T2yOm3Q++FLHD*7oEX>-on@53U z%O4=BG!pv92Dx=B)@d*^m6h&ANXUBQQ>z!2+B~x(syVrn@7yT`>Rijt|8i&`H@6oc zKy|#c&A_j%gUBnFef$D5t0Htj-dRi78vL{dj%nZ*NzhPchpgVX#n{#lE41vNx4s-? z=O2Z&kD8pOoxMG+oem7Xeg@f!Ij} zQ;@9nq{4Wx#E6LANjyswHHMZ@P8b>n7CMh$ybWf?jdHX4h?bGkJmiDCMnypk`YGM^ zMKL%!82EUB&BgVJspEqK`})_xqU2>>IRGF|vjk{6&b=M7ns5UL>OK~e0wD=IcJ2vC z2M^~8?=%D?hft_sto!Fz&2)($u)Cw>-c^S_0so>nay z{%R;c>?$X%Jg*<2^gPxbONV4?mVux;wsHN4YBm-1U6CvPQcj)tRJTY3(Zp>g{Hqq^ zC@!c&mY9XA@}BO67n$r;Q0oba^Otu}pw^S0$fEU4X^ycdvpPOp<(+YcUy;ZVA z1eWWs;=V=(;8agX3P7tPb|{+4`LT>lhtNQ!Q{9zF(`H_aCZ?#ea4(hCuD3~LCJrp# zKD|VTFYW9bomc54BHbi3wRUcgvNv%V476Rch5zNOId=H!QD=9h3|L#zK9VaiXh%O8CK@kb2qS8oxmF!ELvb((0+VVBLw{u!O@G zfp;@mz4BM4N|g+1;3}6-xla_=U(U0c+pX5#0OwB5&tn2~%xBzE_zqLy#Gi-OevN9K zgVCYn70FUuuIpSj1&lp^r}P$ktF6h8lRPf{HckBMOee;~QmdgpmkY<|G|H9HwU=Z# zSgbTX_juv^W%#$W-cxUg!Cu_+GQm&)OwuzK+JRr z7Ysjqu|76$5`>*}5|_tgJvkBrAiY5%kYj(@^%{b|=h`#Z75$9HmCbji z8tS7i>+So3Uf`#LM#xk5?*<8X5wimqTFx_Z-wQkqmgAmu6&>OdmjGYof}HWjVs1z* zE*j{~npzp7U#pdX1fzXDOBO55>VzaUbBY)M7li1D|0?p#u&qy#roLrNMuigluRaXq zuv%-dySDXlmrV0*EZ>T9q3opRfM(`K**2=zu}0B~J$Z5%*8f!(+mqc^!L|F%n?NAG`fV!(X4$a1by&YGy+*yLzVqqdDhqy>UA zi7E{xW{P^}rTWzD#gO!^*I03|Lqj%+AKWHxN9_|^4!1UZ9@I7$1d$%dnC8V)Cn9VuXZ_)bPgT&V9hU|nsjMkElLkj;x*dxe$w#vD zt~mpOn?Jt!yl@IQTuFrRvGws+V8CB{Z)FQ(P`}>>u$kk${1O35tQ{oj9oSbDYwJUr4v7TR;-bB` zI;H-C-SF^g&D2C(jETkl4!t3y?AOc_6%=VRcgT4;6IvaW z?Y+w%bsSvh(@{>Au5;_--X&e=;i7bO8xhGvOi}J3jC2r`Kh@@4bwoWsQtze8)L@na zPt?I16CR>r@{qLph&PDYYz%MH#uuNy@k2F}Y(&e7;4#wP=RdnBXST(J@KWO{W9|nw zk$b!=(`N2$8Zd;S&8b&F>Jsy)rBk~5I}ToO_^bNjW>ZhiKaDpAKV?Kff(pe52@gi= z9v+7_A3yMl{^`DOC36W#qcgP0t5fGaD-Dp)l=gf75pl-cT+&HPVVC1^;(^(CD1~sG zfZ0Gb$irg{$YVix)N7FRAL=y?LOvk>YL>jQn?;C=ywxyyqsBlt?OvDOsn?D!;aBQ4nYg%;ZvMJY zb9_;fz zj#e@|4I8u+q_ZkBsR{zEvXh~frfYwGI65rmmdu;;8bz7Z=HH^U@@azSZDgf z=mk?tSusmYKC?UELJ=%hHh{M+we;tVIPz;w$1);ym3RZ53fcCJW!RrFYuG>5J2?NsH-CuH=h zWtf)h<+v9DCTLOtUr7mpHMrF6jo^8XZDUhnF*fIM4g8|uoN<%VYrk#@U+UGhV)^v_ zD$YUwe^ASAj_qklN=8BKLN?qmM9s~Q$ktjjDy`v~QJzME#-D9vn!gAZ5TBjT%U)~z)kA9}gKu6dwS#1->9PLVIC>;0p+xg63Om50vxjy(EYW%H==}&U zFaFf`ByWyhf8x%p6q0ZYc6$I~(D=mHU;@BizO=D1v?>p?8*M{vanDNk2=-ggKYlVg zgYF9Rk|Ys2>$me*Prg$Lv(ko%QsbJC&EJv5RNY3zKEbn3gC1}ycYH}S-*`<%W7SVU zlxVBR7;pi7$XTv@W?MU<_8HN6)fz&vvYC_ zTA=uA{iC{e2X&^t&!S%FzV@kb=viPObTu=;Q%WL)qm@)y?ebEXZo>E1-qX^^_g6f- z1lCx#O^+_EMo&DoGdJNX(?01jEQ7}`_D%0hK?jk6w&NBG25ammEJTMjW6063$v4)x zdKWiWa+X9Jf4aQIkOt#`TZah{mu#creIvtBv26|R^M%Bb0-5n6*J}2Wc^WeKVqh~H zs2I+=GV!^X*)o?evLmn3t?9V}++u+n)#!5&Gs@w5U<68kFj;Cpiqu8W7+_0ba|Qr$ z!-lmQ1YVxW%Ag(R$)5FTUk=hszriWHh0mb@j*by-r`MNkR?>e*odV|kB|mr3E*2lQ z4Q%cXcb`JY6=gjKUu8d-L43aI9Oac&{peU@@jPdb72ujkD!)WeCn)st33ed z0+)`^@d_iTe8$vxwqAeu^7fwzf5~e$y4qsU6F~pCdD>&Z7`FPpboc{8HnS6V_u-ARpXw%)9ewMv5O^Iw9JO2!u-vasKnD8qr~`TSiKKLR|!)nkaw zosCu?ZJ&IG;OnLG?F`(VtSawj5*_3`TF1jBCUq1S`kOkHwt>^}*aGn-f|8Wsq}FoO{JWYgi&bmH+;W`xc@wwl773BJoQ}a-1&eNRbz0m z9lz^|l16F=RMUR?&i=AAobzy-lrSaFwL=30fC;;Ij~@LClawx*oJvIH6fxswy1yVN zHa9Ms^VGrFymCzerFq>p@fIhl-0$lkc?+vM{-!Mt&+E+ae3}r9OGhZMe?G}@P>VRa z#ph*fFqoNn(P2kv>GYz_*2I}TMrB_57^vA`4Uj(;Jk0=L?T{$w$OL41|9w*X(;1uI zZb&j0pG1920cbR8bD9HhgS!KpAEyp5khJRUFF71MX4ny$F7qtzu>}OQ(jIPVEiU-` zMU4Qn9=d-8N=l7L(dn>>i>|tk-ccmTTYRQ3aa?s>?50VWHw$r_ruFfQ1y>FG%E&Uj z$_AleE2E}PXuTS3OeHBoD*INJkS+U8QkE=}C1e|sC^7ckkZtT^ ziLoy;7-Ji=7&DCV^Zny@{yu-4b6&6K+|PYI*ZscMEE?dtLSs`w2L<&40&%H@f`h$? zkk-eOhE9)LoXXVJO!(JU7lJ>87;%z;jl_!nq!)<>8AW*}Cw|{$hIyb$Mb-;epquTz z&bL?3yi=9(rhkuVR@<@&ubrHBRNsr6Lqn<+7K%1STK=h4OLT?$_|V^c3sk#@>oKRv zL;NxvavsgL5r^y!T^2?I=^H&~nz|Drz#$Dij}IOTll^V4Pk)&^1>CCzA%IQ?0_mYz zV={YHoJO)v*D*6i=UL#pJ)gs_&}TBFYOcTw!On-XV``iEgep%)UzX!c6R>tATWb(> z3v=0R^>Q1eu%AGGc^LMTAK;yi?AUBP`wF1sX8XXmGtEnRQ z6r``fnrzb%#C++bz;Dh68(uw#`f^f8aLKqflu1tQF6er$32T0Qpw* zN0Vm{LmQXZ}^m@ z{V83KUJ%A5;|=4RFu?_{O0eOoqdG z+pIMykpZyfh(aN!qe~_!q1j{NKj?bkYh8a`jr~V_PAj(W-$MMFI0ZGg183)oUa&NU z+}bvF@(A&4gAjF_>QnY>nmj5|rn;-^aF-KcXQ(6xMHfIG6r|1MyW`7M=F`ASe*YjF zr%d1Ql>NcDd)r{jFE=eORHW0$$;*6036v0i06bn!GOiV!y}n{%G-C!NGck#>KlrdJ zE^sQG(n|2|{C>GP6(zs3u4%bz6>{z#@?RyzLDsZp_TR}&Ukf>vd*uRux)U34Nn&wbE5>PbE_wbMw3&SK&5r$85*ut!`@!zRtNUgtxE~hEi?sFv z=!Hk`X#4`b`qOpl&8^Ih;)=;`;f?DZGIN{eX6^pC(xdJ!;3+W2ZHUxkU0)>=r{%5T z@yvJVR-1QHrHGT$fLHs~h=;xU<1PpKv!fG2M|(!189?wzr#mDNKl?MenK9Q8q9BWk zg#fE%D>ZdGRGQKn?SAkb0IZG=dHJ(s4Nv~udUY~#bpPnYXl$lMh-s*VXX4TDE49C= z+7olzX8^|)FrU7)wdy}pgN2qO!){FjvKmiiI;Q%IqzQg<xMD&32I|!V41GTjaQ%3EvYi+IVZLY-+M0e-r?9W21_r{@GoB)|2s-qM>cbbWdQ1D{-NI6Ve>-t0U#jYb;J@Ud2@9hWAV zq09`^A!QW?uzaZGG3rpUIAWHK+7w=FgJAr_U)pMrGf6)BGX%|KlZmi$W>SykPUPma zZ7pb&*`GV#N!Q!^sHmQun-5~HND#Y{{mKNua*zbT6hO!pp{2C*Y6G1U_zPvAZmH1A zPEWq%Vq+UcKnkC^@*TL^m+t=YSnAclps^kiE9`5tkIjjMYl$wh^-WRHVN&~=xJ_N5 z&yjtoXP;FLy2iN(A<1jpRKlP~s{Q8pSjOUoMx9O>jFET0DjJFrq+g%?tuGd?UDEpo z9$Yun{;sKGaMRs+?|$nQk7Y40`q!)!zO~Gq;_!DY{7JB2`d?CNP~IaOzA-y`(T|f% zP_b0;kCUMa=_BRY9Pi3z+yAt^&N}{4`njQr@{4Sh`PSrRQ)CJywd6u$1gwSt<6uF}O;`@j zobXT%AWmToSM)y$MCyjGzZtlQU}5r(COFf_I|M?U@<01nn^~gd9K|A^>nM2$e~gtK zS+YWa_1;xR%To0P)V~tNH#H;6;U*2Dc7sV<<_B+38D;+GYsrlYUlU*dSVA;loFn(uc*gumlEw_2($TkYo1kxWA1Ma@)>dJUJ#TzjI?_Ev)CT(bGY~ z2s*X8;$~=eyeGi)U#Bb@bY~+gTM_LX`<%Vcr|K6jE_wUL3vky3p5WP6MwFX^QlW%G zz@n*;;6R2|#awFWwS0RDCf36RXuA4P^QgNUq~d~?XyaOwl#jD*em@YiQI}O{XdrXA zS+%U4emP?V+~yj!q&!n<<%WS({>pUJ_wLJl?IY#tULwKMv%j^4I-S>vJjsmIOKiR5 zb@AG_EBFfrjSL}nvzcGCzRVk+@d8DmN5&-lW%BHPEa|<%;Z&MpyUL?u;Es!8{U-}j zAf&BL0}h%_@XoLux=efR`I%m`{U|qEh!$-$PLOp?<_n!|2(Sp^bXhb@^|zx;A9-pt z(5xO!qctG})8<|2%U)I+YK!In)UWQJ0Jn27J6G0#0hzQo=|dB*Vvl1(Z>adK-L~1Z z6U>}P^L>fg$z#w=U0XlDyss@ZYBIrlgM}&j{SOq6k+k!u33g}9>vj7r2&#MSXz%#q z{+*bpinPE+wut=>SSV4=5X7J9mW5E~mQt*jc!i zt05KpTW}ICmP)ky?1nAPBm0@CBR9Cs4nh)xAmJB}`x-kv-Jy9_dw&fwKjB_!>DY-y zwO3vt`752bZl_q!*&vP!+bM@);fNw(oHD(iK{8xYMxDIXIR0}x?1w>ZgH`%SIlX}IQ5-Df>?G-czgk6pVEyBmC2C3iR(jaI`tGtZKjZxb2ZM@7 z;6kgekGtv}Bd{eB2h*7O)dFpcqAqY*x9kcoceRGlg{D%H?-CP_O`%Qhu8CpO$moHH z#BVBUsjfoPUxXbvY`zj{?RFjX5yh(bBE^KxdKJV*Bi`WD^ zCc<5kn1jH*sBIu>-1(2Xjen&Gu%5pmh4I+~FnAqV8)|=_vPmkKk{!i)9auoqCjTC& zts;k;J7P2fp2e$rEg!K6&9sSTNr(5}q0D<>BzL80_@Ngv<0liw*SWbBUpCgq{h`^# zR-Abe(Uq;l=0}g_B8%>DPX2t{opv&TSk2Bp_MQK4C?_1tE(dibEomlaLGjyf$8y6~ z!cv(W8t-Tkfg{Sa>mz}Mkup3{nDa8MYC{&PPfX78@?r^R@--apVW)-Lc`Uj`;j4|slIupKznuuhrl_)o~r%Bw!Q;O`5&7V>&j<=HnhU}iP9Em zar4A;E@`Q#Gse}4#>5?kf5#sZD)dw$e~WaTS9gH5_C_a@{oj`;$fl0R)=tmIiv^?8 zynbVf$USCOk$njfQ^rJIP3rdmWRzBQxALwO?aCE$avD|`$i_; zmr3dutwvA%!%-86mJeQ`GrOu-S$6bgru%9F{NP3a?gc`2%>0!C?=6wV$=IW)@+%yR zGotcoUb9x)1yFPWfLu$93Gw{v0IkE1_1GDIQ3SV& zV`bE?WV-Og<;YM6@%CmOoFy9d-n|AUQDY$l5!Yod`jjb<>Gv=cgME=W;`t~@>fV; zg$8h(jtbPpr?)a{<#%S(8bQ&|%uio3_FXI{pvF8E@JUwMQFZ;o^_T@!`(+#p>~}MJ zNP2@7@qKr&sQA`mnom|PHs{82Q|#(JZ=Ard$r#hrzy;GhEn0(hOISY(?{@LRnk2RF z{dvwEY0=jq%{$y0Ia@Qlut2b2%jN zd&IZ^pu1gQ!%?S~tGFv+UEOC@Rt5^deBZA0x2G2E*BR@k95+@M3bgcP!QdEbX z>DwfV1D#)Yn8Wu3#eI{1&DeLK1b#yUM@Rve^Ml8EnWD8VblrSg+g~CAtjdNa>x|$y zrZTBu{Wf%Su-lr!Oxl^=EXXy)iig;0?!m(5^%D5vi!jmIz=W1-NVovg4VeSZX8=pj zymQL^`mycf@x-_^=E(G?(sGepcJZLK`c-UqYvuESPoD3!2B5(2A?&|vn=sWvXJ6a2erX3a$I+3fsKZL48ZHP#N@}eNvPdsLMdp^b(Y2^%A@S-!JqZV{vDWt%nG<9b%WQd}9U!}LGb z67|Q?V?~nunfR)N*1?cAlxMBbTry5Tds7swS1(!u_E7PMZ(NMCl^}Ddn^!_s0@-8*OKe`Y?1;cyyE5v!TAbsRk8Hh8*w-hB~gpuC=GLX=dku^r4OHgLtgkq%AfVs@92v1ZG)5;0Dw7FvfXUr%C`g^HxkEc`NXk`e%v zv8UF(5qh1Kn`T635E}XI41W)n0f(LHiS$qZy-K6}no=G|}+IO0}3lwR}_+Ug@>e+&)7G&{Dx_#B9N8 z)%6|F4YuM+D42!=~G8CD;ytkR~+6%BLZr%I~m*Vfmr}O zI7jVk;pO-y@|R-299w{6tnBm?U*rS41?|6= zk2`5C-gzGu_sf9Du;g2Y|h%s;5 zuS@;zzpZDdzI?qfryre?$=`0RZ6pet60zvKFU&u%X6YCV%y_z*Ftt_Ws7`%ccB*T< zM$yk<7o9+0fk)a0Dz}f!S6Oh-!NCLjiia6j@}$?oD4BKWxyP;Jb{SLI-nhN&utZsO zMb8xIXuP>i`KG7?uBjUx7ZiEx_06`{fUjZFNd%@UmwX^&VyLkLlH^wx|3haETXtSV zIahc4?l1j_2?3_3)=XPyoH!BZ}acL$UldpMtm_!1q_w zo!~}R)->BAtj+v)6sm*yHtY{A^!tJ)m#6(p=>5{Npsj%-laH)o6zQJ z<@Ryy#!i>p)Rwv3G06D?_S*789y613K+pdkOV7}H1~^aL!p`7;a)AeJ1JcoV6rq7 z=xe~i6-u*oK_zF?CC9?)cMa{OdoBf6*^CFD^B4>wxN#F69_x0$D>guDO~lB3RUMF? zCZECH*^%bcbv!fNOmGyEpEuf3ApBOV`c=JeK;JR%6$@+Y&Lu4}hyNbaa168K{ zuHzXtng4X{R?Zp6kEKNl(d%!ke4)(^&Youv!GDa^qM6!`6>s+|S2y8%ljzy`UX8zw z&W9SDc&$h_;L=NlSM#5LAiJ61>|+j7K)|bLQlD|BOp0Mqz%lM`27FzNn1*mU z^eM&rRPsfx3ii(%8N!G<;ksaZ$@(e-+uN)hd3f8q0mlf!9|8hS0(AxIEv%x{96a6n z3w=#-_4&$~b>=|CfDKM?bL{I7lpuZ)7oELm+9ViL2jxw>O3FLx4jGCxRBoHm{xh+_BwkLU+AcowFM4sy)tvJ}^7rel{c1bcDo znGeFU@28#q%Gafh zyayyeonpDfZ}V~AFFT=1uA@J~FA+dr*C!Q1lUb2FjUH5B@%Cnad-BRJ(%#!!&7Qn~ zm4%kuk7kCwm=jgGM`jD`gdje@P~j$TpcB6~)%Qyn43+nTaWuaJQrH9`{1a za`q)m4BSaLp6{)%a0=U)LO|ac%0Faku{6yL?4zZE$nZhSXV}M1%>nYg5EYXUbdg;r zidLSr4~Rv(;BExgw#FtEfjlRX4ma8evzrdReAC|Sg#v3|BB!3CxM(u%@%P~%1y1)g z2U_2CoCS%x9TB`VU^crNl5jG2vgMnQyfZ%X`aV0YBai0>?_5&%+(JKDAQ7cgm;*!I& z)PFH{U2$QEIE}qKJx0Im1V^modRZuMeF{aQPX{nw#PSZ7=4jG_c9^H-c>z;#7RuU_M=eY8k8I86<0*< zRv7GP_(BOAYvN-BOEI-C!=*yDY0*H)9Jn^Cb%~}M&cr1MF=qVEg9V1|hK3CTg6$v3 zZ2fQ((d|wE;JQE|i!4PZkHD7I=pKemnr^I`G9RUG74 z%o_dj+YvY^I+bhVcOv7TO9f{CdPID_>kb6+#s&RO(^gz|)N@uPLzLSgk+@uX6}b~? zYr|<#A^~#$>i)Em^lN?7$Ob~FtuP~m_`G@bf>Za|0p_Wu^q&pwAp`w`nILLKRw<0e zhp|h82#_0%W9>TQt5YS$ta(q~68>$xDliJwmvA=#+hN{Zv$K--{2TevT?>kE>Jc;R z7^PVb!hEn=c=6$~*%sW!;f43?MA17;INURpRE@_%&lT%M6>?LPWtuN4Yi>fJ*N`5+ zY?|+Vh96vtc)D!+r;KdRX>S#vBf`_8z4X;FrR1T?_qf_V-ClOKXeqyCXj{12QLvj9 zWX>=3Mwi;uBf|e$PcJ8M$Qbj{RLD1U)6#E&%f;<6E0jXUqz5enp?BB6bY#`PZYOjZ zLA`1<)X>lt5fj;i}(D{_Eq#6e%RDT$$tVFel%au0vR}i&GGpHGyX;1 z$`~wT*!a|mCIfwg|J_8EGrn;8q$`6@vtPH@hg~fZ)TlobKfTf2FJWWR<~0)RG+!3e ziBX|%#e$ylvf+oG35$w-hjqz06GVMNhh{S)C`JvB(-vey2AyCxvJS!`5(Si9=B0*qKY`i-AXieAP z$j=-OjhCpUYr5S@J2mc$Xb|G+PsV<{emKbb$9l_CYO<6EGRYFXA6H^h8NK6CguUuw!7Zb7=een*XFWYjCIN3F zNZHj?>hrXn@1cOTtZ@c(7);yw8*IYA6jr7FQfkv|t&3}Rprt*k>Pvjiz(CTAhP6X{ zh$gcJ%72u1v&2*;1@>Jdc`&X5`8{*Q3!qq0Q<9IZ_{!IDY^cg+zt}I~XCJXPjz|_R zZG(95zmj^!IlJaRsmr!VdavktM97UgS$RXue*VKfLqfGX` z85X9ON;Z@JvBKNmn|1jg@>rm($~0vdN4>^j8*b*nu-9xx0&)xPeWXX22Dg!IXLJXg z4%CF3a`x5fc|7p%sVyvE^NTcBh9Ka#ANmstE=8C2JZsQs2jm|$0nyS zV^!;C#Ml`Q>v#1T#sKS;hqi12Cn*-)Tm;VIBj|9_k;q1I*6I~nm+~gIB?mH< zmmE|imh|ZgU?_W7+HcR~XJ7SidNlm}mWk6rw;mw9x9?l<^6dAmisU-@eZy+YuJs6m zV~NA;3cp1}2+Lb6zImOb&u-M3shUT~MyaU`5H=?c`FKePdn;1W7TIv8tfFA zvyq^1V_xxR9JyfEiit~49h~8pibLR9#rG+`VIJifAEf8*o*3w^OpI_l`#kWVr3m(O zm%2wdet28wz@U|9cYgrMXuYunepva@_l=MKdMuTm1Bn9HrU=Oh*9`RuIjnpXD%C$C z#c!zi=v7lYYx%R}7XaKBCM`g6&tJ6Cum>58cyWN+Va*A1#mPwHofPon$rFFgjRzAy z`(!(JQRFrz|BWG9+9IC|K$Tf60i)lnlQBn(KL3$xh7SzacP*7Y;MoK7>dz7 z(he6EuSE^cG5qrY;7u%Q8MF84Q$O*CsX)<{8}KJ;FE@zpvxNfos=(1Vb$Bd zl4$QWNdKNy2blNTg@b(DmS##Pnm88TB}|pl~(?na69dk!1*|fZlMIKy6V_uIaMP*S;>mqh4T;NSUX{Y|jYLhV`hn|^ zdjvC+&VZt9j9TnOt;5BWv0|S+-KDF!EI(Cph>8=}#o4O zUHof1l?{rd+ASLG7PL#&j;Js3i-&65}W;6$(2$Sd13X;0CfjjGXFkVzl!77L|+Br#vqBQ zsGj|DfG>FsA_?|{^{S{rq!yNR4+#tIk}w-pCZ#*V%5vz71t?3NT92cI`PgnEJM$KQ z7}b#3ibiG>N8tHzW<2lAZ2yHiI84Yc)dt-%gA5oCdJ!{a2qsm3@hkh0_7k^0pD&OJ z8qoCqFD~L$mC1R$t8p;6!=H)WoxwZ2 zbIM1NnhPYO5va8Ifd(R9dKbu`vV<9cZ592x)W@gfC~)=4n7KjhVJzMBWGwV0Klayj zM7kaFv`Af8*4RMBI}`SI5E#W#f989h`E}3!t=r@T>${q}6Ne*yWcr~h^)*6W zh$mR=UTTbcwb}-7=114X&&ReltL<*T<~LlDQusoju+EzPiEC@vp&U>v_gfQA6=uRR zTf6^>FJ;qNc26ND;{HAi{ zU5XXRD2>)Ep3!FNhW$JtqJq8Xw2GSTW^O-S#j*<-T3JZz-YiR6LbWdD`EKvvym9Ft zNTll<RI4zLx!r`}Wpo28+(Yikn=RY5aRNwu?0iU(-q+gvuAawIFO5YWK zozUg!w?1xf=6w5((Jd3)9#Q>WIX7;Rc9TaAP4$K&2DEmSUN?sQ;*j1d=CJXc+aei9 z4xg~gora<8^Ml}RnX)PZOJ^@-V4{U^$?@z;sMz}A`4479NiTG7t4CGBA36lo@q$0N zFLd5on|{dgD4xYgwAqjpQY))vD>*rPZ%3IO;Wl}V+naW9_nsu~(MjQuCEXZ4*$c@w zKr%bn28jaK-WABgBF7lnC!Q0L#rLK+p>;((`UWsD=uS`n-Ka~U9I`|=s_3!QoT1$l zk3tTR(QsG=!CRrUdIj`*WI9o+LdXya603|W+e)?Ts>BvkBN_ptRZlcGAHr8d-gP91 z5*}(~rO1Z-&{>f7*e>uDQ^_hPE>fts+J76prl&zSoZX|%in>@Klqnw$yP)o%e;He- zkul{H3{50>tZ@a!jm%DRMw=}$-FOCfL?hJrCHnI>Oy!z`2y)3@(DYU^7!*M#ZJ~&R z&n(S>S}VPrQU>pV=0Jsk%S&gLgKq|2?!xssCw6{P+{~X00E~3bM{^%P1JMhF)~tV; zdf}|qh2Ju^izPXY*wkHDdZumcLX=Mdtpb0{?d=qdW#>j&eCUF3G5ggo=ecr=ir-ls z59D6rofzGB`k+A$`ROA4rwGn4I3z0`!+Ao5#RGhqXtv?2FsYKP-W-1CnJX3Of4!p! z3CjFP5pgA=3G6%-Zzi9brbrOsQB^EB=r$j0_p7^!bozV3$6aNAQ>IPG$j@fS{p--qmL!s+petV@(Luvu6A(R>4$@{uUVH% z3w4%a&b*5WZN7oS!LMMK_NZ3it;{Qjt}vumRl~-={hWELg7!9d!R`d> zMTx`E!y8uJ8~d7{LZ;c9hQN3n>-Ef29&yIqY)7{Ro{eAro+J%amKCBtL)W=%a`}-2`FbzZx~ApA zSp;Z2o?J-pc`n?z7cOJx?B)Sg^4zM!Upm`$5H@q&$3^eF(HWD#W{0=~&?0}3^Kvu0 zoEa@FRv8;_B*4f>RnC+9_^C}K%W8W`J7AxM$%xU!m-bN@n_jwvInM+15d7HVcH%7d z!n|(jC!WCj%@#^5c&w`K_m~xEe;%SRI9EV!>F=|)Ktl(zA!f6@DxmajHAqOmQOQkg z(4Je)OKL?;u}n@bmvURGo$}1}@D4tnQtBTf`?gC>49;(o(6x10Um?W)`^A?&eZS{J z3ZiYqob2AKi}@73&QbR2zRq(h&aC^YF&?Hlv~SHRbcn@*`g2lio63cn+B^3jR2N1Y zPqeA#O^?)W5fD|^cRFBWus+_L$L_zwO@!6NtNa6kbs{#nzq*r)mIgA3y-7JrCiy-W z%uaA$!h2K~K3Wj(u^RTVYKN(bn6`wNADE1Zoq;r#iFHq=%3|*3CL|`8ehld z_6_mZ@8Ci^vU2K181<0uCFjxOfB1q;Rp+LlAwv#DE)?rm%XZoIwue;9OK&{hj*~t` z@7~kbX+J4dxHhaUbkBL5zoK#!5I*+G{#CKfV;<)l??nqyLTQKZs@7{lo(+mp8|GJR zHfA!=_wPF8As^psmdJ!Mw=~@wyI*8Glu{#JGtf$u)$LunAJ{fy7B%bjdx4tKsOSDs4Zs`mgf1d2- z7UWZs6+I*(*1I$FDJM0W;oh}ll>8Ll7kiUmexwNqy|2I2i1{V2F;F_B{)-mP$sfJ&9maoXbE|z$irXfst0V%Zm3!C*DLdcE9$tGor_+eHl7eA z)9E*7d+;!lGy}s8R5_U>q6iDU! z9QyT7p>leSqSkBb(^MUo%zn$ zT$clTZ^Ss{OEEKv5b{wO4{*7Q*&lFy^~+CvO_~BZt=pbICX(qocDKLB0cf?yEH?eJ ztB$BGs<-JkQ!}msxQUAbR*w6DmZM`;xlw#w_Pys zb(p)$$s8y~J%c1R3u#V)F8V`mB~TE0Ct;sxV_4=h!F2v<;@3IX5f7nBRi+Dk(ejl% zr6luvaX*u3DWD^mcF^GjQWsAOuoC&r zfOT2VdrrCqCi^<&Bj_KN(b#Jb_}%-hy=^7p!@XqU*|&nzL*Pwce4yXQXyMv6r)~m0 z3a8M0UwEplurQDBRK8PM~jt#>w+R@wN{v@X7 zercF@9*K;Brr}eE$D`MZ@JOxoqhLayxjnm(5Jq?3 zp&r?rK!tdkc`<3tRuxfjY8eM`DlD&Ww0MhKja&qJazd$#gxZf(?uGCT>|4YhCNl;c zZWy4Q0nJCl2sS?F>L{BAY*-1@f{Y^zcmsD#bx0jnXW#3#N#92ut{cj$0D^E5X2xs|VBvc3a2@{bs8JT*Szt0PdD zpkIG$WJ-m0E21uKOE&z{;M5KD{@wLAl8bGt7Jxos(9$5KZRZZCT-d^)DnNF>2?{=- zkW6;uBl?^fedB2hwPBO15}`_%RX3L(!cq`&g6dFkQOCn!M> zIr>uJ$FI4dUjj|GhvFpReP${zf45^FDk!Ftao3vcEN2%x#lIHs{|)G#t7=w(^r@() z0w)P&j!VH6W~s*&N)&TTZZPJ1Rd;Ry1MI*E=~aV{l}rjSO`L6}Sfu$q@C53mMQBz1 zC39zKh$}E#Rj0&0ZI*g-2mO9mGe^H*`M&l%Vj?`AG~CHH~;9W3_(wc z?i;SMna_&#WoR1slXGRVK_m!r&jrKnK^=9~1QYcX3U$;G8!ORe_SjSz{;mPX03+vlQ1sgloTw89@ zCmAN|Y##*Rh>uegpM92&fWB%LA;g5$>|rX4e4l9vIa=C4$OUh5-U!Yd&I&zX&V5?L zf8j(2)i}yWtK=7CJXne*neD-^n37Li!T3hmWSnsH)sRF-t6DPn%!48Y|FQY zFHSd~DfV&__N*SpT646=?mFlbr^k5!8$o`3OQeClY}SKJZV(0^TgXgVS^za$D}1PZC~jG$086;*j6VJBqgcA`7p@+Vru%#b&BM|0Hr#0MWB(QC#WI&VYV8oLBqfjP~DX zYV!<5P~G&uHYNJDixKmz5+S8H2cPC-kNJtI$|7km{FwK#ewq!?f3omxR^y{)o?Og_?mWjIFS5M#dgL%8C(?#R$yWJ|-v(*xIu^p$rF(02K7Hx1sEw7|=G_&0P{YWq-=Mhr zGIVz0>cx>K%d&sSt>^D8QF-|qp0BlwiKrhI7L(S8 z`Ikc!*F2m&_>d+1xcTe8olT|wwXTZb&s2e{!Znl^t^GvJ;~!D@oXw2`OrP1|_?9%+ z7q9--V9b2A&#>ki3lnq2qH^Y_LUEi=^*Fn!7j|46&f)&wg(aq@wq^VY72=h!_ui5TFJK-G z_@<&pXi=hEGqw5nBMVaK>L>a4$hTV%3NVa1=iv@NbFW0gd$V*UP%c)fnudNj{BPjm zWAPI~S%q40daX-2PV)zuPc0RxZNs+s?ljVVMce|WuWBF9!==JPih1C5Zr*-4q^n=G zVUBlF?M$y(db~rg)l}T;j4t?Go+8z$-2rA+`Qtz{yru=MU*e!Q@E!&~f8S}u1|9Vf zQ2OtUbA3D6C@f4+?S?sH@}PewQQgz_-sNFPEigBm=6{mHF}YS`q~7~pHLCc(h~Gwq zyHdIltOL^XL>`oMa-IGQtPcL97Y;IWw)z)Q!iEkj&F{tYkt%V}cDDDe zi@j%ZKL<^GbE;8u0u+hJ@w$AH^;E;NcU*l?OG8hG|M;`^7L_zdnn=wJ z9$Oz$w{00lULlFWMMJ%XnYZ4wfV!3>V>Xd~Vtc z`>X*!-$&t@NALSDw|pA+#kg;zCo*S#PiFTB`z|!7%xJVvIA!pL@hH|gtmy|9S7_Ns z%D5MA4ZGwo6(I?;It++sZc?m|c*M~6>8;?i#Ws(&;{<4zr3Z8)%66tZ`!VBaFPuVe zQ6hzRV#UE4b<$1Ep3wYUW%{_uFg=Vht#tzc>W1qL>;-MHAnl$rkLBMgQId+Ha zWVCsGW_hRD#k17v_v{>*1hSsH8@uW*t5x}%+G}$bs(T~?F&$zW;e9%-C}m){U6+qB}~>S3?Y^SO~btjhG`rRH1ls=*fTvC|rk+B{b$ z*6?YGs7s+5*!AP^{{iZ$Ta*RB7|E{ro-1h)19S9K`?;CC1-}V!Ekq!nwyYC&tLeeRhzw=PpbG4E#$LSJojkC6@RG79I7}P3M7)IJnlm< z<8ys-KW!qt76=FS^V&%471&Z&04&L@-^oi0c02IYZ!csP`r(=0IgLFvb=Mb^{6EW4 z+5)*XgLMAe9_b!wA@xaZL7($l^S;K;mJO~7gocLOPIPhlxOwXYlkcFYeLV`Z#cjN@ z=xFUej4byEv_ zRKN>N%ilzWuvxoa)_yne3KgNXGIR)X<*U`qsNF4_kV`LMm+2284$WgsuLy882>IU4 zXH@D+aCdb&*_!WX`wMtl9ZnZ+_aypwiV#QMI*9a+cIvY7!(aBvm)7(rX>3gC^|Lv2 zK4BXoC%V4PBv(cmreC&E=+j}$c+lUqOvkLNqy)}d+61iz8Bp{hZ2$c*yJ6{l`RHqe z``-#$O$nfK5G}KGi60@?YH2ZGVL;KG2qlhM-f-_9wotQjpK|1njqH`Jm+Zgk>*${G zu3@}VHZn#a9}BYCNa9wfL5x5V%UJ&S&#J-5p4lwJouFA)v=O@1^((ZF(v%?W*yYvZvV>yTY zO?bh=s+5Vwv8wZ1EM1A|?wv7MBlB*z6&+!|S0V9I3fiH4?Sme_qD{vC+Qy@_yTFX3G&S+B&n#IH%(e+I=Hx;Y(fLIMD$#Mu7uLQvRiJF9NmZKENdtH?3fL*#$cR{`gsGZ-=uIdBu6a&6dtU*4RdYZ z#H#d24yRXOh_BqG|5|ljv8zrWW`@OKeaLJ}CWi-xfpxnqw$8y7uI1>Z`C~XMAJmqn63xzwhlu!tBhpE*}VMf@DK; zZCT9%$blOiOdXD|tQEDJC2F1)PMx*JFq==r+DW3wj&_l$3B?ZR5*Ow-;b(o?fcvdM z*X>Bj3`9UTB+O9w0KE0b`ku|Ayn~I0qePLBn+Hz4VpYU+74}*KU;~HVuy1iM=X?|o zAjD9r2$$uZz~g%GbQh@`8El_5^4$rwpZY(ka(|Qsn z!T_eTl(WRMzSL19d*>Rd%_m-{A>8N)Io&>RaUygm;YfcsH^3w>_I&0_NtXW|v2~sX zlYwZ2?5RNUwIcG3jqgv-GkZV)c!F0IXBIpU6`@Q&_HJXATuhIus7?o9mum7){U}mE za5YjHn-A~H@F|inPHI2A14+ZNw=}4FgicHY#F={QYJ;*+j~ep_gT?d{Cxy!rNYNK7 zzEht%G_S0`sNqvgEYks4FVj9kN7TV@b0YgYCbCWTwTz@Dg*N9@bwV2N7t4N|ucu`$EpLXh`*ml< zX?iPw8NQCWf@4V$^DWX#nG9&)Sy^wq&`de7m&qvBWe_<#hMx3;E81Yc5vS5xo(os> zIpYqks@uNC!0yKLTgvi~QpqHiHuYdweH$F<^=R0{^Qvyn|9)tDo-{ zo%Hr^FLeU}^p^8#k;w@uncSonqE6c3F_8aUCF70u+zum|!v~^l3-zE%Wf2!|JkivY zAe_CbdaW9(kOG!w*$**le$4%hj0*04Kg2a>-ZdCd*Jv1+TxgKlWR}-B%{07Y#nmk- zZCaQNeM(4T^6^cu{rTP?9^_=P<^7T-YPXM&RqswfVp?13p4zTZ(*j+r^i`PW3;2lg z?w8)0_Yp0_(qGu(eD_?rst3j2Zpbozo}?_JMvlGZ7qb) z2p4Y?^5ADlV8z_H)gV}nzRFK5)U|d@i4WT_%k)$|^sDpOi>;D}MivgjHn`xQE5NhM z*2cE}d7>)z1!TT2-r1Xmx<-xt7@%i+vFG9dNba|P`G`H;`=Q;bEoU^(F z*c8gZ`Ivn!7rN4aR75vpG;$8c(lhBIFf*(J8_39=U;zIOR}S282rUDJlq(?5W3mOo z|J&?i6fYsp3*QI3<-TWST$c%3H=f-%NN-*1Q2$p%x~p(Hy`IBFV_|x7<%R#O@YN@$ z41_hizQGA~{C)Snc9%HTX})ugRi@@A*RJ&x)YK^y!#$c!M-l=*p5Ahg zfdm{sHMi8+=sn;4>nXHcZ@=~r-<|)X=-eNf{{JYh6!poaQtqr0Dz{MXHl`&vgCly@d1ZB+C-z4GTqZgp&}E|$l3S3$8* zf=kdg-+?KR4a&d#8|P8BR_4)ocCSuSs0<6?Rp+3PbXs z(zvEhhpDIathu8AaW(ma6#}12Yr&7 zjrAj-7o&%K8&oGt76fbf*zVktn1A`@U^@*^E`Nn_HB)f-NCeKqb1;v8m!x_C{)EKd z{U&O>ui7&o8|n4L*_x5m`5}8@YseHv+tcV@`P^wd(i@sMukZNdA14}LPwn!IOAUSP z(GN+~^tP?}v=}zw@RpP)e($b?Y*6^J7ylJ3Lk-r3wdlVZN05_deNE+4o17c?-rE=K3sA#GZh#K#rm=xIRv%dQ z%D|Tc{|*8h!#Jw# zOCNW_y?N&xYbL~SJ%ZJT4`VIKyEjp)kad&QDt+NRje%&($@mp=$m+WLR*0hxF3PKc zU&x*(2?x?^*6w&d*PgUJKQI6Z-{ z^8j52c%FWIMEiz}4*ezlA853_p1j}U1%OL;Zg47tfC4r-|M$FJzWp5(*p zb=8}1)x_TIKpy*=*5XZ}6eAwo=*~bW`9s!9Jpbme!2e!DM>N^h+3AFn8@Ah{VQD1^ zC$cD+M;0**W*uyTv5RRAi#4VnRWglk+RUKLNWxe*s;g@4lA2itamglZw~UWbZ1)7p zR*ENlY)bxZTeEl5RV85btiB`cA~KYW(QCCl>Fk$Dhyaw+jwmG$HIM8H2+Nzhx^>1A z{D&k?;GZJtV>e%ejN?BQY?U0|kEX4x+y3Cc%b;RA0{L_X9>+KTwDGyv*9C_75~5#3{^1Exb{JQJ4?9W>C3k=UW@9RsNOJtAZ zKUg9rk2&sIBM&9X8+4&9l92OJAGIm;P-Lel?xR{ZOtu4-GJv`+^Q z9KEI4iP=;N#W!u3LSuu2fpeZhzsdmS_CJ`(e`_kM0Ry z_ABpm!Y>M3lQ&m9PfExW6L7(EuzPF&njytqtG5Mb@WE%}GZL**XLYD{kC^lr>iRN)%GtiD5ItYDd# zUsg#yF|@CXqg*~0wtljZXao>gc*G0*o?E@ulIN@LV%Zyo3_Yhh{iP*)`p{HF+@JGs zC|WD+yOB`Y+j$mGz#HB(IKR*91;poIg^}@2g%lGWoBQT}4rvv(&xN~i z&iw;!B`1@+Ow1CsgZR4w%NkaPW4q72t$d8CuOP~465)i(m#nIofB(3AT z46u=aRBgKy@Qz)b)})OFB>1gs5ryUxn0xzmDUUDL=42c&YOof%5kV~cg{H^?gO9tV zVOpc0&X2cqo9=2_u3+|G!<=y?Q>gUgF6wMG^n-eUL0LmQwG8x<#$jrzX?Cs=i`mvEOgMwFwT^PkEG<&+&y}7YiJmo9qpv@{O zFjXKgii>V6Ah%+q;JA$I9%lAqGb3q6X9vqH{d_<2m5s$mZZ{Y$hgf=dMe~TWJoV;j zXR)Lryj-Tm{FgQlH{Fty;bXZ&O9$5jSKrca7~lC7+)#~9|HMB8e()k@>|ipfB!m=v z&C|+zB$x8|oAW*&KnuRyj;u|lb~W`fgj`loAM`={?GX2-kGbr!`WW!wn5*i!r!^XMjVqvasTeB~^xzQ7=$A1fFiJ}rfBvPM<$u_qaZH=2WaYAHC zXs{e2uuh0C`BfN5Fz`p#w@duXlhGo4>mfbgmDjkNkHj>Cd6_0z^x<&QG8F?yDP2-M z`P%45mRz$$!6X@+q4b(kIk=tcqHy>pE`78s?np;g{gJz;`+94P|HSl2Z(zFH=oVfh zFq&OTGO27CA?|Fu5V3Y<+Cs0e0?_+#C!L9H&pW<(`6#o7sJ!Su00!}T4c2N79=b{> zqR)2>Lx(xmtPdO)wuu5-Sq+D|b8CjL^syhZK-DP|JYdB7U_qZ^yBH&qDUTJR#tZEe zfz0H+fY<=nCxsm~>u>rCwsw^VLOVp*)c$rO4pYNJ9B}PDNt3m;_PQKStT#a{;Rhdh z%h2*&HB~ZuUAAyR;+&Kq*kC`zlT^m$E;Qw9sBXlZh}UNJNHca=Z}xUzG`-1v zFyknFXNofOr^sv3p55Bz7M^cjs4VR@U-7O{PyCErx6`-lXp=-~4hJK1oa2op$Wh}J zS}Ri~MKOSo<)uTP6@6w|w)tH1BJo3p8+YJ}`uYokpwA+n-1&4f(q`@k*ytg;MjQBW z*4ZUQD;B*jpfrRs*lr)a<*NQ>Lv)3fBxQ#`b!%xvK`toJHixe)c&63Tc0BE@^%rVx zqSxs-e}SQh5Bn)2bCXM;LrdS;3GGeldbR$YHPjYXhP_Yv7EN6%Zi=Gz_2`>ue{!&4 zP|RAROZH$_Nv_yh@?m)(`#&-CD^bZ4RyX2n@2cHtOwFE$_CCD{y84D;_IF9tSs!jM5<;f0aG7^g!YC%z$%kTA@!iGhhr`n?dh($m zTL}DFA|SNOG}2$P?y34%-8;q67nYzf7v;>35!6-qHTdakxHHRCx!nW>80gw@fCTe~ z0h1tw_5M0josZ65kH3H(x}v%~w(xZD*KvH)nRAV^yd!|yVXVDT@`Crj)k8wrf4sVcOq z;}wtC&l1=ye5SZc*fT zM6QI%Qa|&Qb^70Pym#NGeI8%KX8z`U0j0!k^($1tMaBhFih4=EQe#fZyr=oB+PUU~ z=tQ1sb=cTomaOKkf(Pl*{n#}r8;;kfuMF&6E_>pn_2{C%2b8zr-ze~)h{oaR$eAgu%1Di)$~q^o6N83Kz5xcr%Jf4ffB@3wXMF)Rc|)q z~WS97n~ zVVlvJRx`IgIF&+n4zldTft_OFYPL1mDLrhsQS|n=>K5$#n_?97mZfL$m!f&L+SW;B zTceT|S1+U#NIQ#YG%ocNTP>f>^ku(Kr(-7FK)P-ru%S3!j_WJpnaX}kXMIl19Az}S zEz%6xN@{#}yF*fe_0D}B2KXb|W@7*&>s-M)K>fy%K%;v}H;DIPnSr1X-CAfQE-Hr?z3EYcA5Z=T1B z^JyUunpP+h^fyyK0p0e=FHoN1CEbtaWTs>JV6BgU*b%`iJp7*fKI+Y4l{rOs-X8q? zBsbn2w^I|vQxS)WPQrgm5L^1}Mc zd<8Q@Ej2i;9ktTRzT19@`2DPMvRP}Nk843$F^i3scwU&&r(MO?^&$=q)nNW{2wlbP zbHP94f#xp}kZ^X$fh9(ExjMCVIX%SR$}%*l7p1(f>XZ}At|RTRVSB=4>CF$%rVPUX zb6M9UhD2!8e`5M}g97X20Li1_Y=^J5f0Q?F*Et;u7R+GMf*ikH;)^7T2{6YU;}t^V ziG^)AJnRgzy0>uZVPwpUUEM7p{v-IN7CMi|DD~W<#j7HdF;cjzX%mQxuSJItby=`n zIU!OJALwY|AvFj%kAkpLk=75K;E1l7 zZ>g1(>+xn~!>Ke`UQmlvKu^9TP__lb-!uU%N}2GNcSTvY3~R&cyid+D8CC zDVmeCJXxR&{O`WV@wvi=#NgK{vAwiU)vMdnKOh)o@1gqY@%^lL_(BU&h1uqsGNPMy zktQzcFi9tN7`29DVq&xoZo2wXQ;zU_nlJSOhtYp@MbvM?B?dw$B&{}-hJo6_D5I;N;Q0SbWBtg$7o7|Ll5eKQ=YKc~{axxIp@(u1hSANU- zSQhz~`lEpx_A8Uxi*V4iDr+`3{zd$#TTLL3yG%}dbL(=>?!62~lG^==S@&JfjfoFw z_RMBy^qxSg!@z0T)6e@b6ZGd$w(Yp|69s(A;u>XB&s%hDG9DSNYN^Kxm?3qB-lVt^ z7U<6HaF4 z+Ty9Fn!THyj<`>k4-vO;r{BioOvHC;V)jVGW1L4<1=58;S*BsOqi?D-!af6t@kR>b z=1qhJfLz%*9_-mm=)h#%<`?xmszs7}z9jou8qUFDa8e`hXCzZXpIpZuMPgLY0vwIZ z1^G0qb4KM;oGBYJ%UO-JB|YqQlipb}E6?xPof~x5iGYlTj$;4M3)8tW!`S~>#|pf` z2mXSmTWz1z0FePteNA|_0FkIdaq0YNC%h7;jp(E_)#8T9Cl!Ir^m%>_9D*6+ZWjdc zQM~UFBbOFe)?VE^vAO=U*NOjos8iV6YQ)frG;pZ`R~8;%!E(M<4@*zX&p3||@%NfA zc}3nH#`W0>)7oE0t<-mUyE*IjSe!*B^4%nFCB@?KG4>t~y~nK@P};wms_5eo8?H`! zUV9>@Ph4}|h?>8ohNs``&bp9?`x_6rwKB+3KN#cHb@7BIch8WOnjXC6e0iG`RHjp= z7i~5jD%<33MLDp>bbzEALp6$ycie4VLhPR*Z9>I&$U8*=9vn-e{LuX@*PWwW>tOaP zzXy$<@lQ`L9Q};tib(}$&3dSM$nR@+)>LWBIvrO105H-SiSq&s3rD@CTm3{C&v6vV zYs~xG;wta73BkOfDk`>laa1wJ!2Qr9!*1?4TD^tSBm62-p;g0f#Oou(K%u6lOQ!h( zI)#}i;%3*d(&Uh0>3(U6`B6~+aHNd~7Uq=KyIUKi>rXv%>2a?i$8(1_rbZ+@$J^kS z>|6O*wy&9urjqjKmrgE4iNu~hyzh>^q|xNWDYSMD?7N?p2A^_VkqX~R*%yNvXCagN z!{SwM6qib1yH1luGny`2lp6quJF8WK)@d0WiGKB4EHxE&m_K+HNWC(lHn5V4zN$_S zEA4$qT(0Vx)$6mD+z6f>(o(%ky-`qYKTet_d2{%>$I&7_Ju*gJ5h=?-^#*Xv3$6G5 zbIu$ye|jv4I$y%;^o5XA8%i`nm_Ml9F-D(rP1BjuB7W zcJ`J#N|Y-0A}pPiD!Vl>&o0*OgCQaq=ZmoBIe_&~nZ_HEpvp7bz?WgpBqW|yKA>us z6hR`m_~_zi;Aa9XM7ihR__TvdL-X(WHJwfXnQH%j#u8M?9e0GEY*y=Md#F49hr8G` zR#AuW0ST~1C9n@4?4h*cBTq*<5Pv_x2|e7*&Gc4wyC-Rfa}hRe<31@jKL+qY_Nj#b zZWKefUYL9<{N>?PNeLq3W+ezWc!rzY0=P=4KC~RfTlfN2%4eD}arMkqI zzES)l)U8&mla|g@-iIEA9YizzgxrH!I((w8oJUlbv4Qk!QYGG?{O{54^AKx}CoYmg z_#C3(`Ju(d=&JHf$WQrIX7wY5lpx_xA4~onCU~f4_S36a zS-Bs7R9LVJPcZTQ-%+Z;ADF-TE%Dk z%msms8VripSkv68RQvY#Zzs2Xog21} zyL;rS{9xt}5+&K)(0t+wr`i<5fj=}*I92|srAp1S#)bW#L1I|Pk&Pz#$6&!amP9&Y zq!#|2J!o_l@GCwsFe2`SckU6h4|AXN5^0?jA$%@h-=kUV2$&ZOsCLSzgy~FhV zYn-nA2RGz@^5a5w(kox1{Tsw6|9$~vj#cM|HuLaQbTLl-QL31=X?s$X^ePpgT@};4E^Xx=HqxnQj z04=kBd!;H!{&T|oj7llW8K8Y+24I#e-+dqicFM<)ziyrmi-X#Q{&WQ}u8OE0a<2Zn ziwvR8p3zM$GdQvaf;raHtbR-1X~Hzw?6ugtx2b*PiHFqqi6LOi^DC4-Hr)Gl!L&;3 zN;Q{NFuQI4Wl)ehe*Ak`62^02sR7j5&P!|8vFCePA*2{pAccB_$mlL0>h@8q;4$r{ z^b`5yF$nhZdEU?g5}Nu`ix6LZS%MLC$+e*Q|7{{X<77z)0gWEdMqn4v*?8%rHVXIb z0eet1?qo=E*KqdAk&m1h>6&;gSln@9f(nYiQswcItg}iLG0Ddvp6L1-6 z<4l=8V2u{yTnKqBmV(2!EUa^!9l#LLeBz2Nz}}h>1AVl2kY$1NiAxPZ#YdZAL0aI= z$rBRQ6`_Xy>66c6?> zA70l8`bu)+8VF{`AdRlVUkJHF>>|sSCzqexDQS2D)n0;j#DrEjnGt9WJc(D%Eh!Tw zThAl7f2+``R?~E_u(3X7={;aYLfre-oHOjAwcpz3i4e7T-w*8WGE#&PvLnEHoYftV zYJ43p@4n$GKbD6IJI)5l?7)0WA97Vn05n!!((Y<`8aTSTB`@#Yi@{^uF4ipP8%%87 zo#PKxKf*4_nZf0LN(GsWRRCxVC`_^!w`q(v)O-bh9 zBngJuTwer)d=N+eKvY$iei|I&%@sU0M>#feavQJy_zGBQD|v%xz88aBo(zqcxU~Us z(6VtcOLaYvIM#<0v&s%QbV^1uhnfgxJ&JmZrn}2DiS4O7O2fQT*Ve(DXEO8_#X4H^ zLQ*tdSwg-KM?1R{QK}qLUK=&rdmYe??rJ6ww5D({^y{Nn=hxPfNt-r)WDTcxCQkKV zxB$6g?s_hFwv^LgoWn1)YFKVeiLcv#&Rz~#Kl60SU63=89JCAH`khXyH@@L<@@{r? z-BVo2;j=A(NpI)BRs;x#5JEO1O^f>1Y$|1xg;g!o+^l7jtz;Kj)V51opp8e)&w%PU zafrAi-%-0NaaelAAOkKYS9fp8kNLt%V`=H&#WnMI%+*vgJR>_SQToub`n&ZGr~m3R z)%%f2-Hf_vL=^(Xn_8vbgL}{U_V^o$eO9Ypnuqyo+0Wzk)N`681E5nVO?G1+ z_64Dadoi|1t7Y79(vzhBL^OMprHh>V?0cn~n1fE(ExD}RMv8;F^V7PaQMk63T%7yd z5Wz=Bi8UPj{cjw7zwG_gM8Mw*xPZ^yM|YuwRnF=S8{;jN`7*BkpIDPg^EXzV_!V!& zpI!+4$isdi8pgT-D#y#4h0IIyuguNb8J#RvD(l^rat>K<{*P;ghbux^_MAe?D&oz5 zds{MEr?uL;jA8>N{JrvCORrk)?DhT|Wsy?dN%gO%ujKI!&(wLff|`Xmnvb@x#ctc*$h%87a6Yq<6Jt-_G+o^9pUAU`rKP`Q<;&`3QID11bae5v_E&- zQSxN9MQgzE>w1f0kB)eP>N!Ea^9Tit8Kp3;rNmpn26&p_Ax91=L*=*)ed<$9b`Iu# zmJxc?sAvJT5#sj zKJ~Sd(QX&GxW?Dgw!T>5$M@dfqm(DB@ek(=&;j+EMIrH1H6(Wwd<43)vGxep|KCQ5 zcGFQ4HOuGC2OOGZx;MCikvn6iEkVj#7W3#g>dS?W+IGJLLh}r7Ku^{V?F~1-9{bLj z6tS~-7f+&VP!JS%e$nGM<{0_A$6Ux>w1%p9&Jp(+m!gZu6|vp|0huUgUQ1k#Q?9>J zW$C^hwKh7NDN{o5gGEMYraHT&JHIc3s!-ihSDtnrE zHLdHx+&$-PfT(?O8nKtmu8#fsInt2IN@B$Yd!U0{gA@I}eHAI~QGY)pZ*4}Mba_*> z(yeHqCK>AeGZ1Zj!SHX@VDiNFGB&|T?Xbze+actQ__AkHqC!{D&Es0V%YOS}L3_$B zx4wge(q0wxR@2vn&+)IMGll4a@b*TA5Fx0TwJDQb$4E8fMMeHbBIeBF2k6ltB&lw`}m;{h2h^X{)eaLEv5)Et{E=N(40VCX$f z!swA?X|!XXnaQ7fjakQ>cHDOvEF0?1Z3X*{4>p;}hf-AhPqnr`8oGgXTp}Thz5c^C z!Ve`MKBZJ zg{qhe_3q|q?tb&jLib&EtxY6GSg94&$jh$m6R~!}jKjN)J8Vwbko&-pGOYI=SL17r zPwH4L)H)qmqTsY;9qPQ$t@Ljuy4KGp>>u@$B&Nlgrys+OsI@sZ#4Ub9w_rDCOy}65 zq$8%Cjjp+QJl}LcM6NU2@6(G!a-!<07%;I?Lp%tX+~fS-y`r%5vKNu;L&@L>$?V=W2Vtupy zm#}p=ki;0OJ{@>rz7YyMnX7Pi?1B$0;+yXmAMrZhP`Y1TuHXI? z^@zb9SpI#I11Ws=h8hkz)wAusIhuCiq!{F^2<&|WOzgQ9m9!%p6dLEXlG@0dzh^Dz zz^J5gf&mLpt^zcq3NLi93O_t!AU&aGpr2}A_&EHgkkj_F1l2WYGSNzja}nHq{MfYv zS8jRRdaq9dbIN0Eqw{Bci2U3AceOuuCLitE{6b{8j2@j=@3~G}lwj=W(IC>ipj%2!{_$mfaY z4M|mbPAkV(AT^Xii-+ZIOzm#Tbb`V(YtZ*0(*;1@;c&KR3Mn*UQf$;aR>~(|Z7Hl_ z+ohgdG}p`AGJEjX0po`)_)mrlo%Cngm53Zvl-ZwiqYpJcI~qv!C`~#YvTCiWCp)wh z7zJA%xFr!*2~W*xQX57^C4E|0iem0HpD5MQE?Yd2pDi#Zlcdw%`2O-E`Bz`_5+$T` zNwteQ{!k(5RQ_g%ti3vyDd|V>xhIf+QjN&;lP_O;*nzXXtGir9?MxO~CDV(m4Q!o2 zU`yZJRRXo4;y4EHh--}q5Xz&BSqJyuVZ$}a_s7j-q(9{3ifJrzOW(pV;SP1atE-%i7pqFNtIOQ~;Og2y!dzt;Aw&{q$( z^;5IT_f}#Yrk!?&wOfu~oUs{9S=jHP`zZ9(v3W1%HVM1j(-F*fRsu5$@~~mbIXOxR zU%yP54gY=)hYYVR7{|jZdSu$sU+uZ(bI*y}`N+w~LCFFu>5Z&0g@7sF-+?|R(jFJO zRqdCfiLQ3^IhLR*;`~o_HKc9%E_?&x1@s^%&>k~y8~w zCG0<#Xy~K;W@J7#K(u|3jz+Kr^4Js^LH^E$h)3Mp4)OX4A>=-2duiO=7$@t#3SKXH z+FZUDLdZZ*)bdQ{B8)oqpeMDKx~c(oRCi+5yCkI?b;h^OGT5Tw#>*(ektr&-SoH;n zkVft^{!5y|!^(u=&Pq15OV^@LJ*Z1%*Vd9Ei?bL?0Y!R@62e0P_8dHU71;q@Sr}Z3 z6klT+H0ANo!P|vMPv0{{8HOJq2CD}Uxc^E_>nb3+UOq!ie+cO>NzqI0gA&GYNd6?5J%P)fjZL!wF zp}LwSUX_Yxhn%6)MP={$=DoQ!5&a~|WSZdG=ksCz-8q12F0f8RAXIcDMs4ylEmp-l zcCoQ=BdVC`9rio!&bGjTzQNWzC*7T**%fjGO zjE+?31n1At;~v0b#JOl3PPtLym*+?DhB!8xF9(-_aJw zuXunOYbPu@MK5f$#x3j95 zd-8E6AQxnDB0H#k>&1Gph$%$XdGeV<8PK{syS%Cj4qpr1VLtU(h0f@#J5e&Ri%&4m zcY!<*OOJ!l`;V8^P@T-X{o{YPJMq%Tc(4{NPf_B~IXJMs`Mya1N!d~fqvA(pCgBf> zkE-%6DHuNLp&$@Jqc_mF>pLw&Q?A~{qm~fcyaZOyY;3N#$0%{ZcdAPy-^<@&TfB-f z0ddlyVGzul6xeb5?e3pblA^!L z4C*z--v9>I$F4U>q-UD5`f&`TAF&A$Se7M2Y#fsVFB)?O0(pR#4^XuMht4?;A<;+6W?cktEPuj(PT3I|Qf%(K8HY+@% z-0_t7izF19Ch0#M1;Rf03w!?0k1}R(aInz$ci@`{^BE77OI5X~q}q(IXxJdnUKBQ7 z*P#yk#2Hpxyr`$rn|Bl)0qAv}V+CJ*`d2fKo0Jzam{hO9`7TSGyI|gI`Q}4dFYB^W zoc;|8&2hm$kw31U?dP?!ZwydU2o<#o>!ECLgr6%KxBp`G0YeI=WsixA&22P!<1o0k z7fP-osRi53CyP5j1A=mY=Z(CJ=aT+F4Yt@Hkoz_TDZha~t#>v~dY=?W`MCTBY)!fr zYAiC7-1=wgvO=#MX6G7q=btM5S7QF+XAc1^&|=7WJ!>U>xGAIFF5e2`Gs0XgF2TH#mrz#y z7w2;-WEqL#1l)z})}IK!s;_z@*NtOR^l`C&A^!FGyP4X)=+&jGq8G;_HUtx)9itI7 zer*-3Ayrzopq13Lk4=8_!+A%8&`zqax?A*bR5tVe?+@(rP5Q7F8`8!ZfOU$Z>f4a` zJYvUyJ88ctFP2GJ&%DaFGa|)VenM_~E8!m6@q3VvyC+lEY=HLTJ^>Ny`GwslM!S2H zm&^A}1h1HgbF$lHt$BUF4Sl3z;!XTb&4I0|GO0Bci=b-*Rfy|XYMcUik(tI}Hv6Rr z7-?ScD@^Z%o*8_-{ExTLQYViVG)dQG{m%n&3q6kcVI_M6l^VxiR2Kg}tw-CUXxwJZT>c`&5e=IDM>frs(u_)D}m$d>>Hn zW+23>Rs#RQjhnq&-^|$g_-GHss%G`C!zh(4*eRr0xarNg}UIL`aZAAk?f=+cLX=3j=d zex$i{fqo=|n&E*Q$Js5B1&8llyI)WTKNU1DXKLm`T5_H@E`Thzq458=Gv#ESKnhsB zCt6?_F!n1uLA*PqcNgEbc+?y-?*#AuMYO z@XQ5HZu(e#iKxOLYv!3;tiIQ_>96l7nRgHGxL|t#; zEjaZu+bRFlOjXjN(O2mA)zBQ6Rf@>={?E_;PkyYELYB348&)aG)B`u*?c+tve#SrI zCy_&;U;IM&-)+LhM;PT*Df*$oCs!#2T<qRBIDz{70wO$EvjMQdgX=FC+anl%=Af*^Zpr9K%q;nYdK8^)Na zr-YCN`{mX;#Cf%AV&4oR?W3Dl5&QpMt^fAf6OTOFWfs#yd9nH`v)DT$6;Y!@>Pzr# zzEXYv(wdq~mA7aAA%*ukG!1xJ!$7_di=zxDNoOl1B%3eFlmS`_H(p1SORf3R_*M+= zY&^hz-sywYK}#$UKJxBJEaYzW-lnR3opiHYxprV-Lx{s*;$r3t*(zd_lT0V?OGBoi zg7d$%Q8muAyYpjate>Aoe`(F2=VQypE@~Z%f7f1ka#R4LC)?JW=IH9dNVT(kUOFuzWbtAb#`_2LnX7>+TsA z3%$(+jOB-haf%s#x(G=fW2PQW=lWH{`k=j>ZbTpLd4aISsSmFvb@UdS6guRmNOC6L%mvmWzn@covK@5U?3v_z(AlAsACCAy?1015H?K zIQ=iyeCWl5r=`aF(bE0O$wwZpuUc;oS1(mByHaCisFf1@uyvDo6=X!oO3ehI)lcmI z-l4`(#-3t--rwgQJoLE9w+#T*=+h_72W}0wM;ZZhL(%)eC7D~5o34sXJs)utx$y7` zRIlo7?|_ZC&+Z)n=M|Vp*J|wQ4!&OCIlp25S`m(*y8Lp&?3i9V8}X7_06p_IG<4eq zo#v5$cM;PGeI8E$4@j5(vmL-?`p;zU4Go=O50=GH7alaB^2LZ^GbQQg0Lrm)9p%3U z(}=i(C!*t!3TjHgo?rgM!t_Bj?ODYq*bJE?JR&&J%YNslZt+WftozuqzOVIq;Om!5 zx*76TIF4Uv=M7K$`x%oh=ta$Q|3cGdlypEh(p(t>aqO>#xY<>1179}UY?@NTOkFe3 zhy*EqI%wwHe#8_+-x z*nPI{3iNHom&i|h>qGO;UOUGOynIF36F&&1k5-+7z}`Kr|6R0L<}#ft-EU0U+0-bj=zOXP&ztPbU^6?Sb;6w&8k`pFRN2gHZ=c;Z zEQMGRA5vVye*Gt|Qd);eC4KlFgSf3+-1M3Qco09CzwtV^6Ydl&rx5))@5n;Xt1Pz6 zb2zOqTVqtfqn04r> zeIp7`?@H-;D?fT)piZJX*mp20-_d!H56M6O(q=voVO{N)TmQnQxg*eC1f;yy=PyWeX^7enIT|12c2{NPm4ztk(9O@E z543v)d8=8RSn{r>2yE%aO;N%LF>8JF`F?jW7uAGQRzZwYgGpM?^>Gwp`~yLrpw;v> zb|vV41ZGAOWK|4co*g)OU}cjebDWe5a3w6{fS(LCJ$Q5nf!^rCxU>c!^}TJ|M;zw{ z%@M(GbGNElnyc0PR-?sDtGo~vm({&A;Pv4hN^UM>U%z?5r#CElF|%;EC2^LNtYytH z6tU-c6YNSuXqd1%!fIA)miNaUn|M-ZbU1C2QRxWlp0B*?w=A{NW}Z>V?@3y!mY!Cs z{kJV&ARhr&sgHpJTz{82E7ytN{1LAiMn3rfkh}Ya@1~{wXTtLJrHA#?>(74Z3T?b? z5cdXxZ^PBN)l)7gAFh;3(z@W)DtP3IK%i@oM(@0~SCpX&${q&xrs)Fo3_?m-b@YN7 z%AbAXd#1Z%t$PB!V|IaME(|hRreNJK)H;01O27KUiLinP3Uj?kxBIzn8_15BYAt4k zTjodIW=mjo;4p9ZUl7AETvi!)`Gv>C{%dCG)h1y?S&!IT-(p$U=1fOE`Xzs$OWJ;j zcfFKpYv`po^W4E7$~=v-v{$X+FB7r4K3bc}!xUEfDescixTzE!f3f4E1!O zS^LNqpjsUrLjEz!AL=%7d!R3<(&TM#_Fz5%5x7((6nu6q#ifi_FfDp%_ooxO)R*`h82<` zm2{Hxc29Xmoi{#(r=PlkA4Y*cD-81vFK!UKG)R_v7L(NL7s$ad4$Jyhb_vXA09&D0 z7sP8V`z!v0WhJX5VO$@1##Ko!ILzSM+?yq-ScfKYKfG$^yG-ANchz~UpiUDfQ8p{& zaAfmbM;rHh3pYYaGa=ZJ`D%kYkOc2|V703p%FY{&e zknYhIgC7)&BJnGg1)Gy2;6NrrwD_Cw;BFd*LiKtM?_V9Kx*pUJx@j-9yOqs|Dq^bc zzHwoIHHYxb_m4cfwcV+E-rwFy;ARFL`xE+-49@lPYiO4n^kZBuU~`+uVUBV8F39-< zinDF)+5NH|?r_Fxwd>n2v>d+o(;8PTq#Iax5axR@J?g~QrU-Mwp{_W??Fs{@Ld$_Ukx1(&g5|$%y-Cv_=my7L zaO*9x0-&A~E;J{56Mr`;dp_gnTU&p`coy}~)-y^Y^qYcL zRxjq8aj~T(MeBnM)TubMTg@*iEt1Whr!Yah)KN6}TT+4zK`C_bMu1zL<> zy;7XbtAW_ry32Vt&{3%Ao^;TI;R5jCg_kP)hdKl637%Jm^Pa%>^U=JTIJvq{fGMjI zEkU0a@RN;hW%o_vO&FK7Rl`c>Uig-og?X@Iu*SZ&UZ{44Z#UW)Mc&sgCIz6f`w?ZA zLxOZ6Vi(yrU={+-2vsljPU)cG2xHCQpMxiS46x@L zFiJ`}QdxB08MrRF@op)I3lh*cp{%MF6#>Rtn^l|`zeM#rI#Q?Fb zUoy3ssU^Q^YUFyw=9}3=emAASzlkw)W`a#N7X%STf&(!Nn4d@L@`w{2_S%Z={jiq3 z6arx7G+Itk391J6z9i%0U>W7StQ@@fxZqWr+@tvH;V!}|d+=FE-ZVnf~p<9?;GNZQoKG!L( z<$ErtZNh>e=-DlSc%g5DA*%^xlrflVn8b0yyw7Wq`rU#OQ@+ID0}}f-SZ@H1h-V$4 zFUpyXrC%6uU&C%=n|z3fX`Ars@#|axH}C+XW}?L2AsaHGri>U?OvN1wr@eh=tX5=- zJW}r@1Imo#m-QIyplf-1Uy&$w5OqoGmqz+}a+xD%K#Z2A-M9Ukc5&M33A+zTK%#S` z6|t@()o<;DN3W3^VLoFoclBhDgN^W-zf0AW@{giJ;`h*{&ofEOziSCwaS7Lf|#HiufyJJ+X4V!9OQkl^Y6glnpgTLWq$Sg(SL&762t)<-hX{=@YZJuR8!N5wdQv1M9Aw7ugYw3&bli>0+G#y(UOcm9j^9b z06lsa9~U#e-_LFZ0i9mt=K=aku;?D)Hr3X;Is5vs<(bh@z|n+{CM(?K4A0ANH)hW60~3O!&%qX#I>QwYk{5n*Zk1txy5Fn@ z-u2Ul>qzGR3lSCW>eT2uVL3^C>MvJ<>R9W9%6G9N%J==NGEEjU7C% zr;Q$UpjDOl#BJFV@3pW_&Z<{B>XvVB9Y5Je`8!597V$Z!-$3+g5kIeddu}}}F&-s7 zrgG7^=2vPOEu%gNKeCAze&KpO#+P1tZu0R3jC4IN$L9Jq@AQx^d9HEEbZ(q+_Oi%N zIc?>&W#1d`3{Klc+tF*}9UHC_x96EQkL@_uv%cml%*Y=4UBeqJY>;MU|3 zta$d|^L&Jla!s3`tJ7BF#SIvEIH`?3jP&5rjvfgQ5Gz0{O}-cU?h`wgatRU z5B1S6kKJ3RpV)}YxST9jm)vH_m-fv2D&8O(Jn+k}9F1x}E2rJ;W{d&lLX8jk5N`pR z2Vm>a;`Xp*i}%$VTJlK$MeM?H!Sx9f4=VlCS85*l;Op`T*8T3a&UyPR-5(V`Tg_to#!1 zTzl5H`1f!e!5odZh0ppEfAs!W-|oM@=sW8!*Kn720L&-Xb?3>d0~sfZ5k7YWa4OJ? zPFywsKV;gS3yjO;cbnE<24`RzsSPmNiKhel^$BQ%&)Bz&M={pw?b))QiOD$N={sX; zLC<(guEmp0{Cwfx@7LdzPBHMy{Ce>mgI^CPo#J^7!n;2gdm`hz2P;hCInR%3AL&Q&z$3FB^!Q^( zkHnsG%MM@qz1KMN%YJX=aTLGFH(&SBm&P9tCNl3WUhHT6@PALKT=n+$u>6C1wt6@B8r$IITTAL>=!0Il_}_BiG(ePuf^-Xrr|yvHXoaQJx~U1C4u zc&*=`G2ic;_IE(r_Q%m3qfH1NG(0Uo0+4*dujv}!{=EP9$g>9%dd*wuIS@JD-sZx! z7k>t)JQe5H?_brO2La?QB_9vSId-Nda#T#`Q@k}k;kgk8ckljq&E&a9l85RcH~GPb zJ-NL8v@v$yJ$U>+Qu0axInW2j?=6|X#QiFLB;U_2eU2*EBmKn}AAMgAy7#D?n+9U( z_uo^8?NKu0@j&2S@wWQ8WxrP*@5Ph-+^UbcM}CPx`rMe&he{4)ALM z?HvGH<+3Ab2l1T*eflTH$HKZF>tJ%6+(*XT^z7LIiF<^93#+)~u!Y@Yhs*0x-s&B4 z56@@Es6JgRsV=|qr^eh?jG05d`sf*0VMci3z_VvN%7-V`Y$yCbLVBH^Pp=Q2->4^! z@pbQ&;=u2i&#+EEZq2XP%cJ#?OZIxCKgxd;uRMr-)b}glsWJOLs-fPnl~3D)PGbUnNKf3F|! zfVP!-%k@U>Juh?}r(0}i+RtFxzlJz@abaI^m+ip-a ziF1D0h|`?q6Cbh3-zk3a0PZ-izgjL*DTXgkzH`d%#@balAa z^B%sZBhJ;&RL}LX1u_=%0ZtvW*Oqel>n_B{zryCZPjC8;p&jry)Stn7GH1X>`r6+s^>a+E((WlzGwsH?FMl)!3yxFuj{eh4KCT(d&w>`l#_pJkPu5kG*F*66YwE zxII6wRk(T%D(8bEIsScyAt+0J)84Cfc|Do4#99U7)_S&8}E;~444wes3= zY=r+C^lS4$_0f}7s~si@E=~UuzrbI)(E$+pqD?EA23!hIvdVVv`@+jPotm zU$W;pc|iS6>W%YXTz_pPMg79j1A4RNd&ZvJ9{&vAai3%TyUut0`erMiYd&V=D}Oq;;LZD-uq{A(nL0jpOvnKYB^64f?%2 zz611s^a{n+JiS+jFD=JLJr3`^)_r`8{qjVe zIP-ItM#FY!ih1SiHcuYL^?_s=Z~;a>M{C0mUdf{z?(6H7yPO^*ozuso3q)QyCO`N0 z7>{1}xa8vb?~TtxfW7#mIC8_!^F}ABe$!jmpI!Gjua{e_Qt(0kMTnE@bkL)uslwrofmU@k`ovZAem!EeyXPjetoL8?`^h?JQ z9kc5FP3hriNe*zT*?WL~B)701)x*);@w$bfZ=?E->Ye|n@4fN&u5B&9N7v0;{V&(W z(~0pq?sCp+8|&|R-WRUk0l-ALCb}-S?p*pD&iuIpk`WRf0x_0!ZuGEEDsH<;oa=)p`Ngrd^nBqN?O!|? zn9p-pbrKUE#wlAJY1lbVe#S^@L!uYGuWQW3tk$()cVFokJEl6=fB2$upEW<>c$FSs zN&H*icfOM-^Qf`)R4gVIIO2Hh>a%k{BER%!ytcjNOCI1|uGt*t>svn5i^P{ab6X@1 ze9DZQ&kK-KsFMLO3=1YIjmo3_*#9n50*M3HM;k)usy!+ck+zJTl^zG>2L8}qMpBSIr$2KfkCfn+kQi z4sc!>$phIO<`wWgJGv?_p^{=T=750`e#U#G;?=*>w-Mj(x9PX;lW!D{TGnn-#3g^Q zNa^zeLb^T6DF5{JSjs^kiO@k(`SvcxoL2`U>XNVC5=tN7ZE`-5xW97A7~tU{U;JDT zRvg$HzT}e&c%RGp3OX1h9GNHjd&`WQU!tV?fBu}F3;r&@gZx_dTVK3Cu4g?@fN%2| zHvJesm2Ir$?fE)R#k4PRo4&a3_wVKY5%&pgeuz`G)_GPWOV)$-L zDyJQr;5;IUL;WvhPHWMPJ2&&hl|JW1zJsJ(*$CE_*Vq01k&`Zp))sOaVr)Mk*P4HP z+avXkc;wSta(;qIKKhCsNluJYj^cuQ`+YqxvGru;mHb!sm``2@xjV;|zxAzMsLrj# z59#?P4__*a9_c>f;m`G2&lpef?M2C#wc*e443mZD{JWIpMMW$R9o9^n(+-OW7))z3bfT zso1jrXmK7rPt#bjG=DQ@b(sHiKi9w4I^Tkd{JC@DrnxGb^XTw$O9Vs zKj|;M0++vXfFDv9IKHgaCmbgXd|t~OU0aebvEDz~5^v8=x)%`CnY@haFTpS$?7fSSUI1fX z1*3f7fV;djhq=kDzZuF3e&V5i>}!5tQaT^DG^B*{l>x{P~=YPc|wxk|} zXq%&ZE-yUk+yOu5k@f;W>Ax26#AQs~O~!uM@G;-fBgLmb&K1(vak)pr2DT@O-)tMd zg0s9jXkMFjf>cggh$~tDqJFmvpT|Avdi$UBqeYyGuel39*c_vGNk5s#vQZCm-t0|} zfASB<^Df$}S6tMb_T(e3OXaBRSIt@GE9WTuk?yx#UmiomsWV2Ea*Yf1R7ZO7!j22{>I@5$H+`oSPs`^FJCGP6dKfX7Y1y|9&#Ak$6S1$6= zfq2>|%M*k0_6gJTP2G|4r7wLi?2=3#bn>9y-pQfI2p*erIUn|;GWpZL_eu~s=+)Ww zs#Q9cvAF#=d4(rlO7#O?q$oMjf+q|o#N5{I%R1Wu-<|}E?J~YTcnLGg2mgD^j0Zo* zaevnW?*I@+Cs=&ztLfzgcc~4Qi{t{QY32tcZ5$UhPvzjoqBv|9>GUd~4uI0@m2#cL z>wa63CSUe$ZAay$Ki^*Ev~^qk`_!pJCZAYmf50J~j~sa@Qy;_>pzlMRPvl?m=EBkqbIEOaK5K?~WyG5}jWutWzv;&fFZ$jb)7((6=x1Gz`Ru*au}yr;DIF{E zA-`5XiWMm?`IDodzOJ#y*O(=7s!u;pyS3m)KXl=)g)#o%GJe*VcKjt}tAFKK!FF;x z7?)`u-6<#F%*)Q}XIqIA9vW^rN_4Rn^Z4UznbK7g`aiP27S|0Ao zY#Hv@m4bJemG`nuV@`Mk-~dv_SLcSJD^q55xyo;Vrv8C>(bu)!(7zFneD#k7JQDq0 z>3ndk)x2i&nDm3|1&t@)<@sWZPv?KlW#Pz=ng9!uRTd2bui6?I-NppXnWwy__fArGH?M#Og`%=YDjNzxq`E z_AK)2eecy?|I)1%MqGN~RoC~we*OOE-+zDp^B+_kX>>G4Db)Y~002ovPDHLkV1l^g B83q6V diff --git a/wwwroot/defaults/motovaultpro_icon_128.png b/wwwroot/defaults/motovaultpro_icon_128.png deleted file mode 100644 index 7a38de2166f513e9fa576a04ddc9746e3590f43e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35057 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 diff --git a/wwwroot/defaults/motovaultpro_icon_144.png b/wwwroot/defaults/motovaultpro_icon_144.png deleted file mode 100644 index 133f1da0307ef921e1eea304c294d533ca07fcfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42850 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

    #!IV8`1yRvZL4T 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˻hL2?mTC^AE=zd31l4F3)}CrI&kqPN!E^%7~C7 z0Wn!5GJ!S!l2U&qv({NbW`qd316bR;n-J(0@gczJpU&FNocgEhp_$b)&dBJ>ZM?eS zyX^-@9N}<`wD|5qTdm>O%`6h2qDz!M+S~p(jRfvOb*-Ou|XPou^nOsKp9X6X^ zz(G^JT+ct0#cV@Z?B#M@O^#5Q;7(b^)#Q*gUSabGTL)I1v{J5DV}cp=v?mf_v7ZAPbSC(46_Uq&1b=fUAK^59-rtAEZoCqMP5xVi;K z_e_(OlKijK$ZVes7n5M|b@(4~*zOuSF^KE%u*OmO-H3V6&_cIiyJ4$;OJjA(cP#*p z933nw`e|Gm@97^NwZ8N1T?e?`^1h)*483;EQm)l}50l(@51{IO`g!x_?cTZb8ZNi~ z@b>N7hr6@O(*e|BUB43xxER&wX)5b*?PlIVF;}J;wlcCOp7yH-?MA0>j{?xcv;C;H z?)VPjEVz2mPy=No{`QP3T-u+c!|(2Zt^a%44i~H@n!w$(x1g=9^*0r*dnewew7iqh z2^Z0I#hHQ+F5PNr>maNa{A+Z!NQW~`394W%$e}K+Ur(D8d@f0M^Hl5sVP!6toNVO; zk6Q)~9{6`_ezW-Ao*~}(>m8_k=K%UlJ@?#UgZKBJ$!*;i?Af(*CL7I1vBz}~o7~TM z=VYW$twCyy7NXV!>UQf%!NFwKSPpj2Q16zpJ@MvO)|M6L;UND1x&oAq_e*u$(Sb1^yB9;IE002ovPDHLkV1lgwEj9oE diff --git a/wwwroot/defaults/motovaultpro_icon_72.png b/wwwroot/defaults/motovaultpro_icon_72.png deleted file mode 100644 index bfa2df3340ccb5d82e131d8e4250549e518857f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12480 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%0A_p|bX=C%tuLk**0m>&&yt(q&7_X-k%tc?%b4 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

    f-1I7ihUk>NiEYETdL=MrlJ-P}`|J z_%CW%JI4N+)vKMC9L~2-_rbHQ|Bw#F!!esbbohuedD>VR{LGw2yGMcd;Gh_Qm+%)6 zIld`phgDAPD6h3%WiXCGst%q2$-j}V{EBB|JczdU%aCa0y>U=GX%7vDiSexh;Ch5@ zHMZnn33$;Z;oujv5p!D#^~15_+8QB)>ImBuREMi*Xdr;==5*GC(mrIAPQf2Ft_)N8 z)OvZzb9@;yePWrVUt!cwM#NDK9Ie-q@{KxFuum&S9@jwNW2;w|?b;u{L#rpaA>)XI ze^_#0)r@J#&#ajn(S(0=8qfbAM_-4&0mcwN%H`ohM^t`aP?_Cb7A%a_0L+S$-?#(& zRoX}O$dDZ=BYTAFANJ%kFm%PMU#&v|&)0JMi5e%-VUS7#IH_wVjvrm#_=c;clMBjU z|JC1?uYK(w%Gy<{$`Hz~WT9f^3MSHRQZM@l*^JU4Bkc+YaxPo8tn857-+R-0bx7su zzJ-EqJfoFQPd@%=`AZExeDK!Ww7pB)db9%MkOmAHgvu>{5S*x64z86k&LM|?^oL*6 zYNq?N+9%FKaQnv~Qp-7;27E_9^^n?}W4n)fK;^;Y7SXuGv zD_>pixbw#?Y%l!^KlFj9M@J|>7z9}`e?fWw``_0N~J~N(thQoWTnR7sPrWrd6fpX4Irs1dX$d*q0fQ?F53JUu)vRc zA=^X3NsIM>u=+xe5eFXNbL)aV>z||{EmnAVX8gh6pabv7ji>n#ej9?W5hIp)stA)t z8=vcsT0Wr{@KJWNK5WB7tKH8B=HKd|4ZfFiImn35&Zy`QYVY8{)AL_iW~$YdH44^PewfT!rgM*WALpUh>SwjDkge9~xU!ap>Vs- zcUy1U;ji>P<0VA_!&vq;HNd zfqMXfib(J%aK=RdVLU`33EZ*N7K4F|O2!Gpk4gjQZz`|k0eS?WwD|EZ*Z9?Uj7}SJ zf&n(;E0ST;m~mwJ5su^87)K@%-);;PM!`wrD&sg}@?#l^cfmRhdLjoD(%ma*%a6D?50HpA zWDFjcQ^IO^=P6j}QSuUb3!dO8@$nV9Thk}vDJR3wu~0{lYuoUbrk7pXvp#>`-11%- z;AbvbY=cS3avEZ3ZqP7p5wvXd#IQm>2m6ng|NVddto(^)|5@^j&a?LuJ~+KLq!Emw zt8_+>FnS;&{n{5hURTb&@0Ocq`;s}${OKp2D)-!TZ+ZOD z$77&_x`ShpCd#=BsOwlR*IE;H-ec13P zI_b=A-ageAeXE}@-~HbA%Kb|p@^X4+l{ht?vd5uXk7()qvrj)&w#yhIpZI0|w4c1k z$-{6KKlFjR@+gNBDp9jo@_+ri%ddU**UAMKoG-a>)t-Z_FGtitKT2mrT%$V&Wt2Vj z^fTp-yY4Fg@K67wL;hBHuypdo$u^cJO_;2^w8winKZXDY(mna4WU6x%o|5r@NQZVY zz(mIuIqH85vWQps?fyw)2l|OO%P)m!iJtsVr=$>pANZ(u6hb;>yJ9#T)?M~Tbc+6Q z>DE-8*Kp3c=ajd;<*nuYIwhu^PnDst|tTGfc_FY{r@T|DY9Wx@k~`o@p4MLmWtN13OdqYmmRt5?f7)~Wv1 zi;$LrqJ33V%ab@GRW`1gH@loaeX4H*ka=z$lR%J;+a@xI{uw_8(vX}{DzAh{KlxC{ z>L(46mv~^HOkl$l0iEZ)N4hXngP6m$rC`{89ptuqUpb}~5W}_d=E#n%<;dm@rGLZP zGJN}{GUUZgvW&IY;D`(u=vJ%2 zpQ}49JL);*<2G%@U=;%c5cB706@#{PaCITuyOvAmpU^<$S!bOcD_6u@PmSkxOSGu7 zM$4FLq~yx9*$?i<~tHWm!pmmMR?P%-G2{0B0feO z*dr=bGC_W+|UM2xMh@h=_KiY>IPvs=#%l<&rBzN_OFb&?v$?LhfHwb;XR+k&A~DID}S20 zv^xPW@typf3?rk8$hG#jWSpW;s-4HMVfH=^hcF#%CTD> zz=A*J;yC(~@Iy~K>%3+F0APfhi3-EEGF%BIvwlWU;#2`3qgaZj3PC^5YNLWMpakHc zVFfjni0bQ}>NjDLVT_VT<>HxEcYM+a3|!IN!Z10tG?PJ#=*n+8;TGs18F^^Pn&gQF*f!?W*-gK^@@Lhp78!y&h}fAA{)1m*!0 z$-?OoJWsznW`y&ah0un(U_vG#Bg>tgSBm+}fd z!k0<~x}qVurOUKH13jcHV^AVD)3uB>;2?TEQtmyPwPVlvJAU?O%H@|`(wy|KQX`b+ zK2iJW;%aL{Jjq8Zo68+P{&D%ge)o6F`Za6ZIgSXyc}NDIc*|Lcp_&n=lS#VYsr~Gq z{ncMCv$d3UxcFu{Da*q)Xcl{|I?Ow^bFf-mq4&_zr8cm=d=adcK|FbH8vt}3GehB< z)eMJZQBIyRrF`P!A1}9k;1|nOorX<1LVJZL1y0Nmugos#q<&nxw|?WM@{j-cPcr@= z)NJtqEdd{=Wx!+9=|5aHXcqk`4N$DYsMM+j>YsF#%>n!pW*P~kCwWRutYSKKQ{~%ltX>Jt)#Cqi`HLOG8UuvvuSdoxSi)9rE{sJANo*W>*=l8A0~=PnkN! z`8<+y8Kh^sw6FVl&D7qj!4y_f?A4))%5Km6qr+kp^l~APZaxXYN#gO6e^Y*4-WlBe zjQ9Yf$9kY!#;I=!{g4b$B~Htnr)$RWs`8%qzNh@sFWpvddH>Djr{DV1+K+v%mHEK3oS$7evZsFUur&+wY`RMZY@I7s6Sia>D*| zI+a!c;xUXsyJZ~?*ijk)xLSME&)0tKV|%xkUI|1YKw3f!PGjJ+S|ubHq#Ba?49Ex% zEyfdH{X~}^66dfuRv>cqV2{cOCs_|u8hf-7XQ-|S>^XFx^e8V5Nwx!#Q(7+YNe-YALo>b4(mQq%2T*zU1t)%Y}<|g`&sLL@*#I+V&hS9R>Q!relR>n{)O4B%nA1R(TV&SgCjwETI^ z_z>VdjY;FFu!a%J2G;2#jU77ecFXBkT%OeF?qhY)Z>JA3bf?J={E3%1%mQS($|<}6 zn|P2nuFW^!(Rbsm#lPM&KOHd0AJFBmjdK8BHD2SV2pt)9-ZOqaiI(q~R@VX65;P_L z0hjNohi$)xZp8<11}sf372>xB>tw{hAuqgY!3j?fg=K$o5~YN+R<7WByV7o2vG4( z14Sn?8Y)B&Tmb8VM$4I2O)MP|45u`_+@YlND(S)t1%*bCOvDom9om5}6A3&HUzD7< z2%Ao*GeiF7leE^#5%{Q>k%8z{S>WI8qJS{E6np^>-w=$-I0O$L!Als9@CRKgWg7A@ zx}pIN8sbMVnU0WU<+a5`;suY>Q}fL7tZ-Sl;kDKe4nf?&C2sR4k>+=cjQJp6B7M=& zM0y6|AP)Hg4$qwH+j%7&h_pohz%MW<2gfrnoslgMpulq=ZQ}C{ZKqjrcqdX~Us=adZRR~Ej^Bf^n0|3ceh00`RXKhCf~2oC4beKEvr zJbn%*ALY;|Gog3qTjepgwX}J51pUDeQn^ewV4@uJPR@Xfa2k=ega61m_>KV&WQ9!m z?)U}&-fAEQ18<~F9~EWzGk8G9l*+|;XyElTpUSVuHw~OguOhk9e_^=lwXZ2}d+S?u z?|s~9E-oxpkcWJOOvpaui!N*RYe@W^#J>8PtIL1;AOE8))NCORzK5w3wo@l)bLf`rt+HRsvY%hGR{Pi=(z4g3>a^_^ zj5^`!P*U{GW0iNxr&I34iNX$JU}&bXcl3zz!4H3^eC(qiE)#U99bHm}N#M>L))(TS z8M#tnk9c@)WncN*zx`@?_|Zo^crihpS9oP0W5fClomhbTbz-uv#= z^^3RbfU6bSe|x}7;Kylzg4szr*_M~;f3EX;@PP+>CE*S&_eW+&)L|c~rNY!VIP%&h zL!X23nOwK^BO=z2LDH6Snx~C@21%f)A2ZTQ-+mboG*evFc7g6d|CyhCn{TDK@y2(T zYcs*3ZG1N40{28AfLKkLsxsZUN9$rherxCdw&!k?js; zq4Vo>_>o~~5oMS(3Qj^r{tRfbmBZ~Z@hNl42OLl0dIf;aGdNcR07LfeDkD{gu&*CX zz^DeSPw1=-oVs5B52$$AsS(sGIgw01Dq$re3a_86=k;u891!U1J9K?2&T^6lHpi%b<93f1bY{R(ZJAoEff#NL@Bkm_ zMbCr_V~8y{V{~@Rsncha`Sa&#o7J;E2z01c94S!$E!A!|6c+w^u>&XPCG6L#n!_qv z6Lii9^^f&4+dRQg9^gZorgA>TGTy9%HaUbe+iwt7X*hmR&|ixqLO54|!L+sO)|QK2 zb&*!?Oi-L?mtmGRFJu+z&Hfbpu$p7$^qFPt+I3nfwcPpO)lbS38x`og>UYonRz_%_ zq6QEfpF#Kn5uf(|5hokr9JZIU(H8uXzWawgXQi7a9P$0X)@w z&NxYzCqL6qU1;IXGB$M4ndg4)uqt31Gc`dTJ!G`m5eG7qgpvuKsW@TuW00{&IC4E= z^H*>f1SE(`gUYui2+;QIq$?9;d>VvQ$aI#VWvr?w0)I5x_)}@|Y=i|xed8QYv{;z{ zOz2e}76!wL}jNj#fuhdC2^dbz_R~6S}y$b@@H)LA5w>q8L7MPzN;+L?7vT?7Z3DDk%OD? z5R1~>$+zU64uFj|_3=mOY=aMc;Qi%SKK+?8ZM5!n7iZ)@wobdFKBk^HPK#F=l6*xo+x+RaYwoT!KJ>A zjw`sB-5#qGxtRszZgU2qxH;kBWe@va@fS2;z*1%gmN+?|!3x9(yKtIxlI@0|UUFMV zq^PFLF%YD&IK7cZFjYTe<`Z2eo}SG+-|?F(1LQ4ld5cc#zEQLNxBC6O^Uf+0w4AzE z%g4#LJ-QRTZ`G>uqkHbsSqu-BWe-16)=B=`bbudM*)ecK{mh_;(H3okv zm+G8rwwwAT%M`4_ccTy1`Pz16UWz{Ojza;@t6&?)sp_V3ZoWZEY2Dx8)SPvNDE<`Wuim+7*OYw#fV6mxx^ zA!|bYEnKcMKn6d+5UwZXm9oNBfdbO6r}RtzSL=YpRXR*>wYKN1)4-S3Yn1&m{1}=! zES?W&AaA%<4=_+QPR8*Z%}}2|dv-Z<&fKzK)-0Vf(o=dR|3kZXmR_B`FhZz@iF9<# zNmr)^GQXKT(T^qJk^WA8Md}l5uyWRsPqqy}lje*S<&%L*&ck4J4CRBtw1826$N8?o zN|p1m<3?*M&@OH5SXI_2Z&?;SM)k`ml{*fhGY>s6=rT?#a?U&NT+OzhT2^T*5oHqn zr0xc{qT2B}fcLI^B@F$g?SpOFFJ`fs4d?JZt~sO*U~2$dlwQyQs>^g<$&48@eDJAt zuj;A|A=O(nR$`^hnKN4l94;1rYs#keo0a#;6mkhZLk`G{U&qmxrT+nMY?EMs2R=N2 zBE4}NC44;TtI=-KZ(*Q-GdotTT5bQt2<6n_^h=V+fPO3k7+bX!g7Z5rzvA*3cts}C zEnLVk@|1R%@(zE_Q*H5?KK+#Ps1B}WWyUBSe$9+u^Z}U|pgw0nfc8}SPrg@i(06oS zSu`9*xPFl@K`+Wvo;eM`>6;&}O}p_YT=F)&(;PHU_H9JSKN1H# zq%%+Xp{Mz;{It`Fe-ppLwW2kzZG6C|OT5$x)QjjYJSBXF`>BA8o8hLd{K7T$s@~BB zNv44h{S3OqX~%bD;>(|SIRIdp*EAjNbd>ShL0At;)@@UgGgu-zt8{U&n!cyLhr{d>5%hk{YXPx^w@39Unq}aew{PZq? z;}V%aTHn5dmN?YhFyjJCM$v*qK?vfJp~N?{Vup&J4uQ-9F%6TdTvVaDHxXG4B`1iE zeP$kh$&dFGDx!s53!aU^2EQsCy|WBC1p^`CBN%Ye0LG}agy)7;zA%GR@`=wEeknNK zJwTz31~LLXe^DqYz)G1qEL4(o1bIR)w;lNOX2+|vpu($Y!jscW#V;>KQv6Q3A%^m? zgivJUA|0mTQll{BK|bhj(r!P6GI)V;!LVPIXYdC;HIgPSZ^_E}rB^SN)Hkw#56eQ| zAx~^EW_ZOH1jK#Hz0E)G;UYfodJFj~%??-eAzELW|Db1@^7pKb(oQ1|74*XxD&E9z zD&T>Dcw`nS@S%si8JWYVr<7r8;Gm;-3n<`}na070FG0lRjhPtJ2NryaYXJBV683L< zw9j!Q8|gQ3p@VGb@kAVz8Tp$E;iAJgdGJyW+8Ku@aYBXlRG2kDesq9Ik4J_3W>}aGAFuQ#uI@ZpAMuJH-bd=@Dal)M1^d z!;s#0^LxwLXP)8NUj_yuy>JHN_-g`gNn(%*oj<6(;$QruKPi9l<-aKVweOQX`<6w` z56c1^siQ{1ssYU$%II2j*6HQ<{^0k@YcBh#GMWyT!VjynyjMm~-`X|4{%@~3v|G2n zSRT@H`v>p8Po44YuA11#N_Mk_Aq*dhHrSP2lAMPh#_%DfYrHy`xBlX-bp9->aFvG=8}? z;bEN&{@{ZT>MFZ!t~Z%|rY=H;G~`H)f6ivfq>3~0PhXa`Aryw(n}3p_cpOpRccidT?)Rqg*h+tr7yY}*q(rn|99uBjWJ}KYP6YrZ= z-HP!_-5T{Qw2>};yi+{mJKICT*-}9JjPrReq(R^=#|)_Hz)@Pz{6*mhAn>~Ww7i5s zOc8IBwu-Rt7#Tx@xLIG~!#ljN0^kCjn0|?7&W9b`E5lf`C;$i^im>gx&f%^oqQu6$}HJi#; zS8gaj+`6;ewRKl{NK3h&+qAiiR9T*;nf{Ue8obirfJSAa4%7hPa2dv@%${E6Yh}YF zijh$R39aNjf*#k$k-QXApT~f|TNR%nkMotJy;R93!ptJr|fHI7M<(&rfPt$SA%jyq5r|n7(7QXIH&kKbPK}M z&pxd@Uax_HF=g`9sXALC`X0ildY&7Ww7qA^!t$D{uGTf7TQtDA!F4(Y>5*d^AeF3B zA5u46&yf`K9~|;X%|{8eo|!DOfb+C&TEYSePPM-^K_=r|)s7?$=n;24#@=TeIAI%F6 z{`tMAvs;)vnlWRh>!av%M!Ra5+HJ+i=G=f&w4JAKWuIgkgObNoh9i^EcXTu8rd${d zgD-F`U%p&8CX~}pKV7r?y;{Y=mV)3p`6C`b&LSY+kSl{Cy}B-wb7eRm#%-kPD4xFg zgnT2tg7p?sy~Bn3Lu$97Ev&}N`#{%~mjsiKa_&nR6JFt&xCjqF(NvE{G4)q^UQt@ZMRjT#)US0DW0ZJ9U*}Hi9=)J$v;*; zc{PuC0p9g0{3*VFP=kiTEU%jMj_j(3qS$sJDt))=;F|uI5XgUE`oUrT1?x#GJ;4U8 z=+}1gphGVZyAMk|!4fCK+fVxw<{zBU4-E;VOq2VJCr~?o3%6|$WU3!{OjqrP-<2NV zf`i}zok=|;%=S@W)ZgHQK{e~M+oABwuzYs(Tlmf7Kse%4E}|bFve82{{ z^g#dgOdG;=slu!SCKq~V;QA-=q36WUZ-S9S@{mvRGIgIPF2j)R&_!pT_c<@YssRK7 z)&K>s%{K^eh7&?`3x$LE7#T$Iqwz}|5hIAld(gn>ZVd0roSAgSfinsV_ySkN14lN@ zJgERU@fGFBncYk@6+SuWK>@`x&WfJ~kH!Z-PX!Z=Zy24S zr0uk(phJ#oaJA%705*lQiQ7Qtf_oUA}|&rP#ULvZ9t zqZ7zPKg+@LQ-y*YstylGqjW0eg@5D`kvs8|*L=cr;s}|xWHKO3c|RCU5Xg~E8||VS zGaXruI{34)1lIBwEI5N#<)`$EO5XSs7Cc5c?{54QnEbkeuHS(#!ld{rN3jfx^2(C$ zH^2G1^2TegDdV(GGyGy~#$e!-%Lv`1S|tEjs%u<9l^r)-&23@wKmi zUCaI-@RkZ@Xi4WVo!pLrLFaFm_P4GO+_Gg4mGv9eN8Kk0;gEq{!*6`HJ1_VkPh^|$ zbeIRa>TyDV;#qIAe&!Tl${Yh99O`%2_454rbIaS`_LlOI5C2m6kY@Yec-`xDb>FNq zQCl@QU!q@E{H>L&A9(P-@~_|djt=nqwy!JWyaldt<1~8)Ush-<%7*nDrQ_OvuGJaj zD@*u209=(rs%DcR}Dqkixh%mm7;A$;J68y7fij`)Eiq2q}kd@ulTkqohm=g%o44{H`3W5~EDEs-a}(BzFh$&UJS zT9P(?I7ih-<1Y{LPT#Z@y!sc=`cVCY@h|;i)?e0tIW%-c*(L+)$D6j6e|bSyaw=cf ztNd?NJH1iHGDdLkzTM??Esvihe8Z%#N3<=VpEPR_XQ+(HqJfiMof9xl=P%6Cvh8!G z&no9ETv!%sWx$x8k)>bTd=4JmRfcH5uvao4p?(5wHuWf483R(ZcSu-24?yt-uP`sd zCphHYX=_giZaf4>QuQaWglzWg-s?dorl7z3?~n6dBWJ zdx`wYRV#gkWv*lkrUsKS`O|UKiK*+eX3egBok*8eu+|&+AoJ3pjK;4erE+p5Yq*`V9^IGTcD=lXxP1k!IlB z4`}rXflru>+x_egkF-R+L>T#(+eG9nRL=vm-M zKxPo|3D;;+%P+!|Eht~jw1$QfhCeeVgYlL4(!k77SQ{V+zZN3W1|EmYkIKOvDfwAJ zBp3`zI;_bz^crJN4297yVNn@WzOuunPiI0JK28gK*My*K#KRw6hz~E&#!+S9f;Q>( zr@t8y_voPciHe5!={))-`7nqAzcyg46CD^3+FxFvHvf7;&p-LXAN;^IF){vWXf0d8 z5yuUY_{IP;i};fU@TwCGFKs?j;h{?Wd!rOXlqxx}5%29HvZjbzfy(NW7< zaRavMGik)RA{PHLs{N^%EDm}?X8W|n{(|$*E7$9E`RO`Q9h$7naG5i-qDw}`L~q(J zRO-rS;eYgzr^?4Z{s|eC>)feC_J%>OwL@3Yh&L)eH45_Aq@70bddjc->aS|s!Mn;h z-91hkFl-NKK!WAlFK8xrhh|4HUO7zf!FwMl&*@;hLt5S$l{w5nNckb0@Dm;WU_m+H z7ulE|02r=L?=837QhrmX=ucN?H@l}PCKl#~I*3PMJuEpK7D7(O|JpzNLwV?-r5>0# zb;haQ%X(CX>xOmf%PK9k-KZs_2ecF&g2=%6z*ov4UgQ&=3`j5-c|=AHx=pA2w9^)s zTW-F&eBxstSDxsgF5R1rn1ZKBlkuzE%XZYkee1O4;#=iAx`p6b?OWx9`r$IhhH7O2 zOMO|Iyk7>%s@1Esa$>0lPF8saGwbIR7E-iJLiH2*5tctC%I`IJz)f81$N|t zVT9ePiC=*!4Z0Im&-0XOZ)n@T|w%yS7$2pJ-=E9 z8UCQ${*Bvh_&@g8qc)tGxucEa-g@e|T{6m6_N^+b`ufUF?b&93J#EaKS+jje;}FTC zBTc>XrTC=KKmp#@PCL1;~V=Dt)y2a9YA!>fc zsqcJ>ifIMiI1!!mB6iEbZFd$4@09Q8+##v>$dxiTsp4R z6*@JdJghSlZeO*!JTBvYJH=lHBhe|x!C zpc^Nid+s?OgvW|C1xlWspFZu9?bMau9mchSp!9v|=q3u9g9WzWT z0l4yV`Ez}$yGQs816Bxt-tCd7G5~;nWAx6Pb!wTb6&f2hZqe$S^%4{lC2*0PbZEyL z3e|DZ2KIQ6gDVHeE1lqlf7%;Q?$pG=1I2aG!bRRv!9W@MoqdJCS_M%_bPoV**LATR z9((x}KjrHgGhbPuglqEO{Hr`jAHdJ`iQ_bY`s7njdB8%ZnClr&tZDFxNgCoh<+Xg% zE~|7HE^rUz4L=}UMwM1a#ncM>A20eG(wSNY`1WkL zn06mj_)exbmDCB3qyZ1@xV*==xTWr_uA!}RL4S_#_ER1S>L*{|Y0}sdQuv2_5^vD# zqyzc$4~b;m%{youN6(BifUrIY=O1!1pG}(DkU_uglkb6dV0tpFc_tt7Kn`u^_!WKf z;(?Gl`A0axgYln!ZR+XQrjhT!SzncA`hd{m+jRAOskjXe@>#GL)})1c3i;!RpTC5U z?~rZV0B-WB6{nki_jlsVXG6k2Pq(}ibO<4G?k?M7(__<;-3yfBW5}kTGP}{JG5}n12JEb zzFLs*uD=X(xcEjsIKH8Y{J@hqJDo!DCwTn%krre}BW=1BKZQ8=W4RKQe-!j6#tlXvsYF!aTb`1*5LT@fX#tZ)-2<(9lO|EfYWPA6XFfwb!%aOvQHxbS3ubu6+|<2;d$+bJAf z;%A*f){+w^*N@YIXg9t0#&YKAXOvOu+|XGRq*g14RwdMtq~82N2%Xy9kShSa-%>E#%f5c&W}S|`*B$B2 zT1Nb!X15=G=waVfz~BYtIPq0BT|VJ2`9+2dG}yM0=Lc@NrF`a-A1~9jl-f0p`qoOO zc{wOU6Is$lBX#h%Pln9{_djIgpCzS3B%i5Mrm0gu%6x2CyVkSnEaUbz7|GZ9i4G}# zll)}J%&FY_TO;Ax!;VopN&E9Jk`c^#1UJ0<1|QnRpbLA~hp0|FqVpA4=CA*b%dG$M z70;Eg{{7#VAM4hIZ902^4*YN(05)9tFly{5@!qd}@axJm8oYS+>1Q|mK*p*K-OO^Ait9DT#0t99Mtt^Jz63?RYuTtZ@R90;*%fM zR)_bOH@*1{<+O#TioZD9fLjY5c<7<>4PDXqEuAZ|LI%;MO)m&foMS;ddH17@VQ35SLX2 z4`}Pe^Q%{TKlm;!W#6p6&0MP0B z!;WcoR_!%|b!3|d>1+jeusBTNv~3>1aQhmA9MqB2Cun=4r=6$+-^h0vO`iD&UZKY{ zn5XmN%X;DduC|i=Nac062CVi=25dRO_&g#beWtc^Tzlqe<)S&W%E(>&O3%K2=S{EL z{2`iQKCFG=2lnnN{Tcu`q5-r6+qUSO0F_1EHZVk|3XUD!TjuIoy33XyJrxO{tU9F9d^4Uc`<-LYP9MMRyg57cr>3Ccr<-$hjeL;64eRYD8U#31XAUr60S|=l+_}3v zrFw!x^CnG+YYZt{!-q3#7D^3G=*`l0fdvZ|X)D0GvU<(xs`J#AgjNRi7B1Se{6cP& zJKEr_TeoWEgs#@q;e>9J1;lnRc(#$KZ)#Ci*UXzgUsoos)0K%jm{a|rY=7OQNaT8| zDPM7=eI zZ43-n#KcVG0&$!CpshtA^eYH|t&e@r(QjxCTCAHGkV} zO4=D2-#}s~dCCER{C0TdBl*J~Xw#}(x*f+qQ3Mx?bo9;4)qY^WE*2VJAGR zY&&I<(id_~y+|E4U(TbzGFTn~gYLI^7$6%(JsEEqhcj_-=tufV;P&H5J(@TP2M%X{ zbf%SlK^wMBGvyx$JAV^rt10OO4)TV64Zth9$m}N`07$}Aphj2)2+a)RoiKiMPD31> z#B~@UM1@N*G)RrV;vqZ>OCUBZ4as|qv_XRec-ByU(B?-+3gMpM1OtBJHwq+J1e1Id zo!5XF2EtTyz$3@J{CeZai=zf9C*|T&?H;Z$Oa05~r7?D($4lGO6h|Uh#$> zydhExrjeocKxO(Y#lAz^DC%51i;v;EhI_4p0Yw$dLHJ zW_~3fC6F-toV#m zz*$x?IMH41+NKkP$XL33Odard{lYuTb#J&= zzx{>sH(&ib;~O)6tglB)zMTfui10@qWj;|GFjoAIcm90&!teY}nXaX$T$?vSg9nGz zvD&HG{;fI;i^KLX0x{|yd-&0EzxI0X(5irJI71fj$`20ptBfYU80?3X&%G_85W7cb^e&S6_9N4?uK^ zU`juDl=P%m`j*?JL+$Rl|Nip7|Lo7o(=zN2D}58jPqfj6kugjw0Cr1;3|Kt**puZ& zottn(dBr||%1;cK!jH<6@Hce|JPNknyYx%QXOIgp~M#uN@Z`O-^ul4%zX z_3L`E{kq=r_=qxl&U_tg`19p6zx>JazFTf6mtJySnKos-$~c|3BBSDYE$#nK`P$!q zt=xD21KMxBRRe=)UTpiazN;+o%~HaH2f4Pa*UOog>1+dL@F@qJeSl)Z<2K=#Jb6-? zJaLK)P9039aN3%vKP6`H>BklTw^w|_jOqXeUa5oF56!ag)vH!oMwD}(K_WPB-O%!C z1{z#WMHBw==e*Zn$T+<8v;}1hd$3h@ zJ^RWmtip}kmb_xh$$!#_k< zX8DmNI-k9Q~qU8uX$JGU)UC^J_|9U!V8Eb3h*l3SxMYAM^=E zjTup9Y0%>}sttHtt_Hh$6f$PV-a`H}17U;JEeh+d|XvhB_-KH>%4+{i$UR(;K$ zJ5PhZ<7Dir&JeGxLRq_Eo$-wq|30)3-Nwg=RkBq_4$-QuY11b87J&__o1b5^PKL5p zbqJOfIc*pEEI#42`7zkdb+<=-v%)-GZOM!~@m199T;rif(jjDmK|Xu-9A8n&77N-i zm$RL(q%{13KVx_EMr`}l^fYNe$uf+mzbb6?hm3L8xC3o~h%lgyZ^^737aU2qlJO&P zo4;0ozolOy-uRM##-oIzL*V0^K7HVB!J_w_&kl~zfF>>hgV9bup6EY%Na5x?`kWOx zJXV+KGYs)EZxe>N`r**Se6P_5W7k26PZ0*hN&ogU`{ap}XXv8j^io>@$i%jRO~e#1 z?`B(qXuBlb7)}bLW6J26Pe^`4Dz|F3*!23+^nM`If zNoF#WnM`^im5$O}z_Pn40;0I=ieULxaTRr!1&LsHyPtJ+E$~SP0TBr$fFK*d5JKvt zOp=*NCdp)aulxHw&w1YW{@Gl&78NJg1-QyKYzrvhyn&7S0F`g{h95 z1~~o*w7j_=-C1Pudj-FdHsdLqQAeu)iZl341sI+bo9UGWGXcHA@Yz2Jih&4VntzfP za#xx0iFclqmG9ogAA=Ig7&?t#^aQMclyRk__y~THqw*5Q(AE2>b2SKz3QFwa4%kU! zbvpf;f)#S+x%5~FQ+5taCG7>!P8W>`VAaf8=DWI`X#x-7`ddlsN`HM${VmCakG?)g zWWdS6h2*i|3Eu{L;vWxym`oa#9hy#Oqhty__~|rerOyS=yD;;fdMVAi^zUhVIS7B? zE342|`6J9UoqFicCt>OgFMQEqp^+Q9FAVfler-64Pn{KR>3$59LBH{ZsxEjUHHm11 z(#U2u<+95zZLfLt5445MXzM%}P#5?~RCJ`TeCd}wf9&Ib)Bf{+{cml@w(V^$GtTCx zu!pYF>t{|n#N#TDXFU5E?Kghy*ZADu*%5sfbRT57@OGBeZsnxyZOlmRW0w1IX20&d z{r2{^pZ@}f>utb}j2l^$0@6;kcO&$W;h@Jc_?bqU7rgL=?d{jStzCY>T8^7bD&s&l zlM@e16nQTPx;@PN-|*Sb^BKL5vJzo4C(fT5oqzG~-oA^@|NR{JcTd~H0EL}+vn?7Y z0VQFWH&tGWuE-}kGl$vx?3WJKa>D(O{^*akH@x8u?a~W4=uiCtm<@XMBJ8~~?`%H& z*tYiZzxf1*E&f@Y@I9Zs#HX;FcNv2SeqKv1JOIxn^7pP^-wweCUR@tybi$qBL)<5I zT|X+$Fuk^U#ta6R2vp@`rj9(?zwZz;!H3$aHEY`s{@`ocTi){K_L|qes$F*Rnzn>b zpvjsm8g8SJ{=pA@xP9vS>)UO7MPV;XrL8-%kxiY{WjiF%6=UkWUoddb?&b%X?Ssa$ z7j`bC;~=V_j2nmPz;V z&!*7MVb#lQ6lfOL;r)9#>wwvG_R$|@P>a(>+brTPV=(8^6)V~$YtL<`&1D7|HFsNq zs|mF6GVY)vqa28&c$(mcS41=6o;YqqR8$a~c8!;ionkYcb;prBfRe-RJb2E50PU|G z*~8?QTYfC3o>1>+1vhNCFY=-W0kjw9RU8OPy3_eK{Z&_8MY~~EyW@_#C?{+c0aNO* z+FQ7Ji08c5Z`t2s)Av1e{&^=2*AoAba*QRFWWdn!$Vvbae$tO=*g4x zSiT)>JR~0sL@Zmjv|W7BB@AY4i0wFs=$KdCUic^PMNj$LncuT#cYLKlx#SYs3{@5m zhRCq`Y`7~dHt;n9>pTOZ`7fb6eb!QEeS{ur3PA z=-GD0e9E&27OubhZnjU|6Shd+Ejw-pa=Tg%U}>K+FXXZKEV;`Okc-NAmcJz0P+VuA zI^WS@rHly6&Q1ACt6>Q*lji<=>`||qjpH_2)0JPw9Mf3uC%cPNd*oHT2q$bjxXVvG z(q%luNH%iDsdyvLr+CP=@>pua^nn}OEv~T1loRn+oS+4%c-XD&zo9dY@=80IA(<|1 zqv5)eal!O1T(68XU@*Z<{3bn-o~Q+96bU$!t_GYHUbNAPAii)DFyf$R0)!i~>T!d{ z?qBo{aSP3B=*MgLdH=t4LwG))$Q`z->r1p>UC~H9^GNmg*>Gj6ehqc{WHb%&Re0h} zxG}kBUU%IX%;8t~rJzY8hihF2(;88(8WumZ-Isp^bY$0%T7 za4L=OHr||_QQ$Uq3=3L2yi8-GA_yleY0`h}2J}@pWC%xiCJmk!T-{P1LU#xkcBL_{6@TC;+(El|;U$z@B2K(4 zfI~P*XXZ7rp>q6OatYkv_YNfqpLiv|pvQp-@P!O|+ux_d+Wg`arVLoVdbXfH(30Ic8eq22Jr@ zai*J(()nG%A!fhx-+#MZdHH2+4se~BRJZpygT_+-EzH(B8|7hcciw(i``qWgz#i2* z8Js|`oH;ZXgD-RjWKt+jUEKI#Yk4gFpH5@#xzBrE`}JS{wRXW;I!+XUo>ZzLLCPo_ z)8_xWSZ^y2o0A9;Oy<*U9gmZuwE@h6CqAMeoY1gM`0d(Zpd*WUg9 z_j0J%BTbsl!f57PQ5{e@q~ajteb%;gGzeQf*L4_>#i%$qgW`Rhm%dFrDil%m8luaw=O z!@SYfpi{e84t*m7A|K&Qjtz9k4zm2;2J|cj2BKWB!stv6_WQnPU(=qxd~utzo5L~p z?BmcsSG@^OVwD~I0hiL?k4$zBZe!|P>DzQ zb7%M>_)8EOGxLtg18|!CE)Vxm$^#sB=%+Vr16kkMkykHWjiL%WSa;{0chc$J)|Rpo z%CBF{>MNlRlUM5Cshp8<^;K7}|9&~=TjW8b!mwT_yhR_`H^o)BlGeqb95V6KfRFMe z0|x_EGXp=Dj;LCFfXgVb&G&) zJ>L~x*}o#DU!?DxI(jzkcx!pJNkAG6$>VkKjd0{)+dNk@=?1uwr z;ZN8k{z^B*Jmhug@3TDA<-4-b#h^+&jb+te<0i~Vr$JK=otBf~pOS9)a+2q2SDhp% zWK#SVp2~ybamKk9Uv^!NZWiI0sio+}pa@K?GjaLDO86JRVduZ%CsGX{%=h%sX;XMq z%3Jt_@p)C*>O>*IB%!xP}!$ zEzcdtr;-Jx6`{OWXHER#(N(8OIMs+#9?6TdHfs*qg)PQFYvIvhv6}*{V zeH!OcMo~T_Ilea&SUrXR`dniK^J*!o^uVIIO+%?A*vG8$b#MFC_BSlk zHjPWvL-v7WT;_e1&iEBH*W85***5TtEO~#K8Hb-M82G+6`>40jAl=Mq*^krlKS1Z< zo_p_M7XEXw50*@rDwpUyNR{xDy5il&u>1axa$U+G!+-m4|D|2TvgvuWfuiu>5!&0lY?{nxK* zYu2np-h$@vG-l*K`}xna%>M)JrkiexuO~R$?`5OfGGXJ?Lo1_P3U?$MGs=*5l z;@IyJ`ri3arqXJ@o<=7w@OIncbI8Bn)z^6MjGBw#=K7Xhx{ILRuUESVyP# zxeNd>FUtx5SDwJT!~s8Mqs0S_F>@Nvc%zW6lt8R}K9Mi*F%WWqw66MDKxcDCC`0m3 z5$LMd-#eYK7`DX$F8BT)oj$v5pEJMRuyuR;0*A|O(+)60>lqIYZfSpJGHZYBie>HF zFFU`jn#L+6%JsAZ3|c@)Y*`4PqU-VnrCU;h9|)P|N(0}ac?Nf9{*Th}pN*^!F>Ab+ zvjUFqr9(!dC2TXea_zb8!nNz#^2JNpF2PC%Rudhk9L$7&)2kyEF)U@^RA!cZC0^yB zY90NCZWP`FDqjL15vyDYEp4v{T^^=0y+5{EiPM47Y=5Y|xf09+@XWgVnbqEiz41Uy zw;9dl^PTFHd1_rTm(KQu7hcdVxbS>tvNyA@eY2RrWycfw1zqTRa5JX7=#qV1=#d>* z1_t*r=;XKVJ(u9jv(D<<0p>*h`2~VU8ANp8*1-zDTHseSqA?G_vBX^-W>0S`&N!>B zS;ZdxO%HQ6#>U<*P>~92ppKuSr+i#lU^~s#5c4=J@$?vIC1p=qb)0lZy@?(03vA`qcc0n(<8|4LJ2k=evIe!}2Yj zdbfRIr*+hsCtnPUzd)Gz9v!d&oY1epAgg2ekyiS|+b`o5{G!Qs;})I5N5LXZ(N=N2 z5B+>UnUizl1;-t?@1wNvUY$G3;K;wHgP81Sk~TW>NI@QoMgWH!ri->Fux!U#mbB~Q zSLc-Vly(sXZJ0Kpjeh|%a>lE;X_G0>z{7JCXZT>;PF|#|^wO^jSpB*3MSnvpPP`A} z55fwbaVA~B?w$o}sAKvK;|$YBe)RB)qx^J%lROCBA&&LBQ71 z_W>>Cub-E+27mQFh%0jA7wsn_MiOhVAYe{Js(NC=d-N*oN%-QdYsR^kTzXxcgi18^ zB$Q7B-~Xt}s1FsW;TQ-TI!eyF38HC~X&v>maqg&Oc1A6*X;elO@lc)r9I3GkgAI9E zSrHnSaWbtL=Vb=lEOs=~LdM8H`-}C}*w*N@jOFq}8-~*5h^(VkIY3~(r@|$kF>E2_ zQ`RfwaxzQv3W{D)JqpkJdMh2Hq`W5MG;GA|-#VH0CUl3f3cNzk{O}&K;~rVZU7C#>%NRR)`6=m? zqS(n0lK$a*nQ&p)@H3Be!j3^1wA8SeO+{|f9xEekJ|rOlyc)hkL+dQCe}IaLUW0k~ z2!~N|k33Qa9fq=X;3a8J*uu*EHodZhwobe8EI=jqC`<@1^1_S{o2J^9bKhaY>ioyH1@#q9g{ThPv| zd(!_VwjmsaUc?=8j|L-z90jIjGAjr3pf2p8@MqJ&VAgic*{jZ9W4i%W14HTXuS+wWIqeGt!>$ zfB%LJ$VA)f0h_EsQcFWVvK&l;DW3@m`T1Vu(dQGK$p%+7kfAVO)~5*V*&jH-H_(rO zmG8oTD|?sU@|K@(KlPJuXy=@}oYf`Bp&g1-`aes)zUMvfqcMFmoeySpEpzDAQOb~C zL~y3R>MM0f`YbcWL(r>k(eQQ8er|o?^I~)e%(vsnFgyP29j24&XwWe;2Z^{W_R>o( zg(qjj*#``6a~DW%Y}8kCHqEUDyPdIG26y%J3Lx6f8Kpul>u*FKXX<&ROjgI_xtzyJ7}(OlM>+ z=(UUxSNh~Tc^6-o0l1Y>bTlM^i#2^597vsl?U=!qp+o4;5e~qdy_*3!>ZYYEnZJT< zHCL}$)7EfCz_eZaSaon9&S>y}(u2qf$siklO+r3{4-uW)fneDE#TpyuY4w53dA z3z71P2u32@XQ}4dOPzL>-Lp*gv07pYt52LU_8b7)8=jNlyZYj%IoGehC-QpfX?`Uj z2LX;yzoLqi_jzs2+STnDS3iRlKHC{MdbI5Z_AG3v^u{uMjmE%@%1rn3JF zzGAXzQ`<%d+;a$4uHe&ru2Mi@_F$7A#vVJs=H~(Dvrk`rQ%U4gShI;c7adxT+|ORM ziouD887O@$JI;){6#gP9->vg3^I7j0X6Jg#mWRQ^wgU!4)pt8&UQt(D7A>nJ_0T{E zO76RFLkzOmp@_Cy=dEznU497)yLgatcK5yav}>=urk%EANz^r#G3~8wl`3zQRyv~W zkyoo&eXyOw9z9UigINzzhN28(M-+&q?nXR;mUjFkL>|@(%C^W z&8QQLpLnA^C(r!peE0ce@S}qjag1qv%N6a@h@XDG+g6J5CS2rJ&%#VOrYw_!%twL( zjy5MC^KMyzkdBFGY@~iEn@G^%<#Rv)UvlCbFnBLlJXLJp<3diOXZ=jWrG|#T0MHxd zNk(GnE$`ANF8;Wim*Hm^PPs>zung+BA}}L{U%rojjR)kh$M7jo1Tb_h?*U%9^d#P< zQCDdV!zPlSaDnX-Y~}w{_=z(S8B(D|v+^!E4&zpM-GwmJef_l$%B||aNZ)Bk0175( zk8L}o&q?3JSNbMgUD06MRyc;2U)?k2)Zf54#cQh0$+4s)=jK{H57&a=Uslqb#|cj$PUsNOpab? z$ZXJLr=frpF_4gHJCPbS;}!x$(4TE6Mim$c3>U_f%N&bxl;dj9Yd zbaKzea2m1ltJtFw-&5Dke2jENutOmJ@r-?L#c*ku{?eN=0Ji`-@Zj6dC2`VdWnk%( z{<>Zks?ka5IGzRlSRQ+DcT$}9CGVU2aG;tI=WLV}l)XVF;U zHJUq#*KnQjy^2Tuj2oSJ2Z%xK6)=cMDX({F~2@sH(aa{ZNwdTocmeX&aypUO$|uWIM7JC7~0nGc5PPG-O? ziB|2-`h4@&d)t5fk8kDEN)N#ojs3u%X+>j&suQZ(B=1L&fqQwM&C<)az2&WKC3`CE zEX-!Wa3=@od4l#soQnM@jZl|)?xwTwwXc4yedWd*gWf)-kh6o(Fm%OtVr140xCiNs zt-JW5_Upg)EA4sDepXumji#D`-H5>*UQCD7$WL^Vu#GfYKg@pr&vEFVC+aUfeOWtW z#aZaV@wSOmyEoi(Z`;n2e|u8NV&}8uhRy&qJyq%Q!eMwD+k4*oUg-KrThIPeJ2%T%jo?yYXP?|hyy3nL?WV8a zMC199uDjW2to&3~g~R86s!K^KKp;6giM*ZZv?HNDTzk#4+Hd~)Z?u2+GjC+s^18NQ z4snRPeb4sx#V>xTefYy4BX4hNJ6uX@x#;;>HeFrTSti0(#9R1`pU6i$Rxz+le9MC~ zfi9=t!r_tD1J()Cr@QToe6f?vleR;4LFkH4C#`NNa6h)TCFPr8{toTUEOh8xmNGx@ z0tNt%GnnOeK;#f2gSODiUVx)xtF7UWTXg;pFxa*a{&z9+E8fM(U;&>`bWujpqquy@ ze9>2Gz0#Ro$5`31odKJh9^cXa>Yn@C78|DNnoPmiW99Xz|;q3N9&%U}{ z#I}W5bbvkmfBIqcQ*b@s5pVz&lUFz%0xNeL^zr92f%53x9GyYf3~capt|Qo&qu31! zMLW*2`^EDXw2N8Ve)-z9tO%gfjjVQ2eh)Edz#=GMIN&CnVi>-lN$~}qpg?MTgP!iM zEsgLbyUQt}#82t-*oTNDJ`7$z3#e{H8K+*g8RI)@8RglP6UO=GEw_Z-S-5B+r{r_E zCvp{O=p*@e26o^X&v@#~6Iwxnl<% z>m>}D&0(-%ZVYI-62R>#9)7u;+4=ddOrX5kEAbFX4|;U)Lft=&PWkGy*S1?&t@P+) ztR5hqgVRG-gGo6kJ`Pb1malCL;`wzDw>0I-#iG38qSNG)=K*-e!u|I@5cu_rj$7BK ziaow}I2e5E8xK}|`qQ5tt9G_ex*! zo=CrqAFk(Fy;eGaW^fNExW10!^k?~3Cg!71^V7kcaI+pWy=hCnm7mc*9>6M? z#xIAoM)VY2!|*inNppppHtLQ}o6q%bSf#J{bvJD2v@g1_Pr!)wYmYEWGgZA*hcSF< z?>gI)#m%&p-ihDp^9|`5#+ghzd=G>JkAhKNh3ARh!+v*qVv?n3>%7~}9l{uvxu6li zrqhXg7&rVTK-^!$fo9`LF6kM8004lZ$U++}{XBr*~PQj8!jj$^K#A9P!Y*k>5XD3+Wt20i?)Ua~(oGT`h&niH|@~SvMsbqmq zD6s;;ijJ513`Iq%^uEh)&;T96@wuGvZ7tA5Pf@hepCY=%$*BItRjE*blF3?AZrjKhYm zl}2_5$u}DQ-~JshYv1;w7gKh|12)kxBW*QU3ZE7xRgyjW%<%sDZ~Rs)j}KYU8L2#| zbi)Av$vWbJcg&!#W!dGg{^~FDefMkFXYGMl%ofvm@e^$>|9qTN_3hB^qw#*jW{qiqe*Ive#4d$ALctnfNf5w&SOy{2H z`{-zY=tCcBpZwHk+Fm+Yi`nn#{(3(@^$?x^`)KfOb5A`h9vlQgb449a4NTtS30e)e zTvE;`4hNYDb@hX@&OiDiuWR2==l_Cp*TtCuo*RI5BDP%S-J6i^yz}n%r|*1c`#T0f z9%Xs|>8GC=oy$ec#93~4(t%b^U%&b5aaMw}&pL86AjQl7A3rhU*J+c=;IH24ShCdG zGI_y;7qnk|%UjxYZ~ph~8P{CU=s(2R&>qe%_`=`)U3=Gi-`BqQ<*)EvbN0^1jAyPA zOWOm__J(xYq7WrNlqcON%x9F*D3#6%TYC`=Z|K;vOnllkG4Z6zYYMb0^jpk0kHHqd$6h7QdSWq z=#c*CBop7e@;U-u_x~T{zKhx9J(Mx)sna+Cei8flLvtcaDHD_->FS1sJ8xXmTtja) z%8c(3I*s=O?{ga-Y+rcnp|+0|A2YQD(0UYnafmR7Tt5He3)@T1UD=kfUE=tT-KsPXh#j`Bj zlP^pM03LaCOVGJ^5oZFh5`xEQsIi{ia+i0H0r(utXO!Qj=U=@LTfGKConon84tE|#j}3> zUF|GZQeAWr2e0C)O=LY0^*DJI^(kS-xBMMu1=&&#K6LQ#F48}S4TwPi@VZjLcn-+x zS6Wi!04``G%9A?d+n$b&6#6U;!u68JXv=ALv}priz87yp1eH!d)2nClVuw7gXhS4? zg8dJtE*Aej>ryUhr-kL;6S*O6#;NyUUtx4t{`DT!OMels;a($JknGS+rjPdleB-Kr z>bb7q7tDfN@5XT;&i09Z#k>CLrs6N(@jZD@c4hw-B>raaZ)PIT;h)&?&FJq;dU zGH8M)!zZuGiyUqhfR(u9v*JZ$e<~huqT=Xr zlzGJMaEJd6afBUyzX!qZHZ_F-X)`Pa9ZzzxG0KlU(+kp4JnA!1v|L=bxK5aOk#+Z^! zX?8u5VIoEv9yf7t)n9(}W9_q_`+VEU4C3l@*R<2mSRReuEgVR9`!~MXwlS-GjM-(S zSu6or3!neYwq%j}zZn>Sv77h=;s5yE{}tsytY`>wI@-X|%Ue<6GID21A7Qz&oo)C3N?kO*DZ49Htl%Iscynfy zw2G=|_0CJrr{u|wzlX8;Nlu;mGjzkom;(T3qs-sJ0Kn&u%0FC zpSth<_Dy8j=J2^ic(-HbeHxwcGv>`~-$4iUIm?%{Q`jPKoTd02{RF+1#^O;KD3gxw zB)1v>s1$V%Jmja!X1;1`&52`d{h6iVafXwn*@qc?n2()W&g|`FYuC05SFh&l0t`%I zfA%xm9s?49aj$zxU)xZ4Vn9VIyT{P}1i2>TD*ygEdXG4RA9c}F@9pTC#@Y6)OSGl1 z1FbGiS2r!=?$38={t{L(co3tJW-_3-pA`?Ma^}S4PrHJS`eM#Wxi>y_Ig^7B(Si~F zAzcG9Mhx1vkY@2YcpA1C{a#5&-Wh#o*>!&XLfhq&@VvF}6k6XU+ zjiB4fHEp_=oqz4L?KtJ?PjtM1TlKZx#jmh^t`58z6E=W!xx$cgZJ8oY#r3(;%g?A| z0<6@fsWQ;7;+PkvHNV4ViA{rz3qIq?Vyr#}2UBnbL&PcklW`{fJGg))PRp}#yo#S; z95Gh7{sph%SWJh0!{>?v;L+m{mY!9PD?-t4N3!AuozPd#ICTYp2^ykJ-Tf+=@>56E zEANpWTWs9XC7qxt9s<7}I)bWAr_LD`Y$1S(pAqwy=q4Fm)!8@HIwaEjGH{b{>RtYY zRqx)t3Vwlzco3y-MZ1{@p;N~1cDd3V z>B7^3Xoie{mSQ<>4_tKrdAK1AXK5a|OR=@PGLB6g&a z0I)=ux@bXHR>F#d*>OmaG#YLi z8?=R2|8n}(Wu7Us7%(Be_;sOwJR47W)XI^7W3)j_EKxTdm7rDhP`%eJALJu%s}mHn>gt2u3K+!JGMR+ z9i*8q&6L0BD3JIB7t)My;k#^sE@1oC=Y322$$$If?c4v^OWKOl&&d2!mx-hd><~-i zEb`M1)F(gn>Gu17@cXPvcrY5<%Sp44#`Ij|gMzRxcUSucON4J{a9}^32$#OA&gyIC zSV-su>Q3fie(6$=QpUq)%VN|P=%bz48O(kkghoH;5zV_e$^M7jJ{axSI zPFp-5`MA`)wJ)=M<9C1eclm_khhqdp`ZE9kKmbWZK~y$)E}hKT>I=G1MJWc18Dz_Y zT+tKgk1|J|>eQpMf%;p9vQ9EyhE+o)<0tnnq4itrM_HMWpBhrSmcL$J)O%nF{~QJ{ z_Ap!A)i-c-^nyfJ(`JXgh+JaNGo23iM{nN5rvRB@o@rkC2k(}?WppN-A#~8JT+to& z0?&jO53vHk&t5+D008{ZXoXo5;E+3{qC(I8Iv-#L3;`_$$~+NT)+ z*g1_u8?CRAgImhvb>`vyZQY`I?R&1}yX&kRn8Rw7nH;`3Jr2VFh`8c{M)fxGL%*>r z8AS&?h*7!_Wp;ML!d^qKIvX~h7}4282Y5o?81P}R^6>tHF@QInfv3}#G7!L5NG>{S zWjl2myga&%ZAR!H14uK-TR}^cBGqY+BX1!uydpw|6JYvu4kTfu@Jphd+T2Fa_N73oi`c&i`$2IVSzE6=bSJ*&d|gtX%5ag7kVJm5Fl zRmxDCXgJT~c3#nvVbxwM8tY!*hqy;^1M1YD=ts$O$)^XaE74vaL=XMzyvHC$*N>vn zVpcjDd`e8ef}S8Q`A|>F;Zu(TJskTPSo|oi;?ZckQNQT5a#>NKGXb)9UGy<4R zWd{uYP-Y2=v>JdQuoOHq8Du>*@wx_Qhno5pgB&wYJ*^#!C?LQrqvm@t;9Yq2F5t@Q zyeF;-_n!XwD_<&}3R#^`<7jkK9vXP#cD3O#-a5`Io5n3?dYy8xY$b0=qyAP-x|$7& z&P|7>e`RRUs)pdALc_=l+S8?Dk0~GSu0jdp9VAKQ1DDE{^B7i*LUpXOI+ci{AI

    !%2u;lLbcelG3=y1=! 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

    2AAmz2Xx$^tbQ!1hbNK?K2n_V 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

    DObQC(x!5^lNp2 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 B83q6V diff --git a/wwwroot/defaults/motovaultpro_logo.png b/wwwroot/defaults/motovaultpro_logo.png deleted file mode 100644 index 70505a277a71d9c1a744613433da8d2feae50bdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81285 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 I*#FZ3-px6wgT234%a?(lZm|Wuj1y*CAYa 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 diff --git a/wwwroot/defaults/motovaultpro_logo_small.png b/wwwroot/defaults/motovaultpro_logo_small.png deleted file mode 100644 index ab766a28ff73238941bf679bd5821dfe59d41bbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5679 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 VM#u6!UKs!Y002ovPDHLkV1fl0;E4bL diff --git a/wwwroot/defaults/motovaultpro_maskable_icon_128.png b/wwwroot/defaults/motovaultpro_maskable_icon_128.png deleted file mode 100644 index 7a38de2166f513e9fa576a04ddc9746e3590f43e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35057 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 diff --git a/wwwroot/defaults/motovaultpro_maskable_icon_192.png b/wwwroot/defaults/motovaultpro_maskable_icon_192.png deleted file mode 100644 index 76c782b79b77b454aa96db0c28db1b6e484b8944..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69071 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

    #!IV8`1yRvZL4T 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˻hL2?mTC^AE=zd31l4F3)}CrI&kqPN!E^%7~C7 z0Wn!5GJ!S!l2U&qv({NbW`qd316bR;n-J(0@gczJpU&FNocgEhp_$b)&dBJ>ZM?eS zyX^-@9N}<`wD|5qTdm>O%`6h2qDz!M+S~p(jRfvOb*-Ou|XPou^nOsKp9X6X^ zz(G^JT+ct0#cV@Z?B#M@O^#5Q;7(b^)#Q*gUSabGTL)I1v{J5DV}cp=v?mf_v7ZAPbSC(46_Uq&1b=fUAK^59-rtAEZoCqMP5xVi;K z_e_(OlKijK$ZVes7n5M|b@(4~*zOuSF^KE%u*OmO-H3V6&_cIiyJ4$;OJjA(cP#*p z933nw`e|Gm@97^NwZ8N1T?e?`^1h)*483;EQm)l}50l(@51{IO`g!x_?cTZb8ZNi~ z@b>N7hr6@O(*e|BUB43xxER&wX)5b*?PlIVF;}J;wlcCOp7yH-?MA0>j{?xcv;C;H z?)VPjEVz2mPy=No{`QP3T-u+c!|(2Zt^a%44i~H@n!w$(x1g=9^*0r*dnewew7iqh z2^Z0I#hHQ+F5PNr>maNa{A+Z!NQW~`394W%$e}K+Ur(D8d@f0M^Hl5sVP!6toNVO; zk6Q)~9{6`_ezW-Ao*~}(>m8_k=K%UlJ@?#UgZKBJ$!*;i?Af(*CL7I1vBz}~o7~TM z=VYW$twCyy7NXV!>UQf%!NFwKSPpj2Q16zpJ@MvO)|M6L;UND1x&oAq_e*u$(Sb1^yB9;IE002ovPDHLkV1lgwEj9oE diff --git a/wwwroot/defaults/motovaultpro_maskable_icon_72.png b/wwwroot/defaults/motovaultpro_maskable_icon_72.png deleted file mode 100644 index bfa2df3340ccb5d82e131d8e4250549e518857f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12480 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 diff --git a/wwwroot/defaults/reminderemailtemplate.txt b/wwwroot/defaults/reminderemailtemplate.txt deleted file mode 100644 index 77e2398..0000000 --- a/wwwroot/defaults/reminderemailtemplate.txt +++ /dev/null @@ -1,41 +0,0 @@ - - - - - -

    {VehicleInformation}

    - - -{TableHeader} - -{TableBody} -
    - - \ No newline at end of file diff --git a/wwwroot/favicon.png b/wwwroot/favicon.png deleted file mode 100644 index c1020a82d8239335b59974171e7465d654e65450..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1879 zcmV-d2dMaoP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$_!AV3xR9Fe^R(oty_Z9x`y}rKJ zPHZQ(iQ{17BsgS*Ol!p;5c;5lmS&|?6-_BsnS`dcYgxOg6Pvbn(xgq>#3ZB&f!aa0 zsGIgrOQlWgC{%5OM1^<+0ZB{};ynCF;`nWx_}cfiW28tGjhl3S@-()IOjXB z?;NaO{~V96pZ}o;xc^4?*2nj>H~HJ$4vUzYo}SkJ6Iovh!1nHL+gKn_-1hjMH4p4~ z_}RAAO($J-jvv@o)H^Np4O5fDH)cAzx~$RB(c*H!Fv~p1JpIB;udZ}Dekm*Ztfk82 znT^e$an&jaCKLMl`rvM8fUK%vP1EbAW@3j=hJvr5w^vz8{<1u47Kq zKmVBDyYkR%B7wQNc?5%Fx0R@xjzUSsK{8J=`>(;FXpRaLmBoYBbwUSJx$o=CO z9S`EC2Y-SZyB&2rk98CZwN!$C|Mzf_^1{=57Pf2-Hm4JkRDvJ~JN$mXPzgju0M4e? zeGMz@uWa7D5e9O3mV}zkRXBR=O?1$jKx}oIg+8SK=^gQOJBIQE-;)Gy$ z9gEO)#Sjo$H9Qmfv&ZWpl1al}TZ@uZxE+o>WqVK0U(wRy$Hq+?apFV|tUAy|1l-Fp zF!_B*6G2s(%}68?C7Wn{gy>RU%mZHp0H@!1XH;YK57X%^SeC^%*0c~8%wgxwE?BCn z@vl>-@yEA%z%wlF-~JuESV$vuALWN2U^*J5J4`tdKN%V6ODv|mytZU7=<4onGaJRe znrCm=y^MWE3kF9QAjaV!Op5riIC?b>1LMIZk+iT#YveT$uHC@B?tNmno0r7b9 zNNjTC<;4^)tW`|Hg#+ccr>QaQa=8zbWQ89a8%I15hfxsGP8K^IwU{rKFc}IVGBpK} z7?Wc;ghG*^-OP2zjofZWP3`{tT)rxw zpQ8$q{>Gbx<2<-%iDmWR6=8yEV##^na{$Up@_O!Yo!$8!k%(xvSe~LTc&^%N9u@_W zQxuueH0Bx6D2_~yjepR#uJzpc3zx$Vhy7WT$y}0ErP^9mrJF>N&tx)~FBNG#&{;*5 z=Z5+&oLMkt;r%%P<&Ar`KivD`^Ut-vf9jO-o$YT|4*aV~>7!WHJOV0h6g3 z6kP|WtB8~3=PzEu2WLJe0;{3fKt#S!kPQr%{jBox_o5zX+t7Jd5XAdfhB_TlZ@t@1 zvp|{>EC-{J*P8v!Z2$EEefN`3Fdv=yP|;*H+1%3XO2kue*lj2jB&v!qa+&PUjXZyn zCblY#;gi9EOW|b!xU2L24aH)ij@rLX)r&bs)h9I06c-q!PG;m7rwTr@*PYJKzfIY{ z#UU`05-YS)72F=pHH9%yj{;j1hDS#)${encodeHTMLInput(description)}

    `; - case "PastDue": - return `

    ${encodeHTMLInput(description)}

    `; - case "Urgent": - return `

    ${encodeHTMLInput(description)}

    `; - case "NotUrgent": - return `

    ${encodeHTMLInput(description)}

    `; - } -} -function markDoneCalendarReminderRecord(reminderRecordId, e) { - event.stopPropagation(); - $.post(`/Vehicle/PushbackRecurringReminderRecord?reminderRecordId=${reminderRecordId}`, function (data) { - if (data) { - hideCalendarReminderModal(); - successToast("Reminder Updated"); - getVehicleCalendarEvents(); - } else { - errorToast(genericErrorMessage()); - } - }); -} -function deleteCalendarReminderRecord(reminderRecordId, e) { - if (e != undefined) { - event.stopPropagation(); - } - $("#workAroundInput").show(); - Swal.fire({ - title: "Confirm Deletion?", - text: "Deleted Reminders cannot be restored.", - showCancelButton: true, - confirmButtonText: "Delete", - confirmButtonColor: "#dc3545" - }).then((result) => { - if (result.isConfirmed) { - $.post(`/Vehicle/DeleteReminderRecordById?reminderRecordId=${reminderRecordId}`, function (data) { - if (data) { - hideCalendarReminderModal(); - successToast("Reminder Deleted"); - getVehicleCalendarEvents(); - } else { - errorToast(genericErrorMessage()); - } - }); - } else { - $("#workAroundInput").hide(); - } - }); -} -function initCalendar() { - if (groupedDates.length == 0) { - //group dates - eventDates.map(x => { - var existingIndex = groupedDates.findIndex(y => y.date == x.date); - if (existingIndex == -1) { - groupedDates.push({ date: x.date, reminders: [`${generateReminderItem(x.id, x.urgency, x.description)}`] }); - } else if (existingIndex > -1) { - groupedDates[existingIndex].reminders.push(`${generateReminderItem(x.id, x.urgency, x.description)}`); - } - }); - } - $(".reminderCalendarViewContent").datepicker({ - startDate: "+0d", - format: getShortDatePattern().pattern, - todayHighlight: true, - weekStart: getGlobalConfig().firstDayOfWeek, - beforeShowDay: function (date) { - var reminderDateIndex = groupedDates.findIndex(x => (x.date == date.getTime() || x.date == (date.getTime() - date.getTimezoneOffset() * 60000))); //take into account server timezone offset - if (reminderDateIndex > -1) { - return { - enabled: true, - classes: 'reminder-exist', - content: `

    ${date.getDate()}

    ${groupedDates[reminderDateIndex].reminders.join('
    ')}
    ` - } - } - } - }); -} -function performLogOut() { - $.post('/Login/LogOut', function (data) { - if (data) { - window.location.href = data; - } - }) -} -function loadPinnedNotes(vehicleId) { - var hoveredGrid = $(`#gridVehicle_${vehicleId}`); - if (hoveredGrid.attr("data-bs-title") != '') { - hoveredGrid.tooltip("show"); - } -} -function hidePinnedNotes(vehicleId) { - if ($(`#gridVehicle_${vehicleId}`).attr('data-bs-title') != '') { - $(`#gridVehicle_${vehicleId}`).tooltip("hide"); - } -} - -function filterGarage(sender) { - var rowData = $(".garage-item"); - if (sender == undefined) { - rowData.removeClass('override-hide'); - return; - } - var tagName = sender.textContent; - if ($(sender).hasClass("bg-primary")) { - rowData.removeClass('override-hide'); - $(sender).removeClass('bg-primary'); - $(sender).addClass('bg-secondary'); - } else { - //hide table rows. - rowData.addClass('override-hide'); - $(`[data-tags~='${tagName}']`).removeClass('override-hide'); - if ($(".tagfilter.bg-primary").length > 0) { - //disabling other filters - $(".tagfilter.bg-primary").addClass('bg-secondary'); - $(".tagfilter.bg-primary").removeClass('bg-primary'); - } - $(sender).addClass('bg-primary'); - $(sender).removeClass('bg-secondary'); - } -} -function sortVehicles(desc) { - //get row data - var rowData = $('.garage-item'); - var sortedRow = rowData.toArray().sort((a, b) => { - var currentVal = globalParseFloat($(a).find(".garage-item-year").attr('data-unit')); - var nextVal = globalParseFloat($(b).find(".garage-item-year").attr('data-unit')); - if (desc) { - return nextVal - currentVal; - } else { - return currentVal - nextVal; - } - }); - sortedRow.push($('.garage-item-add')) - $('.vehiclesContainer').html(sortedRow); -} - -var touchtimer; -var touchduration = 800; -function detectLongTouch(sender) { - if ($(sender).hasClass("active")) { - if (!touchtimer) { - touchtimer = setTimeout(function () { sortGarage(sender, true); detectTouchEndPremature(sender); }, touchduration); - } - } -} -function detectTouchEndPremature(sender) { - if (touchtimer) { - clearTimeout(touchtimer); - touchtimer = null; - } -} - -function sortGarage(sender, isMobile) { - if (event != undefined) { - event.preventDefault(); - } - sender = $(sender); - if (sender.hasClass("active")) { - //do sorting only if garage is the active tab. - var sortColumn = sender.text(); - var garageIcon = ''; - var sortAscIcon = ''; - var sortDescIcon = ''; - if (sender.hasClass('sort-asc')) { - sender.removeClass('sort-asc'); - sender.addClass('sort-desc'); - sender.html(isMobile ? `${garageIcon}${sortColumn}${sortDescIcon}` : `${garageIcon}${sortColumn}${sortDescIcon}`); - sortVehicles(true); - } else if (sender.hasClass('sort-desc')) { - //restore table - sender.removeClass('sort-desc'); - sender.html(isMobile ? `${garageIcon}${sortColumn}` : `${garageIcon}${sortColumn}`); - resetSortGarage(); - } else { - //first time sorting. - //check if table was sorted before by a different column(only relevant to fuel tab) - if ($("[default-sort]").length > 0 && ($(".sort-asc").length > 0 || $(".sort-desc").length > 0)) { - //restore table state. - resetSortGarage(); - //reset other sorted columns - if ($(".sort-asc").length > 0) { - $(".sort-asc").html($(".sort-asc").html().replace(sortAscIcon, "")); - $(".sort-asc").removeClass("sort-asc"); - } - if ($(".sort-desc").length > 0) { - $(".sort-desc").html($(".sort-desc").html().replace(sortDescIcon, "")); - $(".sort-desc").removeClass("sort-desc"); - } - } - sender.addClass('sort-asc'); - sender.html(isMobile ? `${garageIcon}${sortColumn}${sortAscIcon}` : `${garageIcon}${sortColumn}${sortAscIcon}`); - //append sortRowId to the vehicle container - if ($("[default-sort]").length == 0) { - $(`.garage-item`).map((index, elem) => { - $(elem).attr("default-sort", index); - }); - } - sortVehicles(false); - } - } -} -function resetSortGarage() { - var rowData = $(`.garage-item`); - var sortedRow = rowData.toArray().sort((a, b) => { - var currentVal = $(a).attr('default-sort'); - var nextVal = $(b).attr('default-sort'); - return currentVal - nextVal; - }); - $(".garage-item-add").map((index, elem) => { - sortedRow.push(elem); - }) - $(`.vehiclesContainer`).html(sortedRow); -} - -let dragged = null; -let draggedId = 0; -function dragEnter(event) { - event.preventDefault(); -} -function dragStart(event, vehicleId) { - dragged = event.target; - draggedId = vehicleId; - event.dataTransfer.setData('text/plain', draggedId); -} -function dragOver(event) { - event.preventDefault(); -} -function dropBox(event, targetVehicleId) { - if (dragged.parentElement != event.target && event.target != dragged && draggedId != targetVehicleId) { - copyContributors(draggedId, targetVehicleId); - } - event.preventDefault(); -} -function copyContributors(sourceVehicleId, destVehicleId) { - var sourceVehicleName = $(`#gridVehicle_${sourceVehicleId} .card-body`).children('h5').map((index, elem) => { return elem.innerText }).toArray().join(" "); - var destVehicleName = $(`#gridVehicle_${destVehicleId} .card-body`).children('h5').map((index, elem) => { return elem.innerText }).toArray().join(" "); - Swal.fire({ - title: "Copy Collaborators?", - text: `Copy collaborators over from ${sourceVehicleName} to ${destVehicleName}?`, - showCancelButton: true, - confirmButtonText: "Copy", - confirmButtonColor: "#0d6efd" - }).then((result) => { - if (result.isConfirmed) { - $.post('/Vehicle/DuplicateVehicleCollaborators', { sourceVehicleId: sourceVehicleId, destVehicleId: destVehicleId }, function (data) { - if (data.success) { - successToast("Collaborators Copied"); - loadGarage(); - } else { - errorToast(data.message); - } - }) - } else { - $("#workAroundInput").hide(); - } - }); -} - -function showAccountInformationModal() { - $.get('/Home/GetUserAccountInformationModal', function (data) { - $('#accountInformationModalContent').html(data); - $('#accountInformationModal').modal('show'); - }) -} - -function showRootAccountInformationModal() { - $.get('/Home/GetRootAccountInformationModal', function (data) { - $('#accountInformationModalContent').html(data); - $('#accountInformationModal').modal('show'); - }) -} -function validateAndSaveRootUserAccount() { - var hasError = false; - if ($('#inputUsername').val().trim() == '') { - $('#inputUsername').addClass("is-invalid"); - hasError = true; - } else { - $('#inputUsername').removeClass("is-invalid"); - } - if ($('#inputPassword').val().trim() == '') { - $('#inputPassword').addClass("is-invalid"); - hasError = true; - } else { - $('#inputPassword').removeClass("is-invalid"); - } - if (hasError) { - errorToast("Please check the form data"); - return; - } - var userAccountInfo = { - userName: $('#inputUsername').val(), - password: $('#inputPassword').val() - } - $.post('/Login/CreateLoginCreds', { credentials: userAccountInfo }, function (data) { - if (data) { - //hide modal - hideAccountInformationModal(); - successToast('Root Account Updated'); - performLogOut(); - } else { - errorToast(data.message); - } - }); -} - -function hideAccountInformationModal() { - $('#accountInformationModal').modal('hide'); -} -function validateAndSaveUserAccount() { - var hasError = false; - if ($('#inputUsername').val().trim() == '') { - $('#inputUsername').addClass("is-invalid"); - hasError = true; - } else { - $('#inputUsername').removeClass("is-invalid"); - } - if ($('#inputEmail').val().trim() == '') { - $('#inputEmail').addClass("is-invalid"); - hasError = true; - } else { - $('#inputEmail').removeClass("is-invalid"); - } - if ($('#inputToken').val().trim() == '') { - $('#inputToken').addClass("is-invalid"); - hasError = true; - } else { - $('#inputToken').removeClass("is-invalid"); - } - if (hasError) { - errorToast("Please check the form data"); - return; - } - var userAccountInfo = { - userName: $('#inputUsername').val(), - password: $('#inputPassword').val(), - emailAddress: $('#inputEmail').val(), - token: $('#inputToken').val() - } - $.post('/Home/UpdateUserAccount', { userAccount: userAccountInfo }, function (data) { - if (data.success) { - //hide modal - hideAccountInformationModal(); - successToast('Profile Updated'); - performLogOut(); - } else { - errorToast(data.message); - } - }); -} -function generateTokenForUser() { - $.post('/Home/GenerateTokenForUser', function (data) { - if (data) { - successToast('Token sent'); - } else { - errorToast(genericErrorMessage()) - } - }); -} \ No newline at end of file diff --git a/wwwroot/js/gasrecord.js b/wwwroot/js/gasrecord.js deleted file mode 100644 index f811b0a..0000000 --- a/wwwroot/js/gasrecord.js +++ /dev/null @@ -1,667 +0,0 @@ -// Initialize gas record modal for mobile (using shared mobile framework) -function initializeGasRecordMobile() { - try { - console.log('Initializing gas record mobile - isMobile:', typeof isMobileDevice === 'function' ? isMobileDevice() : 'function not found'); - - if (typeof initMobileModal === 'function') { - initMobileModal({ - modalId: '#gasRecordModal', - dateInputId: '#gasRecordDate', - tagSelectorId: '#gasRecordTag', - modeToggleId: '#fuelEntryModeToggle', - simpleModeDefault: true - }); - } else { - console.error('initMobileModal function not found'); - } - - // Handle desktop initialization - if (typeof isMobileDevice === 'function' && !isMobileDevice()) { - console.log('Initializing desktop components'); - initDatePicker($('#gasRecordDate')); - initTagSelector($("#gasRecordTag")); - } - } catch (e) { - console.error('Error in initializeGasRecordMobile:', e); - // Fallback to basic initialization - if (typeof isMobileDevice !== 'function' || !isMobileDevice()) { - try { - initDatePicker($('#gasRecordDate')); - initTagSelector($("#gasRecordTag")); - } catch (fallbackError) { - console.error('Fallback initialization also failed:', fallbackError); - } - } - } -} - -function showAddGasRecordModal() { - try { - var vehicleInfo = GetVehicleId(); - console.log('Getting gas record modal for vehicle:', vehicleInfo.vehicleId); - - $.get(`/Vehicle/GetAddGasRecordPartialView?vehicleId=${vehicleInfo.vehicleId}`, function (data) { - if (data) { - $("#gasRecordModalContent").html(data); - - // Initialize mobile experience using shared framework - console.log('Initializing mobile gas record modal'); - initializeGasRecordMobile(); - - console.log('Showing gas record modal'); - $('#gasRecordModal').modal('show'); - } else { - console.error('No data received from GetAddGasRecordPartialView'); - errorToast('Failed to load gas record form'); - } - }).fail(function(xhr, status, error) { - console.error('AJAX request failed:', status, error); - errorToast('Failed to load gas record form: ' + error); - }); - } catch (e) { - console.error('Error in showAddGasRecordModal:', e); - errorToast('Error opening gas record form: ' + e.message); - } -} -function showEditGasRecordModal(gasRecordId, nocache) { - if (!nocache) { - var existingContent = $("#gasRecordModalContent").html(); - if (existingContent.trim() != '') { - //check if id is same. - var existingId = getGasRecordModelData().id; - if (existingId == gasRecordId && $('[data-changed=true]').length > 0) { - $('#gasRecordModal').modal('show'); - $('.cached-banner').show(); - return; - } - } - } - $.get(`/Vehicle/GetGasRecordForEditById?gasRecordId=${gasRecordId}`, function (data) { - if (data) { - $("#gasRecordModalContent").html(data); - - // Initialize mobile experience using shared framework - initializeGasRecordMobile(); - - $('#gasRecordModal').modal('show'); - bindModalInputChanges('gasRecordModal'); - - $('#gasRecordModal').off('shown.bs.modal').on('shown.bs.modal', function () { - if (getGlobalConfig().useMarkDown) { - toggleMarkDownOverlay("gasRecordNotes"); - } - }); - } - }); -} -function hideAddGasRecordModal() { - $('#gasRecordModal').modal('hide'); -} -function deleteGasRecord(gasRecordId) { - $("#workAroundInput").show(); - Swal.fire({ - title: "Confirm Deletion?", - text: "Deleted Gas Records cannot be restored.", - showCancelButton: true, - confirmButtonText: "Delete", - confirmButtonColor: "#dc3545" - }).then((result) => { - if (result.isConfirmed) { - $.post(`/Vehicle/DeleteGasRecordById?gasRecordId=${gasRecordId}`, function (data) { - if (data) { - hideAddGasRecordModal(); - successToast("Gas Record deleted"); - var vehicleId = GetVehicleId().vehicleId; - getVehicleGasRecords(vehicleId); - } else { - errorToast(genericErrorMessage()); - } - }); - } else { - $("#workAroundInput").hide(); - } - }); -} -function saveGasRecordToVehicle(isEdit) { - //get values - var isSimpleMode = $("#fuelEntryModeToggle").is(":checked"); - var formValues; - - if (isSimpleMode) { - formValues = getAndValidateGasRecordValuesSimple(); - } else { - formValues = getAndValidateGasRecordValues(); - } - - //validate - if (formValues.hasError) { - errorToast("Please check the form data"); - return; - } - //save to db. - $.post('/Vehicle/SaveGasRecordToVehicleId', { gasRecord: formValues }, function (data) { - if (data) { - successToast(isEdit ? "Gas Record Updated" : "Gas Record Added."); - hideAddGasRecordModal(); - saveScrollPosition(); - getVehicleGasRecords(formValues.vehicleId); - } else { - errorToast(genericErrorMessage()); - } - }) -} -function getAndValidateGasRecordValues() { - var gasDate = $("#gasRecordDate").val(); - var gasMileage = parseInt(globalParseFloat($("#gasRecordMileage").val())).toString(); - var gasGallons = $("#gasRecordGallons").val(); - var gasCost = $("#gasRecordCost").val(); - var gasCostType = $("#gasCostType").val(); - var gasIsFillToFull = $("#gasIsFillToFull").is(":checked"); - var gasIsMissed = $("#gasIsMissed").is(":checked"); - var gasNotes = $("#gasRecordNotes").val(); - var gasTags = $("#gasRecordTag").val(); - var vehicleId = GetVehicleId().vehicleId; - var gasRecordId = getGasRecordModelData().id; - //Odometer Adjustments - if (isNaN(gasMileage) && GetVehicleId().odometerOptional) { - gasMileage = '0'; - } - gasMileage = GetAdjustedOdometer(gasRecordId, gasMileage); - //validation - var hasError = false; - var extraFields = getAndValidateExtraFields(); - if (extraFields.hasError) { - hasError = true; - } - if (gasDate.trim() == '') { //eliminates whitespace. - hasError = true; - $("#gasRecordDate").addClass("is-invalid"); - } else { - $("#gasRecordDate").removeClass("is-invalid"); - } - if (gasMileage.trim() == '' || isNaN(gasMileage) || parseInt(gasMileage) < 0) { - hasError = true; - $("#gasRecordMileage").addClass("is-invalid"); - } else { - $("#gasRecordMileage").removeClass("is-invalid"); - } - if (gasGallons.trim() == '' || globalParseFloat(gasGallons) <= 0) { - hasError = true; - $("#gasRecordGallons").addClass("is-invalid"); - } else { - $("#gasRecordGallons").removeClass("is-invalid"); - } - if (gasCostType != undefined && gasCostType == 'unit') { - var convertedGasCost = globalParseFloat(gasCost) * globalParseFloat(gasGallons); - if (isNaN(convertedGasCost)) - { - hasError = true; - $("#gasRecordCost").addClass("is-invalid"); - } else { - gasCost = globalFloatToString(convertedGasCost.toFixed(2).toString()); - $("#gasRecordCost").removeClass("is-invalid"); - } - } - if (gasCost.trim() == '' || !isValidMoney(gasCost)) { - hasError = true; - $("#gasRecordCost").addClass("is-invalid"); - } else { - $("#gasRecordCost").removeClass("is-invalid"); - } - return { - id: gasRecordId, - hasError: hasError, - vehicleId: vehicleId, - date: gasDate, - mileage: gasMileage, - gallons: gasGallons, - cost: gasCost, - files: uploadedFiles, - tags: gasTags, - isFillToFull: gasIsFillToFull, - missedFuelUp: gasIsMissed, - notes: gasNotes, - extraFields: extraFields.extraFields - } -} - -function saveUserGasTabPreferences() { - var gasUnit = $("[data-gas='consumption']").attr("data-unit"); - var fuelMileageUnit = $("[data-gas='fueleconomy']").attr("data-unit"); - $.post('/Vehicle/SaveUserGasTabPreferences', { gasUnit: gasUnit, fuelMileageUnit: fuelMileageUnit }, function (data) { - if (!data) { - errorToast("Error Saving User Preferences"); - } - }); -} - -function convertGasConsumptionUnits(currentUnit, destinationUnit, save) { - var sender = $("[data-gas='consumption']"); - if (currentUnit == "US gal") { - switch (destinationUnit) { - case "l": - $("[data-gas-type='consumption']").map((index, elem) => { - var convertedAmount = globalParseFloat(elem.innerText) * 3.785; - elem.innerText = globalFloatToString(convertedAmount.toFixed(2)); - sender.text(sender.text().replace(sender.attr("data-unit"), "l")); - sender.attr("data-unit", "l"); - }); - $("[data-gas-type='unitcost']").map((index, elem) => { - var convertedAmount = globalParseFloat(elem.innerText) / 3.785; - var decimalPoints = getGlobalConfig().useThreeDecimals ? 3 : 2; - elem.innerText = `${globalAppendCurrency(globalFloatToString(convertedAmount.toFixed(decimalPoints)))}`; - }); - if (save) { setDebounce(saveUserGasTabPreferences); } - break; - case "imp gal": - $("[data-gas-type='consumption']").map((index, elem) => { - var convertedAmount = globalParseFloat(elem.innerText) / 1.201; - elem.innerText = globalFloatToString(convertedAmount.toFixed(2)); - sender.text(sender.text().replace(sender.attr("data-unit"), "imp gal")); - sender.attr("data-unit", "imp gal"); - }); - $("[data-gas-type='unitcost']").map((index, elem) => { - var convertedAmount = globalParseFloat(elem.innerText) * 1.201; - var decimalPoints = getGlobalConfig().useThreeDecimals ? 3 : 2; - elem.innerText = `${globalAppendCurrency(globalFloatToString(convertedAmount.toFixed(decimalPoints)))}`; - }); - if (save) { setDebounce(saveUserGasTabPreferences); } - break; - } - } else if (currentUnit == "l") { - switch (destinationUnit) { - case "US gal": - $("[data-gas-type='consumption']").map((index, elem) => { - var convertedAmount = globalParseFloat(elem.innerText) / 3.785; - elem.innerText = globalFloatToString(convertedAmount.toFixed(2)); - sender.text(sender.text().replace(sender.attr("data-unit"), "US gal")); - sender.attr("data-unit", "US gal"); - }); - $("[data-gas-type='unitcost']").map((index, elem) => { - var convertedAmount = globalParseFloat(elem.innerText) * 3.785; - var decimalPoints = getGlobalConfig().useThreeDecimals ? 3 : 2; - elem.innerText = `${globalAppendCurrency(globalFloatToString(convertedAmount.toFixed(decimalPoints)))}`; - }); - if (save) { setDebounce(saveUserGasTabPreferences); } - break; - case "imp gal": - $("[data-gas-type='consumption']").map((index, elem) => { - var convertedAmount = globalParseFloat(elem.innerText) / 4.546; - elem.innerText = globalFloatToString(convertedAmount.toFixed(2)); - sender.text(sender.text().replace(sender.attr("data-unit"), "imp gal")); - sender.attr("data-unit", "imp gal"); - }); - $("[data-gas-type='unitcost']").map((index, elem) => { - var convertedAmount = globalParseFloat(elem.innerText) * 4.546; - var decimalPoints = getGlobalConfig().useThreeDecimals ? 3 : 2; - elem.innerText = `${globalAppendCurrency(globalFloatToString(convertedAmount.toFixed(decimalPoints)))}`; - }); - if (save) { setDebounce(saveUserGasTabPreferences); } - break; - } - } else if (currentUnit == "imp gal") { - switch (destinationUnit) { - case "US gal": - $("[data-gas-type='consumption']").map((index, elem) => { - var convertedAmount = globalParseFloat(elem.innerText) * 1.201; - elem.innerText = globalFloatToString(convertedAmount.toFixed(2)); - sender.text(sender.text().replace(sender.attr("data-unit"), "US gal")); - sender.attr("data-unit", "US gal"); - }); - $("[data-gas-type='unitcost']").map((index, elem) => { - var convertedAmount = globalParseFloat(elem.innerText) / 1.201; - var decimalPoints = getGlobalConfig().useThreeDecimals ? 3 : 2; - elem.innerText = `${globalAppendCurrency(globalFloatToString(convertedAmount.toFixed(decimalPoints)))}`; - }); - if (save) { setDebounce(saveUserGasTabPreferences); } - break; - case "l": - $("[data-gas-type='consumption']").map((index, elem) => { - var convertedAmount = globalParseFloat(elem.innerText) * 4.546; - elem.innerText = globalFloatToString(convertedAmount.toFixed(2)); - sender.text(sender.text().replace(sender.attr("data-unit"), "l")); - sender.attr("data-unit", "l"); - }); - $("[data-gas-type='unitcost']").map((index, elem) => { - var convertedAmount = globalParseFloat(elem.innerText) / 4.546; - var decimalPoints = getGlobalConfig().useThreeDecimals ? 3 : 2; - elem.innerText = `${globalAppendCurrency(globalFloatToString(convertedAmount.toFixed(decimalPoints)))}`; - }); - if (save) { setDebounce(saveUserGasTabPreferences); } - break; - } - } - updateMPGLabels(); -} - -function convertFuelMileageUnits(currentUnit, destinationUnit, save) { - var sender = $("[data-gas='fueleconomy']"); - if (currentUnit == "l/100km") { - switch (destinationUnit) { - case "km/l": - $("[data-gas-type='fueleconomy']").map((index, elem) => { - var convertedAmount = globalParseFloat(elem.innerText); - if (convertedAmount > 0) { - convertedAmount = 100 / convertedAmount; - elem.innerText = globalFloatToString(convertedAmount.toFixed(2)); - } - }); - sender.text(sender.text().replace(sender.attr("data-unit"), "km/l")); - sender.attr("data-unit", "km/l"); - if (save) { setDebounce(saveUserGasTabPreferences); } - break; - } - } else if (currentUnit == "km/l") { - switch (destinationUnit) { - case "l/100km": - $("[data-gas-type='fueleconomy']").map((index, elem) => { - var convertedAmount = globalParseFloat(elem.innerText); - if (convertedAmount > 0) { - convertedAmount = 100 / convertedAmount; - elem.innerText = globalFloatToString(convertedAmount.toFixed(2)); - } - }); - sender.text(sender.text().replace(sender.attr("data-unit"), "l/100km")); - sender.attr("data-unit", "l/100km"); - if (save) { setDebounce(saveUserGasTabPreferences); } - break; - } - } - updateMPGLabels(); -} -function toggleGasFilter(sender) { - filterTable('gas-tab-pane', sender); - updateMPGLabels(); -} -function updateMPGLabels() { - var averageLabel = $("#averageFuelMileageLabel"); - var minLabel = $("#minFuelMileageLabel"); - var maxLabel = $("#maxFuelMileageLabel"); - var totalConsumedLabel = $("#totalFuelConsumedLabel"); - var totalDistanceLabel = $("#totalDistanceLabel"); - if (averageLabel.length > 0 && minLabel.length > 0 && maxLabel.length > 0 && totalConsumedLabel.length > 0 && totalDistanceLabel.length > 0) { - var rowsToAggregate = $("[data-aggregated='true']").parent(":not('.override-hide')"); - var rowsUnaggregated = $("[data-aggregated='false']").parent(":not('.override-hide')"); - var rowMPG = rowsToAggregate.children('[data-gas-type="fueleconomy"]').toArray().map(x => globalParseFloat(x.textContent)); - var rowNonZeroMPG = rowMPG.filter(x => x > 0); - var maxMPG = rowMPG.length > 0 ? rowMPG.reduce((a, b) => a > b ? a : b) : 0; - var minMPG = rowMPG.length > 0 && rowNonZeroMPG.length > 0 ? rowNonZeroMPG.reduce((a, b) => a < b ? a : b) : 0; - var totalMilesTraveled = rowMPG.length > 0 ? rowsToAggregate.children('[data-gas-type="mileage"]').toArray().map(x => globalParseFloat($(x).attr("data-gas-aggregate"))).reduce((a, b) => a + b) : 0; - var totalGasConsumed = rowMPG.length > 0 ? rowsToAggregate.children('[data-gas-type="consumption"]').toArray().map(x => globalParseFloat($(x).attr("data-gas-aggregate"))).reduce((a, b) => a + b) : 0; - var totalGasConsumedFV = rowMPG.length > 0 ? rowsToAggregate.children('[data-gas-type="consumption"]').toArray().map(x => globalParseFloat(x.textContent)).reduce((a, b) => a + b) : 0; - var totalUnaggregatedGasConsumedFV = rowsUnaggregated.length > 0 ? rowsUnaggregated.children('[data-gas-type="consumption"]').toArray().map(x => globalParseFloat(x.textContent)).reduce((a, b) => a + b) : 0; - var totalMilesTraveledUnaggregated = rowsUnaggregated.length > 0 ? rowsUnaggregated.children('[data-gas-type="mileage"]').toArray().map(x => globalParseFloat($(x).attr("data-gas-aggregate"))).reduce((a, b) => a + b) : 0; - var fullGasConsumed = totalGasConsumedFV + totalUnaggregatedGasConsumedFV; - var fullDistanceTraveled = totalMilesTraveled + totalMilesTraveledUnaggregated; - if (totalGasConsumed > 0 && rowNonZeroMPG.length > 0) { - var averageMPG = totalMilesTraveled / totalGasConsumed; - if (!getGlobalConfig().useMPG && $("[data-gas='fueleconomy']").attr("data-unit") != 'km/l' && averageMPG > 0) { - averageMPG = 100 / averageMPG; - } - averageLabel.text(`${averageLabel.text().split(':')[0]}: ${globalFloatToString(averageMPG.toFixed(2))}`); - } else { - averageLabel.text(`${averageLabel.text().split(':')[0]}: ${globalFloatToString('0.00')}`); - } - if (fullDistanceTraveled > 0) { - totalDistanceLabel.text(`${totalDistanceLabel.text().split(':')[0]}: ${fullDistanceTraveled} ${getGasModelData().distanceUnit}`); - } else { - totalDistanceLabel.text(`${totalDistanceLabel.text().split(':')[0]}: 0 ${getGasModelData().distanceUnit}`); - } - if (fullGasConsumed > 0) { - totalConsumedLabel.text(`${totalConsumedLabel.text().split(':')[0]}: ${globalFloatToString(fullGasConsumed.toFixed(2))}`); - } else { - totalConsumedLabel.text(`${totalConsumedLabel.text().split(':')[0]}: ${globalFloatToString('0.00')}`); - } - if (!getGlobalConfig().useMPG && $("[data-gas='fueleconomy']").attr("data-unit") != 'km/l') { - maxLabel.text(`${maxLabel.text().split(':')[0]}: ${globalFloatToString(minMPG.toFixed(2))}`); - minLabel.text(`${minLabel.text().split(':')[0]}: ${globalFloatToString(maxMPG.toFixed(2))}`); - } - else { - minLabel.text(`${minLabel.text().split(':')[0]}: ${globalFloatToString(minMPG.toFixed(2))}`); - maxLabel.text(`${maxLabel.text().split(':')[0]}: ${globalFloatToString(maxMPG.toFixed(2))}`); - } - } -} - -function toggleUnits(sender) { - event.preventDefault(); - //check which column to convert. - sender = $(sender); - if (sender.attr("data-gas") == "consumption") { - switch (sender.attr("data-unit")) { - case "US gal": - convertGasConsumptionUnits("US gal", "l", true); - break; - case "l": - convertGasConsumptionUnits("l", "imp gal", true); - break; - case "imp gal": - convertGasConsumptionUnits("imp gal", "US gal", true); - break; - } - } else if (sender.attr("data-gas") == "fueleconomy") { - switch (sender.attr("data-unit")) { - case "l/100km": - convertFuelMileageUnits("l/100km", "km/l", true); - break; - case "km/l": - convertFuelMileageUnits("km/l", "l/100km", true); - break; - } - } -} - -function searchGasTableRows() { - var tabName = 'gas-tab-pane'; - Swal.fire({ - title: 'Search Records', - html: ` - - `, - confirmButtonText: 'Search', - focusConfirm: false, - preConfirm: () => { - const searchString = $("#inputSearch").val(); - return { searchString } - }, - }).then(function (result) { - if (result.isConfirmed) { - var rowData = $(`#${tabName} table tbody tr`); - var filteredRows = $(`#${tabName} table tbody tr td:contains('${result.value.searchString}')`).parent(); - var splitSearchString = result.value.searchString.split('='); - if (result.value.searchString.includes('=') && splitSearchString.length == 2) { - //column specific search. - //get column index - var columns = $(`#${tabName} table th`).toArray().map(x => x.innerText); - var columnName = splitSearchString[0]; - var colSearchString = splitSearchString[1]; - var colIndex = columns.findIndex(x => x == columnName) + 1; - filteredRows = $(`#${tabName} table tbody tr td:nth-child(${colIndex}):contains('${colSearchString}')`).parent(); - } - if (result.value.searchString.trim() == '') { - rowData.removeClass('override-hide'); - } else { - rowData.addClass('override-hide'); - filteredRows.removeClass('override-hide'); - } - $(".tagfilter.bg-primary").addClass('bg-secondary').removeClass('bg-primary'); - updateAggregateLabels(); - updateMPGLabels(); - } - }); -} -function editMultipleGasRecords(ids) { - if (ids.length < 2) { - return; - } - $.post('/Vehicle/GetGasRecordsEditModal', { recordIds: ids }, function (data) { - if (data) { - $("#gasRecordModalContent").html(data); - - // Initialize mobile experience using shared framework - initializeGasRecordMobile(); - - $('#gasRecordModal').modal('show'); - } - }); -} -function saveMultipleGasRecordsToVehicle() { - var gasDate = $("#gasRecordDate").val(); - var gasMileage = $("#gasRecordMileage").val(); - var gasMileageToParse = parseInt(globalParseFloat($("#gasRecordMileage").val())).toString(); - var gasConsumption = $("#gasRecordConsumption").val(); - var gasCost = $("#gasRecordCost").val(); - var gasNotes = $("#gasRecordNotes").val(); - var gasTags = $("#gasRecordTag").val(); - var gasExtraFields = getAndValidateExtraFields(); - //validation - var hasError = false; - if (gasMileage.trim() != '' && (isNaN(gasMileageToParse) || parseInt(gasMileageToParse) < 0)) { - hasError = true; - $("#gasRecordMileage").addClass("is-invalid"); - } else { - $("#gasRecordMileage").removeClass("is-invalid"); - } - if (gasConsumption.trim() != '' && !isValidMoney(gasConsumption)) { - hasError = true; - $("#gasRecordConsumption").addClass("is-invalid"); - } else { - $("#gasRecordConsumption").removeClass("is-invalid"); - } - if (gasCost.trim() != '' && !isValidMoney(gasCost)) { - hasError = true; - $("#gasRecordCost").addClass("is-invalid"); - } else { - $("#gasRecordCost").removeClass("is-invalid"); - } - if (hasError) { - errorToast("Please check the form data"); - return; - } - var formValues = { - recordIds: recordsToEdit, - editRecord: { - date: gasDate, - mileage: gasMileageToParse, - gallons: gasConsumption, - cost: gasCost, - notes: gasNotes, - tags: gasTags, - extraFields: gasExtraFields.extraFields - } - } - $.post('/Vehicle/SaveMultipleGasRecords', { editModel: formValues }, function (data) { - if (data) { - successToast("Gas Records Updated"); - hideAddGasRecordModal(); - saveScrollPosition(); - getVehicleGasRecords(GetVehicleId().vehicleId); - } else { - errorToast(genericErrorMessage()); - } - }) -} - -// Simple/Advanced fuel entry mode toggle functions -function toggleFuelEntryMode(useSimpleMode) { - if (useSimpleMode) { - // Switch to simple mode - $("#simpleModeFields").show(); - $("#advancedModeFields").hide(); - $("#secondColumnFields").hide(); - - // Initialize simple mode values if editing existing record - var existingCost = $("#gasRecordCost").val(); - var existingGallons = $("#gasRecordGallons").val(); - if (existingCost && existingGallons && globalParseFloat(existingGallons) > 0) { - var unitCost = globalParseFloat(existingCost) / globalParseFloat(existingGallons); - $("#gasRecordUnitCost").val(globalFloatToString(unitCost.toFixed(3))); - } - } else { - // Switch to advanced mode - $("#simpleModeFields").hide(); - $("#advancedModeFields").show(); - $("#secondColumnFields").show(); - } - - // Save user preference - $.post('/Vehicle/SaveSimpleFuelEntryPreference', { useSimpleFuelEntry: useSimpleMode }, function (data) { - if (!data) { - errorToast("Error saving preference"); - } - }); -} - -// Auto-calculate total cost based on unit cost and gallons -function calculateTotalCost() { - var unitCost = globalParseFloat($("#gasRecordUnitCost").val()); - var gallons = globalParseFloat($("#gasRecordGallons").val()); - - if (!isNaN(unitCost) && !isNaN(gallons) && unitCost > 0 && gallons > 0) { - var totalCost = unitCost * gallons; - var decimalPoints = getGlobalConfig().useThreeDecimals ? 3 : 2; - $("#gasRecordCost").val(globalFloatToString(totalCost.toFixed(decimalPoints))); - } else { - $("#gasRecordCost").val(""); - } -} - -// Simple mode validation function -function getAndValidateGasRecordValuesSimple() { - var gasDate = $("#simpleGasRecordDate").val(); - var gasMileage = parseInt(globalParseFloat($("#gasRecordMileage").val())).toString(); - var gasGallons = $("#gasRecordGallons").val(); - var gasCost = $("#gasRecordCost").val(); - var gasIsFillToFull = $("#simpleGasIsFillToFull").val() === "true"; - var gasIsMissed = $("#simpleGasIsMissed").val() === "true"; - var gasNotes = $("#simpleGasRecordNotes").val(); - var gasTags = $("#simpleGasRecordTag").val() ? [$("#simpleGasRecordTag").val()] : []; - var vehicleId = GetVehicleId().vehicleId; - var gasRecordId = getGasRecordModelData().id; - - //Odometer Adjustments - if (isNaN(gasMileage) && GetVehicleId().odometerOptional) { - gasMileage = '0'; - } - gasMileage = GetAdjustedOdometer(gasRecordId, gasMileage); - - // Validation for simple mode - var hasError = false; - - if (gasMileage.trim() == '' || isNaN(gasMileage) || parseInt(gasMileage) < 0) { - hasError = true; - $("#gasRecordMileage").addClass("is-invalid"); - } else { - $("#gasRecordMileage").removeClass("is-invalid"); - } - - if (gasGallons.trim() == '' || globalParseFloat(gasGallons) <= 0) { - hasError = true; - $("#gasRecordGallons").addClass("is-invalid"); - } else { - $("#gasRecordGallons").removeClass("is-invalid"); - } - - if (gasCost.trim() == '' || !isValidMoney(gasCost)) { - hasError = true; - $("#gasRecordCost").addClass("is-invalid"); - } else { - $("#gasRecordCost").removeClass("is-invalid"); - } - - return { - id: gasRecordId, - hasError: hasError, - vehicleId: vehicleId, - date: gasDate, - mileage: gasMileage, - gallons: gasGallons, - cost: gasCost, - files: [], // Simple mode doesn't support file uploads - tags: gasTags, - isFillToFull: gasIsFillToFull, - missedFuelUp: gasIsMissed, - notes: gasNotes, - extraFields: [] // Simple mode doesn't use extra fields - }; -} \ No newline at end of file diff --git a/wwwroot/js/loader.js b/wwwroot/js/loader.js deleted file mode 100644 index c5666e4..0000000 --- a/wwwroot/js/loader.js +++ /dev/null @@ -1,10 +0,0 @@ -const sloader = { - show: function () { - var sLoaderElement = `
    ` - $("body").append(sLoaderElement); - }, - hide: function () { - $(".sloader").remove(); - } - -} \ No newline at end of file diff --git a/wwwroot/js/login.js b/wwwroot/js/login.js deleted file mode 100644 index aa0c534..0000000 --- a/wwwroot/js/login.js +++ /dev/null @@ -1,91 +0,0 @@ -function performLogin() { - var userName = $("#inputUserName").val(); - var userPassword = $("#inputUserPassword").val(); - var isPersistent = $("#inputPersistent").is(":checked"); - $.post('/Login/Login', {userName: userName, password: userPassword, isPersistent: isPersistent}, function (data) { - if (data) { - //check for redirectURL - var redirectURL = getRedirectURL().url; - if (redirectURL.trim() != "") { - window.location.href = redirectURL; - } else { - window.location.href = '/Home'; - } - } else { - errorToast("Invalid Login Credentials, please try again."); - } - }) -} -function performRegistration() { - var token = $("#inputToken").val(); - var userName = $("#inputUserName").val(); - var userPassword = $("#inputUserPassword").val(); - var userEmail = $("#inputEmail").val(); - $.post('/Login/Register', { userName: userName, password: userPassword, token: token, emailAddress: userEmail }, function (data) { - if (data.success) { - successToast(data.message); - setTimeout(function () { window.location.href = '/Login/Index' }, 500); - } else { - errorToast(data.message); - } - }); -} -function requestPasswordReset() { - var userName = $("#inputUserName").val(); - $.post('/Login/RequestResetPassword', { userName: userName }, function (data) { - if (data.success) { - successToast(data.message); - setTimeout(function () { window.location.href = '/Login/Index' }, 500); - } else { - errorToast(data.message); - } - }) -} -function performPasswordReset() { - var token = $("#inputToken").val(); - var userPassword = $("#inputUserPassword").val(); - var userEmail = $("#inputEmail").val(); - $.post('/Login/PerformPasswordReset', { password: userPassword, token: token, emailAddress: userEmail }, function (data) { - if (data.success) { - successToast(data.message); - setTimeout(function () { window.location.href = '/Login/Index' }, 500); - } else { - errorToast(data.message); - } - }); -} - -function remoteLogin() { - $.get('/Login/GetRemoteLoginLink', function (data) { - if (data) { - window.location.href = data; - } - }) -} -function sendRegistrationToken() { - Swal.fire({ - title: 'Please Provide an Email Address', - html: ` - - `, - confirmButtonText: 'Send', - focusConfirm: false, - preConfirm: () => { - const tokenEmail = $("#inputTokenEmail").val(); - if (!tokenEmail || tokenEmail.trim() == '') { - Swal.showValidationMessage(`Please enter a valid email address`); - } - return { tokenEmail } - }, - }).then(function (result) { - if (result.isConfirmed) { - $.post('/Login/SendRegistrationToken', { emailAddress: result.value.tokenEmail }, function (data) { - if (data.success) { - successToast(data.message); - } else { - errorToast(data.message); - } - }); - } - }); -} \ No newline at end of file diff --git a/wwwroot/js/note.js b/wwwroot/js/note.js deleted file mode 100644 index ac1a62d..0000000 --- a/wwwroot/js/note.js +++ /dev/null @@ -1,129 +0,0 @@ -function showAddNoteModal() { - $.get('/Vehicle/GetAddNotePartialView', function (data) { - if (data) { - $("#noteModalContent").html(data); - initTagSelector($("#noteRecordTag")); - $('#noteModal').modal('show'); - } - }); -} -function showEditNoteModal(noteId, nocache) { - if (!nocache) { - var existingContent = $("#noteModalContent").html(); - if (existingContent.trim() != '') { - //check if id is same. - var existingId = getNoteModelData().id; - if (existingId == noteId && $('[data-changed=true]').length > 0) { - $('#noteModal').modal('show'); - $('.cached-banner').show(); - return; - } - } - } - $.get(`/Vehicle/GetNoteForEditById?noteId=${noteId}`, function (data) { - if (data) { - $("#noteModalContent").html(data); - initTagSelector($("#noteRecordTag")); - $('#noteModal').modal('show'); - bindModalInputChanges('noteModal'); - $('#noteModal').off('shown.bs.modal').on('shown.bs.modal', function () { - if (getGlobalConfig().useMarkDown) { - toggleMarkDownOverlay("noteTextArea"); - } - }); - } - }); -} -function hideAddNoteModal() { - $('#noteModal').modal('hide'); -} -function deleteNote(noteId) { - $("#workAroundInput").show(); - Swal.fire({ - title: "Confirm Deletion?", - text: "Deleted Notes cannot be restored.", - showCancelButton: true, - confirmButtonText: "Delete", - confirmButtonColor: "#dc3545" - }).then((result) => { - if (result.isConfirmed) { - $.post(`/Vehicle/DeleteNoteById?noteId=${noteId}`, function (data) { - if (data) { - hideAddNoteModal(); - successToast("Note Deleted"); - var vehicleId = GetVehicleId().vehicleId; - getVehicleNotes(vehicleId); - } else { - errorToast(genericErrorMessage()); - } - }); - } else { - $("#workAroundInput").hide(); - } - }); -} -function saveNoteToVehicle(isEdit) { - //get values - var formValues = getAndValidateNoteValues(); - //validate - if (formValues.hasError) { - errorToast("Please check the form data"); - return; - } - //save to db. - $.post('/Vehicle/SaveNoteToVehicleId', { note: formValues }, function (data) { - if (data) { - successToast(isEdit ? "Note Updated" : "Note Added."); - hideAddNoteModal(); - saveScrollPosition(); - getVehicleNotes(formValues.vehicleId); - } else { - errorToast(genericErrorMessage()); - } - }) -} -function getAndValidateNoteValues() { - var noteDescription = $("#noteDescription").val(); - var noteText = $("#noteTextArea").val(); - var vehicleId = GetVehicleId().vehicleId; - var noteId = getNoteModelData().id; - var noteIsPinned = $("#noteIsPinned").is(":checked"); - var noteTags = $("#noteRecordTag").val(); - //validation - var hasError = false; - var extraFields = getAndValidateExtraFields(); - if (extraFields.hasError) { - hasError = true; - } - if (noteDescription.trim() == '') { //eliminates whitespace. - hasError = true; - $("#noteDescription").addClass("is-invalid"); - } else { - $("#noteDescription").removeClass("is-invalid"); - } - if (noteText.trim() == '') { - hasError = true; - $("#noteTextArea").addClass("is-invalid"); - } else { - $("#noteTextArea").removeClass("is-invalid"); - } - return { - id: noteId, - hasError: hasError, - vehicleId: vehicleId, - description: noteDescription, - noteText: noteText, - files: uploadedFiles, - pinned: noteIsPinned, - tags: noteTags, - extraFields: extraFields.extraFields - } -} -function pinNotes(ids, toggle, pinStatus) { - $.post('/Vehicle/PinNotes', { noteIds: ids, isToggle: toggle, pinStatus: pinStatus }, function (data) { - if (data) { - successToast(ids.length > 1 ? `${ids.length} Notes Updated` : "Note Updated."); - getVehicleNotes(GetVehicleId().vehicleId); - } - }) -} \ No newline at end of file diff --git a/wwwroot/js/odometerrecord.js b/wwwroot/js/odometerrecord.js deleted file mode 100644 index 497b89d..0000000 --- a/wwwroot/js/odometerrecord.js +++ /dev/null @@ -1,394 +0,0 @@ -function showAddOdometerRecordModal() { - $.get(`/Vehicle/GetAddOdometerRecordPartialView?vehicleId=${GetVehicleId().vehicleId}`, function (data) { - if (data) { - $("#odometerRecordModalContent").html(data); - //initiate datepicker - initDatePicker($('#odometerRecordDate')); - initTagSelector($("#odometerRecordTag")); - $('#odometerRecordModal').modal('show'); - } - }); -} -function showEditOdometerRecordModal(odometerRecordId, nocache) { - if (!nocache) { - var existingContent = $("#odometerRecordModalContent").html(); - if (existingContent.trim() != '') { - //check if id is same. - var existingId = getOdometerRecordModelData().id; - if (existingId == odometerRecordId && $('[data-changed=true]').length > 0) { - $('#odometerRecordModal').modal('show'); - $('.cached-banner').show(); - return; - } - } - } - $.get(`/Vehicle/GetOdometerRecordForEditById?odometerRecordId=${odometerRecordId}`, function (data) { - if (data) { - $("#odometerRecordModalContent").html(data); - //initiate datepicker - initDatePicker($('#odometerRecordDate')); - initTagSelector($("#odometerRecordTag")); - $('#odometerRecordModal').modal('show'); - bindModalInputChanges('odometerRecordModal'); - $('#odometerRecordModal').off('shown.bs.modal').on('shown.bs.modal', function () { - if (getGlobalConfig().useMarkDown) { - toggleMarkDownOverlay("odometerRecordNotes"); - } - }); - } - }); -} -function hideAddOdometerRecordModal() { - $('#odometerRecordModal').modal('hide'); -} -function deleteOdometerRecord(odometerRecordId) { - $("#workAroundInput").show(); - Swal.fire({ - title: "Confirm Deletion?", - text: "Deleted Odometer Records cannot be restored.", - showCancelButton: true, - confirmButtonText: "Delete", - confirmButtonColor: "#dc3545" - }).then((result) => { - if (result.isConfirmed) { - $.post(`/Vehicle/DeleteOdometerRecordById?odometerRecordId=${odometerRecordId}`, function (data) { - if (data) { - hideAddOdometerRecordModal(); - successToast("Odometer Record Deleted"); - var vehicleId = GetVehicleId().vehicleId; - getVehicleOdometerRecords(vehicleId); - } else { - errorToast(genericErrorMessage()); - } - }); - } else { - $("#workAroundInput").hide(); - } - }); -} -function saveOdometerRecordToVehicle(isEdit) { - //get values - var formValues = getAndValidateOdometerRecordValues(); - //validate - if (formValues.hasError) { - errorToast("Please check the form data"); - return; - } - //save to db. - $.post('/Vehicle/SaveOdometerRecordToVehicleId', { odometerRecord: formValues }, function (data) { - if (data) { - successToast(isEdit ? "Odometer Record Updated" : "Odometer Record Added."); - hideAddOdometerRecordModal(); - saveScrollPosition(); - getVehicleOdometerRecords(formValues.vehicleId); - if (formValues.addReminderRecord) { - setTimeout(function () { showAddReminderModal(formValues); }, 500); - } - } else { - errorToast(genericErrorMessage()); - } - }) -} -function getAndValidateOdometerRecordValues() { - var serviceDate = $("#odometerRecordDate").val(); - var initialOdometerMileage = parseInt(globalParseFloat($("#initialOdometerRecordMileage").val())).toString(); - var serviceMileage = parseInt(globalParseFloat($("#odometerRecordMileage").val())).toString(); - var serviceNotes = $("#odometerRecordNotes").val(); - var serviceTags = $("#odometerRecordTag").val(); - var vehicleId = GetVehicleId().vehicleId; - var odometerRecordId = getOdometerRecordModelData().id; - //Odometer Adjustments - serviceMileage = GetAdjustedOdometer(odometerRecordId, serviceMileage); - //validation - var hasError = false; - var extraFields = getAndValidateExtraFields(); - if (extraFields.hasError) { - hasError = true; - } - if (serviceDate.trim() == '') { //eliminates whitespace. - hasError = true; - $("#odometerRecordDate").addClass("is-invalid"); - } else { - $("#odometerRecordDate").removeClass("is-invalid"); - } - if (serviceMileage.trim() == '' || isNaN(serviceMileage) || parseInt(serviceMileage) < 0) { - hasError = true; - $("#odometerRecordMileage").addClass("is-invalid"); - } else { - $("#odometerRecordMileage").removeClass("is-invalid"); - } - if (isNaN(initialOdometerMileage) || parseInt(initialOdometerMileage) < 0) { - hasError = true; - $("#initialOdometerRecordMileage").addClass("is-invalid"); - } else { - $("#initialOdometerRecordMileage").removeClass("is-invalid"); - } - return { - id: odometerRecordId, - hasError: hasError, - vehicleId: vehicleId, - date: serviceDate, - initialMileage: initialOdometerMileage, - mileage: serviceMileage, - notes: serviceNotes, - tags: serviceTags, - files: uploadedFiles, - extraFields: extraFields.extraFields - } -} - -function recalculateDistance() { - //force distance recalculation - //reserved for when data is incoherent with negative distances due to non-chronological order of odometer records. - var vehicleId = GetVehicleId().vehicleId - $.post(`/Vehicle/ForceRecalculateDistanceByVehicleId?vehicleId=${vehicleId}`, function (data) { - if (data) { - successToast("Odometer Records Updated") - getVehicleOdometerRecords(vehicleId); - } else { - errorToast(genericErrorMessage()); - } - }); -} - -function editMultipleOdometerRecords(ids) { - if (ids.length < 2) { - return; - } - $.post('/Vehicle/GetOdometerRecordsEditModal', { recordIds: ids }, function (data) { - if (data) { - $("#odometerRecordModalContent").html(data); - //initiate datepicker - initDatePicker($('#odometerRecordDate')); - initTagSelector($("#odometerRecordTag")); - $('#odometerRecordModal').modal('show'); - } - }); -} -function saveMultipleOdometerRecordsToVehicle() { - var odometerDate = $("#odometerRecordDate").val(); - var initialOdometerMileage = $("#initialOdometerRecordMileage").val(); - var odometerMileage = $("#odometerRecordMileage").val(); - var initialOdometerMileageToParse = parseInt(globalParseFloat($("#initialOdometerRecordMileage").val())).toString(); - var odometerMileageToParse = parseInt(globalParseFloat($("#odometerRecordMileage").val())).toString(); - var odometerNotes = $("#odometerRecordNotes").val(); - var odometerTags = $("#odometerRecordTag").val(); - var odometerExtraFields = getAndValidateExtraFields(); - //validation - var hasError = false; - if (odometerMileage.trim() != '' && (isNaN(odometerMileageToParse) || parseInt(odometerMileageToParse) < 0)) { - hasError = true; - $("#odometerRecordMileage").addClass("is-invalid"); - } else { - $("#odometerRecordMileage").removeClass("is-invalid"); - } - if (initialOdometerMileage.trim() != '' && (isNaN(initialOdometerMileageToParse) || parseInt(initialOdometerMileageToParse) < 0)) { - hasError = true; - $("#odometerRecordMileage").addClass("is-invalid"); - } else { - $("#odometerRecordMileage").removeClass("is-invalid"); - } - if (hasError) { - errorToast("Please check the form data"); - return; - } - var formValues = { - recordIds: recordsToEdit, - editRecord: { - date: odometerDate, - initialMileage: initialOdometerMileageToParse, - mileage: odometerMileageToParse, - notes: odometerNotes, - tags: odometerTags, - extraFields: odometerExtraFields.extraFields - } - } - $.post('/Vehicle/SaveMultipleOdometerRecords', { editModel: formValues }, function (data) { - if (data) { - successToast("Odometer Records Updated"); - hideAddOdometerRecordModal(); - saveScrollPosition(); - getVehicleOdometerRecords(GetVehicleId().vehicleId); - } else { - errorToast(genericErrorMessage()); - } - }) -} -function toggleInitialOdometerEnabled() { - if ($("#initialOdometerRecordMileage").prop("disabled")) { - $("#initialOdometerRecordMileage").prop("disabled", false); - } else { - $("#initialOdometerRecordMileage").prop("disabled", true); - } - -} -function showTripModal() { - $(".odometer-modal").addClass('d-none'); - $(".trip-modal").removeClass('d-none'); - //set current odometer - $(".trip-odometer").text($("#initialOdometerRecordMileage").val()); -} -function hideTripModal() { - //check if recording is in progress - if (tripTimer != undefined || tripWakeLock != undefined) { - Swal.fire({ - title: "Confirm Exit?", - text: "Recording in Progress, Exit?", - showCancelButton: true, - confirmButtonText: "Exit", - confirmButtonColor: "#dc3545" - }).then((result) => { - if (result.isConfirmed) { - stopRecording(); - $(".odometer-modal").removeClass('d-none'); - $(".trip-modal").addClass('d-none'); - } - }); - } else { - $(".odometer-modal").removeClass('d-none'); - $(".trip-modal").addClass('d-none'); - } -} -function startRecording() { - if (navigator.geolocation && navigator.wakeLock) { - try { - navigator.wakeLock.request('screen').then((wl) => { - tripWakeLock = wl; - tripTimer = setInterval(() => { - navigator.geolocation.getCurrentPosition(recordPosition, stopRecording, { maximumAge: 1000, timeout: 4000, enableHighAccuracy: true }); - }, 5000); - $(".trip-start").addClass('d-none'); - $(".trip-stop").removeClass('d-none'); - //modify modal to prevent closing - $("#odometerRecordModal").on("hide.bs.modal", function (event) { - event.preventDefault(); - hideTripModal(); - }); - }); - } catch (err) { - errorToast('Location Services not Enabled'); - } - } else { - errorToast('Browser does not support GeoLocation and/or WakeLock API'); - } -} -function recordPosition(position) { - var currentLat = position.coords.latitude; - var currentLong = position.coords.longitude; - if (tripLastPosition == undefined) { - tripLastPosition = { - latitude: currentLat, - longitude: currentLong - } - tripCoordinates.push(`${currentLat},${currentLong}`); - } else { - //calculate distance - var distanceTraveled = calculateDistance(tripLastPosition.latitude, tripLastPosition.longitude, currentLat, currentLong); - var recordedTotalOdometer = getRecordedOdometer(); - if (distanceTraveled >= 0.1) { //if greater than 0.1 mile or KM then it's significant - recordedTotalOdometer += distanceTraveled; - var recordedOdometerString = recordedTotalOdometer.toString().split('.'); - $(".trip-odometer").html(recordedOdometerString[0]); - if (recordedOdometerString.length == 2) { - if (recordedOdometerString[1].toString().length > 3) { - $(".trip-odometer-sub").html(recordedOdometerString[1].toString().substring(0, 3)); - } else { - $(".trip-odometer-sub").html(recordedOdometerString[1].toString()); - } - $(".trip-odometer-sub").attr("data-value", recordedOdometerString[1]); - } - //update last position - tripLastPosition = { - latitude: currentLat, - longitude: currentLong - } - tripCoordinates.push(`${currentLat},${currentLong}`); - } - } -} -function stopRecording(errMsg) { - if (errMsg && errMsg.code) { - switch (errMsg.code) { - case 1: - errorToast(errMsg.message); - break; - case 2: - errorToast("Location Unavailable"); - break; - } - } - if (tripTimer != undefined) { - clearInterval(tripTimer); - tripTimer = undefined; - } - if (tripWakeLock != undefined) { - tripWakeLock.release(); - tripWakeLock = undefined; - } - if (tripLastPosition != undefined) { - tripLastPosition = undefined; - } - $(".trip-start").removeClass('d-none'); - $(".trip-stop").addClass('d-none'); - $("#odometerRecordModal").off("hide.bs.modal"); - if (parseInt(getRecordedOdometer()) != $("#initialOdometerRecordMileage").val()) { - $(".trip-save").removeClass('d-none'); - } -} -// Converts numeric degrees to radians -function toRad(Value) { - return Value * Math.PI / 180; -} -//haversine -function calculateDistance(lat1, lon1, lat2, lon2) { - var earthRadius = 6371; // km radius of the earth - var dLat = toRad(lat2 - lat1); - var dLon = toRad(lon2 - lon1); - var lat1 = toRad(lat1); - var lat2 = toRad(lat2); - - var sinOne = Math.sin(dLat / 2) * Math.sin(dLat / 2) + - Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2); - var tanOne = 2 * Math.atan2(Math.sqrt(sinOne), Math.sqrt(1 - sinOne)); - var calculatedDistance = earthRadius * tanOne; - if (getGlobalConfig().useMPG) { - calculatedDistance *= 0.621; //convert to mile if needed. - } - return Math.abs(calculatedDistance); -} -function getRecordedOdometer() { - var recordedOdometer = $(".trip-odometer").html(); - var recordedSubOdometer = $(".trip-odometer-sub").attr("data-value"); - return parseFloat(`${recordedOdometer}.${recordedSubOdometer}`); -} -function saveRecordedOdometer() { - //save coordinates into a CSV file and upload - if (tripCoordinates.length > 1) { - //update current odometer value - $("#odometerRecordMileage").val(parseInt(getRecordedOdometer()).toString()); - //generate attachment - $.post('/Files/UploadCoordinates', { coordinates: tripCoordinates }, function (response) { - uploadedFiles.push(response); - $.post('/Vehicle/GetFilesPendingUpload', { uploadedFiles: uploadedFiles }, function (viewData) { - $("#filesPendingUpload").html(viewData); - tripCoordinates = ["Latitude,Longitude"]; - }); - }); - } - hideTripModal(); -} -function toggleSubOdometer() { - if ($(".trip-odometer-sub").hasClass("d-none")) { - $(".trip-odometer-sub").removeClass("d-none"); - } else { - $(".trip-odometer-sub").addClass("d-none"); - } -} -function checkTripRecorder() { - //check if connection is https, browser supports required API, and that vehicle does not use engine hours - if (location.protocol != 'https:' || !navigator.geolocation || !navigator.wakeLock || GetVehicleId().useEngineHours) { - $(".trip-show").remove(); - } else { - $(".trip-show").removeClass('d-none'); - } -} \ No newline at end of file diff --git a/wwwroot/js/planrecord.js b/wwwroot/js/planrecord.js deleted file mode 100644 index abc0322..0000000 --- a/wwwroot/js/planrecord.js +++ /dev/null @@ -1,460 +0,0 @@ -function showAddPlanRecordModal() { - $.get('/Vehicle/GetAddPlanRecordPartialView', function (data) { - if (data) { - $("#planRecordModalContent").html(data); - //initiate datepicker - initDatePicker($('#planRecordDate')); - $('#planRecordModal').modal('show'); - } - }); -} -function showEditPlanRecordModal(planRecordId, nocache) { - if (!nocache) { - var existingContent = $("#planRecordModalContent").html(); - if (existingContent.trim() != '') { - //check if id is same. - var existingId = getPlanRecordModelData().id; - var isNotTemplate = !getPlanRecordModelData().isTemplate; - if (existingId == planRecordId && isNotTemplate && $('[data-changed=true]').length > 0) { - $('#planRecordModal').modal('show'); - $('.cached-banner').show(); - return; - } - } - } - $.get(`/Vehicle/GetPlanRecordForEditById?planRecordId=${planRecordId}`, function (data) { - if (data) { - $("#planRecordModalContent").html(data); - //initiate datepicker - initDatePicker($('#planRecordDate')); - $('#planRecordModal').modal('show'); - bindModalInputChanges('planRecordModal'); - $('#planRecordModal').off('shown.bs.modal').on('shown.bs.modal', function () { - if (getGlobalConfig().useMarkDown) { - toggleMarkDownOverlay("planRecordNotes"); - } - }); - } - }); -} -function showEditPlanRecordTemplateModal(planRecordTemplateId, nocache) { - hidePlanRecordTemplatesModal(); - if (!nocache) { - var existingContent = $("#planRecordModalContent").html(); - if (existingContent.trim() != '') { - //check if id is same. - var existingId = getPlanRecordModelData().id; - var isTemplate = getPlanRecordModelData().isTemplate; - if (existingId == planRecordTemplateId && isTemplate && $('[data-changed=true]').length > 0) { - $('#planRecordModal').modal('show'); - $('.cached-banner').show(); - return; - } - } - } - $.get(`/Vehicle/GetPlanRecordTemplateForEditById?planRecordTemplateId=${planRecordTemplateId}`, function (data) { - if (data) { - $("#planRecordModalContent").html(data); - //initiate datepicker - initDatePicker($('#planRecordDate')); - $('#planRecordModal').modal('show'); - bindModalInputChanges('planRecordModal'); - $('#planRecordModal').off('shown.bs.modal').on('shown.bs.modal', function () { - if (getGlobalConfig().useMarkDown) { - toggleMarkDownOverlay("planRecordNotes"); - } - }); - } - }); -} -function hideAddPlanRecordModal() { - $('#planRecordModal').modal('hide'); - if (getPlanRecordModelData().createdFromReminder) { - //show reminder Modal - $("#reminderRecordModal").modal("show"); - } - if (getPlanRecordModelData().isTemplate) { - showPlanRecordTemplatesModal(); - } -} -function deletePlanRecord(planRecordId, noModal) { - $("#workAroundInput").show(); - Swal.fire({ - title: "Confirm Deletion?", - text: "Deleted Plan Records cannot be restored.", - showCancelButton: true, - confirmButtonText: "Delete", - confirmButtonColor: "#dc3545" - }).then((result) => { - if (result.isConfirmed) { - $.post(`/Vehicle/DeletePlanRecordById?planRecordId=${planRecordId}`, function (data) { - if (data) { - if (!noModal) { - hideAddPlanRecordModal(); - } - successToast("Plan Record Deleted"); - var vehicleId = GetVehicleId().vehicleId; - getVehiclePlanRecords(vehicleId); - } else { - errorToast(genericErrorMessage()); - } - }); - } else { - $("#workAroundInput").hide(); - } - }); -} -function savePlanRecordToVehicle(isEdit) { - //get values - var formValues = getAndValidatePlanRecordValues(); - //validate - if (formValues.hasError) { - errorToast("Please check the form data"); - return; - } - //save to db. - $.post('/Vehicle/SavePlanRecordToVehicleId', { planRecord: formValues }, function (data) { - if (data) { - successToast(isEdit ? "Plan Record Updated" : "Plan Record Added."); - hideAddPlanRecordModal(); - if (!getPlanRecordModelData().createdFromReminder) { - saveScrollPosition(); - getVehiclePlanRecords(formValues.vehicleId); - if (formValues.addReminderRecord) { - setTimeout(function () { showAddReminderModal(formValues); }, 500); - } - } - } else { - errorToast(genericErrorMessage()); - } - }) -} -function showPlanRecordTemplatesModal() { - var vehicleId = GetVehicleId().vehicleId; - $.get(`/Vehicle/GetPlanRecordTemplatesForVehicleId?vehicleId=${vehicleId}`, function (data) { - if (data) { - $("#planRecordTemplateModalContent").html(data); - $('#planRecordTemplateModal').modal('show'); - } - }); -} -function hidePlanRecordTemplatesModal() { - $('#planRecordTemplateModal').modal('hide'); -} -function usePlannerRecordTemplate(planRecordTemplateId) { - $.post(`/Vehicle/ConvertPlanRecordTemplateToPlanRecord?planRecordTemplateId=${planRecordTemplateId}`, function (data) { - if (data.success) { - var vehicleId = GetVehicleId().vehicleId; - successToast(data.message); - hidePlanRecordTemplatesModal(); - saveScrollPosition(); - getVehiclePlanRecords(vehicleId); - } else { - if (data.message == "Insufficient Supplies") { - data.message += `

    Order Required Supplies` - } - errorToast(data.message); - } - }); -} - -function deletePlannerRecordTemplate(planRecordTemplateId) { - $("#workAroundInput").show(); - Swal.fire({ - title: "Confirm Deletion?", - text: "Deleted Plan Templates cannot be restored.", - showCancelButton: true, - confirmButtonText: "Delete", - confirmButtonColor: "#dc3545" - }).then((result) => { - if (result.isConfirmed) { - $.post(`/Vehicle/DeletePlanRecordTemplateById?planRecordTemplateId=${planRecordTemplateId}`, function (data) { - $("#workAroundInput").hide(); - if (data) { - successToast("Plan Template Deleted"); - hideAddPlanRecordModal(); - } else { - errorToast(genericErrorMessage()); - } - }); - } else { - $("#workAroundInput").hide(); - } - }); -} -function savePlanRecordTemplate(isEdit) { - //get values - var formValues = getAndValidatePlanRecordValues(); - //validate - if (formValues.hasError) { - errorToast("Please check the form data"); - return; - } - //save to db. - $.post('/Vehicle/SavePlanRecordTemplateToVehicleId', { planRecord: formValues }, function (data) { - if (data.success) { - if (isEdit) { - hideAddPlanRecordModal(); - showPlanRecordTemplatesModal(); - $('[data-changed=true]').attr('data-changed', false) - successToast('Plan Template Updated'); - } else { - successToast('Plan Template Added'); - } - } else { - errorToast(data.message); - } - }) -} -function getAndValidatePlanRecordValues() { - var planDescription = $("#planRecordDescription").val(); - var planCost = $("#planRecordCost").val(); - var planNotes = $("#planRecordNotes").val(); - var planType = $("#planRecordType").val(); - var planPriority = $("#planRecordPriority").val(); - var planProgress = $("#planRecordProgress").val(); - var planDateCreated = getPlanRecordModelData().dateCreated; - var vehicleId = GetVehicleId().vehicleId; - var planRecordId = getPlanRecordModelData().id; - var reminderRecordId = getPlanRecordModelData().reminderRecordId; - //validation - var hasError = false; - var extraFields = getAndValidateExtraFields(); - if (extraFields.hasError) { - hasError = true; - } - if (planDescription.trim() == '') { - hasError = true; - $("#planRecordDescription").addClass("is-invalid"); - } else { - $("#planRecordDescription").removeClass("is-invalid"); - } - if (planCost.trim() == '' || !isValidMoney(planCost)) { - hasError = true; - $("#planRecordCost").addClass("is-invalid"); - } else { - $("#planRecordCost").removeClass("is-invalid"); - } - return { - id: planRecordId, - hasError: hasError, - vehicleId: vehicleId, - dateCreated: planDateCreated, - description: planDescription, - cost: planCost, - notes: planNotes, - files: uploadedFiles, - supplies: selectedSupplies, - priority: planPriority, - progress: planProgress, - importMode: planType, - extraFields: extraFields.extraFields, - requisitionHistory: supplyUsageHistory, - deletedRequisitionHistory: deletedSupplyUsageHistory, - reminderRecordId: reminderRecordId, - copySuppliesAttachment: copySuppliesAttachments - } -} -//drag and drop stuff. - -let dragged = null; -let draggedId = 0; -function dragEnter(event) { - event.preventDefault(); -} -function dragStart(event, planRecordId) { - dragged = event.target; - draggedId = planRecordId; - event.dataTransfer.setData('text/plain', draggedId); -} -function dragOver(event) { - event.preventDefault(); - if (planTouchTimer) { - clearTimeout(planTouchTimer); - planTouchTimer = null; - } -} -function dropBox(event, newProgress) { - var targetSwimLane = $(event.target).hasClass("swimlane") ? event.target : $(event.target).parents(".swimlane")[0]; - var draggedSwimLane = $(dragged).parents(".swimlane")[0]; - if (targetSwimLane != draggedSwimLane) { - updatePlanRecordProgress(newProgress); - } - event.preventDefault(); -} -function updatePlanRecordProgress(newProgress) { - if (draggedId > 0) { - if (newProgress == 'Done') { - //if user is marking the task as done, we will want them to enter the mileage so that we can auto-convert it. - Swal.fire({ - title: 'Mark Task as Done?', - html: `

    To confirm, please enter the current odometer reading on your vehicle, as we also need the current odometer to auto convert the task into the relevant record.

    - - `, - confirmButtonText: 'Confirm', - showCancelButton: true, - focusConfirm: false, - preConfirm: () => { - var odometer = $("#inputOdometer").val(); - if (odometer.trim() == '' && GetVehicleId().odometerOptional) { - odometer = '0'; - } - if (!odometer || isNaN(odometer)) { - Swal.showValidationMessage(`Please enter an odometer reading`) - } - return { odometer } - }, - }).then(function (result) { - if (result.isConfirmed) { - //Odometer Adjustments - var adjustedOdometer = GetAdjustedOdometer(0, result.value.odometer); - $.post('/Vehicle/UpdatePlanRecordProgress', { planRecordId: draggedId, planProgress: newProgress, odometer: adjustedOdometer }, function (data) { - if (data) { - successToast("Plan Progress Updated"); - var vehicleId = GetVehicleId().vehicleId; - getVehiclePlanRecords(vehicleId); - } else { - errorToast(genericErrorMessage()); - } - }); - } - draggedId = 0; - }); - } else { - $.post('/Vehicle/UpdatePlanRecordProgress', { planRecordId: draggedId, planProgress: newProgress }, function (data) { - if (data) { - successToast("Plan Progress Updated"); - var vehicleId = GetVehicleId().vehicleId; - getVehiclePlanRecords(vehicleId); - } else { - errorToast(genericErrorMessage()); - } - }); - draggedId = 0; - } - } -} -function orderPlanSupplies(planRecordTemplateId, closeSwal) { - if (closeSwal) { - Swal.close(); - } - $.get(`/Vehicle/OrderPlanSupplies?planRecordTemplateId=${planRecordTemplateId}`, function (data) { - if (data.success != undefined && !data.success) { - //success is provided. - errorToast(data.message); - } else { - //hide plan record template modal. - hidePlanRecordTemplatesModal(); - $("#planRecordTemplateSupplyOrderModalContent").html(data); - $("#planRecordTemplateSupplyOrderModal").modal('show'); - } - }) -} -function hideOrderSupplyModal() { - $("#planRecordTemplateSupplyOrderModal").modal('hide'); - showPlanRecordTemplatesModal(); -} -function configurePlanTableContextMenu(planRecordId, currentSwimLane) { - //clear any bound actions - $(".context-menu-move").off('click'); - //bind context menu actions - $(".context-menu-delete").on('click', () => { - deletePlanRecord(planRecordId, true); - }); - let planRecordIdArray = [planRecordId]; - $(".context-menu-print-tab-sticker").on('click', () => { - printTabStickers(planRecordIdArray, 'PlanRecord'); - }); - $(".context-menu-duplicate").on('click', () => { - duplicateRecords(planRecordIdArray, 'PlanRecord'); - }); - $(".context-menu-duplicate-vehicle").on('click', () => { - duplicateRecordsToOtherVehicles(planRecordIdArray, 'PlanRecord'); - }); - $(".context-menu-move.move-planned").on('click', () => { - draggedId = planRecordId; - updatePlanRecordProgress('Backlog'); - draggedId = 0; - }); - $(".context-menu-move.move-doing").on('click', () => { - draggedId = planRecordId; - updatePlanRecordProgress('InProgress'); - }); - $(".context-menu-move.move-testing").on('click', () => { - draggedId = planRecordId; - updatePlanRecordProgress('Testing'); - }); - $(".context-menu-move.move-done").on('click', () => { - draggedId = planRecordId; - updatePlanRecordProgress('Done'); - }); - //hide all move buttons - $(".context-menu-move").hide(); - $(".context-menu-delete").show(); //delete is always visible. - switch (currentSwimLane) { - case 'Backlog': - $(".context-menu-move.move-header").show(); - $(".context-menu-move.move-doing").show(); - $(".context-menu-move.move-testing").show(); - $(".context-menu-move.move-done").show(); - break; - case 'InProgress': - $(".context-menu-move.move-header").show(); - $(".context-menu-move.move-planned").show(); - $(".context-menu-move.move-testing").show(); - $(".context-menu-move.move-done").show(); - break; - case 'Testing': - $(".context-menu-move.move-header").show(); - $(".context-menu-move.move-planned").show(); - $(".context-menu-move.move-doing").show(); - $(".context-menu-move.move-done").show(); - break; - case 'Done': - break; - } -} -function showPlanTableContextMenu(e, planRecordId, currentSwimLane) { - if (event != undefined) { - event.preventDefault(); - } - if (getDeviceIsTouchOnly()) { - return; - } - if (planRecordId == 0) { - return; - } - $(".table-context-menu").fadeIn("fast"); - $(".table-context-menu").css({ - left: getMenuPosition(event.clientX, 'width', 'scrollLeft'), - top: getMenuPosition(event.clientY, 'height', 'scrollTop') - }); - configurePlanTableContextMenu(planRecordId, currentSwimLane); -} -function showPlanTableContextMenuForMobile(e, xPosition, yPosition, planRecordId, currentSwimLane) { - $(".table-context-menu").fadeIn("fast"); - $(".table-context-menu").css({ - left: getMenuPosition(xPosition, 'width', 'scrollLeft'), - top: getMenuPosition(yPosition, 'height', 'scrollTop') - }); - configurePlanTableContextMenu(planRecordId, currentSwimLane); - if (planTouchTimer) { - clearTimeout(planTouchTimer); - planTouchTimer = null; - } -} -var planTouchTimer; -var planTouchDuration = 3000; -function detectPlanItemLongTouch(sender, planRecordId, currentSwimLane) { - var touchX = event.touches[0].clientX; - var touchY = event.touches[0].clientY; - if (!planTouchTimer) { - planTouchTimer = setTimeout(function () { showPlanTableContextMenuForMobile(sender, touchX, touchY, planRecordId, currentSwimLane); detectPlanItemTouchEndPremature(sender); }, planTouchDuration); - } -} -function detectPlanItemTouchEndPremature(sender) { - if (planTouchTimer) { - clearTimeout(planTouchTimer); - planTouchTimer = null; - } -} \ No newline at end of file diff --git a/wwwroot/js/reminderrecord.js b/wwwroot/js/reminderrecord.js deleted file mode 100644 index 3cb08a4..0000000 --- a/wwwroot/js/reminderrecord.js +++ /dev/null @@ -1,378 +0,0 @@ -// Initialize reminder record modal for mobile (using shared mobile framework) -function initializeReminderRecordMobile() { - initMobileModal({ - modalId: '#reminderRecordModal', - dateInputId: '#reminderDate', - tagSelectorId: '#reminderRecordTag' - }); - - // Handle desktop initialization - if (!isMobileDevice()) { - initDatePicker($('#reminderDate'), true); - initTagSelector($("#reminderRecordTag")); - } -} - -function showEditReminderRecordModal(reminderId) { - $.get(`/Vehicle/GetReminderRecordForEditById?reminderRecordId=${reminderId}`, function (data) { - if (data) { - $("#reminderRecordModalContent").html(data); - - // Initialize mobile experience using shared framework - initializeReminderRecordMobile(); - - $("#reminderRecordModal").modal("show"); - $('#reminderRecordModal').off('shown.bs.modal').on('shown.bs.modal', function () { - if (getGlobalConfig().useMarkDown) { - toggleMarkDownOverlay("reminderNotes"); - } - }); - } - }); -} -function hideAddReminderRecordModal() { - $('#reminderRecordModal').modal('hide'); -} -function checkCustomMonthInterval() { - var selectedValue = $("#reminderRecurringMonth").val(); - if (selectedValue == "Other") { - $("#workAroundInput").show(); - Swal.fire({ - title: 'Specify Custom Time Interval', - html: ` - - - `, - confirmButtonText: 'Set', - focusConfirm: false, - preConfirm: () => { - const customMonth = $("#inputCustomMonth").val(); - if (!customMonth || isNaN(parseInt(customMonth)) || parseInt(customMonth) <= 0) { - Swal.showValidationMessage(`Please enter a valid number`); - } - const customMonthUnit = $("#inputCustomMonthUnit").val(); - return { customMonth, customMonthUnit } - }, - }).then(function (result) { - if (result.isConfirmed) { - customMonthInterval = result.value.customMonth; - customMonthIntervalUnit = result.value.customMonthUnit; - $("#reminderRecurringMonth > option[value='Other']").text(`Other: ${result.value.customMonth} ${result.value.customMonthUnit}`); - } else { - $("#reminderRecurringMonth").val(getReminderRecordModelData().monthInterval); - } - $("#workAroundInput").hide(); - }); - } -} -function checkCustomMileageInterval() { - var selectedValue = $("#reminderRecurringMileage").val(); - if (selectedValue == "Other") { - $("#workAroundInput").show(); - Swal.fire({ - title: 'Specify Custom Mileage Interval', - html: ` - - `, - confirmButtonText: 'Set', - focusConfirm: false, - preConfirm: () => { - const customMileage = $("#inputCustomMileage").val(); - if (!customMileage || isNaN(parseInt(customMileage)) || parseInt(customMileage) <= 0) { - Swal.showValidationMessage(`Please enter a valid number`); - } - return { customMileage } - }, - }).then(function (result) { - if (result.isConfirmed) { - customMileageInterval = result.value.customMileage; - $("#reminderRecurringMileage > option[value='Other']").text(`Other: ${result.value.customMileage}`); - } else { - $("#reminderRecurringMileage").val(getReminderRecordModelData().mileageInterval); - } - $("#workAroundInput").hide(); - }); - } -} -function deleteReminderRecord(reminderRecordId, e) { - if (e != undefined) { - event.stopPropagation(); - } - $("#workAroundInput").show(); - Swal.fire({ - title: "Confirm Deletion?", - text: "Deleted Reminders cannot be restored.", - showCancelButton: true, - confirmButtonText: "Delete", - confirmButtonColor: "#dc3545" - }).then((result) => { - if (result.isConfirmed) { - $.post(`/Vehicle/DeleteReminderRecordById?reminderRecordId=${reminderRecordId}`, function (data) { - if (data) { - hideAddReminderRecordModal(); - successToast("Reminder Deleted"); - var vehicleId = GetVehicleId().vehicleId; - getVehicleReminders(vehicleId); - } else { - errorToast(genericErrorMessage()); - } - }); - } else { - $("#workAroundInput").hide(); - } - }); -} -function toggleCustomThresholds() { - var isChecked = $("#reminderUseCustomThresholds").is(':checked'); - if (isChecked) { - $("#reminderCustomThresholds").collapse('show'); - } else { - $("#reminderCustomThresholds").collapse('hide'); - } -} -function saveReminderRecordToVehicle(isEdit) { - //get values - var formValues = getAndValidateReminderRecordValues(); - //validate - if (formValues.hasError) { - errorToast("Please check the form data"); - return; - } - //save to db. - $.post('/Vehicle/SaveReminderRecordToVehicleId', { reminderRecord: formValues }, function (data) { - if (data) { - successToast(isEdit ? "Reminder Updated" : "Reminder Added."); - hideAddReminderRecordModal(); - saveScrollPosition(); - getVehicleReminders(formValues.vehicleId); - } else { - errorToast(genericErrorMessage()); - } - }) -} -function appendMileageToOdometer(increment) { - var reminderMileage = $("#reminderMileage").val(); - var reminderMileageIsInvalid = reminderMileage.trim() == '' || parseInt(reminderMileage) < 0; - if (reminderMileageIsInvalid) { - reminderMileage = 0; - } else { - reminderMileage = parseInt(reminderMileage); - } - reminderMileage += increment; - $("#reminderMileage").val(reminderMileage); -} - -function enableRecurring() { - var reminderIsRecurring = $("#reminderIsRecurring").is(":checked"); - if (reminderIsRecurring) { - //check selected metric - var reminderMetric = $('#reminderOptions input:radio:checked').val(); - if (reminderMetric == "Date") { - $("#reminderRecurringMonth").attr('disabled', false); - $("#reminderRecurringMileage").attr('disabled', true); - } - else if (reminderMetric == "Odometer") { - $("#reminderRecurringMileage").attr('disabled', false); - $("#reminderRecurringMonth").attr('disabled', true); - } - else if (reminderMetric == "Both") { - $("#reminderRecurringMonth").attr('disabled', false); - $("#reminderRecurringMileage").attr('disabled', false); - } - } else { - $("#reminderRecurringMileage").attr('disabled', true); - $("#reminderRecurringMonth").attr('disabled', true); - } -} - -function markDoneReminderRecord(reminderRecordId, e) { - event.stopPropagation(); - var vehicleId = GetVehicleId().vehicleId; - $.post(`/Vehicle/PushbackRecurringReminderRecord?reminderRecordId=${reminderRecordId}`, function (data) { - if (data) { - successToast("Reminder Updated"); - getVehicleReminders(vehicleId); - } else { - errorToast(genericErrorMessage()); - } - }); -} - -function getAndValidateReminderRecordValues() { - var reminderDate = $("#reminderDate").val(); - var reminderMileage = parseInt(globalParseFloat($("#reminderMileage").val())).toString(); - var reminderDescription = $("#reminderDescription").val(); - var reminderNotes = $("#reminderNotes").val(); - var reminderOption = $('#reminderOptions input:radio:checked').val(); - var reminderIsRecurring = $("#reminderIsRecurring").is(":checked"); - var reminderRecurringMonth = $("#reminderRecurringMonth").val(); - var reminderRecurringMileage = $("#reminderRecurringMileage").val(); - var reminderTags = $("#reminderRecordTag").val(); - var vehicleId = GetVehicleId().vehicleId; - var reminderId = getReminderRecordModelData().id; - var reminderUseCustomThresholds = $("#reminderUseCustomThresholds").is(":checked"); - var reminderUrgentDays = $("#reminderUrgentDays").val(); - var reminderVeryUrgentDays = $("#reminderVeryUrgentDays").val(); - var reminderUrgentDistance = $("#reminderUrgentDistance").val(); - var reminderVeryUrgentDistance = $("#reminderVeryUrgentDistance").val(); - //validation - var hasError = false; - var reminderDateIsInvalid = reminderDate.trim() == ''; //eliminates whitespace. - var reminderMileageIsInvalid = reminderMileage.trim() == '' || isNaN(reminderMileage) || parseInt(reminderMileage) < 0; - if ((reminderOption == "Both" || reminderOption == "Date") && reminderDateIsInvalid) { - hasError = true; - $("#reminderDate").addClass("is-invalid"); - } else if (reminderOption == "Date") { - $("#reminderDate").removeClass("is-invalid"); - } - if ((reminderOption == "Both" || reminderOption == "Odometer") && reminderMileageIsInvalid) { - hasError = true; - $("#reminderMileage").addClass("is-invalid"); - } else if (reminderOption == "Odometer") { - $("#reminderMileage").removeClass("is-invalid"); - } - if (reminderDescription.trim() == '') { - hasError = true; - $("#reminderDescription").addClass("is-invalid"); - } else { - $("#reminderDescription").removeClass("is-invalid"); - } - if (reminderUseCustomThresholds) { - //validate custom threshold values - if (reminderUrgentDays.trim() == '' || isNaN(reminderUrgentDays) || parseInt(reminderUrgentDays) < 0) { - hasError = true; - $("#reminderUrgentDays").addClass("is-invalid"); - } else { - $("#reminderUrgentDays").removeClass("is-invalid"); - } - if (reminderVeryUrgentDays.trim() == '' || isNaN(reminderVeryUrgentDays) || parseInt(reminderVeryUrgentDays) < 0) { - hasError = true; - $("#reminderVeryUrgentDays").addClass("is-invalid"); - } else { - $("#reminderVeryUrgentDays").removeClass("is-invalid"); - } - if (reminderUrgentDistance.trim() == '' || isNaN(reminderUrgentDistance) || parseInt(reminderUrgentDistance) < 0) { - hasError = true; - $("#reminderUrgentDistance").addClass("is-invalid"); - } else { - $("#reminderUrgentDistance").removeClass("is-invalid"); - } - if (reminderVeryUrgentDistance.trim() == '' || isNaN(reminderVeryUrgentDistance) || parseInt(reminderVeryUrgentDistance) < 0) { - hasError = true; - $("#reminderVeryUrgentDistance").addClass("is-invalid"); - } else { - $("#reminderVeryUrgentDistance").removeClass("is-invalid"); - } - } - if (reminderOption == undefined) { - hasError = true; - $("#reminderMetricDate").addClass("is-invalid"); - $("#reminderMetricOdometer").addClass("is-invalid"); - $("#reminderMetricBoth").addClass("is-invalid"); - } else { - $("#reminderMetricDate").removeClass("is-invalid"); - $("#reminderMetricOdometer").removeClass("is-invalid"); - $("#reminderMetricBoth").removeClass("is-invalid"); - } - - return { - id: reminderId, - hasError: hasError, - vehicleId: vehicleId, - date: reminderDate, - mileage: reminderMileage, - description: reminderDescription, - notes: reminderNotes, - metric: reminderOption, - isRecurring: reminderIsRecurring, - useCustomThresholds: reminderUseCustomThresholds, - customThresholds: { - urgentDays: reminderUrgentDays, - veryUrgentDays: reminderVeryUrgentDays, - urgentDistance: reminderUrgentDistance, - veryUrgentDistance: reminderVeryUrgentDistance - }, - reminderMileageInterval: reminderRecurringMileage, - reminderMonthInterval: reminderRecurringMonth, - customMileageInterval: customMileageInterval, - customMonthInterval: customMonthInterval, - customMonthIntervalUnit: customMonthIntervalUnit, - tags: reminderTags - } -} -function createPlanRecordFromReminder(reminderRecordId) { - //get values - var formValues = getAndValidateReminderRecordValues(); - //validate - if (formValues.hasError) { - errorToast("Please check the form data"); - return; - } - var planModelInput = { - id: 0, - createdFromReminder: true, - vehicleId: formValues.vehicleId, - reminderRecordId: reminderRecordId, - description: formValues.description, - notes: formValues.notes - }; - $.post('/Vehicle/GetAddPlanRecordPartialView', { planModel: planModelInput }, function (data) { - $("#reminderRecordModal").modal("hide"); - $("#planRecordModalContent").html(data); - $("#planRecordModal").modal("show"); - }); -} - -function filterReminderTable(sender) { - var rowData = $(`#reminder-tab-pane table tbody tr`); - if (sender == undefined) { - rowData.removeClass('override-hide'); - return; - } - var tagName = sender.textContent; - //check for other applied filters - if ($(sender).hasClass("bg-primary")) { - rowData.removeClass('override-hide'); - $(sender).removeClass('bg-primary'); - $(sender).addClass('bg-secondary'); - updateReminderAggregateLabels(); - } else { - //hide table rows. - rowData.addClass('override-hide'); - $(`[data-tags~='${tagName}']`).removeClass('override-hide'); - updateReminderAggregateLabels(); - if ($(".tagfilter.bg-primary").length > 0) { - //disabling other filters - $(".tagfilter.bg-primary").addClass('bg-secondary'); - $(".tagfilter.bg-primary").removeClass('bg-primary'); - } - $(sender).addClass('bg-primary'); - $(sender).removeClass('bg-secondary'); - } -} -function updateReminderAggregateLabels() { - //update main count - var newCount = $("[data-record-type='cost']").parent(":not('.override-hide')").length; - var countLabel = $("[data-aggregate-type='count']"); - countLabel.text(`${countLabel.text().split(':')[0]}: ${newCount}`); - //update labels - //paste due - var pastDueCount = $("tr td span.badge.text-bg-secondary").parents("tr:not('.override-hide')").length; - var pastDueLabel = $('[data-aggregate-type="pastdue-count"]'); - pastDueLabel.text(`${pastDueLabel.text().split(':')[0]}: ${pastDueCount}`); - //very urgent - var veryUrgentCount = $("tr td span.badge.text-bg-danger").parents("tr:not('.override-hide')").length; - var veryUrgentLabel = $('[data-aggregate-type="veryurgent-count"]'); - veryUrgentLabel.text(`${veryUrgentLabel.text().split(':')[0]}: ${veryUrgentCount}`); - //urgent - var urgentCount = $("tr td span.badge.text-bg-warning").parents("tr:not('.override-hide')").length; - var urgentLabel = $('[data-aggregate-type="urgent-count"]'); - urgentLabel.text(`${urgentLabel.text().split(':')[0]}: ${urgentCount}`); - //not urgent - var notUrgentCount = $("tr td span.badge.text-bg-success").parents("tr:not('.override-hide')").length; - var notUrgentLabel = $('[data-aggregate-type="noturgent-count"]'); - notUrgentLabel.text(`${notUrgentLabel.text().split(':')[0]}: ${notUrgentCount}`); -} \ No newline at end of file diff --git a/wwwroot/js/reports.js b/wwwroot/js/reports.js deleted file mode 100644 index 13e19da..0000000 --- a/wwwroot/js/reports.js +++ /dev/null @@ -1,414 +0,0 @@ -function getYear() { - return $("#yearOption").val() ?? '0'; -} -function getAndValidateSelectedColumns() { - var reportVisibleColumns = []; - var reportExtraFields = []; - var tagFilterMode = $("#tagSelector").val(); - var tagsToFilter = $("#tagSelectorInput").val(); - var filterByDateRange = $("#dateRangeSelector").is(":checked"); - var printIndividualRecords = $("#printIndividualRecordsCheck").is(":checked"); - var startDate = $("#dateRangeStartDate").val(); - var endDate = $("#dateRangeEndDate").val(); - $("#columnSelector :checked").map(function () { - if ($(this).hasClass('column-default')) { - reportVisibleColumns.push(this.value); - } else { - reportExtraFields.push(this.value); - } - }); - var hasValidationError = false; - var validationErrorMessage = ""; - if (reportVisibleColumns.length + reportExtraFields.length == 0) { - hasValidationError = true; - validationErrorMessage = "You must select at least one column"; - } - if (filterByDateRange) { - //validate date range - let startDateTicks = $("#dateRangeStartDate").datepicker('getDate')?.getTime(); - let endDateTicks = $("#dateRangeEndDate").datepicker('getDate')?.getTime(); - if (!startDateTicks || !endDateTicks || startDateTicks > endDateTicks) { - hasValidationError = true; - validationErrorMessage = "Invalid date range"; - } - } - - if (hasValidationError) { - return { - hasError: true, - errorMessage: validationErrorMessage, - visibleColumns: [], - extraFields: [], - tagFilter: tagFilterMode, - tags: [], - filterByDateRange: filterByDateRange, - startDate: '', - endDate: '', - printIndividualRecords: printIndividualRecords - } - } else { - return { - hasError: false, - errorMessage: '', - visibleColumns: reportVisibleColumns, - extraFields: reportExtraFields, - tagFilter: tagFilterMode, - tags: tagsToFilter, - filterByDateRange: filterByDateRange, - startDate: startDate, - endDate: endDate, - printIndividualRecords: printIndividualRecords - } - } -} -function getSavedReportParameters() { - var vehicleId = GetVehicleId().vehicleId; - var selectedReportColumns = sessionStorage.getItem(`${vehicleId}_selectedReportColumns`); - if (selectedReportColumns != null) { - selectedReportColumns = JSON.parse(selectedReportColumns); - //unselected everything - $(".column-extrafield").prop('checked', false); - $(".column-default").prop('checked', false); - //load selected checkboxes - selectedReportColumns.extraFields.map(x => { - $(`[value='${x}'].column-extrafield`).prop('checked', true); - }); - selectedReportColumns.visibleColumns.map(x => { - $(`[value='${x}'].column-default`).prop('checked', true); - }); - $("#tagSelector").val(selectedReportColumns.tagFilter); - selectedReportColumns.tags.map(x => { - $("#tagSelectorInput").append(``) - }); - $("#dateRangeSelector").prop('checked', selectedReportColumns.filterByDateRange); - $("#dateRangeStartDate").val(selectedReportColumns.startDate); - $("#dateRangeEndDate").val(selectedReportColumns.endDate); - $("#printIndividualRecordsCheck").prop('checked', selectedReportColumns.printIndividualRecords); - } -} -function generateVehicleHistoryReport() { - var vehicleId = GetVehicleId().vehicleId; - $.get(`/Vehicle/GetReportParameters`, function (data) { - if (data) { - //prompt user to select columns - Swal.fire({ - html: data, - confirmButtonText: 'Generate Report', - focusConfirm: false, - preConfirm: () => { - //validate - var selectedColumnsData = getAndValidateSelectedColumns(); - if (selectedColumnsData.hasError) { - Swal.showValidationMessage(selectedColumnsData.errorMessage); - } - return { selectedColumnsData } - }, - didOpen: () => { - getSavedReportParameters(); - initTagSelector($("#tagSelectorInput")); - initDatePicker($('#dateRangeStartDate')); - initDatePicker($('#dateRangeEndDate')); - } - }).then(function (result) { - if (result.isConfirmed) { - //save params in sessionStorage - sessionStorage.setItem(`${vehicleId}_selectedReportColumns`, JSON.stringify(result.value.selectedColumnsData)); - //post params - $.post(`/Vehicle/GetVehicleHistory?vehicleId=${vehicleId}`, { - reportParameter: result.value.selectedColumnsData - }, function (data) { - if (data) { - printContainer(data); - } - }) - } - }); - } else { - errorToast(genericErrorMessage()); - } - }) -} -function updateCheckAll() { - var isChecked = $("#selectAllExpenseCheck").is(":checked"); - $(".reportCheckBox").prop('checked', isChecked); - setDebounce(refreshBarChart); -} -function updateCheck() { - setDebounce(refreshBarChart); - var allIsChecked = $(".reportCheckBox:checked").length == 6; - $("#selectAllExpenseCheck").prop("checked", allIsChecked); -} -function refreshMPGChart() { - var vehicleId = GetVehicleId().vehicleId; - var year = getYear(); - $.post('/Vehicle/GetMonthMPGByVehicle', {vehicleId: vehicleId, year: year}, function (data) { - $("#monthFuelMileageReportContent").html(data); - refreshReportHeader(); - }) -} -function refreshReportHeader() { - var vehicleId = GetVehicleId().vehicleId; - var year = getYear(); - $.post('/Vehicle/GetSummaryForVehicle', { vehicleId: vehicleId, year: year }, function (data) { - $("#reportHeaderContent").html(data); - }) -} -function setSelectedMetrics() { - var selectedMetricCheckBoxes = []; - $(".reportCheckBox:checked").map((index, elem) => { - selectedMetricCheckBoxes.push(elem.id); - }); - var yearMetric = $('#yearOption').val(); - var reminderMetric = $("#reminderOption").val(); - var vehicleId = GetVehicleId().vehicleId; - sessionStorage.setItem(`${vehicleId}_selectedMetricCheckBoxes`, JSON.stringify(selectedMetricCheckBoxes)); - sessionStorage.setItem(`${vehicleId}_yearMetric`, yearMetric); - sessionStorage.setItem(`${vehicleId}_reminderMetric`, reminderMetric); -} -function getSelectedMetrics() { - var vehicleId = GetVehicleId().vehicleId; - var selectedMetricCheckBoxes = sessionStorage.getItem(`${vehicleId}_selectedMetricCheckBoxes`); - var yearMetric = sessionStorage.getItem(`${vehicleId}_yearMetric`); - var reminderMetric = sessionStorage.getItem(`${vehicleId}_reminderMetric`); - if (selectedMetricCheckBoxes != null && yearMetric != null && reminderMetric != null) { - selectedMetricCheckBoxes = JSON.parse(selectedMetricCheckBoxes); - $(".reportCheckBox").prop('checked', false); - $("#selectAllExpenseCheck").prop("checked", false); - selectedMetricCheckBoxes.map(x => { - $(`#${x}`).prop('checked', true); - }); - if (selectedMetricCheckBoxes.length == 6) { - $("#selectAllExpenseCheck").prop("checked", true); - } - //check if option is available - if ($("#yearOption").has(`option[value=${yearMetric}]`).length > 0) { - $('#yearOption').val(yearMetric); - } - $("#reminderOption").val(reminderMetric); - //retrieve data. - yearUpdated(); - updateReminderPie(); - return true; - } - return false; -} -function refreshBarChart() { - var selectedMetrics = []; - var vehicleId = GetVehicleId().vehicleId; - var year = getYear(); - - if ($("#serviceExpenseCheck").is(":checked")) { - selectedMetrics.push('ServiceRecord'); - } - if ($("#repairExpenseCheck").is(":checked")) { - selectedMetrics.push('RepairRecord'); - } - if ($("#upgradeExpenseCheck").is(":checked")) { - selectedMetrics.push('UpgradeRecord'); - } - if ($("#gasExpenseCheck").is(":checked")) { - selectedMetrics.push('GasRecord'); - } - if ($("#taxExpenseCheck").is(":checked")) { - selectedMetrics.push('TaxRecord'); - } - if ($("#odometerExpenseCheck").is(":checked")) { - selectedMetrics.push('OdometerRecord'); - } - - $.post('/Vehicle/GetCostByMonthByVehicle', - { - vehicleId: vehicleId, - selectedMetrics: selectedMetrics, - year: year - }, function (data) { - $("#gasCostByMonthReportContent").html(data); - refreshMPGChart(); - }); - setSelectedMetrics(); -} -function showBarChartTable(elemClicked) { - var selectedMetrics = []; - var vehicleId = GetVehicleId().vehicleId; - var year = getYear(); - - if ($("#serviceExpenseCheck").is(":checked")) { - selectedMetrics.push('ServiceRecord'); - } - if ($("#repairExpenseCheck").is(":checked")) { - selectedMetrics.push('RepairRecord'); - } - if ($("#upgradeExpenseCheck").is(":checked")) { - selectedMetrics.push('UpgradeRecord'); - } - if ($("#gasExpenseCheck").is(":checked")) { - selectedMetrics.push('GasRecord'); - } - if ($("#taxExpenseCheck").is(":checked")) { - selectedMetrics.push('TaxRecord'); - } - if ($("#odometerExpenseCheck").is(":checked")) { - selectedMetrics.push('OdometerRecord'); - } - - $.post('/Vehicle/GetCostByMonthAndYearByVehicle', - { - vehicleId: vehicleId, - selectedMetrics: selectedMetrics, - year: year - }, function (data) { - $("#vehicleDataTableModalContent").html(data); - $("#vehicleDataTableModal").modal('show'); - //highlight clicked row. - if (elemClicked.length > 0) { - var rowClickedIndex = elemClicked[0].index + 1; - var rowToHighlight = $("#vehicleDataTableModalContent").find(`tbody > tr:nth-child(${rowClickedIndex})`); - if (rowToHighlight.length > 0) { - rowToHighlight.addClass('table-info'); - } - } - }); -} -function toggleBarChartTableData() { - //find out which column data type is shown - if (!$('[report-data="cost"]').hasClass('d-none')) { - //currently cost is shown. - $('[report-data="cost"]').addClass('d-none'); - $('[report-data="distance"]').removeClass('d-none'); - } - else if (!$('[report-data="distance"]').hasClass('d-none')) { - //currently distance is shown. - $('[report-data="distance"]').addClass('d-none'); - $('[report-data="costperdistance"]').removeClass('d-none'); - } - else if (!$('[report-data="costperdistance"]').hasClass('d-none')) { - //currently cost per distance is shown. - $('[report-data="costperdistance"]').addClass('d-none'); - $('[report-data="cost"]').removeClass('d-none'); - } -} -function toggleCostTableHint() { - if ($(".cost-table-hint").hasClass("d-none")) { - $(".cost-table-hint").removeClass("d-none"); - } else { - $(".cost-table-hint").addClass("d-none"); - } -} -function updateReminderPie() { - var vehicleId = GetVehicleId().vehicleId; - var daysToAdd = $("#reminderOption").val(); - setSelectedMetrics(); - $.get(`/Vehicle/GetReminderMakeUpByVehicle?vehicleId=${vehicleId}`, { daysToAdd: daysToAdd }, function (data) { - $("#reminderMakeUpReportContent").html(data); - }); -} -//called when year selected is changed. -function yearUpdated() { - var vehicleId = GetVehicleId().vehicleId; - var year = getYear(); - $.get(`/Vehicle/GetCostMakeUpForVehicle?vehicleId=${vehicleId}`, { year: year }, function (data) { - $("#costMakeUpReportContent").html(data); - refreshBarChart(); - }) -} -function refreshCollaborators() { - var vehicleId = GetVehicleId().vehicleId; - $.get(`/Vehicle/GetCollaboratorsForVehicle?vehicleId=${vehicleId}`, function (data) { - $("#collaboratorContent").html(data); - }); -} -function exportAttachments() { - Swal.fire({ - title: 'Export Attachments', - html: ` -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - `, - confirmButtonText: 'Export', - showCancelButton: true, - focusConfirm: false, - preConfirm: () => { - var selectedExportTabs = $("#attachmentTabs :checked").map(function () { - return this.value; - }); - if (selectedExportTabs.toArray().length == 0) { - Swal.showValidationMessage(`Please make at least one selection`) - } - return { selectedTabs: selectedExportTabs.toArray() } - }, - }).then(function (result) { - if (result.isConfirmed) { - var vehicleId = GetVehicleId().vehicleId; - $.post('/Vehicle/GetVehicleAttachments', { vehicleId: vehicleId, exportTabs: result.value.selectedTabs }, function (data) { - if (data.success) { - window.location.href = data.message; - } else { - errorToast(data.message); - } - }) - } - }); -} -function showDataTable(elemClicked) { - var vehicleId = GetVehicleId().vehicleId; - var year = getYear(); - $.get(`/Vehicle/GetCostTableForVehicle?vehicleId=${vehicleId}`, { year: year }, function (data) { - $("#vehicleDataTableModalContent").html(data); - $("#vehicleDataTableModal").modal('show'); - if (elemClicked.length > 0) { - var rowClickedIndex = elemClicked[0].index + 1; - var rowToHighlight = $("#vehicleDataTableModalContent").find(`tbody > tr:nth-child(${rowClickedIndex})`); - if (rowToHighlight.length > 0) { - rowToHighlight.addClass('table-info'); - } - } - }); -} -function hideDataTable() { - $("#vehicleDataTableModal").modal('hide'); -} -function loadCustomWidgets() { - $.get('/Vehicle/GetAdditionalWidgets', function (data) { - $("#vehicleCustomWidgetsModalContent").html(data); - $("#vehicleCustomWidgetsModal").modal('show'); - }) -} -function hideCustomWidgetsModal() { - $("#vehicleCustomWidgetsModal").modal('hide'); -} - -function showReportAdvancedParameters() { - if ($(".report-advanced-parameters").hasClass("d-none")) { - $(".report-advanced-parameters").removeClass("d-none"); - } else { - $(".report-advanced-parameters").addClass("d-none"); - } -} \ No newline at end of file diff --git a/wwwroot/js/serversettings.js b/wwwroot/js/serversettings.js deleted file mode 100644 index 950ba72..0000000 --- a/wwwroot/js/serversettings.js +++ /dev/null @@ -1,160 +0,0 @@ -function loadSetupPage(pageNumber) { - let pageElem = $(`.setup-wizard-content[data-page="${pageNumber}"]`); - if (pageElem.length > 0) { - $('.setup-wizard-content').hide(); - pageElem.show(); - } - determineSetupButtons(); -} -function determineSetupButtons() { - let currentVisiblePage = $(".setup-wizard-content:visible").attr('data-page'); - switch (currentVisiblePage) { - case '0': - case '5': - $(".setup-wizard-nav").hide(); - break; - case '1': - case '2': - case '3': - $(".setup-wizard-nav").show(); - $(".btn-prev").show(); - $(".btn-next").show(); - $(".btn-save").hide(); - break; - case '4': - $(".setup-wizard-nav").show(); - $(".btn-prev").show(); - $(".btn-next").hide(); - $(".btn-save").show(); - break; - } -} -function nextSetupPage() { - let currentVisiblePage = $(".setup-wizard-content:visible").attr('data-page'); - let nextPage = parseInt(currentVisiblePage) + 1; - loadSetupPage(nextPage); -} -function previousSetupPage() { - let currentVisiblePage = $(".setup-wizard-content:visible").attr('data-page'); - let prevPage = parseInt(currentVisiblePage) - 1; - loadSetupPage(prevPage); -} -function saveSetup() { - let setupData = { - PostgresConnection: $("#inputPostgres").val(), - AllowedFileExtensions: $("#inputFileExt").val(), - CustomLogoURL: $("#inputLogoURL").val(), - CustomSmallLogoURL: $("#inputSmallLogoURL").val(), - MessageOfTheDay: $("#inputMOTD").val(), - WebHookURL: $("#inputWebHook").val(), - ServerURL: $("#inputDomain").val(), - CustomWidgetsEnabled: $("#inputCustomWidget").val(), - InvariantAPIEnabled: $("#inputInvariantAPI").val(), - SMTPConfig: { - EmailServer: $("#inputSMTPServer").val(), - EmailFrom: $("#inputSMTPFrom").val(), - Port: $("#inputSMTPPort").val(), - Username: $("#inputSMTPUsername").val(), - Password: $("#inputSMTPPassword").val() - }, - OIDCConfig: { - Name: $("#inputOIDCProvider").val(), - ClientId: $("#inputOIDCClient").val(), - ClientSecret: $("#inputOIDCSecret").val(), - AuthURL: $("#inputOIDCAuth").val(), - TokenURL: $("#inputOIDCToken").val(), - RedirectURL: $("#inputOIDCRedirect").val(), - Scope: $("#inputOIDCScope").val(), - ValidateState: $("#inputOIDCState").val(), - DisableRegularLogin: $("#inputOIDCDisable").val(), - UsePKCE: $("#inputOIDCPKCE").val(), - LogOutURL: $("#inputOIDCLogout").val(), - UserInfoURL: $("#inputOIDCUserInfo").val() - }, - ReminderUrgencyConfig: { - UrgentDays: $("#inputUrgentDays").val(), - VeryUrgentDays: $("#inputVeryUrgentDays").val(), - UrgentDistance: $("#inputUrgentDistance").val(), - VeryUrgentDistance: $("#inputVeryUrgentDistance").val() - }, - DefaultReminderEmail: $("#inputDefaultReminderEmail").val(), - EnableRootUserOIDC: $("#inputOIDCRootUser").val() - }; - let registrationMode = $("#inputRegistrationMode"); - if (registrationMode.length > 0) { - switch (registrationMode.val()) { - case '0': - setupData["DisableRegistration"] = 'false'; - setupData["OpenRegistration"] = 'false' - break; - case '1': - setupData["DisableRegistration"] = 'true'; - setupData["OpenRegistration"] = 'false' - break; - case '2': - setupData["DisableRegistration"] = 'false'; - setupData["OpenRegistration"] = 'true' - break; - } - } - //nullify skipped settings - if ($("#skipSMTP").is(":checked")) { - setupData["SMTPConfig"] = null; - } - if ($("#skipOIDC").is(":checked")) { - setupData["OIDCConfig"] = null; - } - if ($("#skipPostgres").is(":checked")) { - setupData["PostgresConnection"] = null; - } - let rootUserOIDC = $("#inputOIDCRootUser"); - if (rootUserOIDC.length > 0) { - setupData["EnableRootUserOIDC"] = $("#inputOIDCRootUser").val(); - } - $.post('/Home/WriteServerConfiguration', { serverConfig: setupData }, function (data) { - if (data) { - nextSetupPage(); - } else { - errorToast(genericErrorMessage()); - } - }) -} -function sendTestEmail() { - let mailConfig = { - EmailServer: $("#inputSMTPServer").val(), - EmailFrom: $("#inputSMTPFrom").val(), - Port: $("#inputSMTPPort").val(), - Username: $("#inputSMTPUsername").val(), - Password: $("#inputSMTPPassword").val() - } - Swal.fire({ - title: 'Send Test Email', - html: ` - - `, - confirmButtonText: 'Send', - focusConfirm: false, - preConfirm: () => { - const emailRecipient = $("#testEmailRecipient").val(); - if (!emailRecipient || emailRecipient.trim() == '') { - Swal.showValidationMessage(`Please enter a valid email address`); - } - return { emailRecipient } - }, - }).then(function (result) { - if (result.isConfirmed) { - $.post('/Home/SendTestEmail', { emailAddress: result.value.emailRecipient, mailConfig: mailConfig }, function (data) { - if (data.success) { - successToast(data.message); - } else { - errorToast(data.message); - } - }); - } - }); -} -function nextOnSkip(sender) { - if ($(sender).is(":checked")) { - nextSetupPage(); - } -} \ No newline at end of file diff --git a/wwwroot/js/servicerecord.js b/wwwroot/js/servicerecord.js deleted file mode 100644 index 3902542..0000000 --- a/wwwroot/js/servicerecord.js +++ /dev/null @@ -1,173 +0,0 @@ -// Initialize service record modal for mobile (using shared mobile framework) -function initializeServiceRecordMobile() { - initMobileModal({ - modalId: '#serviceRecordModal', - dateInputId: '#serviceRecordDate', - tagSelectorId: '#serviceRecordTag' - }); - - // Handle desktop initialization - if (!isMobileDevice()) { - initDatePicker($('#serviceRecordDate')); - initTagSelector($("#serviceRecordTag")); - } -} - -function showAddServiceRecordModal() { - $.get('/Vehicle/GetAddServiceRecordPartialView', function (data) { - if (data) { - $("#serviceRecordModalContent").html(data); - - // Initialize mobile experience using shared framework - initializeServiceRecordMobile(); - - $('#serviceRecordModal').modal('show'); - } - }); -} -function showEditServiceRecordModal(serviceRecordId, nocache) { - if (!nocache) { - var existingContent = $("#serviceRecordModalContent").html(); - if (existingContent.trim() != '') { - //check if id is same. - var existingId = getServiceRecordModelData().id; - if (existingId == serviceRecordId && $('[data-changed=true]').length > 0) { - $('#serviceRecordModal').modal('show'); - $('.cached-banner').show(); - return; - } - } - } - $.get(`/Vehicle/GetServiceRecordForEditById?serviceRecordId=${serviceRecordId}`, function (data) { - if (data) { - $("#serviceRecordModalContent").html(data); - - // Initialize mobile experience using shared framework - initializeServiceRecordMobile(); - - $('#serviceRecordModal').modal('show'); - bindModalInputChanges('serviceRecordModal'); - $('#serviceRecordModal').off('shown.bs.modal').on('shown.bs.modal', function () { - if (getGlobalConfig().useMarkDown) { - toggleMarkDownOverlay("serviceRecordNotes"); - } - }); - } - }); -} -function hideAddServiceRecordModal() { - $('#serviceRecordModal').modal('hide'); -} -function deleteServiceRecord(serviceRecordId) { - $("#workAroundInput").show(); - Swal.fire({ - title: "Confirm Deletion?", - text: "Deleted Service Records cannot be restored.", - showCancelButton: true, - confirmButtonText: "Delete", - confirmButtonColor: "#dc3545" - }).then((result) => { - if (result.isConfirmed) { - $.post(`/Vehicle/DeleteServiceRecordById?serviceRecordId=${serviceRecordId}`, function (data) { - if (data) { - hideAddServiceRecordModal(); - successToast("Service Record Deleted"); - var vehicleId = GetVehicleId().vehicleId; - getVehicleServiceRecords(vehicleId); - } else { - errorToast(genericErrorMessage()); - } - }); - } else { - $("#workAroundInput").hide(); - } - }); -} -function saveServiceRecordToVehicle(isEdit) { - //get values - var formValues = getAndValidateServiceRecordValues(); - //validate - if (formValues.hasError) { - errorToast("Please check the form data"); - return; - } - //save to db. - $.post('/Vehicle/SaveServiceRecordToVehicleId', { serviceRecord: formValues }, function (data) { - if (data) { - successToast(isEdit ? "Service Record Updated" : "Service Record Added."); - hideAddServiceRecordModal(); - saveScrollPosition(); - getVehicleServiceRecords(formValues.vehicleId); - if (formValues.addReminderRecord) { - setTimeout(function () { showAddReminderModal(formValues); }, 500); - } - } else { - errorToast(genericErrorMessage()); - } - }) -} -function getAndValidateServiceRecordValues() { - var serviceDate = $("#serviceRecordDate").val(); - var serviceMileage = parseInt(globalParseFloat($("#serviceRecordMileage").val())).toString(); - var serviceDescription = $("#serviceRecordDescription").val(); - var serviceCost = $("#serviceRecordCost").val(); - var serviceNotes = $("#serviceRecordNotes").val(); - var serviceTags = $("#serviceRecordTag").val(); - var vehicleId = GetVehicleId().vehicleId; - var serviceRecordId = getServiceRecordModelData().id; - var addReminderRecord = $("#addReminderCheck").is(":checked"); - //Odometer Adjustments - if (isNaN(serviceMileage) && GetVehicleId().odometerOptional) { - serviceMileage = '0'; - } - serviceMileage = GetAdjustedOdometer(serviceRecordId, serviceMileage); - //validation - var hasError = false; - var extraFields = getAndValidateExtraFields(); - if (extraFields.hasError) { - hasError = true; - } - if (serviceDate.trim() == '') { //eliminates whitespace. - hasError = true; - $("#serviceRecordDate").addClass("is-invalid"); - } else { - $("#serviceRecordDate").removeClass("is-invalid"); - } - if (serviceMileage.trim() == '' || isNaN(serviceMileage) || parseInt(serviceMileage) < 0) { - hasError = true; - $("#serviceRecordMileage").addClass("is-invalid"); - } else { - $("#serviceRecordMileage").removeClass("is-invalid"); - } - if (serviceDescription.trim() == '') { - hasError = true; - $("#serviceRecordDescription").addClass("is-invalid"); - } else { - $("#serviceRecordDescription").removeClass("is-invalid"); - } - if (serviceCost.trim() == '' || !isValidMoney(serviceCost)) { - hasError = true; - $("#serviceRecordCost").addClass("is-invalid"); - } else { - $("#serviceRecordCost").removeClass("is-invalid"); - } - return { - id: serviceRecordId, - hasError: hasError, - vehicleId: vehicleId, - date: serviceDate, - mileage: serviceMileage, - description: serviceDescription, - cost: serviceCost, - notes: serviceNotes, - files: uploadedFiles, - supplies: selectedSupplies, - tags: serviceTags, - addReminderRecord: addReminderRecord, - extraFields: extraFields.extraFields, - requisitionHistory: supplyUsageHistory, - deletedRequisitionHistory: deletedSupplyUsageHistory, - reminderRecordId: recurringReminderRecordId, - copySuppliesAttachment: copySuppliesAttachments - } -} \ No newline at end of file diff --git a/wwwroot/js/settings.js b/wwwroot/js/settings.js deleted file mode 100644 index e559b0c..0000000 --- a/wwwroot/js/settings.js +++ /dev/null @@ -1,420 +0,0 @@ -function showExtraFieldModal() { - $.get(`/Home/GetExtraFieldsModal?importMode=0`, function (data) { - $("#extraFieldModalContent").html(data); - $("#extraFieldModal").modal('show'); - }); -} -function hideExtraFieldModal() { - $("#extraFieldModal").modal('hide'); -} -function getCheckedTabs() { - var visibleTabs = $("#visibleTabs :checked").map(function () { - return this.value; - }); - return visibleTabs.toArray(); -} -function deleteLanguage() { - var languageFileLocation = `/translations/${$("#defaultLanguage").val()}.json`; - $.post('/Files/DeleteFiles', { fileLocation: languageFileLocation }, function (data) { - //reset user language back to en_US - $("#defaultLanguage").val('en_US'); - updateSettings(); - }); -} -function updateColorModeSettings(e) { - var colorMode = $(e).prop("id"); - switch (colorMode) { - case "enableDarkMode": - //uncheck system prefernce - $("#useSystemColorMode").prop('checked', false); - // Apply theme immediately - if ($("#enableDarkMode").is(':checked')) { - $(document.documentElement).attr("data-bs-theme", "dark"); - } else { - $(document.documentElement).attr("data-bs-theme", "light"); - } - updateSettings(); - break; - case "useSystemColorMode": - $("#enableDarkMode").prop('checked', false); - // Apply system theme immediately - if ($("#useSystemColorMode").is(':checked')) { - setThemeBasedOnDevice(); - } else { - $(document.documentElement).attr("data-bs-theme", "light"); - } - updateSettings(); - break; - } -} -function updateSettings() { - var visibleTabs = getCheckedTabs(); - var defaultTab = $("#defaultTab").val(); - if (!visibleTabs.includes(defaultTab)) { - defaultTab = "Dashboard"; //default to dashboard. - } - var tabOrder = getTabOrder(); - - var userConfigObject = { - useDarkMode: $("#enableDarkMode").is(':checked'), - useSystemColorMode: $("#useSystemColorMode").is(':checked'), - enableCsvImports: $("#enableCsvImports").is(':checked'), - useMPG: $("#useMPG").is(':checked'), - useDescending: $("#useDescending").is(':checked'), - hideZero: $("#hideZero").is(":checked"), - automaticDecimalFormat: $("#automaticDecimalFormat").is(":checked"), - useUKMpg: $("#useUKMPG").is(":checked"), - useThreeDecimalGasCost: $("#useThreeDecimal").is(":checked"), - useThreeDecimalGasConsumption: $("#useThreeDecimalGasConsumption").is(":checked"), - useMarkDownOnSavedNotes: $("#useMarkDownOnSavedNotes").is(":checked"), - enableAutoReminderRefresh: $("#enableAutoReminderRefresh").is(":checked"), - enableAutoOdometerInsert: $("#enableAutoOdometerInsert").is(":checked"), - enableShopSupplies: $("#enableShopSupplies").is(":checked"), - showCalendar: $("#showCalendar").is(":checked"), - showVehicleThumbnail: $("#showVehicleThumbnail").is(":checked"), - enableExtraFieldColumns: $("#enableExtraFieldColumns").is(":checked"), - hideSoldVehicles: $("#hideSoldVehicles").is(":checked"), - preferredGasUnit: $("#preferredGasUnit").val(), - preferredGasMileageUnit: $("#preferredFuelMileageUnit").val(), - userLanguage: $("#defaultLanguage").val(), - useUnitForFuelCost: $("#useUnitForFuelCost").is(":checked"), - visibleTabs: visibleTabs, - defaultTab: defaultTab, - tabOrder: tabOrder - } - sloader.show(); - $.post('/Home/WriteToSettings', { userConfig: userConfigObject }, function (data) { - sloader.hide(); - if (data) { - setTimeout(function () { window.location.href = '/Home/Index?tab=settings' }, 500); - } else { - errorToast(genericErrorMessage()); - } - }) -} -function makeBackup() { - $.get('/Files/MakeBackup', function (data) { - window.location.href = data; - }); -} -function openUploadLanguage() { - $("#inputLanguage").trigger('click'); -} -function openRestoreBackup() { - $("#inputBackup").trigger('click'); -} -function uploadLanguage(event) { - let formData = new FormData(); - formData.append("file", event.files[0]); - sloader.show(); - $.ajax({ - url: "/Files/HandleTranslationFileUpload", - data: formData, - cache: false, - processData: false, - contentType: false, - type: 'POST', - success: function (response) { - sloader.hide(); - if (response.success) { - setTimeout(function () { window.location.href = '/Home/Index?tab=settings' }, 500); - } else { - errorToast(response.message); - } - }, - error: function () { - sloader.hide(); - errorToast("An error has occurred, please check the file size and try again later."); - } - }); -} -function restoreBackup(event) { - let formData = new FormData(); - formData.append("file", event.files[0]); - console.log('MotoVaultPro - DB Restoration Started'); - sloader.show(); - $.ajax({ - url: "/Files/HandleFileUpload", - data: formData, - cache: false, - processData: false, - contentType: false, - type: 'POST', - success: function (response) { - if (response.trim() != '') { - $.post('/Files/RestoreBackup', { fileName: response }, function (data) { - sloader.hide(); - if (data) { - console.log('MotoVaultPro - DB Restoration Completed'); - successToast("Backup Restored"); - setTimeout(function () { window.location.href = '/Home/Index' }, 500); - } else { - errorToast(genericErrorMessage()); - console.log('MotoVaultPro - DB Restoration Failed - Failed to process backup file.'); - } - }); - } else { - console.log('MotoVaultPro - DB Restoration Failed - Failed to upload backup file.'); - } - }, - error: function () { - sloader.hide(); - console.log('MotoVaultPro - DB Restoration Failed - Request failed to reach backend, please check file size.'); - errorToast("An error has occurred, please check the file size and try again later."); - } - }); -} - -function loadSponsors() { - $.get('/Home/Sponsors', function (data) { - $("#sponsorsContainer").html(data); - }) -} - -function showTranslationEditor() { - $.get(`/Home/GetTranslatorEditor?userLanguage=${$("#defaultLanguage").val()}`, function (data) { - $('#translationEditorModalContent').html(data); - $('#translationEditorModal').modal('show'); - }) -} -function hideTranslationEditor() { - $('#translationEditorModal').modal('hide'); -} -function saveTranslation() { - var currentLanguage = $("#defaultLanguage").val(); - var translationData = []; - $(".translation-keyvalue").map((index, elem) => { - var translationKey = $(elem).find('.translation-key'); - var translationValue = $(elem).find('.translation-value textarea'); - translationData.push({ key: translationKey.text().replaceAll(' ', '_').trim(), value: translationValue.val().trim() }); - }); - if (translationData.length == 0) { - errorToast(genericErrorMessage()); - return; - } - var userCanDelete = $(".translation-delete").length > 0; - Swal.fire({ - title: 'Save Translation', - html: ` - - `, - confirmButtonText: 'Save', - focusConfirm: false, - preConfirm: () => { - const translationFileName = $("#translationFileName").val(); - if (!translationFileName || translationFileName.trim() == '') { - Swal.showValidationMessage(`Please enter a valid file name`); - } else if (translationFileName.trim() == 'en_US' && !userCanDelete) { - Swal.showValidationMessage(`en_US is reserved, please enter a different name`); - } - return { translationFileName } - }, - }).then(function (result) { - if (result.isConfirmed) { - $.post('/Home/SaveTranslation', { userLanguage: result.value.translationFileName, translationData: translationData }, function (data) { - if (data.success) { - successToast("Translation Updated"); - updateSettings(); - } else { - errorToast(genericErrorMessage()); - } - }); - } - }); -} -function exportTranslation(){ - var translationData = []; - $(".translation-keyvalue").map((index, elem) => { - var translationKey = $(elem).find('.translation-key'); - var translationValue = $(elem).find('.translation-value textarea'); - translationData.push({ key: translationKey.text().replaceAll(' ', '_').trim(), value: translationValue.val().trim() }); - }); - if (translationData.length == 0) { - errorToast(genericErrorMessage()); - return; - } - $.post('/Home/ExportTranslation', { translationData: translationData }, function (data) { - if (!data) { - errorToast(genericErrorMessage()); - } else { - window.location.href = data; - } - }); -} -function showTranslationDownloader() { - $.get('/Home/GetAvailableTranslations', function(data){ - $('#translationDownloadModalContent').html(data); - $('#translationDownloadModal').modal('show'); - }) -} -function hideTranslationDownloader() { - $('#translationDownloadModal').modal('hide'); -} -function downloadTranslation(continent, name) { - sloader.show(); - $.get(`/Home/DownloadTranslation?continent=${continent}&name=${name}`, function (data) { - sloader.hide(); - if (data) { - successToast("Translation Downloaded"); - updateSettings(); - } else { - errorToast(genericErrorMessage()); - } - }) -} -function downloadAllTranslations() { - sloader.show(); - $.get('/Home/DownloadAllTranslations', function (data) { - sloader.hide(); - if (data.success) { - successToast(data.message); - updateSettings(); - } else { - errorToast(data.message); - } - }) -} -function deleteTranslationKey(e) { - $(e).parent().parent().remove(); -} -//tabs reorder -function showTabReorderModal() { - //reorder the list items based on the CSS attribute - var sortedOrderedTabs = $(".motovaultpro-tab-groups > li").toArray().sort((a, b) => { - var currentVal = $(a).css("order"); - var nextVal = $(b).css("order"); - return currentVal - nextVal; - }); - $(".motovaultpro-tab-groups").html(sortedOrderedTabs); - $("#tabReorderModal").modal('show'); - bindTabReorderEvents(); -} -function hideTabReorderModal() { - $("#tabReorderModal").modal('hide'); -} -var tabDraggedToReorder = undefined; -function handleTabDragStart(e) { - tabDraggedToReorder = $(e.target).closest('.list-group-item'); - //clear out order attribute. - $(".motovaultpro-tab-groups > li").map((index, elem) => { - $(elem).css('order', 0); - }) -} -function handleTabDragOver(e) { - if (tabDraggedToReorder == undefined || tabDraggedToReorder == "") { - return; - } - var potentialDropTarget = $(e.target).closest('.list-group-item').attr("data-tab"); - var draggedTarget = tabDraggedToReorder.closest('.list-group-item').attr("data-tab"); - if (draggedTarget != potentialDropTarget) { - var targetObj = $(e.target).closest('.list-group-item'); - var draggedOrder = tabDraggedToReorder.index(); - var targetOrder = targetObj.index(); - if (draggedOrder < targetOrder) { - tabDraggedToReorder.insertAfter(targetObj); - } else { - tabDraggedToReorder.insertBefore(targetObj); - } - } - else { - event.preventDefault(); - } -} -function bindTabReorderEvents() { - $(".motovaultpro-tab-groups > li").on('dragstart', event => { - handleTabDragStart(event); - }); - $(".motovaultpro-tab-groups > li").on('dragover', event => { - handleTabDragOver(event); - }); - $(".motovaultpro-tab-groups > li").on('dragend', event => { - //reset order attribute - $(".motovaultpro-tab-groups > li").map((index, elem) => { - $(elem).css('order', $(elem).index()); - }) - }); -} -function getTabOrder() { - var tabOrderArray = []; - //check if any tabs have -1 order - var resetTabs = $(".motovaultpro-tab-groups > li").filter((index, elem) => $(elem).css('order') == -1).length > 0; - if (resetTabs) { - return tabOrderArray; //return empty array. - } - var sortedOrderedTabs = $(".motovaultpro-tab-groups > li").toArray().sort((a, b) => { - var currentVal = $(a).css("order"); - var nextVal = $(b).css("order"); - return currentVal - nextVal; - }); - sortedOrderedTabs.map(elem => { - var elemName = $(elem).attr("data-tab"); - tabOrderArray.push(elemName); - }); - return tabOrderArray; -} -function resetTabOrder() { - //set all orders to -1 - $(".motovaultpro-tab-groups > li").map((index, elem) => { - $(elem).css('order', -1); - }) - updateSettings(); -} - -function hideCustomWidgets() { - $("#customWidgetModal").modal('hide'); -} -function saveCustomWidgets() { - $.post('/Home/SaveCustomWidgets', { widgetsData: $("#widgetEditor").val() }, function (data) { - if (data) { - successToast("Custom Widgets Saved!"); - updateSettings(); - } else { - errorToast(genericErrorMessage()); - } - }) -} -function deleteCustomWidgets() { - $.post('/Home/DeleteCustomWidgets', function (data) { - if (data) { - successToast("Custom Widgets Deleted!"); - updateSettings(); - } else { - errorToast(genericErrorMessage()); - } - }) -} -function showCustomWidgets() { - Swal.fire({ - title: 'Warning', - icon: "warning", - html: ` - - You are about to use the Custom Widgets Editor, this is a developer-focused feature that can lead to security vulnerabilities if you don't understand what you're doing. -
    Zero support will be provided from the developer(s) of MotoVaultPro regarding Custom Widgets, Read the Documentation. -
    By proceeding, you acknowledge that you are solely responsible for all consequences from utilizing the Custom Widgets Editor. -
    To proceed, enter 'acknowledge' into the text field below. -
    - - `, - confirmButtonText: 'Proceed', - focusConfirm: false, - preConfirm: () => { - const userAcknowledge = $("#inputAcknowledge").val(); - if (!userAcknowledge || userAcknowledge != 'acknowledge') { - Swal.showValidationMessage(`Please acknowledge before proceeding.`) - } - return { userAcknowledge } - }, - }).then(function (result) { - if (result.isConfirmed) { - $.get('/Home/GetCustomWidgetEditor', function (data) { - if (data.trim() != '') { - $("#customWidgetModalContent").html(data); - $("#customWidgetModal").modal('show'); - } else { - errorToast("Custom Widgets Not Enabled"); - } - }); - } - }); -} \ No newline at end of file diff --git a/wwwroot/js/shared.js b/wwwroot/js/shared.js deleted file mode 100644 index 05b2472..0000000 --- a/wwwroot/js/shared.js +++ /dev/null @@ -1,1827 +0,0 @@ -function returnToGarage() { - window.location.href = '/Home'; -} -function successToast(message) { - Swal.fire({ - toast: true, - position: "top-end", - showConfirmButton: false, - timer: 3000, - title: message, - timerProgressBar: true, - icon: "success", - didOpen: (toast) => { - toast.onmouseenter = Swal.stopTimer; - toast.onmouseleave = Swal.resumeTimer; - } - }) -} -function errorToast(message) { - Swal.fire({ - toast: true, - position: "top-end", - showConfirmButton: false, - timer: 3000, - title: message, - timerProgressBar: true, - icon: "error", - didOpen: (toast) => { - toast.onmouseenter = Swal.stopTimer; - toast.onmouseleave = Swal.resumeTimer; - } - }) -} -function infoToast(message) { - Swal.fire({ - toast: true, - position: "top-end", - showConfirmButton: false, - timer: 3000, - title: message, - timerProgressBar: true, - icon: "info", - didOpen: (toast) => { - toast.onmouseenter = Swal.stopTimer; - toast.onmouseleave = Swal.resumeTimer; - } - }) -} -function viewVehicle(vehicleId) { - window.location.href = `/Vehicle/Index?vehicleId=${vehicleId}`; -} -function saveVehicle(isEdit) { - var vehicleId = getVehicleModelData().id; - var vehicleYear = $("#inputYear").val(); - var vehicleMake = $("#inputMake").val(); - var vehicleModel = $("#inputModel").val(); - var vehicleTags = $("#inputTag").val(); - var vehiclePurchaseDate = $("#inputPurchaseDate").val(); - var vehicleSoldDate = $("#inputSoldDate").val(); - var vehicleLicensePlate = $("#inputLicensePlate").val(); - var vehicleVinNumber = $("#inputVinNumber").val(); - var vehicleIsElectric = $("#inputFuelType").val() == 'Electric'; - var vehicleIsDiesel = $("#inputFuelType").val() == 'Diesel'; - var vehicleUseHours = $("#inputUseHours").is(":checked"); - var vehicleOdometerOptional = $("#inputOdometerOptional").is(":checked"); - var vehicleHasOdometerAdjustment = $("#inputHasOdometerAdjustment").is(':checked'); - var vehicleOdometerMultiplier = $("#inputOdometerMultiplier").val(); - var vehicleOdometerDifference = parseInt(globalParseFloat($("#inputOdometerDifference").val())).toString(); - var vehiclePurchasePrice = $("#inputPurchasePrice").val(); - var vehicleSoldPrice = $("#inputSoldPrice").val(); - var vehicleIdentifier = $("#inputIdentifier").val(); - var vehicleDashboardMetrics = $("#collapseMetricInfo :checked").map(function () { - return this.value; - }).toArray(); - var extraFields = getAndValidateExtraFields(); - //validate - var hasError = false; - if (extraFields.hasError) { - hasError = true; - } - if (vehicleYear.trim() == '' || parseInt(vehicleYear) < 1900) { - hasError = true; - $("#inputYear").addClass("is-invalid"); - } else { - $("#inputYear").removeClass("is-invalid"); - } - if (vehicleMake.trim() == '') { - hasError = true; - $("#inputMake").addClass("is-invalid"); - } else { - $("#inputMake").removeClass("is-invalid"); - } - if (vehicleModel.trim() == '') { - hasError = true; - $("#inputModel").addClass("is-invalid"); - } else { - $("#inputModel").removeClass("is-invalid"); - } - if (vehicleIdentifier == "LicensePlate") { - if (vehicleLicensePlate.trim() == '') { - hasError = true; - $("#inputLicensePlate").addClass("is-invalid"); - } else { - $("#inputLicensePlate").removeClass("is-invalid"); - } - } else { - $("#inputLicensePlate").removeClass("is-invalid"); - //check if extra fields have value. - var vehicleIdentifierExtraField = extraFields.extraFields.filter(x => x.name == vehicleIdentifier); - //check if extra field exists. - if (vehicleIdentifierExtraField.length == 0) { - $(".modal.fade.show").find(`.extra-field [placeholder='${vehicleIdentifier}']`).addClass("is-invalid"); - hasError = true; - } else { - $(".modal.fade.show").find(`.extra-field [placeholder='${vehicleIdentifier}']`).removeClass("is-invalid"); - } - } - - if (vehicleHasOdometerAdjustment) { - //validate odometer adjustments - //validate multiplier - if (vehicleOdometerMultiplier.trim() == '' || !isValidMoney(vehicleOdometerMultiplier)) { - hasError = true; - $("#inputOdometerMultiplier").addClass("is-invalid"); - } else { - $("#inputOdometerMultiplier").removeClass("is-invalid"); - } - //validate difference - if (vehicleOdometerDifference.trim() == '' || isNaN(vehicleOdometerDifference)) { - hasError = true; - $("#inputOdometerDifference").addClass("is-invalid"); - } else { - $("#inputOdometerDifference").removeClass("is-invalid"); - } - } - if (vehiclePurchasePrice.trim() != '' && !isValidMoney(vehiclePurchasePrice)) { - hasError = true; - $("#inputPurchasePrice").addClass("is-invalid"); - $("#collapsePurchaseInfo").collapse('show'); - } else { - $("#inputPurchasePrice").removeClass("is-invalid"); - } - if (vehicleSoldPrice.trim() != '' && !isValidMoney(vehicleSoldPrice)) { - hasError = true; - $("#inputSoldPrice").addClass("is-invalid"); - $("#collapsePurchaseInfo").collapse('show'); - } else { - $("#inputSoldPrice").removeClass("is-invalid"); - } - if (hasError) { - return; - } - $.post('/Vehicle/SaveVehicle', { - id: vehicleId, - imageLocation: uploadedFile, - year: vehicleYear, - make: vehicleMake, - model: vehicleModel, - licensePlate: vehicleLicensePlate, - vinNumber: vehicleVinNumber, - isElectric: vehicleIsElectric, - isDiesel: vehicleIsDiesel, - tags: vehicleTags, - useHours: vehicleUseHours, - extraFields: extraFields.extraFields, - purchaseDate: vehiclePurchaseDate, - soldDate: vehicleSoldDate, - odometerOptional: vehicleOdometerOptional, - hasOdometerAdjustment: vehicleHasOdometerAdjustment, - odometerMultiplier: vehicleOdometerMultiplier, - odometerDifference: vehicleOdometerDifference, - purchasePrice: vehiclePurchasePrice, - soldPrice: vehicleSoldPrice, - dashboardMetrics: vehicleDashboardMetrics, - vehicleIdentifier: vehicleIdentifier - }, function (data) { - if (data) { - if (!isEdit) { - successToast("Vehicle Added"); - hideAddVehicleModal(); - loadGarage(); - } - else { - successToast("Vehicle Updated"); - hideEditVehicleModal(); - viewVehicle(vehicleId); - } - } else { - errorToast(genericErrorMessage()); - } - }); -} -function toggleOdometerAdjustment() { - var isChecked = $("#inputHasOdometerAdjustment").is(':checked'); - if (isChecked) { - $("#odometerAdjustments").collapse('show'); - } else { - $("#odometerAdjustments").collapse('hide'); - } -} -function uploadThumbnail(event) { - var originalImage = event.files[0]; - var maxHeight = 290; - try { - //load image and perform Hermite resize - var img = new Image(); - img.onload = function () { - URL.revokeObjectURL(img.src); - var imgWidth = img.width; - var imgHeight = img.height; - if (imgHeight > maxHeight) { - //only scale if height is greater than threshold - var imgScale = maxHeight / imgHeight; - var newImgWidth = imgWidth * imgScale; - var newImgHeight = imgHeight * imgScale; - var resizedCanvas = hermiteResize(img, newImgWidth, newImgHeight); - resizedCanvas.toBlob((blob) => { - let file = new File([blob], originalImage.name, { type: "image/jpeg" }); - uploadFileAsync(file); - }, 'image/jpeg'); - } else { - uploadFileAsync(originalImage); - } - } - img.src = URL.createObjectURL(originalImage); - } catch (error) { - console.log(`Error while attempting to upload and resize thumbnail - ${error}`); - uploadFileAsync(originalImage); - } -} -//Resize method using Hermite interpolation -//JS implementation by viliusle -function hermiteResize(origImg, width, height) { - var canvas = document.createElement("canvas"); - var ctx = canvas.getContext("2d"); - canvas.width = origImg.width; - canvas.height = origImg.height; - ctx.drawImage(origImg, 0, 0); - - var width_source = canvas.width; - var height_source = canvas.height; - width = Math.round(width); - height = Math.round(height); - - var ratio_w = width_source / width; - var ratio_h = height_source / height; - var ratio_w_half = Math.ceil(ratio_w / 2); - var ratio_h_half = Math.ceil(ratio_h / 2); - - - var img = ctx.getImageData(0, 0, width_source, height_source); - var img2 = ctx.createImageData(width, height); - var data = img.data; - var data2 = img2.data; - - for (var j = 0; j < height; j++) { - for (var i = 0; i < width; i++) { - var x2 = (i + j * width) * 4; - var weight = 0; - var weights = 0; - var weights_alpha = 0; - var gx_r = 0; - var gx_g = 0; - var gx_b = 0; - var gx_a = 0; - var center_y = (j + 0.5) * ratio_h; - var yy_start = Math.floor(j * ratio_h); - var yy_stop = Math.ceil((j + 1) * ratio_h); - for (var yy = yy_start; yy < yy_stop; yy++) { - var dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half; - var center_x = (i + 0.5) * ratio_w; - var w0 = dy * dy; //pre-calc part of w - var xx_start = Math.floor(i * ratio_w); - var xx_stop = Math.ceil((i + 1) * ratio_w); - for (var xx = xx_start; xx < xx_stop; xx++) { - var dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half; - var w = Math.sqrt(w0 + dx * dx); - if (w >= 1) { - //pixel too far - continue; - } - //hermite filter - weight = 2 * w * w * w - 3 * w * w + 1; - var pos_x = 4 * (xx + yy * width_source); - //alpha - gx_a += weight * data[pos_x + 3]; - weights_alpha += weight; - //colors - if (data[pos_x + 3] < 255) - weight = weight * data[pos_x + 3] / 250; - gx_r += weight * data[pos_x]; - gx_g += weight * data[pos_x + 1]; - gx_b += weight * data[pos_x + 2]; - weights += weight; - } - } - data2[x2] = gx_r / weights; - data2[x2 + 1] = gx_g / weights; - data2[x2 + 2] = gx_b / weights; - data2[x2 + 3] = gx_a / weights_alpha; - } - } - //clear and resize canvas - canvas.width = width; - canvas.height = height; - ctx.clearRect(0, 0, width, height); - - //draw - ctx.putImageData(img2, 0, 0); - return canvas; -} -function uploadFileAsync(event) { - let formData = new FormData(); - if (event.files != undefined && event.files.length > 0) { - formData.append("file", event.files[0]); - } else { - formData.append("file", event); - } - sloader.show(); - $.ajax({ - url: "/Files/HandleFileUpload", - data: formData, - cache: false, - processData: false, - contentType: false, - type: 'POST', - success: function (response) { - sloader.hide(); - if (response.trim() != '') { - uploadedFile = response; - } - }, - error: function () { - sloader.hide(); - errorToast("An error has occurred, please check the file size and try again later.") - } - }); -} -function isValidMoney(input) { - const euRegex = /^\$?(?=\(.*\)|[^()]*$)\(?\d{1,3}((\.\d{3}){0,8}|(\d{3}){0,8})(,\d{1,3}?)?\)?$/; - const usRegex = /^\$?(?=\(.*\)|[^()]*$)\(?\d{1,3}((,\d{3}){0,8}|(\d{3}){0,8})(\.\d{1,3}?)?\)?$/; - return (euRegex.test(input) || usRegex.test(input)); -} -function initExtraFieldDatePicker(fieldName) { - let inputField = $(`#${fieldName}`); - if (inputField.length > 0) { - inputField.datepicker({ - format: getShortDatePattern().pattern, - autoclose: true, - weekStart: getGlobalConfig().firstDayOfWeek - }); - } -} -function initDatePicker(input, futureOnly) { - if (futureOnly) { - input.datepicker({ - startDate: "+0d", - format: getShortDatePattern().pattern, - autoclose: true, - weekStart: getGlobalConfig().firstDayOfWeek - }); - } else { - input.datepicker({ - endDate: "+0d", - format: getShortDatePattern().pattern, - autoclose: true, - weekStart: getGlobalConfig().firstDayOfWeek - }); - } -} -function initTagSelector(input, noDataList) { - if (noDataList) { - input.tagsinput({ - useDataList: false - }); - } else { - input.tagsinput(); - } -} - -// ===== MOBILE EXPERIENCE FRAMEWORK ===== - -// Mobile detection utility -function isMobileDevice() { - return window.matchMedia("(max-width: 768px)").matches || - /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); -} - -// Mobile-optimized tag selector -function initMobileTagSelector(input) { - if (input.length) { - // Initialize with mobile-friendly options - input.tagsinput({ - maxTags: 5, // Limit tags on mobile - trimValue: true, - confirmKeys: [13, 44, 32], // Enter, comma, space - focusClass: 'focus', - freeInput: true - }); - - // Add mobile-specific styling - input.parent().addClass('mobile-tag-input'); - - // Increase touch target size for mobile - input.parent().find('.bootstrap-tagsinput').css({ - 'min-height': '44px', - 'padding': '8px', - 'font-size': '16px' // Prevent zoom on iOS - }); - - // Style the input within tags - input.parent().find('.bootstrap-tagsinput input').css({ - 'font-size': '16px', - 'min-height': '30px' - }); - } -} - -// Universal mobile modal initializer -function initMobileModal(config) { - if (!isMobileDevice()) return; - - var modalId = config.modalId || '#modal'; - var dateInputId = config.dateInputId; - var tagSelectorId = config.tagSelectorId; - var modeToggleId = config.modeToggleId; - var simpleModeDefault = config.simpleModeDefault || false; - - // Convert date input to native HTML5 on mobile - if (dateInputId) { - var dateInput = $(dateInputId); - if (dateInput.length) { - dateInput.attr('type', 'date'); - dateInput.removeClass('datepicker'); // Remove Bootstrap datepicker class - } - } - - // Default to simple mode on mobile if toggle exists - if (modeToggleId && simpleModeDefault) { - var modeToggle = $(modeToggleId); - if (modeToggle.length && !modeToggle.is(':checked')) { - modeToggle.prop('checked', true); - // Try to call the mode toggle function if it exists - if (typeof toggleFuelEntryMode === 'function') { - toggleFuelEntryMode(true); - } - } - } - - // Initialize mobile-friendly tag selector - if (tagSelectorId) { - initMobileTagSelector($(tagSelectorId)); - } - - // Initialize swipe to dismiss - initSwipeToDismiss(modalId); -} - -// Swipe to dismiss functionality for mobile modals -function initSwipeToDismiss(modalSelector) { - if (!isMobileDevice()) return; - - modalSelector = modalSelector || '#modal'; - var modal = $(modalSelector); - var modalContent = modal.find('.modal-content'); - var startY = 0; - var currentY = 0; - var isDragging = false; - var threshold = 100; // Minimum swipe distance to dismiss - - // Remove any existing touch handlers to avoid conflicts - modalContent.off('touchstart touchmove touchend'); - - // Touch start - modalContent.on('touchstart', function(e) { - startY = e.originalEvent.touches[0].clientY; - isDragging = true; - modalContent.css('transition', 'none'); - }); - - // Touch move - modalContent.on('touchmove', function(e) { - if (!isDragging) return; - - currentY = e.originalEvent.touches[0].clientY; - var deltaY = currentY - startY; - - // Only allow downward swipes - if (deltaY > 0) { - modalContent.css('transform', `translateY(${deltaY}px)`); - } - }); - - // Touch end - modalContent.on('touchend', function(e) { - if (!isDragging) return; - - isDragging = false; - var deltaY = currentY - startY; - - modalContent.css('transition', 'transform 0.3s ease-out'); - - if (deltaY > threshold) { - // Dismiss modal - modalContent.css('transform', 'translateY(100%)'); - setTimeout(function() { - modal.modal('hide'); - modalContent.css('transform', ''); - }, 300); - } else { - // Snap back - modalContent.css('transform', ''); - } - }); -} - -// Initialize form inputs based on device type (legacy compatibility) -function initializeFormInputs() { - // This function is maintained for backward compatibility with gasrecord.js - // New modals should use initMobileModal() instead - console.warn('initializeFormInputs() is deprecated. Use initMobileModal() instead.'); -} -function getAndValidateSelectedVehicle() { - var selectedVehiclesArray = []; - $("#vehicleSelector :checked").map(function () { - selectedVehiclesArray.push(this.value); - }); - if (selectedVehiclesArray.length == 0) { - return { - hasError: true, - ids: [] - } - } else { - return { - hasError: false, - ids: selectedVehiclesArray - } - } -} -function showMobileNav() { - $(".motovaultpro-mobile-nav").addClass("motovaultpro-mobile-nav-show"); - //hide body scrollbar - $("body").css('overflow-y', 'hidden'); - $("body").css('position', 'fixed'); //iOS SafariWebKit hack fix -} -function hideMobileNav() { - $(".motovaultpro-mobile-nav").removeClass("motovaultpro-mobile-nav-show"); - //re-enable scrollbar. - $("body").css('overflow-y', 'auto'); - $("body").css('position', ''); //iOS SafariWebKit hack fix -} -var windowWidthForCompare = 0; -function bindWindowResize() { - windowWidthForCompare = window.innerWidth; - $(window).on('resize', function () { - if (window.innerWidth != windowWidthForCompare) { - hideMobileNav(); - checkNavBarOverflow(); - windowWidthForCompare = window.innerWidth; - } - }); -} -function encodeHTMLInput(input) { - const encoded = document.createElement('div'); - encoded.innerText = input; - return encoded.innerHTML; -} -function decodeHTMLEntities(text) { - return $(""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // Support: IE <=9 only - // IE <=9 replaces "; - support.option = !!div.lastChild; -} )(); - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting or other required elements. - thead: [ 1, "", "
    " ], - col: [ 2, "", "
    " ], - tr: [ 2, "", "
    " ], - td: [ 3, "", "
    " ], - - _default: [ 0, "", "" ] -}; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// Support: IE <=9 only -if ( !support.option ) { - wrapMap.optgroup = wrapMap.option = [ 1, "" ]; -} - - -function getAll( context, tag ) { - - // Support: IE <=9 - 11 only - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret; - - if ( typeof context.getElementsByTagName !== "undefined" ) { - ret = context.getElementsByTagName( tag || "*" ); - - } else if ( typeof context.querySelectorAll !== "undefined" ) { - ret = context.querySelectorAll( tag || "*" ); - - } else { - ret = []; - } - - if ( tag === undefined || tag && nodeName( context, tag ) ) { - return jQuery.merge( [ context ], ret ); - } - - return ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, attached, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( toType( elem ) === "object" ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - attached = isAttached( elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( attached ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE <=9 - 11+ -// focus() and blur() are asynchronous, except when they are no-op. -// So expect focus to be synchronous when the element is already active, -// and blur to be synchronous when the element is not already active. -// (focus and blur are always synchronous in other supported browsers, -// this just defines when we can count on it). -function expectSync( elem, type ) { - return ( elem === safeActiveElement() ) === ( type === "focus" ); -} - -// Support: IE <=9 only -// Accessing document.activeElement can throw unexpectedly -// https://bugs.jquery.com/ticket/13393 -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Only attach events to objects that accept data - if ( !acceptData( elem ) ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = Object.create( null ); - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( nativeEvent ), - - handlers = ( - dataPriv.get( this, "events" ) || Object.create( null ) - )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // If the event is namespaced, then each handler is only invoked if it is - // specially universal or its namespaces are a superset of the event's. - if ( !event.rnamespace || handleObj.namespace === false || - event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - click: { - - // Utilize native event to ensure correct state for checkable inputs - setup: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Claim the first handler - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - // dataPriv.set( el, "click", ... ) - leverageNative( el, "click", returnTrue ); - } - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Force setup before triggering a click - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - leverageNative( el, "click" ); - } - - // Return non-false to allow normal event-path propagation - return true; - }, - - // For cross-browser consistency, suppress native .click() on links - // Also prevent it if we're currently inside a leveraged native-event stack - _default: function( event ) { - var target = event.target; - return rcheckableType.test( target.type ) && - target.click && nodeName( target, "input" ) && - dataPriv.get( target, "click" ) || - nodeName( target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -// Ensure the presence of an event listener that handles manually-triggered -// synthetic events by interrupting progress until reinvoked in response to -// *native* events that it fires directly, ensuring that state changes have -// already occurred before other listeners are invoked. -function leverageNative( el, type, expectSync ) { - - // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add - if ( !expectSync ) { - if ( dataPriv.get( el, type ) === undefined ) { - jQuery.event.add( el, type, returnTrue ); - } - return; - } - - // Register the controller as a special universal handler for all event namespaces - dataPriv.set( el, type, false ); - jQuery.event.add( el, type, { - namespace: false, - handler: function( event ) { - var notAsync, result, - saved = dataPriv.get( this, type ); - - if ( ( event.isTrigger & 1 ) && this[ type ] ) { - - // Interrupt processing of the outer synthetic .trigger()ed event - // Saved data should be false in such cases, but might be a leftover capture object - // from an async native handler (gh-4350) - if ( !saved.length ) { - - // Store arguments for use when handling the inner native event - // There will always be at least one argument (an event object), so this array - // will not be confused with a leftover capture object. - saved = slice.call( arguments ); - dataPriv.set( this, type, saved ); - - // Trigger the native event and capture its result - // Support: IE <=9 - 11+ - // focus() and blur() are asynchronous - notAsync = expectSync( this, type ); - this[ type ](); - result = dataPriv.get( this, type ); - if ( saved !== result || notAsync ) { - dataPriv.set( this, type, false ); - } else { - result = {}; - } - if ( saved !== result ) { - - // Cancel the outer synthetic event - event.stopImmediatePropagation(); - event.preventDefault(); - - // Support: Chrome 86+ - // In Chrome, if an element having a focusout handler is blurred by - // clicking outside of it, it invokes the handler synchronously. If - // that handler calls `.remove()` on the element, the data is cleared, - // leaving `result` undefined. We need to guard against this. - return result && result.value; - } - - // If this is an inner synthetic event for an event with a bubbling surrogate - // (focus or blur), assume that the surrogate already propagated from triggering the - // native event and prevent that from happening again here. - // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the - // bubbling surrogate propagates *after* the non-bubbling base), but that seems - // less bad than duplication. - } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { - event.stopPropagation(); - } - - // If this is a native event triggered above, everything is now in order - // Fire an inner synthetic event with the original arguments - } else if ( saved.length ) { - - // ...and capture the result - dataPriv.set( this, type, { - value: jQuery.event.trigger( - - // Support: IE <=9 - 11+ - // Extend with the prototype to reset the above stopImmediatePropagation() - jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), - saved.slice( 1 ), - this - ) - } ); - - // Abort handling of the native event - event.stopImmediatePropagation(); - } - } - } ); -} - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (#504, #13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || Date.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Includes all common event props including KeyEvent and MouseEvent specific props -jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - code: true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - which: true -}, jQuery.event.addProp ); - -jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { - jQuery.event.special[ type ] = { - - // Utilize native event if possible so blur/focus sequence is correct - setup: function() { - - // Claim the first handler - // dataPriv.set( this, "focus", ... ) - // dataPriv.set( this, "blur", ... ) - leverageNative( this, type, expectSync ); - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function() { - - // Force setup before trigger - leverageNative( this, type ); - - // Return non-false to allow normal event-path propagation - return true; - }, - - // Suppress native focus or blur as it's already being fired - // in leverageNative. - _default: function() { - return true; - }, - - delegateType: delegateType - }; -} ); - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - - // Support: IE <=10 - 11, Edge 12 - 13 only - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( elem ).children( "tbody" )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { - elem.type = elem.type.slice( 5 ); - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.get( src ); - events = pdataOld.events; - - if ( events ) { - dataPriv.remove( dest, "handle events" ); - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = flat( args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - valueIsFunction = isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( valueIsFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( valueIsFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl && !node.noModule ) { - jQuery._evalUrl( node.src, { - nonce: node.nonce || node.getAttribute( "nonce" ) - }, doc ); - } - } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && isAttached( node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html; - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = isAttached( elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - -var swap = function( elem, options, callback ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.call( elem ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - -var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); - - - -( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - container.style.cssText = "position:absolute;left:-11111px;width:60px;" + - "margin-top:1px;padding:0;border:0"; - div.style.cssText = - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + - "margin:auto;border:1px;padding:1px;" + - "width:60%;top:1%"; - documentElement.appendChild( container ).appendChild( div ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; - - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 - // Some styles come back with percentage values, even though they shouldn't - div.style.right = "60%"; - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; - - // Support: IE 9 - 11 only - // Detect misreporting of content dimensions for box-sizing:border-box elements - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; - - // Support: IE 9 only - // Detect overflow:scroll screwiness (gh-3699) - // Support: Chrome <=64 - // Don't get tricked when zoom affects offsetWidth (gh-4029) - div.style.position = "absolute"; - scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - function roundPixelMeasures( measure ) { - return Math.round( parseFloat( measure ) ); - } - - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableTrDimensionsVal, reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - jQuery.extend( support, { - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelBoxStyles: function() { - computeStyleTests(); - return pixelBoxStylesVal; - }, - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - }, - scrollboxSize: function() { - computeStyleTests(); - return scrollboxSizeVal; - }, - - // Support: IE 9 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Behavior in IE 9 is more subtle than in newer versions & it passes - // some versions of this test; make sure not to make it pass there! - // - // Support: Firefox 70+ - // Only Firefox includes border widths - // in computed dimensions. (gh-4529) - reliableTrDimensions: function() { - var table, tr, trChild, trStyle; - if ( reliableTrDimensionsVal == null ) { - table = document.createElement( "table" ); - tr = document.createElement( "tr" ); - trChild = document.createElement( "div" ); - - table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; - tr.style.cssText = "border:1px solid"; - - // Support: Chrome 86+ - // Height set through cssText does not get applied. - // Computed height then comes back as 0. - tr.style.height = "1px"; - trChild.style.height = "9px"; - - // Support: Android 8 Chrome 86+ - // In our bodyBackground.html iframe, - // display for all div elements is set to "inline", - // which causes a problem only in Android 8 Chrome 86. - // Ensuring the div is display: block - // gets around this issue. - trChild.style.display = "block"; - - documentElement - .appendChild( table ) - .appendChild( tr ) - .appendChild( trChild ); - - trStyle = window.getComputedStyle( tr ); - reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + - parseInt( trStyle.borderTopWidth, 10 ) + - parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; - - documentElement.removeChild( table ); - } - return reliableTrDimensionsVal; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( ret === "" && !isAttached( elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style, - vendorProps = {}; - -// Return a vendor-prefixed property or undefined -function vendorPropName( name ) { - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -// Return a potentially-mapped jQuery.cssProps or vendor prefixed property -function finalPropName( name ) { - var final = jQuery.cssProps[ name ] || vendorProps[ name ]; - - if ( final ) { - return final; - } - if ( name in emptyStyle ) { - return name; - } - return vendorProps[ name ] = vendorPropName( name ) || name; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }; - -function setPositiveNumber( _elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { - var i = dimension === "width" ? 1 : 0, - extra = 0, - delta = 0; - - // Adjustment may not be necessary - if ( box === ( isBorderBox ? "border" : "content" ) ) { - return 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin - if ( box === "margin" ) { - delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); - } - - // If we get here with a content-box, we're seeking "padding" or "border" or "margin" - if ( !isBorderBox ) { - - // Add padding - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // For "border" or "margin", add border - if ( box !== "padding" ) { - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - - // But still keep track of it otherwise - } else { - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - - // If we get here with a border-box (content + padding + border), we're seeking "content" or - // "padding" or "margin" - } else { - - // For "content", subtract padding - if ( box === "content" ) { - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // For "content" or "padding", subtract border - if ( box !== "margin" ) { - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - // Account for positive content-box scroll gutter when requested by providing computedVal - if ( !isBorderBox && computedVal >= 0 ) { - - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border - // Assuming integer scroll gutter, subtract the rest and round down - delta += Math.max( 0, Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - computedVal - - delta - - extra - - 0.5 - - // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter - // Use an explicit zero to avoid NaN (gh-3964) - ) ) || 0; - } - - return delta; -} - -function getWidthOrHeight( elem, dimension, extra ) { - - // Start with computed style - var styles = getStyles( elem ), - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). - // Fake content-box until we know it's needed to know the true value. - boxSizingNeeded = !support.boxSizingReliable() || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - valueIsBorderBox = isBorderBox, - - val = curCSS( elem, dimension, styles ), - offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); - - // Support: Firefox <=54 - // Return a confounding non-pixel value or feign ignorance, as appropriate. - if ( rnumnonpx.test( val ) ) { - if ( !extra ) { - return val; - } - val = "auto"; - } - - - // Support: IE 9 - 11 only - // Use offsetWidth/offsetHeight for when box sizing is unreliable. - // In those cases, the computed value can be trusted to be border-box. - if ( ( !support.boxSizingReliable() && isBorderBox || - - // Support: IE 10 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Interestingly, in some cases IE 9 doesn't suffer from this issue. - !support.reliableTrDimensions() && nodeName( elem, "tr" ) || - - // Fall back to offsetWidth/offsetHeight when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - val === "auto" || - - // Support: Android <=4.1 - 4.3 only - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && - - // Make sure the element is visible & connected - elem.getClientRects().length ) { - - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Where available, offsetWidth/offsetHeight approximate border box dimensions. - // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the - // retrieved value as a content box dimension. - valueIsBorderBox = offsetProp in elem; - if ( valueIsBorderBox ) { - val = elem[ offsetProp ]; - } - } - - // Normalize "" and auto - val = parseFloat( val ) || 0; - - // Adjust for the element's box model - return ( val + - boxModelAdjustment( - elem, - dimension, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles, - - // Provide the current computed size to request scroll gutter calculation (gh-3589) - val - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "gridArea": true, - "gridColumn": true, - "gridColumnEnd": true, - "gridColumnStart": true, - "gridRow": true, - "gridRowEnd": true, - "gridRowStart": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: {}, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append - // "px" to a few hardcoded values. - if ( type === "number" && !isCustomProp ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( _i, dimension ) { - jQuery.cssHooks[ dimension ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); - } ) : - getWidthOrHeight( elem, dimension, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = getStyles( elem ), - - // Only read styles.position if the test has a chance to fail - // to avoid forcing a reflow. - scrollboxSizeBuggy = !support.scrollboxSize() && - styles.position === "absolute", - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) - boxSizingNeeded = scrollboxSizeBuggy || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - subtract = extra ? - boxModelAdjustment( - elem, - dimension, - extra, - isBorderBox, - styles - ) : - 0; - - // Account for unreliable border-box dimensions by comparing offset* to computed and - // faking a content-box to get border and padding (gh-3699) - if ( isBorderBox && scrollboxSizeBuggy ) { - subtract -= Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - parseFloat( styles[ dimension ] ) - - boxModelAdjustment( elem, dimension, "border", false, styles ) - - 0.5 - ); - } - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ dimension ] = value; - value = jQuery.css( elem, dimension ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( prefix !== "margin" ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && ( - jQuery.cssHooks[ tween.prop ] || - tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 only -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } -} - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = Date.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 15 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY and Edge just mirrors - // the overflowX value there. - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - result.stop.bind( result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = Date.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; - -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -// eslint rule "no-unused-expressions" is disabled for this code -// since it considers such accessions noop -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -function classesToArray( value ) { - if ( Array.isArray( value ) ) { - return value; - } - if ( typeof value === "string" ) { - return value.match( rnothtmlwhite ) || []; - } - return []; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isValidValue = type === "string" || Array.isArray( value ); - - if ( typeof stateVal === "boolean" && isValidValue ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( isValidValue ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = classesToArray( value ); - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, valueIsFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - valueIsFunction = isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( valueIsFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -support.focusin = "onfocusin" in window; - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - stopPropagationCallback = function( e ) { - e.stopPropagation(); - }; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = lastElement = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - lastElement = cur; - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - - if ( event.isPropagationStopped() ) { - lastElement.addEventListener( type, stopPropagationCallback ); - } - - elem[ type ](); - - if ( event.isPropagationStopped() ) { - lastElement.removeEventListener( type, stopPropagationCallback ); - } - - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -// Support: Firefox <=44 -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - - // Handle: regular nodes (via `this.ownerDocument`), window - // (via `this.document`) & document (via `this`). - var doc = this.ownerDocument || this.document || this, - attaches = dataPriv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this.document || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); -} -var location = window.location; - -var nonce = { guid: Date.now() }; - -var rquery = ( /\?/ ); - - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml, parserErrorElem; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) {} - - parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; - if ( !xml || parserErrorElem ) { - jQuery.error( "Invalid XML: " + ( - parserErrorElem ? - jQuery.map( parserErrorElem.childNodes, function( el ) { - return el.textContent; - } ).join( "\n" ) : - data - ) ); - } - return xml; -}; - - -var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && toType( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - if ( a == null ) { - return ""; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ).filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ).map( function( _i, elem ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - -originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() + " " ] = - ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) - .concat( match[ 2 ] ); - } - } - match = responseHeaders[ key.toLowerCase() + " " ]; - } - return match == null ? null : match.join( ", " ); - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 15 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available and should be processed, append data to url - if ( s.data && ( s.processData || typeof s.data === "string" ) ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + - uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Use a noop converter for missing script but not if jsonp - if ( !isSuccess && - jQuery.inArray( "script", s.dataTypes ) > -1 && - jQuery.inArray( "json", s.dataTypes ) < 0 ) { - s.converters[ "text script" ] = function() {}; - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( _i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - -jQuery.ajaxPrefilter( function( s ) { - var i; - for ( i in s.headers ) { - if ( i.toLowerCase() === "content-type" ) { - s.contentType = s.headers[ i ] || ""; - } - } -} ); - - -jQuery._evalUrl = function( url, options, doc ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - - // Only evaluate the response if it is successful (gh-4126) - // dataFilter is not invoked for failure responses, so using it instead - // of the default converter is kludgy but it works. - converters: { - "text script": function() {} - }, - dataFilter: function( response ) { - jQuery.globalEval( response, options, doc ); - } - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var htmlIsFunction = isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } -} ); - - -jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); -}; -jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); -}; - - - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.ontimeout = - xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) -jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } -} ); - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain or forced-by-attrs requests - if ( s.crossDomain || s.scriptAttrs ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( "