import from Fuelly complete

This commit is contained in:
Akhil Gupta
2021-06-27 11:04:58 +05:30
parent 5f96345828
commit f851a2dc19
10 changed files with 247 additions and 22 deletions

View File

@@ -17,9 +17,9 @@ func fuellyImport(c *gin.Context) {
c.JSON(http.StatusUnprocessableEntity, err)
return
}
err = service.FuellyImport(bytes, c.MustGet("userId").(string))
if err != nil {
c.JSON(http.StatusUnprocessableEntity, gin.H{"errors": err.Error()})
errors := service.FuellyImport(bytes, c.MustGet("userId").(string))
if len(errors) > 0 {
c.JSON(http.StatusUnprocessableEntity, gin.H{"errors": errors})
return
}
c.JSON(http.StatusOK, gin.H{})

View File

@@ -117,6 +117,7 @@ type Fillup struct {
Date time.Time `json:"date"`
Currency string `json:"currency"`
DistanceUnit DistanceUnit `json:"distanceUnit"`
Source string `json:"source"`
}
func (v *Fillup) FuelUnitDetail() EnumDetail {
@@ -145,6 +146,7 @@ type Expense struct {
Date time.Time `json:"date"`
Currency string `json:"currency"`
DistanceUnit DistanceUnit `json:"distanceUnit"`
Source string `json:"source"`
}
type Setting struct {

View File

@@ -5,30 +5,33 @@ import (
"encoding/csv"
"fmt"
"strconv"
"strings"
"time"
"github.com/akhilrex/hammond/db"
"github.com/leekchan/accounting"
)
func FuellyImport(content []byte, userId string) error {
func FuellyImport(content []byte, userId string) []string {
stream := bytes.NewReader(content)
reader := csv.NewReader(stream)
records, err := reader.ReadAll()
var errors []string
if err != nil {
return err
errors = append(errors, err.Error())
return errors
}
vehicles, err := GetUserVehicles(userId)
if err != nil {
return err
errors = append(errors, err.Error())
return errors
}
user, err := GetUserById(userId)
if err != nil {
return err
errors = append(errors, err.Error())
return errors
}
var vehicleMap map[string]db.Vehicle = make(map[string]db.Vehicle)
@@ -41,8 +44,6 @@ func FuellyImport(content []byte, userId string) error {
layout := "2006-01-02 15:04"
altLayout := "2006-01-02 3:04 PM"
var errors []string
for index, record := range records {
if index == 0 {
continue
@@ -111,6 +112,7 @@ func FuellyImport(content []byte, userId string) error {
Date: date,
Currency: user.Currency,
DistanceUnit: user.DistanceUnit,
Source: "Fuelly",
})
}
@@ -128,12 +130,13 @@ func FuellyImport(content []byte, userId string) error {
Currency: user.Currency,
Date: date,
DistanceUnit: user.DistanceUnit,
Source: "Fuelly",
})
}
}
if len(errors) != 0 {
return fmt.Errorf(strings.Join(errors, "\n"))
return errors
}
tx := db.DB.Begin()
@@ -143,15 +146,22 @@ func FuellyImport(content []byte, userId string) error {
}
}()
if err := tx.Error; err != nil {
return err
errors = append(errors, err.Error())
return errors
}
if err := tx.Create(&fillups).Error; err != nil {
tx.Rollback()
return err
errors = append(errors, err.Error())
return errors
}
if err := tx.Create(&expenses).Error; err != nil {
tx.Rollback()
return err
errors = append(errors, err.Error())
return errors
}
return tx.Commit().Error
err = tx.Commit().Error
if err != nil {
errors = append(errors, err.Error())
}
return errors
}

View File

@@ -139,6 +139,7 @@ func CreateFillup(model models.CreateFillupRequest) (*db.Fillup, error) {
Date: model.Date,
Currency: user.Currency,
DistanceUnit: user.DistanceUnit,
Source: "API",
}
tx := db.DB.Create(&fillup)
@@ -166,6 +167,7 @@ func CreateExpense(model models.CreateExpenseRequest) (*db.Expense, error) {
Date: model.Date,
Currency: user.Currency,
DistanceUnit: user.DistanceUnit,
Source: "API",
}
tx := db.DB.Create(&expense)