From dc33aaad496bc199e219bb9e0b1b6951fb1ba47f Mon Sep 17 00:00:00 2001 From: Alf Sebastian Houge Date: Wed, 6 Apr 2022 12:06:45 +0200 Subject: [PATCH] Add option for not importing location --- server/controllers/import.go | 9 ++++++++- server/service/importService.go | 12 +++++++----- ui/src/router/views/import-drivvo.vue | 9 +++++++++ 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/server/controllers/import.go b/server/controllers/import.go index 5d36d53..fab641e 100644 --- a/server/controllers/import.go +++ b/server/controllers/import.go @@ -2,6 +2,7 @@ package controllers import ( "net/http" + "strconv" "github.com/akhilrex/hammond/service" "github.com/gin-gonic/gin" @@ -37,7 +38,13 @@ func drivvoImport(c *gin.Context) { c.JSON(http.StatusUnprocessableEntity, "Missing Vehicle ID") return } - errors := service.DrivvoImport(bytes, c.MustGet("userId").(string), vehicleId) + importLocation, err := strconv.ParseBool(c.PostForm("importLocation")) + if err != nil { + c.JSON(http.StatusUnprocessableEntity, "Please include importLocation option.") + return + } + + errors := service.DrivvoImport(bytes, c.MustGet("userId").(string), vehicleId, importLocation) if len(errors) > 0 { c.JSON(http.StatusUnprocessableEntity, gin.H{"errors": errors}) return diff --git a/server/service/importService.go b/server/service/importService.go index ac58d15..946b4c5 100644 --- a/server/service/importService.go +++ b/server/service/importService.go @@ -65,7 +65,7 @@ func DrivvoParseExpenses(content []byte, user *db.User, vehicle *db.Vehicle) ([] return expenses, errors } -func DrivvoParseRefuelings(content []byte, user *db.User, vehicle *db.Vehicle) ([]db.Fillup, []string) { +func DrivvoParseRefuelings(content []byte, user *db.User, vehicle *db.Vehicle, importLocation bool) ([]db.Fillup, []string) { refuelingReader := csv.NewReader(bytes.NewReader(content)) refuelingReader.Comment = '#' refuelingRecords, err := refuelingReader.ReadAll() @@ -99,8 +99,10 @@ func DrivvoParseRefuelings(content []byte, user *db.User, vehicle *db.Vehicle) ( errors = append(errors, "Found an invalid odometer reading at refuel row "+strconv.Itoa(index+1)) } - // TODO: Make optional - location := record[17] + location := "" + if importLocation { + location = record[17] + } pricePerUnit, err := strconv.ParseFloat(record[3], 32) if err != nil { @@ -142,7 +144,7 @@ func DrivvoParseRefuelings(content []byte, user *db.User, vehicle *db.Vehicle) ( return fillups, errors } -func DrivvoImport(content []byte, userId string, vehicleId string) []string { +func DrivvoImport(content []byte, userId string, vehicleId string, importLocation bool) []string { var errors []string user, err := GetUserById(userId) if err != nil { @@ -172,7 +174,7 @@ func DrivvoImport(content []byte, userId string, vehicleId string) []string { expenseSectionIndex = endParseIndex } - fillups, errors := DrivvoParseRefuelings(content[:serviceSectionIndex], user, vehicle) + fillups, errors := DrivvoParseRefuelings(content[:serviceSectionIndex], user, vehicle, importLocation) _ = fillups var allExpenses []db.Expense diff --git a/ui/src/router/views/import-drivvo.vue b/ui/src/router/views/import-drivvo.vue index 59f43be..a1363d1 100644 --- a/ui/src/router/views/import-drivvo.vue +++ b/ui/src/router/views/import-drivvo.vue @@ -22,6 +22,7 @@ export default { selectedVehicle: null, tryingToCreate: false, errors: [], + importLocation: true, } }, computed: { @@ -56,6 +57,7 @@ export default { this.errorMessage = '' const formData = new FormData() formData.append('vehicleID', this.selectedVehicle) + formData.append('importLocation', this.importLocation) formData.append('file', this.file, this.file.name) axios .post(`/api/import/drivvo`, formData) @@ -129,6 +131,13 @@ export default { +
+ + + Import Location? + + +