Skip to content

Commit 6cf733b

Browse files
authored
Merge pull request #558 from hargata/Hargata/545
enable extra fields to be imported via CSV
2 parents ef4deab + 1eb6e2c commit 6cf733b

File tree

3 files changed

+29
-8
lines changed

3 files changed

+29
-8
lines changed

Controllers/VehicleController.cs

+16-8
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,8 @@ public IActionResult ImportToVehicleIdFromCsv(int vehicleId, ImportMode mode, st
439439
Mileage = decimal.ToInt32(decimal.Parse(importModel.Odometer, NumberStyles.Any)),
440440
Gallons = decimal.Parse(importModel.FuelConsumed, NumberStyles.Any),
441441
Notes = string.IsNullOrWhiteSpace(importModel.Notes) ? "" : importModel.Notes,
442-
Tags = string.IsNullOrWhiteSpace(importModel.Tags) ? [] : importModel.Tags.Split(" ").ToList()
442+
Tags = string.IsNullOrWhiteSpace(importModel.Tags) ? [] : importModel.Tags.Split(" ").ToList(),
443+
ExtraFields = importModel.ExtraFields.Any() ? importModel.ExtraFields.Select(x => new ExtraField { Name = x.Key, Value = x.Value }).ToList() : new List<ExtraField>()
443444
};
444445
if (string.IsNullOrWhiteSpace(importModel.Cost) && !string.IsNullOrWhiteSpace(importModel.Price))
445446
{
@@ -495,7 +496,8 @@ public IActionResult ImportToVehicleIdFromCsv(int vehicleId, ImportMode mode, st
495496
Description = string.IsNullOrWhiteSpace(importModel.Description) ? $"Service Record on {importModel.Date}" : importModel.Description,
496497
Notes = string.IsNullOrWhiteSpace(importModel.Notes) ? "" : importModel.Notes,
497498
Cost = decimal.Parse(importModel.Cost, NumberStyles.Any),
498-
Tags = string.IsNullOrWhiteSpace(importModel.Tags) ? [] : importModel.Tags.Split(" ").ToList()
499+
Tags = string.IsNullOrWhiteSpace(importModel.Tags) ? [] : importModel.Tags.Split(" ").ToList(),
500+
ExtraFields = importModel.ExtraFields.Any() ? importModel.ExtraFields.Select(x => new ExtraField { Name = x.Key, Value = x.Value }).ToList() : new List<ExtraField>()
499501
};
500502
_serviceRecordDataAccess.SaveServiceRecordToVehicle(convertedRecord);
501503
if (_config.GetUserConfig(User).EnableAutoOdometerInsert)
@@ -518,7 +520,8 @@ public IActionResult ImportToVehicleIdFromCsv(int vehicleId, ImportMode mode, st
518520
InitialMileage = string.IsNullOrWhiteSpace(importModel.InitialOdometer) ? 0 : decimal.ToInt32(decimal.Parse(importModel.InitialOdometer, NumberStyles.Any)),
519521
Mileage = decimal.ToInt32(decimal.Parse(importModel.Odometer, NumberStyles.Any)),
520522
Notes = string.IsNullOrWhiteSpace(importModel.Notes) ? "" : importModel.Notes,
521-
Tags = string.IsNullOrWhiteSpace(importModel.Tags) ? [] : importModel.Tags.Split(" ").ToList()
523+
Tags = string.IsNullOrWhiteSpace(importModel.Tags) ? [] : importModel.Tags.Split(" ").ToList(),
524+
ExtraFields = importModel.ExtraFields.Any() ? importModel.ExtraFields.Select(x => new ExtraField { Name = x.Key, Value = x.Value }).ToList() : new List<ExtraField>()
522525
};
523526
_odometerRecordDataAccess.SaveOdometerRecordToVehicle(convertedRecord);
524527
}
@@ -537,7 +540,8 @@ public IActionResult ImportToVehicleIdFromCsv(int vehicleId, ImportMode mode, st
537540
Priority = parsedPriority,
538541
Description = string.IsNullOrWhiteSpace(importModel.Description) ? $"Plan Record on {importModel.DateCreated}" : importModel.Description,
539542
Notes = string.IsNullOrWhiteSpace(importModel.Notes) ? "" : importModel.Notes,
540-
Cost = decimal.Parse(importModel.Cost, NumberStyles.Any)
543+
Cost = decimal.Parse(importModel.Cost, NumberStyles.Any),
544+
ExtraFields = importModel.ExtraFields.Any() ? importModel.ExtraFields.Select(x => new ExtraField { Name = x.Key, Value = x.Value }).ToList() : new List<ExtraField>()
541545
};
542546
_planRecordDataAccess.SavePlanRecordToVehicle(convertedRecord);
543547
}
@@ -551,7 +555,8 @@ public IActionResult ImportToVehicleIdFromCsv(int vehicleId, ImportMode mode, st
551555
Description = string.IsNullOrWhiteSpace(importModel.Description) ? $"Repair Record on {importModel.Date}" : importModel.Description,
552556
Notes = string.IsNullOrWhiteSpace(importModel.Notes) ? "" : importModel.Notes,
553557
Cost = decimal.Parse(importModel.Cost, NumberStyles.Any),
554-
Tags = string.IsNullOrWhiteSpace(importModel.Tags) ? [] : importModel.Tags.Split(" ").ToList()
558+
Tags = string.IsNullOrWhiteSpace(importModel.Tags) ? [] : importModel.Tags.Split(" ").ToList(),
559+
ExtraFields = importModel.ExtraFields.Any() ? importModel.ExtraFields.Select(x => new ExtraField { Name = x.Key, Value = x.Value }).ToList() : new List<ExtraField>()
555560
};
556561
_collisionRecordDataAccess.SaveCollisionRecordToVehicle(convertedRecord);
557562
if (_config.GetUserConfig(User).EnableAutoOdometerInsert)
@@ -575,7 +580,8 @@ public IActionResult ImportToVehicleIdFromCsv(int vehicleId, ImportMode mode, st
575580
Description = string.IsNullOrWhiteSpace(importModel.Description) ? $"Upgrade Record on {importModel.Date}" : importModel.Description,
576581
Notes = string.IsNullOrWhiteSpace(importModel.Notes) ? "" : importModel.Notes,
577582
Cost = decimal.Parse(importModel.Cost, NumberStyles.Any),
578-
Tags = string.IsNullOrWhiteSpace(importModel.Tags) ? [] : importModel.Tags.Split(" ").ToList()
583+
Tags = string.IsNullOrWhiteSpace(importModel.Tags) ? [] : importModel.Tags.Split(" ").ToList(),
584+
ExtraFields = importModel.ExtraFields.Any() ? importModel.ExtraFields.Select(x => new ExtraField { Name = x.Key, Value = x.Value }).ToList() : new List<ExtraField>()
579585
};
580586
_upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(convertedRecord);
581587
if (_config.GetUserConfig(User).EnableAutoOdometerInsert)
@@ -601,7 +607,8 @@ public IActionResult ImportToVehicleIdFromCsv(int vehicleId, ImportMode mode, st
601607
Description = importModel.Description,
602608
Cost = decimal.Parse(importModel.Cost, NumberStyles.Any),
603609
Notes = importModel.Notes,
604-
Tags = string.IsNullOrWhiteSpace(importModel.Tags) ? [] : importModel.Tags.Split(" ").ToList()
610+
Tags = string.IsNullOrWhiteSpace(importModel.Tags) ? [] : importModel.Tags.Split(" ").ToList(),
611+
ExtraFields = importModel.ExtraFields.Any() ? importModel.ExtraFields.Select(x => new ExtraField { Name = x.Key, Value = x.Value }).ToList() : new List<ExtraField>()
605612
};
606613
_supplyRecordDataAccess.SaveSupplyRecordToVehicle(convertedRecord);
607614
}
@@ -614,7 +621,8 @@ public IActionResult ImportToVehicleIdFromCsv(int vehicleId, ImportMode mode, st
614621
Description = string.IsNullOrWhiteSpace(importModel.Description) ? $"Tax Record on {importModel.Date}" : importModel.Description,
615622
Notes = string.IsNullOrWhiteSpace(importModel.Notes) ? "" : importModel.Notes,
616623
Cost = decimal.Parse(importModel.Cost, NumberStyles.Any),
617-
Tags = string.IsNullOrWhiteSpace(importModel.Tags) ? [] : importModel.Tags.Split(" ").ToList()
624+
Tags = string.IsNullOrWhiteSpace(importModel.Tags) ? [] : importModel.Tags.Split(" ").ToList(),
625+
ExtraFields = importModel.ExtraFields.Any() ? importModel.ExtraFields.Select(x => new ExtraField { Name = x.Key, Value = x.Value }).ToList() : new List<ExtraField>()
618626
};
619627
_taxRecordDataAccess.SaveTaxRecordToVehicle(convertedRecord);
620628
}

MapProfile/ImportMappers.cs

+12
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,18 @@ public ImportMapper()
2727
Map(m => m.Type).Name(["type"]);
2828
Map(m => m.Priority).Name(["priority"]);
2929
Map(m => m.Tags).Name(["tags"]);
30+
Map(m => m.ExtraFields).Convert(row =>
31+
{
32+
var attributes = new Dictionary<string, string>();
33+
foreach (var header in row.Row.HeaderRecord)
34+
{
35+
if (header.ToLower().StartsWith("extrafield_"))
36+
{
37+
attributes.Add(header.Substring(11), row.Row.GetField(header));
38+
}
39+
}
40+
return attributes;
41+
}); ;
3042
}
3143
}
3244
}

Models/Shared/ImportModel.cs

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class ImportModel
2525
public string PartSupplier { get; set; }
2626
public string PartQuantity { get; set; }
2727
public string Tags { get; set; }
28+
public Dictionary<string,string> ExtraFields {get;set;}
2829
}
2930

3031
public class SupplyRecordExportModel

0 commit comments

Comments
 (0)